[AJUDA]Salvar a Posiзгo do Player quando sair
#1

e voltб-lo na mesma posiзгo quando logar novamente.
Eu jб tenho um quase pronto, o ъnico problema: Nгo salva interiores, nem o Virtual World, e quando morre de queda ele fica em um "loop" de morte.

Alguйm poderia me ajudar a fazer um que isso nгo acontecesse isso? aqui abaixo o cуdigo do meu atual, com as coisas do sistema de registro.

Code:
new
    Float: PosX[ MAX_PLAYERS ],
    Float: PosY[ MAX_PLAYERS ],
    Float: PosZ[ MAX_PLAYERS ],
    Float: Angle[ MAX_PLAYERS ],
    Interior[ MAX_PLAYERS ],
    VirtualWorld[ MAX_PLAYERS ]
;

		SetPlayerInterior(playerid, Interior[playerid]);
		SetPlayerVirtualWorld(playerid, VirtualWorld[playerid]);

public OnPlayerDeath(playerid, killerid, reason)
{
if(gTeam[killerid] == ZOMBIE)
{
	gTeam[playerid] = ZOMBIE;
}
else
{
	PosX[playerid] = 1715.2522;
	PosY[playerid] = -1878.4022;
	PosZ[playerid] = 13.5665;
	Angle[playerid] = 0.7316;
}

return 1;
}

    INI_Float("X", PosX[playerid]);
    INI_Float("Y", PosY[playerid]);
    INI_Float("Z", PosZ[playerid]);
    INI_Float("Angle", Angle[playerid]);
    INI_Int("Interior", Interior[playerid]);
    INI_Int("VirtualWorld", VirtualWorld[playerid]);

    INI_WriteFloat(playerFile, "X", PosX[playerid]);
    INI_WriteFloat(playerFile, "Y", PosY[playerid]);
	INI_WriteFloat(playerFile, "Z", PosZ[playerid]);
	INI_WriteFloat(playerFile, "Angle", Angle[playerid]);
	INI_WriteInt(playerFile, "Interior", InteriorS[playerid]);
	INI_WriteInt(playerFile, "VirtualWorld", VWS[playerid]);
Reply
#2

Fiz um exemplar rapidinho no bloco de notas para vocк porque estou ocupado, pois percebi que ninguйm te ajudou ainda...

pawn Code:
#include <a_samp>
#include <SII>

new Float:wii_X[MAX_PLAYERS],
    Float:wii_Y[MAX_PLAYERS],
    Float:wii_Z[MAX_PLAYERS],
    Float:wii_A[MAX_PLAYERS],
    wii_Interior[MAX_PLAYERS],
    wii_VW[MAX_PLAYERS];

main() {}

public OnGameModeInit()
{
    AddPlayerClass(0,2033.9203,1343.9254,10.8203,269.2704,0,0,0,0,0,0); //

    print("It's successful running !");
    return 1;
}

public OnPlayerSpawn(playerid)
{
    func_carregar(playerid);
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    func_salvar(playerid);
    return 1;
}

stock func_salvar(k_)
{
    GetPlayerPos(k_, wii_X[k_], wii_Y[k_], wii_Z[k_]);
    GetPlayerFacingAngle(k_, wii_A[k_]);
    wii_Interior[k_] = GetPlayerInterior(k_);
    wii_VW[k_] = GetPlayerVirtualWorld(k_);
   
    new str[30];
    format(str, 30, "%s", func_name(k_));
    INI_Open(str);
    INI_WriteFloat("Pos x", wii_X[k_]);
    INI_WriteFloat("Pos y", wii_Y[k_]);
    INI_WriteFloat("Pos z", wii_Z[k_]);
    INI_WriteFloat("Pos angle", wii_A[k_]);
    INI_WriteInt("Interior", wii_Interior[k_]);
    INI_WriteInt("Virtual World", wii_VW[k_]);
    INI_Save();
    INI_Close();
    printf("Acc name: %s saved with success", str, k_);
    return 1;
}

stock func_carregar(k_)
{
    new str[30]; //Float:x, Float:y, Float:z, Float:a, interior, virtualworld;
    format(str, 30, "%s", func_name(k_));
    INI_Open(str);
    wii_X[k_] = INI_ReadFloat("Pos x");
    wii_Y[k_] = INI_ReadFloat("Pos y");
    wii_Z[k_] = INI_ReadFloat("Pos z");
    wii_A[k_] = INI_ReadFloat("Pos angle");
    wii_Interior[k_] = INI_ReadInt("Interior");
    wii_VW[k_] = INI_ReadInt("Virtual World");
    INI_Save();
    INI_Close();

    if(wii_Interior[k_] > 0)
        return SetPlayerInterior(k_, wii_Interior[k_]);
    if(wii_VW[k_] > 0)
        return SetPlayerVirtualWorld(k_, wii_VW[k_]);

    SetPlayerPos(k_, wii_X[k_], wii_Y[k_], wii_Z[k_]);
    SetPlayerFacingAngle(k_, wii_A[k_]);
    printf("Acc name: %s loaded with success id: %d", str, k_);
    return 1;
}

stock func_name(k_)
{
    new str[30];
    GetPlayerName(k_, str, MAX_PLAYER_NAME);
    return str;
}
Caso nгo funcione sу avisar que eu faзo novamente de outra forma e testo aqui, espero ter ajudado !
Reply
#3

Funcionou sim, mano. Valeu.
Reply
#4

se nгo me engano isso vai muda qdo der GMX ou /rcon gmx
mas no resto das vezes qdo o player deslogar funfa normal
Reply
#5

Quote:
Originally Posted by dudaefj
View Post
se nгo me engano isso vai muda qdo der GMX ou /rcon gmx
mas no resto das vezes qdo o player deslogar funfa normal
Exato sу supri quando o player se desconecta, creio que ele saiba concertar isso a inteзгo era apenas deixar o code que ele tinha em mente funcionando...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)