Stock Funktion lässt die Funktion wo es drin ist crashen

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
  • Hallo Community


    Ich habe nun seit 4 Stunden ein Problem
    undzwar gibt es die Funktion "LoginPlayer"
    Dort wird derSpieler eingeloggt (etwas logisch denke ich xd)
    Aufjeden Fall wird in der Funktion LoginPlayer die Funktion LoadPlayer aufgerufen
    Sobald die Funktion aufgerufen wird, wird loginplayer abgebrochen.


    Die Funktion Loadplayer geht bis ganz unten durch
    bis zur letzten klammer


    Hier der Code dazu:


    LoginPlayer (der ausschlaggebende Code)
    tock LoginPlayer(playerid)
    {
    pInfo[playerid][pCash] = 0;
    new string[128], tmpstr[128];
    SetCameraBehindPlayer(playerid);
    print("TÄÄÄÄÄST1"); <- kommt noch
    LoginPlayer(playerid);
    print("TÄÄÄÄÄST2");<- kommt schon nichtmehr
    ResetPlayerMoney(playerid);


    GivePlayerMoney(playerid,pInfo[playerid][pCash]);
    SetPlayerSkin(playerid, pInfo[playerid][pModel]);
    SetPlayerColor(playerid,0xFFFFFF00);
    SetPlayerFightingStyle(playerid, pInfo[playerid][pFightStyle]);


    Loadplayer (der Aufbau rest ist nur Wiederholung)
    stock LoadPlayer(playerid)
    {
    if(gPlayerLogged[playerid] == 1)
    {
    new query[256], ss[64];
    new PlayerName[MAX_PLAYER_NAME];
    new tmpstr[MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerName, sizeof PlayerName);

    format(query, sizeof(query), "SELECT * FROM accounts WHERE Name = '%s'", PlayerName);
    mysql_query(query);
    mysql_store_result();

    while(mysql_fetch_row_format(query,"|"))
    {
    mysql_fetch_field_row(ss, "Level"); pInfo[playerid][pLevel] = strval(ss);
    mysql_fetch_field_row(ss, "AdminLevel"); pInfo[playerid][pAdmin] = strval(ss);
    mysql_fetch_field_row(ss, "DonateRank"); pInfo[playerid][pDonateRank] = strval(ss);
    [...]
    mysql_fetch_field_row(ss, "FrakSperre"); pInfo[playerid][pFrakSperre] = strval(ss);
    mysql_fetch_field_row(ss, "FrakSperreSince"); pInfo[playerid][pFrakSperreSince] = strval(ss);
    }
    SetPVarInt(playerid, "DrugsWith", pInfo[playerid][pDrugs]);
    if(WantedLevel[playerid] > 0)
    {
    pInfo[playerid][pWantedVerlustZeit] = 20*60;
    }
    mysql_free_result();
    LoadPlayer_Car(playerid,0);
    print("Test Load Ende1"); <- wird gezeigt
    }
    print("Test Load Ende2"); <- wird auch gezeigt
    }


    Ich hoffe jemand kann mir sagen woran es liegt :<
    Außer strval wird da nichts ausgelesen
    nur 2 Strings noch zusätzlich....

    ik bin der vito c:

  • tock LoginPlayer(playerid)
    {
    pInfo[playerid][pCash] = 0;
    new string[128], tmpstr[128];
    SetCameraBehindPlayer(playerid);
    print("TÄÄÄÄÄST1"); <- kommt noch
    LoginPlayer(playerid);


    Im Stock LoginPlayer, benutzt du die FUnktion LoginPlayer..
    Das ist eine Schleife ^^

  • Mach aus den roten LoginPlayer , LoadPlayer

  • Habe aus LoginPlayer nun LoadPlayer gemacht


    das hatte ich vorher auch nur wie gesagt 4 Stunden lang viel rumprobiert und umgestellt und bla bla ;D
    Ähm naja


    Habe da am ende noch ein return rein gemacht. Wie ich mir dachte war es sinnlos und es hat nichts gebracht
    Demnach besteht das Problem mit demfolgenden Code immernoch


    Loginplayer nun

    pInfo[playerid][pCash] = 0;
    new string[128], tmpstr[128];
    SetCameraBehindPlayer(playerid);
    print("Test1");
    LoadPlayer(playerid);
    print("Test2");
    ResetPlayerMoney(playerid);


    GivePlayerMoney(playerid,pInfo[playerid][pCash]);
    SetPlayerSkin(playerid, pInfo[playerid][pModel]);

    Test 1 kommt... Test 2 nicht :x


    Am ende der Funktion loadplayer sieht es so aus

    }
    print("Ende Load");
    return 1;
    }

    Ende Load wird auch ausgegeben

    ik bin der vito c:

  • Nein so war es vorher (siehe oberen Post)
    Das ist nur eine Funktion die von einer Funktion aufgerufen wird
    Die neu aufgerufene Funktion lässt also die alte einfach abbrechen
    Da hat das return nichts zu sagen


    Woran kann es denn sonst noch liegen? :/


    //edit
    Diese While Schleife ist der Grund
    while(mysql_fetch_row_format(query,"|"))
    {
    Ich habe die entfernt also das garnichts geladen wird und schon funktioniert es
    kann es daran liegen das ich nicht alle Felder auslesen lasse?!
    Oder warum?


    Ohne diese While unter LoadPlayer geht LoginPlayer auch weiter :/

    ik bin der vito c:

    Einmal editiert, zuletzt von VitoHusky ()

  • lass das ganze doch per sscanf laden



    while(mysql_fetch_row(_string,"|"))
    {
    sscanf(_string,"p<|>iiiii",
    {
    intenger1,
    intenger2,
    intenger3,
    intenger4,
    intenger5,
    ´ }
    }


    SQL
    SELECT * FROM skins WHERE ID='%i' AND Fraktion='%i'"


    und so dann selecten müsste select parameter aussehen und es ist einfacher zu schreiben.

  • Das Problem ist, das es etwa 100 Sachen sind die geladen werden müssen
    (Quest System und so ein Quatsch)


    Deswegen habe ich es schon mit Absicht nicht mit sscanf auslesen lassen
    jedes mal einzelnt selecten und dafür jedes mal einen neuen query starten?
    Das ist wohl ressourcen fressender als nur einen zu machen und den dann auslesen zu haben
    (Bestes Beispiel die Mysql Funktionen von maddin)



    //edit
    Fehler nach langer zeit gefunden
    ein wert war in der DB immer "NULL"
    Demnach konnte er das irgendwie nicht laden
    dieser wert wurde nich richtig gespeichert. Ist mir grade aufgefallen als ich das
    Speichern des Accounts neu geschrieben habe


    Danke euch allen funktioniert nun :>

    ik bin der vito c:

    Einmal editiert, zuletzt von VitoHusky ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen