MySQL Positionen speichern 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
  • Hallo, breadfish
    habe ein Problem beim Positionen speichern in MySQL.


    Wenn ich mich dann einlogge setzt der mich mitten in so ein Bauerndorf kurz gesagt: PAMPA


    Helft mir bitte


    Code:


    Floats im Enum definiert:
    enum sInfo
    {
    Name[MAX_PLAYER_NAME],
    Registered = 0,
    Float: SavePosX,
    Float: SavePosY,
    Float: SavePosZ,
    Float: SaveFacingA
    }


    MySQL Save:
    mysql_SetFloat("accounts", "PositionX", SpielerInfo[playerid][SavePosX], "Name", SpielerInfo[playerid][Name]);
    mysql_SetFloat("accounts", "PositionY", SpielerInfo[playerid][SavePosY], "Name", SpielerInfo[playerid][Name]);
    mysql_SetFloat("accounts", "PositionZ", SpielerInfo[playerid][SavePosZ], "Name", SpielerInfo[playerid][Name]);
    mysql_SetFloat("accounts", "FacingAngle", SpielerInfo[playerid][SaveFacingA], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Interior", GetPlayerInterior(playerid), "Name", SpielerInfo[playerid][Name]);


    MySQL Load:
    SpielerInfo[playerid][SavePosX] = mysql_GetFloat("accounts", "PositionX", "Name", SpielerInfo[playerid][Name]);
    SpielerInfo[playerid][SavePosX] = mysql_GetFloat("accounts", "PositionY", "Name", SpielerInfo[playerid][Name]);
    SpielerInfo[playerid][SavePosX] = mysql_GetFloat("accounts", "PositionZ", "Name", SpielerInfo[playerid][Name]);
    SetPlayerFacingAngle(playerid, mysql_GetFloat("accounts", "FacingAngle", "Name", SpielerInfo[playerid][Name]));
    SetPlayerInterior(playerid, mysql_GetInt("accounts", "Interior", "Name", SpielerInfo[playerid][Name]));


    Wenn Spieler sich ausloggt Positionen speichern:
    public OnPlayerDisconnect(playerid, reason)
    {
    new Float: X = SpielerInfo[playerid][SavePosX];
    new Float: Y = SpielerInfo[playerid][SavePosY];
    new Float: Z = SpielerInfo[playerid][SavePosZ];
    new Float: A = SpielerInfo[playerid][SaveFacingA];


    GetPlayerPos(playerid, X, Y, Z);//Positionen rauskriegen und speichern...
    GetPlayerFacingAngle(playerid, A);//Rotation des Spielers rauskriegen und speichern...
    SavePlayer(playerid);
    }


    SetSpawnInfo:
    new Float:X = SpielerInfo[playerid][SavePosX];
    new Float:Y = SpielerInfo[playerid][SavePosY];
    new Float:Z = SpielerInfo[playerid][SavePosZ];
    new Float:A = SpielerInfo[playerid][SaveFacingA];
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, A);
    GetPlayerSkin(playerid);
    SetSpawnInfo(playerid, 0, SpielerInfo[playerid][Skin], X, Y, Z, A, -1,-1,-1,-1,-1,-1);
    SpawnPlayer(playerid);


    Struktur: KLICK MICH


    Screenshot vom PAMPA-Spawn:
    KLICK


    Danke schonmal für alle Antworten!
    mfg :thumbup:


    //EDIT OnPlayerDisconnect eingefügt
    //EDIT Bild vom Spawn eingefügt

    5 Mal editiert, zuletzt von MizuXV () aus folgendem Grund: Callback vergessen

  • public OnPlayerDisconnect(playerid, reason)
    {
    new Float: X = SpielerInfo[playerid][SavePosX];
    new Float: Y = SpielerInfo[playerid][SavePosY];
    new Float: Z = SpielerInfo[playerid][SavePosZ];
    new Float: A = SpielerInfo[playerid][SaveFacingA];


    GetPlayerPos(playerid, X, Y, Z);//Positionen rauskriegen und speichern...
    GetPlayerFacingAngle(playerid, A);//Rotation des Spielers rauskriegen und speichern...
    SavePlayer(playerid);
    }


    fällt dir da nich was auf?
    Du setzt die Varriable X, Y und Z mit deinen SpielerInfo enum und dann setzt du sie nochmal per GetPlayerPos.
    Ich denke eher du willst SpielerInfo mit den X, Y und Z Coords eintragen und nicht andersrum.
    Das würde dann so aussehen:


    public OnPlayerDisconnect(playerid, reason)
    {
    GetPlayerPos(playerid, SpielerInfo[playerid][SavePosX], SpielerInfo[playerid][SavePosY], SpielerInfo[playerid][SavePosZ]);//Positionen rauskriegen und speichern...
    GetPlayerFacingAngle(playerid, SpielerInfo[playerid][SaveFacingA]);//Rotation des Spielers rauskriegen und speichern...
    SavePlayer(playerid);
    }


    Mfg, Zunno

  • new Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid,x,y,a);
    GetPlayerFacingAngle(playerid,a);
    SpielerInfo[playerid][SavePosX] = x;
    SpielerInfo[playerid][SavePosY] = y;
    SpielerInfo[playerid][SavePosZ] = z;
    SpielerInfo[playerid][SaveFacingA] = a;
    SavePlayer(playerid);

    2 Mal editiert, zuletzt von Myname1997 () aus folgendem Grund: neu gedreht


  • Huch ist mir gar nicht aufgefallen!
    Hab es mal so probiert aber er setzt mich trozdem in die PAMPA


    Wenn ich mich registriere und gespawnt werde dann bin ich auch am Noobspawn
    Wenn ich jetzt n paar schritte weiter gehe und dann /q mache
    mich dann wieder einlogge, setzt der mich in die Pampa..


    Speicher ich irgendwie falsch ab oder wie ist das?


    Achja und dann setzt er meinen Score auf -1 mein Geld auch, und andere Variablen auf total sinnlose Zahlen.


  • Warum die Position nicht direkt in die gewünschte varriable schreiben?


    MizuXV:
    Das liegt dann höchstwahrscheinlich an deinem Speichervorgang.
    Zeig mal dein SavePlayer(playerid);


  • Warum die Position nicht direkt in die gewünschte varriable schreiben?


    MizuXV:
    Das liegt dann höchstwahrscheinlich an deinem Speichervorgang.
    Zeig mal dein SavePlayer(playerid);

    Hier:


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
    {
    //Nun speichern wir die Daten in der Datenbank.
    mysql_SetInt("accounts", "Registriert", SpielerInfo[playerid][Registered], "Name", SpielerInfo[playerid][Name]);


    mysql_SetFloat("accounts", "PositionX", SpielerInfo[playerid][SavePosX], "Name", SpielerInfo[playerid][Name]);
    mysql_SetFloat("accounts", "PositionY", SpielerInfo[playerid][SavePosY], "Name", SpielerInfo[playerid][Name]);
    mysql_SetFloat("accounts", "PositionZ", SpielerInfo[playerid][SavePosZ], "Name", SpielerInfo[playerid][Name]);
    mysql_SetFloat("accounts", "FacingAngle", SpielerInfo[playerid][SaveFacingA], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Interior", GetPlayerInterior(playerid), "Name", SpielerInfo[playerid][Name]);


    mysql_SetInt("accounts", "Stufe", GetPlayerScore(playerid), "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Skin", SpielerInfo[playerid][Skin], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Geld", GetPlayerMoney(playerid), "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "AdminRank", SpielerInfo[playerid][AdminRank], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Warnings", SpielerInfo[playerid][Warnings], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Gemutet", SpielerInfo[playerid][Muted], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Gebannt", SpielerInfo[playerid][Banned], "Name", SpielerInfo[playerid][Name]);


    mysql_SetInt("accounts", "Fraktion", FraktionInfo[playerid][Mitglied], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "FraktionLeitung", FraktionInfo[playerid][Leitung], "Name", SpielerInfo[playerid][Name]);


    //***====================== FirstTimeFunctions ==========================================***
    mysql_SetInt("firsttimefunctions", "AlreadyTaked", PickupAlreadyTaked, "Name", SpielerInfo[playerid][Name]);
    //***====================================================================================***
    }
    }
    return 1;
    }

  • weil seine posi doch erstmal gesaved werden muss (x,y,z,a) und kann doch erst dann eingetragen werden
    sonst ist klar dass immer Float (0,0,0,0) ist :)


    dann probier meine methode mal aus, du wirst erstaunt sein :P


    @Mizu:
    Ich kann da kein direkten fehler erkennne.
    Gib dir deine Datenbank fehler aus?
    Ich weiß nich ob das MySQL Plugin von BlueG auch einen mysql_log.txt hat oder nicht aber wenn ja guck mal nach ob irgendwelche erros kommen.
    Es kann nemlich nur noch sein das du die datenbank vllt nicht richtig eingerichtet hast.
    Ansonsten wüsste ich nicht weiter..

  • jo probier mal pls mein system da du die coords erst herausfindest achdem die sachen schon in der variable gesaved wurden

    Moment hast du Skype?
    wenn ja adde mich mal bitte.


    skype: faculty.
    Unter den Skype Namen -> Alex~ zu finden.


    Und achja größten Dank für deine Hilfe! :)