Probleme mit Speichern nach /makeadmin Befehl

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
  • Hey undzwar habe ich das Problem das das Script alles lädt nun habe ich eine Speicherfunktion eingebaut die z.B
    nach dem Befehl /makeadmin das Level direkt in der Mysql Datenbank aktuallisieren soll bzw Updaten soll dies steht auch in der Server_Log jedoch
    steht das neue Adminlevel dann nicht in der Mysql Datenbank.


    Ladefunktion der der Accounts:


    Damit rufe ich die Ladefunktion auf
    mysql_function_query(db, szQuery, true, "OnQueryFinish", "ii", THREAD_LOAD_ACCOUNTS, playerid);


    forward OnQueryFinish(resultid, extraid, ConnectionHandle);public OnQueryFinish(resultid, extraid, ConnectionHandle){ new Rows, Fields; if(resultid != THREAD_NO_RESULT) { cache_get_data(Rows, Fields); } switch(resultid) { case THREAD_LOAD_ACCOUNTS: { if(Rows) { new tmp[130]; cache_get_field_content(0, "ID", tmp); PlayerInfo[extraid][pID] = strval(tmp); cache_get_field_content(0, "Password", tmp); format(PlayerInfo[extraid][pPassword], 129, "%s", tmp); cache_get_field_content(0, "Level", tmp); PlayerInfo[extraid][pLevel] = strval(tmp); cache_get_field_content(0, "Gender", tmp); PlayerInfo[extraid][pGender] = strval(tmp); cache_get_field_content(0, "Age", tmp); PlayerInfo[extraid][pAge] = strval(tmp); cache_get_field_content(0, "Admin", tmp); PlayerInfo[extraid][pAdmin] = strval(tmp); cache_get_field_content(0, "Skin", tmp); PlayerInfo[extraid][pSkin] = strval(tmp); format(szQuery, sizeof(szQuery), "Hallo %s, dieser Account ist registriert. Bitte trage dein Passwort ein.", SpielerName(extraid)); ShowPlayerDialog(extraid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", szQuery, "Login", "Abbruch"); } else if(!Rows) { format(szQuery, sizeof(szQuery), "Hallo %s, dieser Account ist zum Registrieren freigegeben.", SpielerName(extraid)); ShowPlayerDialog(extraid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", szQuery, "Registrieren", "Abbruch"); } } } return 1;}


    Die neue Speicherfunktion:


    SpielerSpeichern(playerid){ new query[1024]; mysql_format(db,query,sizeof(query),"UPDATE `accounts` SET `Password`='%i',`Level`='%i',`Gender`='%i',`Age`='%i',`Admin`='%i',", PlayerInfo[playerid][pPassword],PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pGender],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pAdmin]); mysql_format(db,query,sizeof(query),"%s`Skin`='%i' WHERE `ID`='%i'", query,PlayerInfo[playerid][pSkin],PlayerInfo[playerid][pID]); printf("query: %s", query); mysql_tquery(db,query); printf("Der Account von %s wurde erfolgreich gespeichert!",SpielerName(playerid)); return 1;}


    Der /makeadmin Befehl:


    CMD:makeadmin(playerid,params[]){ printf("Der Spieler %s hat /makeadmin ausgeführt!",SpielerName(playerid)); new giveid,level; if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid,-1,"Du bist kein NLR Teammitglied!/Du hast nicht den jeweiligen Adminrang!"); if(sscanf(params,"ui",giveid,level)) return SendClientMessage(playerid,-1,"Benutze: /makeadmin (Spielerid) (Level)"); { PlayerInfo[giveid][pAdmin] = level; SpielerSpeichern(giveid); GameTextForPlayer(playerid,"Adminlevel ~g~geandert.",10000,5); } return 1;}


    //Edit Nachtrag
    Dies Stand in meiner Server_Log

    Der Spieler Aerox hat /makeadmin ausgeführt!
    [17:45:22] query: UPDATE `accounts` SET `Password`='52',`Level`='1',`Gender`='0',`Age`='0',`Admin`='1',`Skin`='26' WHERE `ID`='5'
    [17:45:22] Der Account von Aerox wurde erfolgreich gespeichert!
    [17:45:22] [part] Aerox has left the server (0:1)

    Damit sollte der Spieler eig das Adminlevel 1 haben aber es stand noch Adminlevel 6 in der Datebank..


    @Jeffry@Kaliber @_Marvin

  • Eventuell mal in die mysql log datei schauen :P


    Bzw schauen ob der Tabellenname und die id übereinstimmen :)

    Ja habe es eben auch gemerkt hätte ich ja früher drauf kommen können hatte eine Spalte (Age) vergessen :thumbup: nun probiere ich es mal jetz habe ich aber gesehen das wen alle accounts weg sind das es nicht mit 0 oder id 1 startet sondern mit id 12 beim ersten account ist das Schlimm ?