Yup, das sollte dann schon passen.
Ja, bei allen den Queries im Login-Vorgang musst du das machen. An sich ist das in ein paar Minuten erledigt.
Beiträge von Jeffry
-
-
Das query ist etwas zu klein.
new query[128];
Zu
new query[512]; -
Nein, das crashdetect ist ein Plugin.
-
Du musst das AddStaticVehicle in OnHousesLoad rein machen, vor updateHouse, da dort wo es momentan ist die Daten noch nicht in den Variablen stehen.
-
Dann benenne es um:
format(PlayerInfo[playerid][pClanname], 32, dini_Get(Player,"Clan"));
PlayerInfo[playerid][pRang] = dini_Int(Player,"Rang");Und schreibe dort pClanname und pRang rein, in das enum.
-
PlayerInfo[playerid][clanname] = dini_Int(Player,"Clan");
PlayerInfo[playerid][Rang] = dini_Int(Player,"Rang");zu:
format(PlayerInfo[playerid][clanname], 32, dini_Get(Player,"Clan"));
PlayerInfo[playerid][Rang] = dini_Int(Player,"Rang");Dann musst du clanname und Rang in das enum von PlayerInfo eintragen.
-
Poste die Funktion doch bitte mal und sage wo sie im Code steht.
-
Das ist ganz einfach.
Du schreibst einfach das, was du sonst in das public von mysql_tquery schreibst, in die Zeilen direkt nach mysql_query. Mehr nicht.
-
Dann schreibe es so und poste dann was im Server Log steht, wenn du den Server verlässt.
Spoiler anzeigen public SpielerSpeichern(playerid){
printf("SpielerSpeichern: %d", playerid);
if(!IsPlayerNPC(playerid) && SpielerInfo[playerid][sEingeloggt]){
GetPlayerPos(playerid,SpielerInfo[playerid][sLogoutPos][0],SpielerInfo[playerid][sLogoutPos][1],SpielerInfo[playerid][sLogoutPos][2]);
printf("Step 1");
MySQLCheckConnection();
new Float:lx,Float:ly,Float:lz,Float:la;
GetPlayerPos(playerid,lx,ly,lz);
GetPlayerFacingAngle(playerid,la);
new Query[2048];
printf("Query: %s", Query);
format(Query,sizeof(Query),"UPDATE `accounts` SET `Ausgeloggt`='%d',`IpAdresse`='%s',`Adminlevel`='%d',`Helper`='%d',`Verwarnungen`='%d',`Premium`='%d',`Spielzeit`='%d',`Geschlecht`='%d',`Level`='%d',`Tutorial`='%d',`Aussehen`='%d',`Geld`='%d',`Bank`='%d',`Telefon`='%d',`Telefonnummer`='%d',`Telefonbuch`='%d',`Klingelton`='%d',`Personalausweis`='%d',`PersonalausweisAntrag`='%d',`Arbeitslos`='%d',`ArbeitslosAntrag`='%d',`Job`='%d',`Jobzeit`='%d',",
gettime(),
SpielerInfo[playerid][sIp],
SpielerInfo[playerid][sAdminlevel],
SpielerInfo[playerid][sWarns],
SpielerInfo[playerid][sPremium],
SpielerInfo[playerid][sSpielzeit],
SpielerInfo[playerid][sGeschlecht],
SpielerInfo[playerid][sLevel],
SpielerInfo[playerid][sTutorial],
SpielerInfo[playerid][sSkin],
GetPlayerMoney(playerid),
SpielerInfo[playerid][sBank],
SpielerInfo[playerid][sTelefon],
SpielerInfo[playerid][sTelefonnummer],
SpielerInfo[playerid][sTelefonbuch],
SpielerInfo[playerid][sKlingelton],
SpielerInfo[playerid][sPerso],
SpielerInfo[playerid][sPersoAntrag],
SpielerInfo[playerid][sArbeitslos],
SpielerInfo[playerid][sArbeitslosAntrag],
SpielerInfo[playerid][sJob],
SpielerInfo[playerid][sLastJob]);
format(Query,sizeof(Query),"%s`Fahrlizenz`='%d',`Angellizenz`='%d',`FahrlizenzSperre`='%d',`Fluglizenz`='%d',`FluglizenzSperre`='%d',`Lastkraftwagenlizenz`='%d',`LastkraftwagenlizenzSperre`='%d',`Motorradlizenz`='%d',`MotorradlizenzSperre`='%d',`Schifffahrtslizenz`='%d',`SchifffahrtslizenzSperre`='%d',`Waffenlizenz`='%d',`WaffenlizenzSperre`='%d',",
Query,
SpielerInfo[playerid][sFahrlizenz],
SpielerInfo[playerid][sAngellizenz],
SpielerInfo[playerid][sFahrlizenzLock],
SpielerInfo[playerid][sFlyLic],
SpielerInfo[playerid][sFlyLicLock],
SpielerInfo[playerid][sLKWLic],
SpielerInfo[playerid][sLKWLicLock],
SpielerInfo[playerid][sBikeLic],
SpielerInfo[playerid][sBikeLicLock],
SpielerInfo[playerid][sBoatLic],
SpielerInfo[playerid][sBoatLicLock],
SpielerInfo[playerid][sWeaponLic],
SpielerInfo[playerid][sWeaponLicLock]);
format(Query,sizeof(Query),"%s`Gehalt`='%d',`Fraktion`='%d',`Fraktionssperre`='%d',`Boss`='%d',`Rang`='%d',`Strafpunkte`='%d',`PaydayZeit`='%d',`Respektpunkte`='%d',`Fischskill`='%d',`SaveMats`='%d',`SaveDrogen`='%d',`Mats`='%d',`Bmod`='%d',`Coints`='%d',`Ticketsopen`='%d',`Drogen`='%d',",
Query,
SpielerInfo[playerid][sGehalt],
SpielerInfo[playerid][sFraktion],
SpielerInfo[playerid][sInviteLock],
SpielerInfo[playerid][sBoss],
SpielerInfo[playerid][sRang],
SpielerInfo[playerid][sPunkte],
SpielerInfo[playerid][sPaydayZeit],
SpielerInfo[playerid][sRespektpunkte],
SpielerInfo[playerid][sFishSkill],
SpielerInfo[playerid][sSaveMats],
SpielerInfo[playerid][sSaveDrogen],
SpielerInfo[playerid][sMats],
SpielerInfo[playerid][sBmod],
SpielerInfo[playerid][sCoints],
SpielerInfo[playerid][sTicketsopen],
SpielerInfo[playerid][sDrogen]);
format(Query,sizeof(Query),"%s`Krankenhaus`='%d',`Friedhof`='%d',`TotX`='%f',`TotY`='%f',`TotZ`='%f',`Tode`='%d',`LogoutX`='%f',`LogoutY`='%f',`LogoutZ`='%f',`Fische`='%d',`Haus`='%d',`Spawn`='%d',`Morde`='%d',`Kills`='%d',`Verbrechen`='%d',`Wantedlevel`='%d',`Knast`='%d',`KnastZeit`='%d',`posX`='%f',`posY`='%f',`posZ`='%f',`posA`='%f' WHERE `Spielername`='%s'",
Query,
SpielerInfo[playerid][sKrankenhaus],
SpielerInfo[playerid][sFriedhof],
SpielerInfo[playerid][sTx],
SpielerInfo[playerid][sTy],
SpielerInfo[playerid][sTz],
SpielerInfo[playerid][sTode],
SpielerInfo[playerid][sLogoutPos][0],
SpielerInfo[playerid][sLogoutPos][1],
SpielerInfo[playerid][sLogoutPos][2],
SpielerInfo[playerid][sFishes],
SpielerInfo[playerid][sHaus],
SpielerInfo[playerid][sSpawn],
SpielerInfo[playerid][sMorde],
SpielerInfo[playerid][sKills],
SpielerInfo[playerid][sVerbrechen],
SpielerInfo[playerid][sWantedlevel],
SpielerInfo[playerid][sGefangen],
SpielerInfo[playerid][sGefangenZeit],
lx,
ly,
lz,
la,
SpielerInfo[playerid][sName]);
printf("Query: %s", Query);
mysql_query(Query);
return 1;
}
return 0;
} -
Erhöhe das ackslimit in der server.cfg.
https://wiki.sa-mp.com/wiki/MapNameSetze es auf 7000 oder so.
-
Dann lade dir das Crashdetect Plugin herunter, füge es in deinen Server ein und poste was im Server Log steht, wenn du den Befehl eingibst.
http://forum.sa-mp.com/showthread.php?t=262796 -
Kann es sein, dass der Server abstürzt und neu startet, wenn du den Befehl eingibst?
Prüfe das mal. -
Dann rufst du SpielerSpeichern(playerid) vielleicht gar nirgends auf?
Wo rufst du das auf? -
if(PlayerInfo[playerid][pPremium])format(string, sizeof(string),"{000000}|{FF0000}|{FFFF00}|{FF0000} %s {FFFFFF}%s sagt:{FFFFFF} %s",PremiumRang[PlayerInfo[playerid][pPremium]] ,PlayerName(playerid),text);
else if(PlayerInfo[playerid][pAdminLevel])format(string, sizeof(string),"{000000}|{FF0000}|{FFFF00}|{FF0000} %s {FFFFFF}%s sagt:{FFFFFF} %s",AdminRang[PlayerInfo[playerid][pAdminLevel]],PlayerName(playerid),text);
else format(string, sizeof(string),"{000000}|{FF0000}|{FFFF00}|{FF0000} Nichts {FFFFFF}%s sagt:{FFFFFF} %s",PlayerName(playerid),text);und:
new AdminRang[][] = {
{"Spieler"},
{"Probe Supporter"},
{"Supporter"},
{"Admin"},
{"Head Admin"},
{"Projektleiter"}
};new PremiumRang[][] = {
{"Normal"},
{"Mittel"},
{"Mega"},
{"Ultra"}
}; -
Wie hast du den PremiumRang denn definiert? Möglicherweise gar nicht?
-
format(string, sizeof(string),"{000000}|{FF0000}|{FFFF00}|{FF0000} %s/%s {FFFFFF}%s sagt:{FFFFFF} %s",AdminRang[PlayerInfo[playerid][pAdminLevel]] ,PremiumRang[PlayerInfo[playerid][pPremium]] ,PlayerName(playerid),text);
Dann sollte es klappen.
-
Das sieht dahingehend gut aus, dann geht das Query. Wäre trotzdem gut, wenn du den Query-Print von SpielerSpeichern posten könntest, damit wir sehen, was dort beim Geld und beim Level gespeichert wird.
Alle anderen Stats werden korrekt gespeichert und geladen?
-
Zum MySQL Log:
Da stimmt wohl beim Laden ein Datentyp nicht (ist kein INT). Prüfe deine Attribute da mal durch.Zum Fehler:
Du hast saveHouse gar nicht ausführen lassen, der Print steht nicht im Log. Lass das mal ausführen. -
Ändere mal:
else if(Zone[i][gRunning] == 1)
zu:
if(Zone[i][gRunning] == 1) -
Oh, ich meinte eigentlich das Query beim SpielerSpeichern, das sollte geprintet werden. Füge dort den Print ein.
Kannst du zusätzlich mal posten, was im MySQL Log steht, wenn du den Spieler speicherst?