Jailtime & PayDay Problem

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 Breadfish-Community,


    ich habe folgendes Problem, wenn ein Spieler Wanteds hat und der stirbt spawnt er dann im Knast und sitzt für eine bestimmte Zeit drin.
    So ich möchte gerne diese Zeit in MySQL einspeichern, denn wenn man dann relogt ist man ausm Knast, was richtig blöd ist...


    ich habe so mal angefangen:



    if(newstate == PLAYER_STATE_WASTED)
    {
    if(count == 1)
    {
    if(WantedLevel[playerid] >= 7)
    {
    GivePlayerMoney(playerid, -5000);
    FraktionsKasse[1] += 5000;
    FraktionsKasse[2] += 5000;
    FraktionsKasse[3] += 5000;
    FraktionsKasse[22] += 5000;
    PlayerInfo[playerid][pWantedDeaths] += 1;
    PlayerInfo[playerid][pJailed] = 2;
    PlayerInfo[playerid][pJailTime] = (WantedLevel[playerid] * 120);
    format(string, sizeof(string), "Du bist für {FA2727}%d{FFFFFF} Sekunden im {FA2727}Alcatraz{FFFFFF} und musst für deine Straftat {FA2727}%d€{FFFFFF} bezahlen.", PlayerInfo[playerid][pJailTime], price);
    SendClientMessage(playerid, COLOR_WHITE, string);
    WantedPoints[playerid] = 0;
    WantedLevel[playerid] = 0;
    SetPlayerVirtualWorld(playerid, 0);
    new query[56];
    format(query,sizeof(query),"UPDATE accounts SET Knast='%d', JailTime='%d' WHERE id='%i'",PlayerInfo[playerid][pJailed] = 1, PlayerInfo[playerid][pJailTime] += 120, PlayerInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    }
    }



    Ebenso ist meine 2. Frage, meine PayDay zeit wird garnicht gespeichert...



    forward savePlayer();
    public savePlayer()
    {
    printf("savePlayer aufgerufen");
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new query[4000];


    format(query,sizeof(query),"UPDATE accounts SET PayDay='%d', PayDayHead='%d', Paycheck='%d', Respect='%d' WHERE id='%i'",
    PlayerInfo[playerid][pPayDay],PlayerInfo[playerid][pPayDayHad],PlayerInfo[playerid][pPayCheck],PlayerInfo[playerid][pExp],PlayerInfo[playerid][db_id]);


    printf("SAVE: %s Account hat gespeichert!",pName);
    }
    }
    return 1;
    }


    Ich vestehe beides nicht warum die Zeit nicht eingefügt wird...


    MySQL Version: R34!


    Vielen Dank für eure Hilfe im Vorraus :)


    Lg
    J0a9

  • Problem 1:
    Versuche es so:
    new query[128];
    format(query,sizeof(query),"UPDATE accounts SET Knast='%d', JailTime='%d' WHERE id='%i'",PlayerInfo[playerid][pJailed], PlayerInfo[playerid][pJailTime], PlayerInfo[playerid][db_id]);


    Problem 2:
    forward savePlayer();
    public savePlayer()
    {
    printf("savePlayer aufgerufen");
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new query[256];
    format(query,sizeof(query),"UPDATE accounts SET PayDay='%d', PayDayHead='%d', Paycheck='%d', Respect='%d' WHERE id='%i'",
    PlayerInfo[playerid][pPayDay],PlayerInfo[playerid][pPayDayHad],PlayerInfo[playerid][pPayCheck],PlayerInfo[playerid][pExp],PlayerInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"",""); //Hat gefehlt.
    printf("SAVE: %s Account hat gespeichert!",pName);
    }
    }
    return 1;
    }

  • Hallo Jeffry,


    das 1. Problem ist jetzt behoben vielen Dank :)


    aber das 2. Problem wegen dem PayDay funktioniert nicht trotz das ich mysql_function_query(dbhandle,query,false,"",""); eingefügt habe...
    könntest du mir da eventuell weiterhelfen?
    Brauchst du noch weitere Code's?


    @0x0040FB80,


    maches save ich lieber davor als alles beim Disconnect public.
    Kommt drauf an :D


    Lg
    J0a9

  • Ja Print wird auch ausgeführt,


    dies steht in den Logs drinne:



    [19:51:29] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
    [19:51:29] [DEBUG] mysql_tquery - scheduling query "UPDATE `accounts` SET `WantedLevel` VALUE('0') WHERE id='7'"..
    [19:51:29] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE accounts SET PayDay='0', PayDayHead='0', Paycheck='33', R", callback: "(null)", format: "(null)"
    [19:51:29] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
    [19:51:29] [DEBUG] mysql_tquery - scheduling query "UPDATE accounts SET PayDay='0', PayDayHead='0', Paycheck='33', Respect='0' WHERE id='7'"..
    [19:51:29] [DEBUG] CMySQLQuery::Execute[()] - starting query execution


    Lg
    J0a9

  • Sieht doch gut aus.


    Diese beiden
    PlayerInfo[playerid][pPayDay]
    PlayerInfo[playerid][pPayDayHad]
    sind eben 0. Wahrscheinlich hast du sie zum savePlayer-Aufruf noch nicht hochgesetzt, oder, wenn du es beim Server-Verlassen hast, vielleicht schon wieder auf 0 gesetzt. Prüfe das mal.

  • Dann setzt du es an irgendeiner Stelle vor der Speicherung auf 0, oder du speicherst den Spieler bevor der Wert überhaupt gesetzt wurde.
    Prüfe mal, wo überall die beiden Variablen verwendet werden, setze gegebenenfalls prints damit du den Codeablauf, also die Reihenfolge, kennst und siehst, und schau dann warum es auf 0 gesetzt wird. Möglicherweise siehst du es dann gleich direkt, wo das Problem liegt.