Probleme mit OnplayerSpawn

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
  • Guten Tag,


    Wenn ich Spawne werde ich immer an position 0.0 spawnt & ich finde den fehler einfach nicht.



    public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid))return 1;
    TogglePlayerSpectating(playerid,false);
    TextDrawShowForPlayer(playerid, TextInfo);
    SetPlayerColor(playerid, 0xFFFFFF00);
    if(pInfo[playerid][pTutorial] == 0) {
    //Tutorial
    SetPlayerPos(playerid, 1155.1396, -1768.6425, 16.5938);
    SetPlayerFacingAngle(playerid, 1.0457);
    pInfo[playerid][pSkin] = 101;
    SetPlayerSkin(playerid, pInfo[playerid][pSkin]);
    SetCameraBehindPlayer(playerid);
    pInfo[playerid][pTutorial] = 1;
    return 1;
    }
    else {
    GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
    SetPlayerScore(playerid, pInfo[playerid][pScore]);


    SetPlayerPos(playerid, pInfo[playerid][pSpawn][0], pInfo[playerid][pSpawn][1], pInfo[playerid][pSpawn][2]);
    SetPlayerFacingAngle(playerid, pInfo[playerid][pSpawn][3]);
    SetCameraBehindPlayer(playerid);
    SetPlayerSkin(playerid, pInfo[playerid][pSkin]);
    SetPlayerVirtualWorld(playerid, pInfo[playerid][pVW]);
    SetPlayerInterior(playerid, pInfo[playerid][pInt]);
    return 1;
    }
    }


    & JA MEIN pTutorial ist 0 in der datenbank.

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • Also dein Problem ist jetzt folgendes:
    pTutorial ist auf 0, es wird aber der else-Block ausgeführt?


    Beide Blöcke werden in einem Durchlauf sicher nicht ausgeführt.
    Weil dann kann pTutorial nur auf 1 gesetzt sein. Lass es dir doch vorher mal ausgeben.

  • ich lasse es mir aus geben und es wird if() und das else ausgeführt.


    der public



    public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid))return 1;


    TogglePlayerSpectating(playerid,false);
    TextDrawShowForPlayer(playerid, TextInfo);


    SetPlayerColor(playerid, 0xFFFFFF00);


    if(pInfo[playerid][pTutorial] < 1) {
    //Tutorial
    print("1");
    SetPlayerPos(playerid, 1153.9855, -1769.1980,16.5938);
    SetPlayerFacingAngle(playerid, 1.5839);
    pInfo[playerid][pSkin] = 101;
    SetPlayerSkin(playerid, pInfo[playerid][pSkin]);
    SetCameraBehindPlayer(playerid);
    pInfo[playerid][pTutorial] = 1;
    return 1;
    }
    else {
    print("2");
    GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
    SetPlayerScore(playerid, pInfo[playerid][pScore]);


    SetPlayerPos(playerid, pInfo[playerid][pSpawn][0], pInfo[playerid][pSpawn][1], pInfo[playerid][pSpawn][2]);
    SetPlayerFacingAngle(playerid, pInfo[playerid][pSpawn][3]);
    SetCameraBehindPlayer(playerid);
    SetPlayerSkin(playerid, pInfo[playerid][pSkin]);
    SetPlayerVirtualWorld(playerid, pInfo[playerid][pVW]);
    SetPlayerInterior(playerid, pInfo[playerid][pInt]);
    }
    return 1;
    }


    server log:


    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • Kann es sein, dass du den Spieler nicht nur einmal spawnen lässt?
    Wenn er nämlich den if-Block durchlaufen hat wird sein pTutorial-Wert auf 1 gesetzt und bei einem weiteren Aufruf des Callbacks wird logischerweise der else-Block durchlaufen.


    //Edit: Siehe deine Logs. Du lässt ihn zweimal spawnen.


  • case Thread_CheckAccountPassword:
    {
    if(!rows) return ShowPlayerDialog(ExtraID, Dialog_Login, DIALOG_STYLE_PASSWORD,"{FFD200}"SERVERNAME" - Anmelden", "{FEFEFE}Gebe nun dein Passwort ein um dich Einzuloggen:\n{FF0000}Falsches Passwort!", "Anmelden", "Abbrechen");
    pInfo[ExtraID][pSQLid] = cache_get_field_content_int(0, "ID", handle);
    pInfo[ExtraID][pAdmin] = cache_get_field_content_int(0, "Admin", handle);
    pInfo[ExtraID][pScore] = cache_get_field_content_int(0, "Score", handle);
    pInfo[ExtraID][pMoney] = cache_get_field_content_int(0, "Money", handle);
    pInfo[ExtraID][pFraktion] = cache_get_field_content_int(0, "Fraktion", handle);
    pInfo[ExtraID][pFraktionsRang] = cache_get_field_content_int(0, "FraktionsRang", handle);
    pInfo[ExtraID][pSkin] = cache_get_field_content_int(0, "Skin", handle);
    pInfo[ExtraID][pTutorial]= cache_get_field_content_int(0, "Tutorial", handle);
    pInfo[ExtraID][pSpawn][0]= cache_get_field_content_float(0, "SpawnX", handle);
    pInfo[ExtraID][pSpawn][1]= cache_get_field_content_float(0, "SpawnY", handle);
    pInfo[ExtraID][pSpawn][2]= cache_get_field_content_float(0, "SpawnZ", handle);
    pInfo[ExtraID][pSpawn][3]= cache_get_field_content_float(0, "SpawnA", handle);
    pInfo[ExtraID][pInt]= cache_get_field_content_int(0, "Interior", handle);
    pInfo[ExtraID][pVW]= cache_get_field_content_int(0, "VirtualWorld", handle);


    format(string, sizeof string, "SERVER: Willkommen %s.", pInfo[ExtraID][pName]);
    SendClientMessage(ExtraID, COLOR_GRAD1, string);
    if(pInfo[ExtraID][pAdmin] > 0)
    {
    format(string, sizeof string, "SERVER: Du hast dich als %s eingeloggt.", getAdminRang(pInfo[ExtraID][pAdmin]));
    SendClientMessage(ExtraID, COLOR_GRAD1, string);
    format(string, sizeof string, "["SERVERTAG"]%s", pInfo[ExtraID][pName]);
    SetPlayerName(ExtraID, string);
    }


    pInfo[ExtraID][pLoggedIn] = true;
    SpawnPlayer(ExtraID);
    return 1;
    }

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint: