MySQL Speichert nicht

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
  • Halli Hallo zusammen,


    als erstes möchte ich die Standard frage weg räumen um euch so viele Informationen zu liefern wie möglich.


    Ich bin von Dini auf MySQL gewechselt, alles schien gut zu sein. Nur werden die Accounts nicht gespeichert.
    Schon mal vorab ein paar Antworten:


    • Ja, ich habe die SuFu benutzt und auch Google jedoch nichts brauchbares gefunden.
    • Ja, ich habe Das Aktuellste MySQL Plugin (R39-2) was wunderbar funktioniert.
    • Ja, es sind keine Fehler im Script.
    • Ja, es wird die Verbindung zur MySQL Datenbank aufgebaut.
    • Ja, es werden die Accounts geladen, das auslesen klappt wunderbar.


    Puh.. So ich habe ein sogenanntes Speichern Callback erstellt das auch aufgerufen wird. Woher ich das weiß das es aufgerufen wird?
    Ich habe es mir in der Console ausprinten lassen. Ich denke der Fehler liegt zum Teil darin.


    Ich habe 2 Varianten benutzt und beide gingen nicht.


    Als erstes habe ich Variante 1 benutzt:



    new query[128];
    format(query,sizeof(query),"UPDATE accounts SET level='%i',money='%i',alevel='%i',premiumlevel='%i',haus='%i',eingemietet='%i' WHERE id='%i'",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet],PlayerInfo[playerid][db_id]);


    Ich dachte mir, vielleicht hat es ein Problem mit dem UPDATE und speichert deswegen nicht. Darum habe ich es umgeschrieben zu:



    new query[128];
    format(query,sizeof(query),"INSERT INTO accounts (level,money,alevel,premiumlevel,haus,eingemietet) VALUES ('%i','%i','%i','%i','%i')",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet]);



    Aber auch hier geht nichts, es wird noch immer nicht gespeichert. Mit Pawno kenne ich mich mittlerweile gut aus jedoch nicht mit MySQL :D


    Welches vom beiden oben ist besser und sollte ich zum Speichern verwenden?


    Zu dem beiden habe ich einen Error bekommen der mir erst im nachhinein aufgefallen ist. Auszug aus der mysql_log.txt:


    Code
    [ERROR] cache_get_field_content_int - invalid datatype


    So lese ich es aus was komischerweise immer funktioniert.



    PlayerInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0,"level",dbhandle);
    PlayerInfo[playerid][pCash] = cache_get_field_content_int(0,"money",dbhandle);
    PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0,"alevel",dbhandle);
    PlayerInfo[playerid][pDonateRank] = cache_get_field_content_int(0,"premiumlevel",dbhandle);
    PlayerInfo[playerid][Haus] = cache_get_field_content_int(0,"haus",dbhandle);


    Nun bin ich etwas Sprachlos und suche selbst die ganze zeit nach einer Lösung.
    Ich würde echt nicht fragen wenn ich es selbst nicht versucht hätte, ich sitze schon gut 3 Tage daran das hin zu bekommen, jedoch bis langen erfolgslos.


    Freue mich über jede nützliche Antworten und hoffe das wir es irgendwie schaffen. :)


    Mit freundlichen Grüßen,
    StandbyGamer



    #EDIT 1: Auslesung hinzugefügt

    Mit Freundlichen Grüßen

    StandbyGamer

    Einmal editiert, zuletzt von StandbyGamer () aus folgendem Grund: Auslesung hinzugefügt

  • Ja, das kann ich machen.


    Login abfrage wenn es stimmt:



    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM accounts WHERE username='%s' AND password=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);


    und hier ist das Callback OnPasswordResponse



    new num_fields,num_rows,stringlogin[300];
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Passwort richtig || Spieler Laden
    new tmp2[256];
    new string2[128];
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));


    PlayerInfo[playerid][eingeloggt] = 1;
    PlayerInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0,"level",dbhandle);
    PlayerInfo[playerid][pCash] = cache_get_field_content_int(0,"money",dbhandle);
    PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0,"alevel",dbhandle);
    PlayerInfo[playerid][pDonateRank] = cache_get_field_content_int(0,"premiumlevel",dbhandle);
    PlayerInfo[playerid][Haus] = cache_get_field_content_int(0,"haus",dbhandle);


    Das lustige ist.. die ID, Benutzername und Passwort werden gespeichert und geladen

    Mit Freundlichen Grüßen

    StandbyGamer

  • Der Zusammenhang deines Codes, zumindest so wie er da steht, ist für mich nicht nachvollziehbar.
    Wird denn der Spieler, wenn er sich registriert, in die Datenbank eingetragen? Wenn nein, poste den Code der das eigentlich machen soll.
    Falls ja, welcher Teil vom Code funktioniert nicht? Und poste da dann bitte den kompletten Code und nicht nur das Query. Falls es in einem Callback oder einer Funktion steht, poste bitte die ganze Funktion und zeige ebenfalls wie du diese aufrufst.


    Mit dieses Bruchstücken kann ich leider nichts anfangen. Da kann ich dich nur drauf verweisen mal in den MySQL Log zu schauen, was da steht, wenn du mysql_log auf LOG_ALL stellst.

  • mysql_log auf LOG_ALL


    Das musst du mir erklären wie und wo, mit dem Anderen Fange ich noch mal neu an :)


    Wenn man den Server Betritt kommt folgendes.



    //Login/Register
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM accounts WHERE username='%s'",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);


    Es wird der Callback OnUserCheck aufgerufen dieser sieht wie folgt aus:



    public OnUserCheck(playerid)
    {
    new num_rows,num_fields,stringlogin[300],stringregister[300];
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)
    {
    //Registrierung
    format(stringregister,sizeof(stringregister),"Willkommen Register Text");
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_PASSWORD,"Registrierung",stringregister,"Registrieren","");
    }
    else
    {
    //Login
    format(stringlogin,sizeof(stringlogin),"Willkommen LoginText");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung",stringlogin,"Anmelden","");
    }
    return 1;
    }


    So, der DIALOG_REG2 sieht so aus:



    if(dialogid == DIALOG_REG2)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35],stringlogin[300],stringregister[300];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>5 && strlen(inputtext)<35)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO accounts (username,password) VALUES ('%s',MD5('%s')) ",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPlayerRegister","i",playerid);


    format(stringlogin,sizeof(stringlogin),"Willkommen Login Text");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung",stringlogin,"Anmelden","");
    }
    else
    {
    //Kleiner als 6 Zeichen
    SendClientMessage(playerid,FARBE_ROT,"Dein Passwort muss mindestens 6 und maximal 35 Zeichen lang sein.");
    format(stringregister,sizeof(stringregister),"Willkommen Register Text);
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_PASSWORD,"Registrierung",stringregister,"Registrieren","");
    }
    }
    return 1;
    }


    Der OnPlayerRegister Callback dazu:



    public OnPlayerRegister(playerid)
    {
    PlayerInfo[playerid][db_id] = cache_insert_id(dbhandle);
    return 1;
    }


    und hier ist der DIALOG_LOGIN



    if(dialogid == DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35],stringlogin[300];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM accounts WHERE username='%s' AND password=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //Keine Eingabe
    format(stringlogin,sizeof(stringlogin),"{C9C9C9}Willkommen Login Text");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Anmeldung",stringlogin,"Anmelden","");
    }
    }
    }


    Soo und nun OnPasswordResponse :



    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows,stringlogin[300];
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Passwort richtig || Spieler Laden
    PlayerInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0,"level",dbhandle);
    PlayerInfo[playerid][pCash] = cache_get_field_content_int(0,"money",dbhandle);
    PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0,"alevel",dbhandle);
    PlayerInfo[playerid][pDonateRank] = cache_get_field_content_int(0,"premiumlevel",dbhandle);
    PlayerInfo[playerid][Haus] = cache_get_field_content_int(0,"haus",dbhandle);


    }
    return 1;
    }


    Und im PlayerUpdate wird alles gespeichert:



    PlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][eingeloggt]==0)return 1;


    //Speichern
    new query[128];
    format(query,sizeof(query),"INSERT INTO accounts (level,money,alevel,premiumlevel,haus,eingemietet) VALUES ('%i','%i','%i','%i','%i')",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet]);
    }
    return 1;
    }


    So das sollte es erstmal grob gewesen sein. Beim Speichern weiß ich halt jetzt nicht was ich benutzen muss ob die INSERT variante oder das UPDATE (ein paar beiträge oben zu sehen.)


    Es wird der User in die Datenbank geschrieben mit der datenbank id, Namen und Passwort der Rest aber nicht.
    Ich habe auch so mal in der Datenbank das Adminlevel verändert und ging drauf. Das auslesen klappt soweit, ich bin dann auch Admin oder mitn Geld das wird auch ausgelesen.
    Am Speichern harpert es..


    Liebe Grüße,
    StandbyGamer

    Mit Freundlichen Grüßen

    StandbyGamer

  • Also wenn ich das richtig deute, dann ist PlayerUpdate(playerid) das einzige was nicht klappt.
    Das kann ich dir auch sagen warum. Wie die Funktion schon sagt (Update) musst du UPDATE verwenden, nicht INSERT. Ändere das ab und teste es, den Code hattest du ja oben schon.


    Falls es nicht klappt, poste wie gesagt mal den Log.
    Wie du das machst siehst du hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4)


    Wo im Code lässt du eigentlich PlayerUpdate(playerid) aufrufen?


  • Ja, nun habe ich wieder UPDATE drin und es geht noch immer nicht, es muss auch eindeutig an playerupdate liegen das es da nicht nehmen will. Der DEBUG ist oben.


    Das PlayerUpdate(playerid) lasse ich öfters mal zur Sicherheit mal abfragen nach einigen kauf oder Änderungen und wenn der Spieler den Server wieder verlässt.

    Mit Freundlichen Grüßen

    StandbyGamer

  • Ok, ganz geladen wird es auch nicht das level zb. wird auch noch nicht geladen das Geld und Adminlevel jedoch schon.


    CaZe: Hab ich doch schon UPDATE ist schon drin und dann hab ich es gedebugt. und genannt habe ich es auch schon.


    Das PlayerUpdate(playerid) lasse ich öfters mal zur Sicherheit mal abfragen nach einigen kauf oder Änderungen und wenn der Spieler den Server wieder verlässt.

    Mit Freundlichen Grüßen

    StandbyGamer

  • Zeige mal bitte die Funktion wie du sie nun mit Update ... geschrieben hast. Überprüfe nochmal genau ob die Namen der caches wie du sie im skript angegeben hast auch mit der Datenbank übereinstimmen.

  • Du sollst mir zeigen wie du diesse hier nun geschrieben hast:
    Du sagtest ja du hättest es überarbeitet

    PlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][eingeloggt]==0)return 1;


    //Speichern
    new query[128];
    format(query,sizeof(query),"INSERT INTO accounts (level,money,alevel,premiumlevel,haus,eingemietet) VALUES ('%i','%i','%i','%i','%i')",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet]);
    }
    return 1;
    }

  • PlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][eingeloggt]==0)return 1;


    //Speichern
    new query[128];
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    format(query,sizeof(query),"UPDATE accounts SET level='%i',money='%i',alevel='%i',premiumlevel='%i',haus='%i',eingemietet='%i' WHERE id='%i'",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet],PlayerInfo[playerid][db_id]);


    }
    return 1;
    }


    Im Script ist das natürlich nicht so abgeknickt das eingemietet in einer neuen reihe ist.

    Mit Freundlichen Grüßen

    StandbyGamer

  • PlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][eingeloggt]==0)return 1;


    //Speichern
    new query[128];
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    format(query,sizeof(query),"UPDATE accounts SET level='%i',money='%i',alevel='%i',premiumlevel='%i',haus='%i',eingemietet='%i' WHERE id='%i'",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet],PlayerInfo[playerid][db_id]);
    mysql_pquery(dbhandle,query);
    }
    return 1;
    }
    Du musst die query natürlich auch übebringen/"absenden"

  • Ouh.. ich und MySQL.. naja, aber auch hier nach noch immer nichts:


    Mit Freundlichen Grüßen

    StandbyGamer

  • Code
    [02:16:28] [DEBUG] mysql_pquery - connection: 1, query: "UPDATE accounts SET waffenslot11='0',ammoslot11='0',waffenslot12", callback: "(null)", format: "(null)"
    [02:16:28] [DEBUG] CMySQLQuery::Execute[] - starting query execution
    [02:16:28] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''3' at line 1
    [02:16:28] [DEBUG] CMySQLQuery::Execute[] - error will be triggered in OnQueryError


    Wo werden diese Parameter aufgerufen? In deimen PlayerUpdate sind sie ja nicht vorhanden. Es befindet sich dort ein Syntax fehler.

  • Das mit den Waffen habe ich eh wieder raus genommen.


    Wollte eigentlich umgehen alles zu posten aber es ist doch besser. Musste etwas bei PlayerUpdate weglassen nach hinten hin weil der Beitrag zu lang wäre.
    Das geht immer so weiter wie es da auch steht. Der DEBUG ist alles komplett gepostet.



    PlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][eingeloggt]==0)return 1;
    //Speichern
    new query[128];
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    format(query,sizeof(query),"UPDATE accounts SET level='%i',money='%i',alevel='%i',premiumlevel='%i',haus='%i',eingemietet='%i' WHERE id='%i'",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET hausbesitz='%s',hausschluessel='%i',upgradepoints='%i',connectedtime='%i',registered='%i' WHERE id='%i'",
    PlayerInfo[playerid][Hausbesitz],PlayerInfo[playerid][Hausschluessel],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],PlayerInfo[playerid][pReg],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET geschlecht='%i',age='%i',origin='%i',zivispawn='%i',ck='%i' WHERE id='%i'",
    PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pOrigin],PlayerInfo[playerid][pZivispawn],PlayerInfo[playerid][pCK],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET muted='%i',respect='%i',bank='%i',kredit='%i',kreditdauer='%i' WHERE id='%i'",
    PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],PlayerInfo[playerid][pAccount],PlayerInfo[playerid][pPlayerKredit],PlayerInfo[playerid][pPlayerKreditDauer],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET crimes='%i',kills='%i',deaths='%i',arrested='%i',wanteddeaths='%i' WHERE id='%i'",
    PlayerInfo[playerid][pCrimes],PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pArrested],PlayerInfo[playerid][pWantedDeaths],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET phonebook='%i',lottonr='%i',fishes='%i',biggestfish='%i',job='%i' WHERE id='%i'",
    PlayerInfo[playerid][pPhoneBook],PlayerInfo[playerid][pLottoNr],PlayerInfo[playerid][pFishes],PlayerInfo[playerid][pBiggestFish],PlayerInfo[playerid][pJob],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET jobzeit='%i',paycheck='%i',headvalue='%i',jailed='%i',gangjailed='%i' WHERE id='%i'",
    PlayerInfo[playerid][pJobtime],PlayerInfo[playerid][pPayCheck],PlayerInfo[playerid][pHeadValue],PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pGangJailed],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET mauled='%i',jailtime='%i',materials='%i',drugs='%i',verband='%i' WHERE id='%i'",
    PlayerInfo[playerid][pMauled],PlayerInfo[playerid][pJailTime],PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrugs],PlayerInfo[playerid][pVerband],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET boxmaterials='%i',boxdrugs='%i',fightingstyle='%i',leader='%i',member='%i' WHERE id='%i'",
    PlayerInfo[playerid][pBoxMats],PlayerInfo[playerid][pBoxDrugs],GetPlayerFightingStyle(playerid),PlayerInfo[playerid][pLeader],PlayerInfo[playerid][pMember],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET fmember='%i',rank='%i',pskin='%i',contracttime='%i',detskill='%i' WHERE id='%i'",
    PlayerInfo[playerid][pFMember],PlayerInfo[playerid][pRank],PlayerInfo[playerid][pChar],PlayerInfo[playerid][pContractTime],PlayerInfo[playerid][pDetSkill],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET sexskill='%i',boxskill='%i',lawskill='%i',mechskill='%i',jackskill='%i' WHERE id='%i'",
    PlayerInfo[playerid][pSexSkill],PlayerInfo[playerid][pBoxSkill],PlayerInfo[playerid][pLawSkill],PlayerInfo[playerid][pMechSkill],PlayerInfo[playerid][pJackSkill],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET carskill='%i',drugsskill='%i',cookskill='%i',fishskill='%i',pshealth='%i' WHERE id='%f'",
    PlayerInfo[playerid][pCarSkill],PlayerInfo[playerid][pDrugsSkill],PlayerInfo[playerid][pCookSkill],PlayerInfo[playerid][pFishSkill],PlayerInfo[playerid][pSHealth],PlayerInfo[playerid][db_id]);


    GetPlayerHealth(playerid,PlayerInfo[playerid][pHealth]);
    format(query,sizeof(query),"UPDATE accounts SET phealth='%f',interior='%i',local='%i',team='%i',model='%i' WHERE id='%i'",
    PlayerInfo[playerid][pHealth],PlayerInfo[playerid][pInt],PlayerInfo[playerid][pLocal],PlayerInfo[playerid][pTeam],PlayerInfo[playerid][pModel],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET gwd='%f',phonenr='%i',house='%i',bizz='%i',handygeld='%i' WHERE id='%i'",
    PlayerInfo[playerid][pGWD],PlayerInfo[playerid][pPnumber],PlayerInfo[playerid][pPhousekey],PlayerInfo[playerid][pPbiskey],PlayerInfo[playerid][pHandyGeld],PlayerInfo[playerid][db_id]);


    if ((PlayerInfo[playerid][pPos_x]==0.0 && PlayerInfo[playerid][pPos_y]==0.0 && PlayerInfo[playerid][pPos_z]==0.0))
    {
    PlayerInfo[playerid][pPos_x] = 1684.9;
    PlayerInfo[playerid][pPos_y] = -2244.5;
    PlayerInfo[playerid][pPos_z] = 13.5;
    }
    if(Spectate[playerid] != 255)
    {
    PlayerInfo[playerid][pPos_x] = Unspec[playerid][sPx];
    PlayerInfo[playerid][pPos_y] = Unspec[playerid][sPy];
    PlayerInfo[playerid][pPos_z] = Unspec[playerid][sPz];
    PlayerInfo[playerid][pInt] = Unspec[playerid][sPint];
    PlayerInfo[playerid][pLocal] = Unspec[playerid][sLocal];
    }
    format(query,sizeof(query),"UPDATE accounts SET handyver='%i',pos_x='%f',pos_y='%f',pos_z='%f',carlic='%i' WHERE id='%i'",
    PlayerInfo[playerid][pHandyVer],PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z],PlayerInfo[playerid][pCarLic],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET newlic='%i',flylic='%i',boatlic='%i',fishlic='%i',zollpass='%i' WHERE id='%i'",
    PlayerInfo[playerid][pNewLic],PlayerInfo[playerid][pFlyLic],PlayerInfo[playerid][pBoatLic],PlayerInfo[playerid][pFishLic],PlayerInfo[playerid][pZollPass],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET zollpasstime='%i',statsbox='%i',gunlic='%i',lkwlic='%i',rollerlic='%i' WHERE id='%i'",
    PlayerInfo[playerid][pZollPassTime],PlayerInfo[playerid][pStatsBox],PlayerInfo[playerid][pGunLic],PlayerInfo[playerid][pLKWLic],PlayerInfo[playerid][pRollerLic],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET motolic='%i',navigations='%i',pin='%i',donatorpoints='%i',numberchange='%i' WHERE id='%i'",
    PlayerInfo[playerid][pMotoLic],PlayerInfo[playerid][pNavigations],PlayerInfo[playerid][pPin],PlayerInfo[playerid][pDonatorPoints],PlayerInfo[playerid][pNumberchange],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET zig='%i',kekse='%i',zigsucht='%i',gun1='%i',gun2='%i' WHERE id='%i'",
    PlayerInfo[playerid][pZig],PlayerInfo[playerid][pKekse],PlayerInfo[playerid][pZigSucht],PlayerInfo[playerid][pGun1],PlayerInfo[playerid][pGun2],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET gun3='%i',gun4='%i',ammo1='%i',ammo2='%i',ammo3='%i' WHERE id='%i'",
    PlayerInfo[playerid][pGun3],PlayerInfo[playerid][pGun4],PlayerInfo[playerid][pAmmo1],PlayerInfo[playerid][pAmmo2],PlayerInfo[playerid][pAmmo3],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET ammo4='%i',cartime='%i',payday='%i',paydayhad='%i',cdplayer='%i' WHERE id='%i'",
    PlayerInfo[playerid][pAmmo4],PlayerInfo[playerid][pCarTime],PlayerInfo[playerid][pPayDay],PlayerInfo[playerid][pPayDayHad],PlayerInfo[playerid][pCDPlayer],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET wins='%i',loses='%i',alcoholperk='%i',drugperk='%i',miserperk='%i' WHERE id='%i'",
    PlayerInfo[playerid][pWins],PlayerInfo[playerid][pLoses],PlayerInfo[playerid][pAlcoholPerk],PlayerInfo[playerid][pDrugPerk],PlayerInfo[playerid][pMiserPerk],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET painperk='%i',traderperk='%i',tutorial='%i',warnings='%i',adjustable='%i' WHERE id='%i'",
    PlayerInfo[playerid][pPainPerk],PlayerInfo[playerid][pTraderPerk],PlayerInfo[playerid][pTut],PlayerInfo[playerid][pWarns],PlayerInfo[playerid][pAdjustable],PlayerInfo[playerid][db_id]);


    mysql_pquery(dbhandle,query);
    print("PlayerUpdate wurde aufgerufen.");
    }
    return 1;
    }


    Mit Freundlichen Grüßen

    StandbyGamer

  • Das Problem ist, dass du das
    mysql_pquery(dbhandle,query);
    nur einmal ganz am Ende hast, sprich es wird nur das letzte Query ausgeführt.


    Entweder du fügst diese Queries alle zu einem großen Query zusammen, oder du sendest nach jedem Format das Query ab (nicht so gut).


    Zusammenfügen:
    format(query,sizeof(query),"UPDATE accounts SET level='%i',money='%i',alevel='%i',premiumlevel='%i',haus='%i',eingemietet='%i',",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"%s hausbesitz='%s',hausschluessel='%i',upgradepoints='%i',connectedtime='%i',registered='%i',", query
    PlayerInfo[playerid][Hausbesitz],PlayerInfo[playerid][Hausschluessel],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],PlayerInfo[playerid][pReg],PlayerInfo[playerid][db_id]);

    Und so weiter.


    Beachte, dass du das query natürlich von 128 erhöhen musst, auf 1024 oder so.