Bankproblem

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
  • if(strlen(inputtext)>0)
    {
    new eingabewert[15];
    mysql_escape_string(inputtext,eingabewert,dbverbindung);
    if(GetPlayerMoney(playerid)<eingabewert)return SendClientMessage(playerid,ROT,"So viel Geld hast du nicht!");
    GivePlayerMoney(playerid,-eingabewert);
    new query[128];
    format(query,sizeof(query),"UPDATE user SET bankgeld='%i' WHERE id='%i'",sInfo[playerid][bankgeld]+eingabewert,sInfo[playerid][db_id]);
    mysql_tquery(dbverbindung,query);
    }


    Hi, bekomme hier mehrere Errors, habe was mit dem "eingabewert" falsch gemacht.
    Muss man den inputtext überhaupt extra in der Variable speichern?


    MfG

  • if(strlen(inputtext)>0)
    {
    new eingabewert = strval(inputtext);
    if(GetPlayerMoney(playerid)<eingabewert)return SendClientMessage(playerid,ROT,"So viel Geld hast du nicht!");
    GivePlayerMoney(playerid,-eingabewert);
    new query[128];
    format(query,sizeof(query),"UPDATE user SET bankgeld='%i' WHERE id='%i'",sInfo[playerid][bankgeld]+eingabewert,sInfo[playerid][db_id]);
    mysql_tquery(dbverbindung,query);
    }

  • Nein, damit werden im Query unerwünschte Zeichen in einem String maskiert.
    Siehe: http://php.net/manual/de/funct…ql-real-escape-string.php


    Wenn du abfragen willst ob die Eingabe eine Zahl ist:
    if(!IsNumeric(inputtext) || !strlen(inputtext)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Keine Zahl!");


    Ganz unten im Gamemode:
    stock IsNumeric(string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if ((string[i] > '9' || string[i] < '0')) return 0;
    }
    return 1;
    }

  • Okay, Danke


    Will jetzt auch einfach noch im Dialog anzeigen lassen wie viel man sich ausgezahlt hat.


    new eingabewert = strval(inputtext), banktext[25];
    if(GetPlayerMoney(playerid)<eingabewert)return SendClientMessage(playerid,ROT,"So viel Geld hast du nicht auf der Hand!");
    GivePlayerMoney(playerid,-eingabewert);
    new query[128];
    format(query,sizeof(query),"UPDATE user SET bankgeld='%i' WHERE id='%i'",sInfo[playerid][bankgeld]+eingabewert,sInfo[playerid][db_id]);
    mysql_tquery(dbverbindung,query);
    format(banktext,sizeof(banktext),"Du hast %i$ eingezahlt!",eingabewert);
    ShowPlayerDialog(playerid,DIALOG_BANKINFO,DIALOG_STYLE_MSGBOX,"Bank",eingabewert,"Okay","");


    Komme jetzt nicht darauf warum das falsch ist..
    C:\Users\Andi\Desktop\EastWestReallife\gamemodes\EastWest.pwn(4205) : error 035: argument type mismatch (argument 5)

  • ShowPlayerDialog(playerid,DIALOG_BANKINFO,DIALOG_STYLE_MSGBOX,"Bank",eingabewert,"Okay","");
    zu:
    ShowPlayerDialog(playerid,DIALOG_BANKINFO,DIALOG_STYLE_MSGBOX,"Bank",banktext,"Okay","");



    Die 25 von banktext musst du wahrscheinlich etwas größer machen.