[FRAGE] OnPlayerText - strval(text)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Leute,


    hab eine kurze Frage zu OnPlayerText - strval(text).
    Der Spieler soll nach aussuchen des Menu Punktes Abheben/Einzahlen an einem Geldautomaten den Betrag in das Textfeld eingeben. Dieses soll ihm dann überwiesen werden, ohne dass es nochmals im Textfenster erscheint und es jeder lesen kann.


    Zurzeit sieht es so bei mir aus:

    public OnPlayerText(playerid, text[])
    {
    new string[256];
    new tmp[128];
    ...
    if(atmabheben[playerid] == 1)
    {
    new betrag = strval(text);
    if (betrag <= 2500 && betrag > 0)
    {
    if(PlayerInfo[playerid][pBank] >= betrag)
    {
    GivePlayerCash(playerid,betrag);
    PlayerInfo[playerid][pBank] = PlayerInfo[playerid][pBank]-betrag;
    format(string, sizeof(string), "[INFO:] Du hast $%d von deinem Konto abgehoben, Neuer Kontostand: $%d", betrag,PlayerInfo[playerid][pBank]);
    SendClientMessage(playerid, COLOR_WHITE, string);
    PlayerActionMessage(playerid,15.0,"nimmt ein paar Scheine aus dem Geldautomat");
    OnPlayerDataSave(playerid);
    TogglePlayerControllable(playerid,1);
    atmabheben[playerid] = 0;
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "[ERROR:] Dein Konto ist nicht ausreichend gedeckt!");
    TogglePlayerControllable(playerid,1);
    atmabheben[playerid] = 0;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"[INFO:] Du kannst an einem Geldautomaten höchstens $2500 abheben.");
    TogglePlayerControllable(playerid,1);
    atmabheben[playerid] = 0;
    }
    return 1;
    }
    if(atmeinzahlen[playerid] == 1)
    {
    new betrag = strval(text);
    if (betrag <= 2500 && betrag > 0)
    {
    if(GetPlayerCash(playerid) >= betrag)
    {
    GivePlayerCash(playerid,-betrag);
    PlayerInfo[playerid][pBank] = PlayerInfo[playerid][pBank]+betrag;
    format(string, sizeof(string), "[INFO:] Du hast $%d auf dein Konto eingezahlt, Neuer Kontostand: $%d", betrag,PlayerInfo[playerid][pBank]);
    SendClientMessage(playerid, COLOR_WHITE, string);
    PlayerActionMessage(playerid,15.0,"schiebt ein paar Scheine in den Geldautomat");
    OnPlayerDataSave(playerid);
    TogglePlayerControllable(playerid,1);
    atmeinzahlen[playerid] = 0;
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "[ERROR:] Dein Konto ist nicht ausreichend gedeckt!");
    TogglePlayerControllable(playerid,1);
    atmeinzahlen[playerid] = 0;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"[INFO:] Du kannst an einem Geldautomaten höchstens $2500 einzahlen.");
    TogglePlayerControllable(playerid,1);
    atmeinzahlen[playerid] = 0;
    }
    return 1;
    }
    ...


    Wie kann ich das korrigieren, damit es so läuft wie oben beschrieben?

  • Versuch es mal bitte so:



    public OnPlayerText(playerid, text[])
    {
    new string[256];
    new tmp[128];
    ...
    if(atmabheben[playerid] == 1) {
    new betrag = strval(text);
    if (betrag <= 2500 && betrag > 0) {
    if(PlayerInfo[playerid][pBank] >= betrag) {
    GivePlayerCash(playerid,betrag);
    PlayerInfo[playerid][pBank] = PlayerInfo[playerid][pBank]-betrag;
    format(string, sizeof(string), "[INFO:] Du hast $%d von deinem Konto abgehoben, Neuer Kontostand: $%d", betrag,PlayerInfo[playerid][pBank]);
    SendClientMessage(playerid, COLOR_WHITE, string);
    PlayerActionMessage(playerid,15.0,"nimmt ein paar Scheine aus dem Geldautomat");
    OnPlayerDataSave(playerid);
    TogglePlayerControllable(playerid,1);
    atmabheben[playerid] = 0;
    return 1;
    }
    else {
    SendClientMessage(playerid, COLOR_LIGHTRED, "[ERROR:] Dein Konto ist nicht ausreichend gedeckt!");
    TogglePlayerControllable(playerid,1);
    atmabheben[playerid] = 0;
    }
    }
    else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"[INFO:] Du kannst an einem Geldautomaten höchstens $2500 abheben.");
    TogglePlayerControllable(playerid,1);
    atmabheben[playerid] = 0;
    }
    return false;
    }
    if(atmeinzahlen[playerid] == 1) {
    new betrag = strval(text);
    if (betrag <= 2500 && betrag > 0) {
    if(GetPlayerCash(playerid) >= betrag) {
    GivePlayerCash(playerid,-betrag);
    PlayerInfo[playerid][pBank] = PlayerInfo[playerid][pBank]+betrag;
    format(string, sizeof(string), "[INFO:] Du hast $%d auf dein Konto eingezahlt, Neuer Kontostand: $%d", betrag,PlayerInfo[playerid][pBank]);
    SendClientMessage(playerid, COLOR_WHITE, string);
    PlayerActionMessage(playerid,15.0,"schiebt ein paar Scheine in den Geldautomat");
    OnPlayerDataSave(playerid);
    TogglePlayerControllable(playerid,1);
    atmeinzahlen[playerid] = 0;
    return 1;
    }
    else {
    SendClientMessage(playerid, COLOR_LIGHTRED, "[ERROR:] Dein Konto ist nicht ausreichend gedeckt!");
    TogglePlayerControllable(playerid,1);
    atmeinzahlen[playerid] = 0;
    }
    }
    else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"[INFO:] Du kannst an einem Geldautomaten höchstens $2500 einzahlen.");
    TogglePlayerControllable(playerid,1);
    atmeinzahlen[playerid] = 0;
    }
    return false;
    }


  • Ach .. scheisse :D Hab in der Flüchtigkeit das Return übersehen -.- War aber nicht an der Stelle sondern bissl höher :P


    Danke ;)