Schau dir doch einfach im print an, was genau bzw. welchen Typ die Ausgaben haben, und passe das dann bei sscanf an.
sscanf 2.0
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
-
-
RedJoker = Kein Integer,Fehler {i}
143941100993057C04DA7B14CF3D5FD7 = Kein Integer,Fehler {i}Ja das is mir klar die datenbank/Tabelle war etwas veraltet
aber wie ich schon geschrieben habe, und es so Ignoriere: {s[128]}
dann Crasht mein GTA!
mir bleibt nix anderes mehr übrig als es mit i zu machen -
Habe ein Problem und zwar wollte ich das ganze über einen Stock, so Laden:
stock LoadAccount(playerid)
{
new query[1024], data[1024];
format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", SpielerName(playerid));
mysql_query(query);
while(mysql_fetch_row(data))
{
sscanf(data, "e<p<|>{i}s[24]{i}iiiiifiiiiiiiiiiiiiiiiiiiiiis[128]iiiiiiiiiffffiiiiiiiiii>",SpielerInfo[playerid]);
}
mysql_free_result();
return 1;
}Leider lädt er überhaupt nichts, ist an meinem Code etwas Falsch?
-
Wie ist die Datenbak struktur und was sagt der debug?
Und dein enum brauchen wa auch -
Wie ist die Datenbak struktur und was sagt der debug?
Und dein enum brauchen wa auch
Also die Struktur ist genau in der Reihenfolge wie das Enum wenn es das ist was du meinst und hier die enum:enum SpielerDaten
{
pName[MAX_PLAYER_NAME],
pLevel,
pGeld,
pBankgeld,
pKills,
pTode,
pHealth,
pAdminlevel,
pFraktion,
pLeader,
pFraktionRang,
pNebenjob,
pBaned,
pTimeban,
pKicked,
pBanned,
pTimebanned,
pWarned,
pWarns,
pBootschein,
pLKWschein,
pPKWschein,
pFlugschein,
pMotorradschein,
pStrafpunkte,
pWaffenschein,
pPersonalausweis,
pKrankenhaus,
pWanted,
pWantedGrund[128],
pTutorial,
pGeschlecht,
pAlter,
pAdminspeed,
pCarFlip,
pErfahrungspunkte,
pSpielstunden,
pSkin,
pInterior,
Float:pXPos,
Float:pYPos,
Float:pZPos,
Float:pFPos,
pNextPayday,
pP_Timer,
pHygiene,
pToilette,
pNewsSkill,
pHandy,
pHandyNummer,
pHandyAn,
pKopfgeld,
pKopfgeldAuftrag,
pKey1,
pKey2,
pKey3,
pKey4
}
Das ganze Lädt er, aber er setzt es dem Spieler nicht, den ich lasse es Printen und dann kommt das heraus: -
welches sql plugin nutzt du?
-
-
ganz ehrlich wenn du schon das R7 nutzt dann nutz dazu kein sscanf
[ SCRIPTING ] MySQL R7 - Cachefunktionen + Threaded Querys
Die methode ist etwas schneller -
ganz ehrlich wenn du schon das R7 nutzt dann nutz dazu kein sscanf
[ SCRIPTING ] MySQL R7 - Cachefunktionen + Threaded Querys
Die methode ist etwas schneller
Werde ich irgendwann mal probieren jetzt hätte ich aber halt gerne sccanf benutzt da ich da jetzt etwas verstehe, sollte mein geposteter Code theoretisch funktionieren und wenn nicht was ist Falsch? -
Übergib die werte mal einzeln an den Enum weiter also als muster so:
sscanf(data, "e<p<|>{i}s[24]{i}iiiiifiiiiiiiiiiiiiiiiiiiiiis[128]iiiiiiiiiffffiiiiiiiiii>",SpielerInfo[playerid][Name],........);
Das musste ich leider auch machen da es bei mir auch nicht ging
Bei mir ist das Ganze so aufgebaut, damit du sehen kannst wie ich es meine
sscanf(Data, "p<|>ds[64]s[128]dddddddddddds[128]s[128]s[16]ddddddd",
PlayerInfo[playerid][Userid],PlayerInfo[playerid][Name],PlayerInfo[playerid][Passwort],PlayerInfo[playerid][Admin],PlayerInfo[playerid][Job],PlayerInfo[playerid][Team],PlayerInfo[playerid][Geld],PlayerInfo[playerid][Skin],
PlayerInfo[playerid][Level],PlayerInfo[playerid][Respekt],PlayerInfo[playerid][PayDay],PlayerInfo[playerid][PayDayTog],PlayerInfo[playerid][Rank],PlayerInfo[playerid][Leader],PlayerInfo[playerid][Banned],PlayerInfo[playerid][BanGrund],
PlayerInfo[playerid][BanAdmin],PlayerInfo[playerid][IP],PlayerInfo[playerid][Nummer],PlayerInfo[playerid][Safeban],PlayerInfo[playerid][Helm],PlayerInfo[playerid][Jobvertrag],PlayerInfo[playerid][Star],PlayerInfo[playerid][Igvip],
PlayerInfo[playerid][Jailtime]); -
-
Übergib die werte mal einzeln an den Enum weiter also als muster so:
sscanf(data, "e<p<|>{i}s[24]{i}iiiiifiiiiiiiiiiiiiiiiiiiiiis[128]iiiiiiiiiffffiiiiiiiiii>",SpielerInfo[playerid][Name],........);
Das musste ich leider auch machen da es bei mir auch nicht ging
Bei mir ist das Ganze so aufgebaut, damit du sehen kannst wie ich es meine
sscanf(Data, "p<|>ds[64]s[128]dddddddddddds[128]s[128]s[16]ddddddd",
PlayerInfo[playerid][Userid],PlayerInfo[playerid][Name],PlayerInfo[playerid][Passwort],PlayerInfo[playerid][Admin],PlayerInfo[playerid][Job],PlayerInfo[playerid][Team],PlayerInfo[playerid][Geld],PlayerInfo[playerid][Skin],
PlayerInfo[playerid][Level],PlayerInfo[playerid][Respekt],PlayerInfo[playerid][PayDay],PlayerInfo[playerid][PayDayTog],PlayerInfo[playerid][Rank],PlayerInfo[playerid][Leader],PlayerInfo[playerid][Banned],PlayerInfo[playerid][BanGrund],
PlayerInfo[playerid][BanAdmin],PlayerInfo[playerid][IP],PlayerInfo[playerid][Nummer],PlayerInfo[playerid][Safeban],PlayerInfo[playerid][Helm],PlayerInfo[playerid][Jobvertrag],PlayerInfo[playerid][Star],PlayerInfo[playerid][Igvip],
PlayerInfo[playerid][Jailtime]);
Hab es jetzt so gemacht:tock LoadAccount(playerid)
{
new str[512], query[1024];
format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", SpielerName(playerid));
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row(str))
{
sscanf(str, "e<p<|>{i}s[24]{i}iiiiifiiiiiiiiiiiiiiiiiiiiiis[128]iiiiiiiiiffffiiiiiiiiii{i}{i}{i}{i}>",
SpielerInfo[playerid][pName],
SpielerInfo[playerid][pLevel],
SpielerInfo[playerid][pGeld],
SpielerInfo[playerid][pBankgeld],);
print(str);
print(query);
}
mysql_free_result();
return 1;
}
Er Printet es auch richtig aber leider setzt er die Variablen etc. nicht hättest du da noch eine Lösung, an was es Liegen könnte? -
Wenn er die nicht setzt, dann hab ich so auch keine idee
Aber es kann an der Datenbank liegen, das du da falsche werte zuordnest
oder es kann auch sein das du den sscanf stock nimmst etc -
Wenn er die nicht setzt, dann hab ich so auch keine idee
Aber es kann an der Datenbank liegen, das du da falsche werte zuordnest
oder es kann auch sein das du den sscanf stock nimmst etcAn der Datenbank kann es eigentlich nicht liegen da ich vorher alles mit mysql_SetInt & mysql_GetInt gemacht habe und da auch alles funktioniert hat, habe jetzt den stock aus dem Script herausgenommen und das sccanf Plugin reingemacht, funktioniert leider auch nicht.
-
An der Datenbank kann es eigentlich nicht liegen da ich vorher alles mit mysql_SetInt & mysql_GetInt gemacht habe
Es liegt nicht daran du musst auf der reihenfolge achten ist da was verrutscht, kann es nicht richtig weitergeben an den enum das sollst du mal prüfen wenn das auch nicht klappt dann nutz die cache funktion von den r7 plugin -
Es liegt nicht daran du musst auf der reihenfolge achten ist da was verrutscht, kann es nicht richtig weitergeben an den enum das sollst du mal prüfen wenn das auch nicht klappt dann nutz die cache funktion von den r7 plugin
Das Problem ist aber das er ist überhaupt nichts setzt, und theoretisch sollte er ja min. bei 2 Variablen etwas setzen aber er setzt überhaupt nicht, und könntest du mir vielleicht ein Beispiel für die Cache Funktion zeigen dein bei dem Tutorial verstehe ich als Anfänger nicht wirklich etwas. -
Seit wann hat denn die R7 Version eine mysql_query Funktion?
-
Seit wann hat denn die R7 Version eine mysql_query Funktion?
Seit immer , wenn man auch in der lage ist ein macro zu verwenden in der neusten version von der include hat das jemand mal hinzugefügt nun gut in meinen augen
jedoch sinnlos.um noch etwas hier mal auf zu führen sollte man mal mit sscanf ein fille auslesen ist dies auch möglich besser gesagt sollte der jeweilige gebrauchte eintrag kommen
den man splitten möchte geht dies soif(!sscanf(string, "p<|>'a ='d''f''f''f''f''f''f''s[20]''d'",...))
um solch einen string zu splitten falls der in dem file existiert
a = |10|1.0|...ist aufjedenfall praktisch, wenn man mit fread arbeitet und der den ganzen inahlt einer reihe als string zieht.
-
while(mysql_fetch_row(str))//Übergibt das was vorher aus der Tabelle geladen wurde an einen string. { sscanf(str, "e<p<|>{i}s[16]s[24]s[130]iiifff>",SpielerInfo[playerid]);//teilt den string in seine bestandteile so wie wir es wollen und gibt es an das enum weiter }
maddin änder das doch mal bei gelegenheit
die while funktion würd ich nicht anwenden, da bei mir gerne der Server verreckt wenn ich das mit ner while funktion mache^^So geht es auch:
mysql_fetch_row(str);
sscanf(str, "e<p<|>{i}s[16]s[24]s[130]iiifff>",SpielerInfo[playerid]); -
maddin änder das doch mal bei gelegenheit
die while funktion würd ich nicht anwenden, da bei mir gerne der Server verreckt wenn ich das mit ner while funktion mache^^So geht es auch:
mysql_fetch_row(str);
sscanf(str, "e<p<|>{i}s[16]s[24]s[130]iiifff>",SpielerInfo[playerid]);wenn du nicht kompetent genug dazu bist eine while schleife zu verwenden geht das auch per for-schleife, aber von der geschwindigkeit sollte in dem fall sogar
die while schleife schneller seinfor(new i; mysql_fetch_row(str) == 0; ++i)
oder
for(new i; ;++i ){
if(!mysql_fetch_row(str))break;
sscanf(str, "e<p<|>{i}s[16]s[24]s[130]iiifff>",SpielerInfo[i]);
} -
wenn du nicht kompetent genug dazu bist eine while schleife zu verwenden
Wozu brauch ich für einen Spieler beim laden eine While schleife?
Ich seh da kein sinn -