stock SalvarPlayer(playerid)
{
if(DOF2_FileExists(GetArquivo(playerid)))
{
playerInfo[playerid][Level] = GetPlayerScore(playerid);
DOF2_SetInt(GetArquivo(playerid), "Administrador", playerInfo[playerid][Administrador]);
DOF2_SetInt(GetArquivo(playerid), "Level", GetPlayerScore(playerid));
DOF2_SetInt(GetArquivo(playerid), "Skin", playerInfo[playerid][Skin]);
DOF2_SetInt(GetArquivo(playerid), "Matou", playerInfo[playerid][Matou]);
DOF2_SetInt(GetArquivo(playerid), "Morreu", playerInfo[playerid][Morreu]);
DOF2_SetInt(GetArquivo(playerid), "Dinheiro", GetPlayerMoney(playerid));
DOF2_SaveFile();
}
return 1;
}
stock CarregarPlayer(playerid)
{
if(DOF2_FileExists(GetArquivo(playerid)))
{
playerInfo[playerid][Administrador] = DOF2_GetInt(GetArquivo(playerid), "Administrador");
playerInfo[playerid][Level] = DOF2_GetInt(GetArquivo(playerid), "Level");
playerInfo[playerid][Skin] = DOF2_GetInt(GetArquivo(playerid), "Skin");
playerInfo[playerid][Matou] = DOF2_GetInt(GetArquivo(playerid), "Matou");
playerInfo[playerid][Morreu] = DOF2_GetInt(GetArquivo(playerid), "Morreu");
playerInfo[playerid][Dinheiro] = DOF2_GetInt(GetArquivo(playerid), "Dinheiro");
for(new i = 0; i < sizeof(Registro); i++) { TextDrawHideForPlayer(playerid, Registro[i]);}
for(new i = 0; i < sizeof(PlayerRegistro); i++) { PlayerTextDrawHide(playerid, PlayerRegistro[i]);}
playerInfo[playerid][Logado] = true;
TogglePlayerSpectating(playerid, 0);
CancelSelectTextDraw(playerid);
SpawnPlayer(playerid);
GivePlayerMoney(playerid, playerInfo[playerid][Dinheiro]);
SetPlayerSkin(playerid, playerInfo[playerid][Skin]);
}
return 1;
}
Vocк nгo pode fechar o samp-server! Digite 'exit'(sem aspas) no console e espere o servidor desligar.
Quando vocк fecha, o DOF2 nгo irб executar a funзгo de Salvar, jб que o vocк deu Kill no processo... |
Entendo, e esse nгo seria o problema, o problema й caso o servidor caia, os dados nгo serгo salvos.
|
Quando o servidor cai, ele dб shutdown, nгo sei ao certo se ele salva ou nгo, provavelmente sim.
|
public OnGameModeInit() { SetTimer("SalvarPlayers", 240000, true); //4 minutos return 1; } forward SalvarPlayers(); public SalvarPlayers() { for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i) && playerInfo[i][Logado] == true) { SalvarPlayer(i); } } return 1; }
Para evitar grandes estragos na queda do servidor, faзa um timer para salvar todos os jogadores a cada tantos minutos:
Код:
public OnGameModeInit() { SetTimer("SalvarPlayers", 240000, true); //4 minutos return 1; } forward SalvarPlayers(); public SalvarPlayers() { for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i) && playerInfo[i][Logado] == true) { SalvarPlayer(i); } } return 1; } |
stock CarregarPlayer(playerid)
{
if(DOF2_FileExists(GetArquivo(playerid)))
{
playerInfo[playerid][Administrador] = DOF2_GetInt(GetArquivo(playerid), "Administrador");
playerInfo[playerid][Level] = DOF2_GetInt(GetArquivo(playerid), "Level");
playerInfo[playerid][Skin] = DOF2_GetInt(GetArquivo(playerid), "Skin");
playerInfo[playerid][Matou] = DOF2_GetInt(GetArquivo(playerid), "Matou");
playerInfo[playerid][Morreu] = DOF2_GetInt(GetArquivo(playerid), "Morreu");
playerInfo[playerid][Dinheiro] = DOF2_GetInt(GetArquivo(playerid), "Dinheiro");
for(new i = 0; i < sizeof(Registro); i++) { TextDrawHideForPlayer(playerid, Registro[i]);}
for(new i = 0; i < sizeof(PlayerRegistro); i++) { PlayerTextDrawHide(playerid, PlayerRegistro[i]);}
playerInfo[playerid][Logado] = true;
TogglePlayerSpectating(playerid, 0);
CancelSelectTextDraw(playerid);
SpawnPlayer(playerid);
GivePlayerMoney(playerid, playerInfo[playerid][Dinheiro]);
SetPlayerSkin(playerid, playerInfo[playerid][Skin]);
GetPlayerScore(playerid, playerInfo[playerid][Level]);
}
return 1;
}