Spawn wird nicht gesetzt

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
  • Hey,


    ich hab ne Funktion LoadPlayer(playerid); die nach dem einloggen aufgerufen wird.
    Die wird geladen, da hatte ich ursprünglich mein SetSpawnInfo(); drin um die Koordinaten des gespeicherten Spawnpunkts aus der Datenbank auszulesen.
    Mittlerweile hab ich es versucht so zu lösen:



    //wenn man sich erfolgreich eingeloggt hat
    LoadPlayer(playerid);
    SetSpawnInfo(playerid,0,SpielerInfo[playerid][pNSkin],mysql_GetFloat("accounts","Spawnx","Name",SpielerInfo[playerid][pName]),mysql_GetFloat("accounts","Spawny","Name",SpielerInfo[playerid][pName]),mysql_GetFloat("accounts","Spawnz","Name",SpielerInfo[playerid][pName]),0.0,0,0,0,0,0,0);
    SpawnPlayer(playerid);


    Aber das funktioniert auch nicht. Hab es auch schon mit Variablen probiert, also wenn er Spawnt abfragen ob er gerade erst eingeloggt ist, dann SetSpawnInfo und neu Spawnen. Klappt nicht, weiß jmd. wieso?
    Bin bald am verzweifeln.


    - Tom



    2 Mal editiert, zuletzt von Tomsen ()

  • Schau mal in die mysql log usw


    Dennoch ist deine Variante (nicht böse gemeint) scheisse.
    Wieso machst du nicht bei Loadplayer eine Variable mit 6 Dimensionen auf alle Player?
    Dann lädst du da die Daten rein und setzt die Spawnkoordinaten da rein


    Gruß

    ik bin der vito c:

  • Ja das soll es mit mysql_GetFloat ja aus der Datenbank holen.


    Schau mal in die mysql log usw


    Dennoch ist deine Variante (nicht böse gemeint) scheisse.
    Wieso machst du nicht bei Loadplayer eine Variable mit 6 Dimensionen auf alle Player?
    Dann lädst du da die Daten rein und setzt die Spawnkoordinaten da rein


    Gruß

    Kannst du mir das mit den Dimensionen näher erklären? Weiß nicht wie du das meinst.


    - Tom

  • Klar


    Du kannst es entweder in der Playerdata laden (enum usw) oder eben in einer Extra Variable.
    Generell ist deine mysql "Lade methode" blöd. Einfach aber sehr ressourcen fressend.


    Naja da ich deine Playerdata nicht kenne nehme ich die 2. Variante


    Also dann würdest du oben eine Variable erstellen
    enum SpawnInfo
    {
    Float:posx,
    Float:posy,
    Float:posz,
    Float:posa,
    interior,
    virtualworld,
    skin
    }
    new sInfo[MAX_PLAYERS][SpawnInfo];


    Laden halt:
    sInfo[playerid][posx] = mysql_GetFloat("accounts","Spawnz","Name",SpielerInfo[playerid][pName]);
    sInfo[playerid][posy] = mysql_GetFloat("accounts","Spawny","Name",SpielerInfo[playerid][pName]);


    usw eben.
    Dann SetspawnInfo
    SetSpawnInfo(playerid,0,SpielerInfo[playerid][pNSkin],sInfo[playerid][posx],sInfo[playerid][posy],sInfo[playerid][posz],sInfo[playerid][posa],0,0,0,0,0,0);
    SpawnPlayer(playerid);


    Wenn das nicht geht lässt du dir die Variablen via printf ausgeben


    Ansonsten nutze ich immer noch die einfache Methode
    Einfach unter OnPlayerSpawn ;)


    OnPlayerSpawn(playerid)
    {
    SetPlayerPos(playerid, sInfo[playerid][posx],sInfo[playerid][posy],sInfo[playerid][posz]);
    SetPlayerFacingAngle(playerid, sInfo[playerid][posa]);
    SetCameraBehindPlayer(playerid);
    }


    Falls alles nicht geht -> debuggen
    Variablen ausgeben, datenbank anschauen ob es dort richtig ist.
    Undsowas halt xD


    Hoffe konnte dir helfen



    Gruß

    ik bin der vito c:

  • Ist deine erste Variante aber nicht so ziemlich das selbe wie meine?


    Okay, anderer Array, aber man speichert die Daten auf ne Variable und benutzt diese dann. Hab ich doch auch so gemacht.


    //edit: Kann mir jmd. sagen warum es nicht so geht wie ich es momentan habe. Ist villt. nicht die beste Lösung aber sollte doch gehen oder?


    - Tom



    Einmal editiert, zuletzt von Tomsen ()