Spawn Problem

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
  • Ich habe derzeit das Problem wenn ich auf den Server Connecte und dann mein Passwort eingebe, das sobald ich auf Spawn klicke für 1 Sekunde durch die Luft fliege.


    Siehe Video:

    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    OnPlayerSpawn



    public OnPlayerSpawn(playerid)
    {
    if(PlayerInfo[playerid][pMember]==0)
    {
    SetPlayerPos(playerid,742.4116,-1339.6249,13.5291);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerColor(playerid, 0xFFFFFFAA);
    }
    if(justDied[playerid] == true)
    {
    PlayerInfo[playerid][pMoney]-=600;
    GivePlayerMonez(playerid,-600);
    justDied[playerid] = false;
    }
    if(PlayerInfo[playerid][pTutorial]==1)
    {
    SetPlayerCheckpoint(playerid,1505.5254,-1560.0374,14.9087,5);
    SendClientMessage(playerid,COLOR_RED,"[TUTORIAL] Hallo und Herzlich Willkommen =)");
    SendClientMessage(playerid,COLOR_RED,"[TUTORIAL] Begebe dich zur Stadthalle. Diese wurde dir markiert");
    TUTCheckpoint[playerid]=1;
    }
    }


  • public OnPlayerRequestClass(playerid)
    {
    if(!PlayerInfo[playerid][pLoggedIn])
    {
    new query[128];
    mysql_format(handle, query, sizeof(query), "SELECT id FROM users WHERE name = '%e'", PlayerInfo[playerid][pName]);
    mysql_pquery(handle, query, "OnUserCheck", "d", playerid);
    }
    return 1;
    }

    OnPlayerRequestSpawn besitz ich nicht

  • Das sieht mir nach dem Null-Punkt aus.
    Hast du deine AddPlayerClass in OnGameModeInit alle auf 0,0,0 angelegt?


    Falls ja, dann wird dieses Problem durch den Lag zwischen dir und dem Server (extern?) erzeugt, da die Kommandos von OnPlayerSpawn nicht sofort bei dir sind, sondern mit etwas Verzögerung, daher spawnst du zuerst dort, wo unter AddPlayerClass definiert ist. Das ist normalerweise auch so, nur fällt es nicht auf, wenn es schnell genug geht.

  • Beitrag von AdamRuzek ()

    Dieser Beitrag wurde von Trooper[Y] aus folgendem Grund gelöscht: Offtopic, frag per PN ().
  • Das sieht mir nach dem Null-Punkt aus.
    Hast du deine AddPlayerClass in OnGameModeInit alle auf 0,0,0 angelegt?


    Falls ja, dann wird dieses Problem durch den Lag zwischen dir und dem Server (extern?) erzeugt, da die Kommandos von OnPlayerSpawn nicht sofort bei dir sind, sondern mit etwas Verzögerung, daher spawnst du zuerst dort, wo unter AddPlayerClass definiert ist. Das ist normalerweise auch so, nur fällt es nicht auf, wenn es schnell genug geht.

    Ich habe AddPlayerClass garnicht in OnGameModeInit

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • "AddPlayerClass"-Sachen entfernen und folgendes machen:



    public OnPlayerRequestClass(playerid, classid)
    {
    SetSpawnInfo(playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0);
    SpawnPlayer(playerid);
    return 0;
    }


    public OnPlayerSpawn(playerid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetCameraBehindPlayer(playerid);
    return 1;
    }


    @robbi2304

    Einmal editiert, zuletzt von Kristik47 ()

  • Beitrag von smaxxx ()

    Dieser Beitrag wurde von Trooper[Y] gelöscht ().
  • Die Ping zum Server ist Gut. Derzeiz verhält er sich folgender Maßen.


    Er ruft OnPlaySpawn auf. Spawnt ihn richtig, und dann setzt er ihn wieder auf den 0 wert und dann ruft er wieder onplayerspawn auf. Also ganz komisch.

  • In Zahlen heißt das?

    20 Ping.



    Ich habe nun den Print mal gesetzt. Er wird einmal abgerufen also eigentlich so wie es sein soll


    Ich habe es mal so probiert


    public OnPlayerRequestClass(playerid){ SpawnPlayer(playerid); return 1;}


    und aus OnUserLogin das SpawnPlayer(playerid); entfernt.


    Da läuft es Richtig. Kann es evtl sein das die Datenbank Abfrage zulange dauert ?


    Ich habe Sie wie folgt aufgebaut




    forward OnUserLogin(playerid);
    public OnUserLogin(playerid)
    {
    //Query wurde ausgeführt und das Ergebnis im Cache gespeichert
    new rows;
    cache_get_row_count(rows);
    if(rows == 0)
    {
    //Der Spieler hat ein falsches Passwort eingegeben
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Das Passwort war falsch!", "Ok", "Abbrechen");
    }
    else
    {
    //Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben
    //Wir lesen nun die erste Zeile des Caches aus (ID 0)
    cache_get_value_name_int(0, "id", PlayerInfo[playerid][p_id]);
    cache_get_value_name_int(0, "level", PlayerInfo[playerid][pLevel]);
    cache_get_value_name_int(0, "money", PlayerInfo[playerid][pMoney]);
    cache_get_value_name_int(0, "kills", PlayerInfo[playerid][pKills]);
    cache_get_value_name_int(0, "deaths", PlayerInfo[playerid][pDeaths]);
    cache_get_value_name_int(0, "mats",PlayerInfo[playerid][pMats]);
    cache_get_value_name_int(0, "matss",PlayerInfo[playerid][pMatss]);
    cache_get_value_name_int(0, "drogen",PlayerInfo[playerid][pDrogen]);
    cache_get_value_name_int(0, "drogens",PlayerInfo[playerid][pDrogens]);
    cache_get_value_name_int(0, "matskauf",PlayerInfo[playerid][pMatskauf]);
    cache_get_value_name_int(0, "job",PlayerInfo[playerid][pJob]);
    cache_get_value_name_int(0, "drogensamen",PlayerInfo[playerid][pDrogensamen]);
    cache_get_value_name_int(0, "dunger",PlayerInfo[playerid][pddunger]);
    cache_get_value_name_int(0, "perso",PlayerInfo[playerid][pPerso]);
    cache_get_value_name_int(0, "paytime",PlayerInfo[playerid][pPaytime]);
    cache_get_value_name_int(0, "respektpunkte",PlayerInfo[playerid][pRespektpunkte]);
    cache_get_value_name_int(0, "konto",PlayerInfo[playerid][pKonto]);
    cache_get_value_name_int(0, "jobmoney",PlayerInfo[playerid][pJobMoney]);
    cache_get_value_name_int(0, "prpg",PlayerInfo[playerid][pRPg]);
    cache_get_value_name_int(0, "alevel",PlayerInfo[playerid][admin_level]);
    cache_get_value_name_int(0, "scheine",PlayerInfo[playerid][pScheine]);
    cache_get_value_name_int(0, "punkte",PlayerInfo[playerid][pPunkte]);
    cache_get_value_name(0,"banner",PlayerInfo[playerid][pBanner], 40);
    cache_get_value_name(0,"banreason",PlayerInfo[playerid][pBanreason],40);
    cache_get_value_name_int(0, "leader",PlayerInfo[playerid][pLeader]);
    cache_get_value_name_int(0, "member",PlayerInfo[playerid][pMember]);
    cache_get_value_name_int(0, "frakrang",PlayerInfo[playerid][pFRang]);
    cache_get_value_name_int(0, "jailtime",PlayerInfo[playerid][pJailTime]);
    cache_get_value_name_int(0, "wanted",PlayerInfo[playerid][pWanted]);
    cache_get_value_name_int(0, "banned",PlayerInfo[playerid][pBanned]);
    PlayerWantedBarCreate(playerid);
    GivePlayerMonez(playerid,PlayerInfo[playerid][pMoney]);
    loadPlayerCars(playerid);
    MoneyUpdate(playerid);
    PlayerInfo[playerid][pLoggedIn] = true;
    new str[16];
    for(new i = 0, j = GetMaxPlayers(); i < j; i++)
    {
    if(PlayerInfo[i][pMember] == 1)
    {
    format(str, sizeof(str), "Wanted: %d", PlayerInfo[playerid][pWanted]);
    UpdatePlayer3DTextLabelText(i, wantedLabel[i][playerid], COLOR_BUSBLUE, str);
    }
    }
    SpawnPlayer(playerid);
    }
    return 1;
    }

    2 Mal editiert, zuletzt von robbi2304 ()

  • Eigentlich nicht, und selbst wenn, dürfte es den Spieler deswegen nicht an den Null-Punkt setzen.Wenn es aber so wie du es da hast, klappt, dann kannst du es ja so lassen, oder?

    public OnPlayerRequestClass(playerid)
    {
    SpawnPlayer(playerid);
    return 1;}

    es funktioniert zwar so. Allerdings würde ich gerne das der Spieler automatisch gespawnt wird und nicht erst wenn er auf den Butto Spawn klickt