[Ajuda] Salvando Dados Mysql
#1

Ao reiniciar pelo GMX nгo estб salvando a skin
Somente se o player dб /q
e se ele der /q e salvar tambйm nгo seta na onplayerspawn

pawn Code:
public OnGameModeExit()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(Logado{i}==true)
            {
                SalvarDados(i);
            }
        }
    }
    mysql_close(conectDB);
    return 1;
}
pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    if(Logado{playerid}==true)
    {
        SalvarDados(playerid);
    }
    return 1;
}
pawn Code:
stock SalvarDados(playerid)
{
    new query1[256];
    format(query1,sizeof(query1),"UPDATE `pinfo` SET `skin` = '%d' WHERE `Nick`= '%s'",GetPlayerSkin(playerid),Nome(playerid));
    mysql_function_query(conectDB,query1, false,"","");
   
}
pawn Code:
Player[playerid][Skin] = cache_get_field_content_int(0, "skin");
    SetPlayerSkin(playerid,Player[playerid][Skin]);
Reply
#2

Mostra a array Logado, acho que o erro estб em Logado{playerid}, o certo seria Logado[playerid]
Reply
#3

Quote:
Originally Posted by garotin
View Post
Mostra a array Logado, acho que o erro estб em Logado{playerid}, o certo seria Logado[playerid]
Char-arrays https://sampforum.blast.hk/showthread.php?tid=216730
Reply
#4

Quote:
Originally Posted by Bruno13
View Post
Obrigado, dessa eu nгo sabia...
Reply
#5

Alguйm ?
Reply
#6

Caiton no OnGameModeExit experimenta usar foreach cujo й mais rapido que o for(), posso estar enganado mas creio que o gmx estб fechando a gm mais rapido que a verificaзгo...
Reply
#7

Quote:
Originally Posted by garotin
View Post
Caiton no OnGameModeExit experimenta usar foreach cujo й mais rapido que o for(), posso estar enganado mas creio que o gmx estб fechando a gm mais rapido que a verificaзгo...
pensei a mesma coisa, pois tem vezes que salva e tem vezes que nгo...
Tem como montar pra mim a base de como ficaria usando foreach ?
Reply
#8

Recomendo criar um comando de gmx, em vez de usar o rcon. Coloque pra salvar os dados no comando e crie um timer para executar o rcon command.

Ex:

PHP Code:
CMD:gmx(playerid) {
    new 
= -1GetPlayerPoolSize();
    while(++
<= j) {
        if(
Logado{i}) {
            
SalvarDados(i);
        }
    }

    
SetTimer("GMX"20000);
    return 
1;
}

forward GMX(); 
public 
GMX() {
    
SendRconCommand("exit");
    return 
1;

Reply
#9

Quote:
Originally Posted by zPain
View Post
Recomendo criar um comando de gmx, em vez de usar o rcon. Coloque pra salvar os dados no comando e crie um timer para executar o rcon command.

Ex:

PHP Code:
CMD:gmx(playerid) {
    new 
= -1GetPlayerPoolSize();
    while(++
<= j) {
        if(
Logado{i}) {
            
SalvarDados(i);
        }
    }
    
SetTimer("GMX"20000);
    return 
1;
}
forward GMX(); 
public 
GMX() {
    
SendRconCommand("exit");
    return 
1;

show, mas de qualquer forma, e se o servidor cair ? ele vai direto pra ongamemodeexit, e nгo irб salvar os dados... nгo й possнvel deve ter algo que solucione o caso...
Reply
#10

Quote:
Originally Posted by Caiton
View Post
show, mas de qualquer forma, e se o servidor cair ? ele vai direto pra ongamemodeexit, e nгo irб salvar os dados... nгo й possнvel deve ter algo que solucione o caso...
Nгo й um mйtodo seguro, podem ocorrer perdas de dados caso o samp-server dк crash, o que eu aconselho й a usar um salvamento no OnPlayerDisconnect e outro atravйs de um timer, a cada 3 minutos os jogadores online sгo salvos por exemplo, й um bom mйtodo pra evitar perdas de dados, ou tambйm use o salvamento em algum evento importante do gamemode, por exemplo, se tal player ganhou uma grande quantia em dinheiro salve os dados em caso de crash no servidor para nгo haver rollback
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)