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

    All in all it's just another brick in the wall

  • 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


    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:

    Code
    220|Test|haha|3|2500|108188|23|51|100|5|2|2|0|0|0|1358645376|6|7|4|1|0|0|0|0|0|0|0|1|1|0|0|Test|1|1|15|1|0|300|29|214|0|1532.46|-1660.83|13.3828|356.451|30|37|2|0|521|0|4000|0|411|0|0|0|0|9|9
    [31/01/2013 10:07:17] SELECT * FROM `accounts` WHERE `Name` = 'Test'
  • Ü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]);

    All in all it's just another brick in the wall


  • 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?

    Einmal editiert, zuletzt von Bluescreen ()

  • 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


    An 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

    All in all it's just another brick in the wall


  • 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 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 so


    if(!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]);

    All in all it's just another brick in the wall


  • 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 sein


    for(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]);
    }