Hilfe mit Banksystem

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 Community!
    Ich habe ein kleines problem und zwar Speichert mein banksystem das Geld auf der Datenbank aber wenn ich es abheben möchte sagt er das ich kein geld habe.
    Und mein Kontostand sagt auch das ich kein Geld habe.
    Und unter OnPlayerConnect soll das Konto laden und kriege ein mysql_log da steht cache_get_field_content_int ist nicht aktiv.
    Hier die Codes
    public BankSpeichern(playerid)
    {
    new query[128];
    format(query,128,"UPDATE bank SET b_geld='%d'",bkInfo[playerid][b_geld]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    public BankLaden(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new tmp_name[MAX_PLAYER_NAME];
    strmid(bkInfo[playerid][b_besitzer],tmp_name, 0, sizeof(tmp_name), sizeof(tmp_name));
    bkInfo[playerid][b_geld] = cache_get_field_content_int(i,"b_geld",dbhandle);
    bkInfo[playerid][b_id] = cache_get_field_content_int(i,"id",dbhandle);
    }
    return 1;
    }


    if(dialogid == DIALOG_BABHEBEN)
    {
    if(response)
    {
    new query[128];
    new bankgeld = bkInfo[playerid][b_geld];
    new summe = strval(inputtext);
    if(bankgeld <= strval(inputtext))return SendClientMessage(playerid,COLOR_GRAU,"[BankInfo]: Sie haben nicht genug Geld auf der Bank. ** Vorgang wurde Abgebrochen **");
    GivePlayerMoney(playerid,summe);
    bkInfo[playerid][b_geld] -=summe;
    format(query,128,"[BankInfo]: Du hast erfolgreich %d$ abgehoben.",summe);
    SendClientMessage(playerid,COLOR_GRAU,query);
    BankSpeichern(playerid);
    SpielerSpeichern(playerid);
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Bank","Geld abheben\nGeld Einzahlen\nGeld Überweisen","Auswählen","Abbrechen");
    }
    return 1;
    }
    if(dialogid == DIALOG_BEINZAHLEN)
    {
    if(response)
    {
    new query[128];
    new summe = strval(inputtext);
    if(GetPlayerMoney(playerid) <= strval(inputtext))return SendClientMessage(playerid,COLOR_GRAU,"[BankInfo]: Sie haben nicht genug Geld auf der Hand. ** Vorgang wurde Abgebrochen **");
    GivePlayerMoney(playerid,-summe);
    bkInfo[playerid][b_geld] +=summe;
    format(query,128,"[BankInfo]: Du hast erfolgreich %d$ eingezahlt.",summe);
    SendClientMessage(playerid,COLOR_GRAU,query);
    BankSpeichern(playerid);
    SpielerSpeichern(playerid);
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Bank","Geld abheben\nGeld Einzahlen\nGeld Überweisen","Auswählen","Abbrechen");
    }
    return 1;
    }


    enum bankEnum{ b_id, b_besitzer[MAX_PLAYER_NAME], b_geld}


    new bkInfo[MAX_PLAYERS][bankEnum]


    unter OnGameModeExit:
    public OnGameModeExit()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    SpielerSpeichern(i);
    BankSpeichern(i);
    }
    mysql_close(dbhandle);
    return 1;
    }


    unter OnPlayerConnect:
    //Bank
    format(query,128,"SELECT * FROM bank WHERE b_besitzer='%s'",SpielerName(playerid));
    mysql_function_query(dbhandle,query,true,"OnBankCheck","i",playerid);


    BankLaden(playerid);


    OnBankCheck:
    public OnBankCheck(playerid)
    {
    new query[200],name[MAX_PLAYER_NAME];
    new num_rows,num_fields;
    GetPlayerName(playerid,name,sizeof(name));
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)
    {
    format(query,200,"INSERT INTO bank (b_besitzer,b_geld) VALUES ('%s','0')",name);
    mysql_function_query(dbhandle,query,true,"BankSpeichern","i",playerid);
    }
    else
    {
    format(query,200,"SELECT * FROM bank WHERE b_besitzer='%s'",SpielerName(playerid));
    mysql_function_query(dbhandle,query,false,"","");
    }
    return 1;
    }

  • format(query,200,"SELECT * FROM bank WHERE b_besitzer='%s'",SpielerName(playerid));
    mysql_function_query(dbhandle,query,true,"BankLaden","d",playerid);
    Das musst du ersetzen bei OnPlayerConnect ;)


    public OnBankCheck(playerid)
    {
    new query[200],name[MAX_PLAYER_NAME];
    new num_rows,num_fields;
    GetPlayerName(playerid,name,sizeof(name));
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)
    {
    format(query,200,"INSERT INTO bank (b_besitzer,b_geld) VALUES ('%s','0')",name);
    mysql_function_query(dbhandle,query,true,"BankSpeichern","i",playerid);
    }
    else
    {
    format(query,200,"SELECT * FROM bank WHERE b_besitzer='%s'",SpielerName(playerid));
    mysql_function_query(dbhandle,query,true,"BankLaden","d",playerid);
    }
    return 1;
    }
    Hier in kürzerer Form ;)
    public OnBankCheck(playerid){
    new query[200],name[MAX_PLAYER_NAME],rows,fields;
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    cache_get_data(rows,fields,handle);
    if(rows == 0)return format(query,200,"INSERT INTO bank (b_besitzer,b_geld) VALUES ('%s','0')",name),mysql_function_query(dbhandle,query,true,"BankSpeichern","d",playerid);
    else if(rows == 1)return format(query,200,"SELECT * FROM bank WHERE b_besitzer='%s'",name),mysql_function_query(dbhandle,query,true,"BankLaden","d",playerid);
    return 1;
    }
    @Pascal1998: Hat es geholfen? :D

    2 Mal editiert, zuletzt von AirM4X ()