public OnPlayerSpawn(playerid)
{
UltimaPosicao(playerid);
return 1;
}
stock UltimaPosicao(playerid)
{
if(DOF2_FileExists(ContaPlayer(playerid)))
{
pPosX[playerid] = DOF2_GetFloat(ContaPlayer(playerid), "PosX"); //Busca dentro do Arquivo a "PosX" e transforma em "pPosX"
pPosY[playerid] = DOF2_GetFloat(ContaPlayer(playerid), "PosY"); //Busca dentro do Arquivo a "PosY" e transforma em "pPosY"
pPosZ[playerid] = DOF2_GetFloat(ContaPlayer(playerid), "PosZ"); //Busca dentro do Arquivo a "PosZ" e transforma em "pPosZ"
pPosA[playerid] = DOF2_GetFloat(ContaPlayer(playerid), "PosA"); //Busca dentro do Arquivo a "PosA" e transforma em "pPosA"
pInterior[playerid] = DOF2_GetInt(ContaPlayer(playerid), "Interior"); //Busca dentro do Arquivo "Interior" e transforma em "pInterior"
SetPlayerPos(playerid, pPosX[playerid], pPosY[playerid], pPosZ[playerid]); // Seta a posiзгo do Player para a que estava no Arquivo
SetPlayerInterior(playerid, pInterior[playerid]);
SetPlayerFacingAngle(playerid, pPosA[playerid]); // Seta o Вngulo do Player para o que estava no arquivo
SetCameraBehindPlayer(playerid); // Coloca a Cвmera atrбs da Skin
SendClientMessage(playerid, -1, "Vocк foi teleportado para o local onde estava antes de sair do jogo pela ъltima vez.");
SpawnarInPos[playerid] = 0; // Define que o mesmo nгo deve mais ser Spawnado na posiзгo que estб no Arquivo atй Relogar.
SetPlayerSkin(playerid, DOF2_GetInt(ContaPlayer(playerid),"Skin"));
}
}
SetSpawnInfo(playerid, 0, 0, 388.0107,-1525.8547,32.2734,237.9921, 0, 0, 0, 0, 0, 0);
// Login:
if(dialogid == LOGIN)
{
if(response)
{
// ...
Player[playerid][pX] = DOF2::GetFloat(Conta(playerid), "X");
Player[playerid][pY] = DOF2::GetFloat(Conta(playerid), "Y");
Player[playerid][pZ] = DOF2::GetFloat(Conta(playerid), "Z");
Player[playerid][pA] = DOF2::GetFloat(Conta(playerid), "A");
SetSpawnInfo(playerid, 0, Player[playerid][Skin], Player[playerid][pX], Player[playerid][pY], Player[playerid][pZ], Player[playerid][pA], 0, 0, 0, 0, 0, 0);
}
return 1;
}
// Savando conta (posição no caso abaixo) apos disconectar:
SalvarConta(playerid)
{
GetPlayerPos(playerid, Player[playerid][pX], Player[playerid][pY], Player[playerid][pZ]);
GetPlayerFacingleAngle(playerid, Player[playerid][pA]);
if(Player[playerid][Logado] == true)
{
DOF2::SetFloat(File, "PosX", Player[playerid][pX]);
DOF2::SetFloat(File, "PosY", Player[playerid][pY]);
DOF2::SetFloat(File, "PosZ", Player[playerid][pZ]);
DOF2::SetFloat(File, "PosA", Player[playerid][pA]);
DOF2::SaveFile();
}
return 1;
}
Eu jб fiz isso uma vez e sempre deu certo colocando no Login. Eu acho que eu colocava SetSpawnInfo mesmo.
@ Edit Veja tambйm se no seu SalvarConta(playerid) ta pegando as posiзхes dele e setando com DOF2 PHP код:
|
public OnPlayerSpawn(playerid)
{
if(GetPlayerScore(playerid) > 1)
{
UltimaPosicao(playerid);
return 1;
}
else if(GetPlayerScore(playerid) < 1) return SendClientMessage(playerid, -1, "Bem Vindo ao servidor");
return 1;
}
Opa, muito obrigado pela a resposta, mas consegui resolver o problema agorinha do conflito fazendo uma verificaзгo por level aqui esta o cуdigo ... |
Boa!
Eu uso no Login mesmo e nunca tive problemas nгo sei se no OnPlayerSpawn vai certo sem "bugs" :v @ :/ Meu forum ta em russo ta uma mrd fica traduzindo e algumas vezes fica cortando. Entгo se tiver algo importante foi mal! |