MySQL Position wird nicht gespeichert

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,
    Normal sollte beim Ausloggen die Position gespeichert werden
    Nur das tut es nicht


    stock SpielerSpeichern(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"logged") == 1)
    {
    new query[200];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Admin` = '%d',`Geld` = '%d',`Frak` = '%d',`Perso` = '%d',`Clic` = '%d',`Flic` = '%d',`Mlic` = '%d',`Wlic` = '%d' WHERE `Name` = '%s'",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pGeld],PlayerInfo[playerid][pFrak],PlayerInfo[playerid][pPerso],
    PlayerInfo[playerid][pClic],PlayerInfo[playerid][pFlic],PlayerInfo[playerid][pMlic],PlayerInfo[playerid][pWlic],SpielerName(playerid));
    mysql_query(query);

    format(query, sizeof(query), "UPDATE `accounts` SET `PosX` = '%f',`PosY` = '%f',`PosZ` = '%d',`PosA` = '%f' WHERE `Name` = '%s'",
    PlayerInfo[playerid][pX],PlayerInfo[playerid][pY],PlayerInfo[playerid][pZ],PlayerInfo[playerid][pA],SpielerName(playerid));
    mysql_query(query);
    }
    }
    return 1;
    }


    SpielerSpeichern(playerid);

    new Float:X,Float:Y,Float:Z,Float:A;
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,A);
    PlayerInfo[playerid][pX] = X;
    PlayerInfo[playerid][pY] = Y;
    PlayerInfo[playerid][pZ] = Z;
    PlayerInfo[playerid][pA] = A;


    Mit Freundlichen Grüßen

  • SpielerSpeichern(playerid);

    new Float:X,Float:Y,Float:Z,Float:A;
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,A);
    PlayerInfo[playerid][pX] = X;
    PlayerInfo[playerid][pY] = Y;
    PlayerInfo[playerid][pZ] = Z;
    PlayerInfo[playerid][pA] = A;


    Wenn du es so hast, wird zuerst die alte Position, die in der Variable pX gespeichert ist in deine Datenbank geschrieben. Danach updatest du aber erst die Werte in pX,...
    Du machst es am besten so:



    GetPlayerPos(playerid,PlayerInfo[playerid][pX],PlayerInfo[playerid][pY],PlayerInfo[playerid][pZ]);
    GetPlayerFacingAngle(playerid,PlayerInfo[playerid][pA]);
    SpielerSpeichern(playerid);


    Sparst sogar noch ein paar Zeilen ;)


    Mfg,
    UncleSub

  • Das einzige, was ich mir vorstellen könnte ist, dass du vor dem Spawn nicht die Spieler Daten geladen hast. Sonst könnte es nur mit deiner Spieler Laden Funktion zusammenhängen.


    Guck am besten, ob du auch vor dem Spawn die Daten geladen hast. Ansonsten musst du halt bei deiner Spieler Laden Funktion mal schaun und ggf. hier posten.


    Mfg

  • stock SpielerLaden(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    PlayerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pFrak] = mysql_GetInt("accounts", "Frak", "Name", SpielerName(playerid));

    PlayerInfo[playerid][pMember] = mysql_GetInt("accounts", "Member", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pLeader] = mysql_GetInt("accounts", "Leader", "Name", SpielerName(playerid));

    PlayerInfo[playerid][pPerso] = mysql_GetInt("accounts", "Perso", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pClic] = mysql_GetInt("accounts", "Clic", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pFlic] = mysql_GetInt("accounts", "Flic", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pMlic] = mysql_GetInt("accounts", "Mlic", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pWlic] = mysql_GetInt("accounts", "Wlic", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pX] = mysql_GetFloat("accounts", "PosX", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pY] = mysql_GetFloat("accounts", "PosY", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pZ] = mysql_GetFloat("accounts", "PosZ", "Name", SpielerName(playerid));
    PlayerInfo[playerid][pA] = mysql_GetFloat("accounts", "PosA", "Name", SpielerName(playerid));


    SetPlayerScore(playerid,PlayerInfo[playerid][pLevel]);
    GivePlayerMoney(playerid,PlayerInfo[playerid][pGeld]);
    }
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    SetPlayerPos(playerid,PlayerInfo[playerid][pX],PlayerInfo[playerid][pY],PlayerInfo[playerid][pZ]);
    return 1;
    }