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

  • X(


    Wozu brauch ich für einen Spieler beim laden eine While schleife?
    Ich seh da kein sinn


    Beim auslesen der daten des spielers macht es ja auch kein sinn eine for , while , do-while oder sonst eine schleifenform zu verwenden.


    du hast nur eine anspielung auf die while schleife gemacht


    Zitat

    die while funktion würd ich nicht anwenden, da bei mir gerne der Server verreckt wenn ich das mit ner while funktion mache


    und das man so die daten eines Spielers ausließt ist ja schon von vorne herrein klar das man das nicht macht daher habe ich mich ja generel
    auf die while schleife bezogen ohne den übrigen teil zu beachten wo du das element aus seinem Tutorial zitierst.


    for(new i; ;++i ){
    if(!mysql_fetch_row(str))break;
    sscanf(str, "e<p<|>{i}s[16]s[24]s[130]iiifff>",SpielerInfo[i]);
    }

  • Beim auslesen der daten des spielers macht es ja auch kein sinn eine for , while , do-while oder sonst eine schleifenform zu verwenden.


    genau das meine ich doch


    Guck dir mal den ersten Post an das Muster da wo er einen Spieler Selectet, nutzt er die while schleife
    Klar ich hab das auch ne lange zeit so gemacht nur kommen mehrere spieler gleichzeitig drauf dann hängt sich der mysql_fetch_row auf

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

  • maddin
    Warum klappt es bei mir nicht?... Könntest du mir helfen?

    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new str[512],query[300];
    format(query,sizeof(query),"SELECT * FROM `accounts` WHERE `Name` = '%s'",SpielerInfo[playerid][pName]);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(str);
    sscanf(str,"e<p<|>{i}s[128]s[128]iiiiiiiiiiiiiiiiiiiifffi>",SpielerInfo[playerid]);
    mysql_free_result();
    }
    return 1;
    }


    Von Spielerinfo:

    enum Spielerdaten
    {
    pName[MAX_PLAYER_NAME-5],
    pPasswort[30],
    pGeld,
    pSkin,
    pFrakSkin,
    pJobSkin,
    pJob,
    pFraktion,
    pRang,
    pAdminlevel,
    pWanted,
    pVerbrechen,
    pKills,
    pDeath,
    pCuffed,
    pHandschellen,
    pCannabis,
    pKokain,
    pHeroin,
    pC4,
    pBombenguertel,
    pMute,
    Float:pLastX,
    Float:pLastY,
    Float:pLastZ,
    pPremium
    }


  • Die 2 Strings bzw. welche du als varchar holst sind nicht gleich mit dem Enum also sollte da in der Log ein sscanf2 Error stehen.
    Einfach den Array anpassen.

    MFG

  • [DT]Nightstr3am
    Ist es so richtig?



    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new str[512],query[300];
    format(query,sizeof(query),"SELECT * FROM `accounts` WHERE `Name` = '%s'",SpielerInfo[playerid][pName]);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(str);
    sscanf(str,"e<p<|>{i}s[19]s[30]iiiiiiiiiiiiiiiiiiiifffi>",SpielerInfo[playerid]);
    mysql_free_result();
    }
    return 1;
    }


    //E: Es klappt nichts, ehrlich ich frage schon so viele Leute und in Threads, nein, es gibt keine Antwort. Wo liegt das Problem? Irgendwas ist doch im Code falsch, es wird alles gespeichert aber nicht geladen.

    Einmal editiert, zuletzt von Kryx ()

  • Ich hbae das Plugin installiert, Die Include eingefügt, den sscanf Ordner eingefügt (In den Hauptordner)


    Mein Code zum Spielerladen
    stock LoadUserData(pid)
    {
    new str[512], str1[124];
    format(str1, sizeof(str1), "SELECT * FROM `accounts` WHERE `Name` = '%s'",T_Name(pid));
    if(!GetPVarInt(pid,"Eingeloggt")){
    printf("[ERROR 38500] %s ist nicht eingeloggt.", T_Name(pid)); return SendAdminMessage(COLOR_RED,1337,"[ERROR 38500]"); }
    mysql_query(str1);//Läd alles aus der Zeile des Spielers (in dem fall ich) aus der Tabelle 'Accounts'
    mysql_store_result();
    while(mysql_fetch_row(str))//Übergibt das was vorher aus der Tabelle geladen wurde an einen string.
    {
    sscanf(str, "e<{i}s[24]s[24]iiiiiiiiiiiii>",SpielerInfo[pid]);//teilt den string in seine bestandteile so wie wir es wollen und gibt es an das enum weiter
    }
    mysql_free_result();
    return 1;
    }


    mein Enum
    enum p_spielerdaten {
    pName[24], pPasswort[24],
    pAdmin, pAVeh,
    pGeld, pCoins,
    pHunger, pDurst, pHarndrang,
    pJob, pHartz,
    pPerso, pPayDayT,
    pBank, pZins
    };
    new SpielerInfo[MAX_PLAYERS][p_spielerdaten];


    Aber ich bekomme keine Werte ausgegeben...

  • Gibts da auch eine Möglichkeit "Komma" Werte zu Setzen? Ich hab derzeit ein GeldSystem mit Normalen € und Cent beträgen also z.B. 1,22€


    ich möchte einen Spieler geld Payn also dann /pay ID 1,22 und nicht /pay ID 1 22 benutzen hoffe mir kann da jemand helfen (Kein Float pls^^)

  • Gibts da auch eine Möglichkeit "Komma" Werte zu Setzen? Ich hab derzeit ein GeldSystem mit Normalen € und Cent beträgen also z.B. 1,22€


    ich möchte einen Spieler geld Payn also dann /pay ID 1,22 und nicht /pay ID 1 22 benutzen hoffe mir kann da jemand helfen (Kein Float pls^^)


    sölte möglich sein, ausprobieren hilft weiter ;)
    du musst aber dann glaube 2 integer nehmen.