[Ajuda] Salvamento de dados
#1

Tenho uma dъvida. Fiz um sistema de salvamento(funcional), ele salva normalmente os dados, desde que o jogador saia por "vontade prуpria" do servidor. Hб um problema, quando fecho o servidor atravйs do samp server, ele nгo salva o progresso, independentemente de qual seja, ele simplesmente nгo salva ;-;
O que poderia ser?

pawn Код:
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;
}
Reply
#2

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...
Reply
#3

Quote:
Originally Posted by PuYi
Посмотреть сообщение
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.
Reply
#4

Quote:
Originally Posted by Feelipe
Посмотреть сообщение
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.
Reply
#5

Quote:
Originally Posted by PuYi
Посмотреть сообщение
Quando o servidor cai, ele dб shutdown, nгo sei ao certo se ele salva ou nгo, provavelmente sim.
Nгo salva, infelizmente.
Reply
#6

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;
}
Reply
#7

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
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;
}
Ele salva no tempo determinado, mas ao efetuar o login os dados nгo sгo carregados, digo, o score й zerado
Reply
#8

Up...
Reply
#9

Tentei de algumas formas, mas o erro ainda persiste, alguйm poderia me mostrar uma luz? ;-;
Reply
#10

PHP код:
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 
0sizeof(Registro); i++) { TextDrawHideForPlayer(playeridRegistro[i]);}
        for(new 
0sizeof(PlayerRegistro); i++) { PlayerTextDrawHide(playeridPlayerRegistro[i]);}

        
playerInfo[playerid][Logado] = true;

        
TogglePlayerSpectating(playerid0);
        
CancelSelectTextDraw(playerid);

        
SpawnPlayer(playerid);

        
GivePlayerMoney(playeridplayerInfo[playerid][Dinheiro]);
        
SetPlayerSkin(playeridplayerInfo[playerid][Skin]);
        
GetPlayerScore(playeridplayerInfo[playerid][Level]);
    }
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)