Hallo, Ich hab versucht meine Position beim Disconnect zu speichern.
Allerdings funktioniert es nicht so richtig.
Und zwar passiert folgendes:
Ich registriere mich und log mich dann ein. wenn ich dann disconnecte, speichert er nichts...
dann logge ich mich wieder ein und spawne dann also bei 0,0,0,... Falle also durch die map und lande dann irgendwo im nimmerland.
Wenn ich nun disconnecte, speichert er alles richtig ab und ich spawne nach erneutem Login dort im nimmerland wo ich mich ausgeloggt habe.
Hier mal mein Code:
public OnPlayerDisconnect(playerid, reason)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
SetPVarFloat(playerid, "xpos", x);
SetPVarFloat(playerid, "ypos", y);
SetPVarFloat(playerid, "zpos", z);
mysql_SetFloat("accounts", "PosX", GetPVarFloat(playerid,"xpos"), "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "PosY", GetPVarFloat(playerid,"ypos"), "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "PosZ", GetPVarFloat(playerid,"zpos"), "Name", SpielerInfo[playerid][pName]);
SavePlayer(playerid);
DeletePVar(playerid,"Eingeloggt");
DeletePVar(playerid,"FirstSpawn");
}
}
return 1;
}
public OnPlayerSpawn(playerid)
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
if(GetPVarInt(playerid,"FirstSpawn") == 1)
{
SetPlayerPos(playerid, 1730.5989,-1950.5476,14.1172);
SetPVarInt(playerid,"FirstSpawn",0);
}
else
{
SetPlayerSkin(playerid,SpielerInfo[playerid][pSkin]);
SetPlayerPos(playerid,SpielerInfo[playerid][PosX],SpielerInfo[playerid][PosY],SpielerInfo[playerid][PosZ]);
SetPlayerFacingAngle(playerid,SpielerInfo[playerid][PosR]);
SetPlayerInterior(playerid,SpielerInfo[playerid][pInterior]);
SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
}
}
else
{
Kick(playerid);
}
return 1;
}
stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
SpielerInfo[playerid][PosX] = mysql_GetFloat("accounts", "PosX", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][PosY] = mysql_GetFloat("accounts", "PosY", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][PosZ] = mysql_GetFloat("accounts", "PosZ", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][PosR] = mysql_GetFloat("accounts", "PosR", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pInterior] = mysql_GetInt("accounts", "Interior", "Name", SpielerInfo[playerid][pName]);
SetPlayerSkin(playerid,SpielerInfo[playerid][pSkin]);
}
return 1;
}
stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
new Float:exithealth;
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
SetPVarFloat(playerid, "xpos", x);
SetPVarFloat(playerid, "ypos", y);
SetPVarFloat(playerid, "zpos", z);
GetPlayerHealth(playerid,exithealth);
SpielerInfo[playerid][pInterior] = GetPlayerInterior(playerid);
mysql_SetFloat("accounts", "PosX", GetPVarFloat(playerid,"xpos"), "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "PosY", GetPVarFloat(playerid,"ypos"), "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "PosZ", GetPVarFloat(playerid,"zpos"), "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Interior", SpielerInfo[playerid][pInterior], "Name", SpielerInfo[playerid][pName]);
printf("gespeichert");
}
}
return 1;
}
Ich hoffe mir kann da jemand helfen