[Ajuda] Salvamento
#1

Bom, depois de alguns dias jб com o gm eu percebi hoje que ele nao estб salvando no banco de dados, sу salva quando й algo por comando, ex meu comando de daradmin, que tem update direto no comando...

eu tenho essa callback de salvamento

PHP код:
public salvartudo() {
    new 
query[128], nome[MAX_PLAYER_NAME];
    for(new 
i=0i<MAX_PLAYERSi++) { // Seleciona todos os players
    
if(player[i][Logado] == 1) { // Verifica se os players seleionados estгo online
    
GetPlayerName(inomeMAX_PLAYER_NAME); // Isso todos sabem, pega o nome
    
format(querysizeof(query), "UPDATE `contas` SET dinheiro = '%d' WHERE `nome` = '%s'"GetPlayerMoney(i), nome); // Atualiza o dinheiro
    
format(querysizeof(query), "UPDATE `contas` SET score = '%d' WHERE `nome` = '%s'"GetPlayerScore(i), nome); // Atualiza o score
    
mysql_function_query(mysqlqueryfalse""""); // executa a funзгo
    
// fecha verifiaзгo de online
    
// fecha loopin de todos os users

Tenho um time para cada 1 minuto ser salvo
Em OnGameModeInit
PHP код:
SetTimer("salvartudo"600001); 
e em OnPlayerDisconect
PHP код:
salvartudo(); 
estou fazendo alguma coisa de errado? pois nao estб salvando
Reply
#2

Faзa em stock й depois coloque ela no OnPlayerDisconnect

ex:

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    SalvarContas(playerid);
    return 1;
}

stock SalvarContas(playerid)
{
        new String[128];
    format(String, sizeof(String), "Contas/%s.ini", Name(playerid));
    {
        // Dados das contas aqui para salvar
    }
    return 1;
}

stock Name(playerid)
{
    new Nome[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, Nome, MAX_PLAYER_NAME+1);
    return Nome;
}
Faзo assim й da certinho ...
Reply
#3

Fiz assim

PHP код:
stock salvartudo(playerid)
{
    new 
query[128];
    
format(querysizeof(query), "UPDATE `contas` SET dinheiro = '%d' WHERE `nome` = '%s'"GetPlayerMoney(playerid), player[playerid][Nome]); // Atualiza o dinheiro 
    
format(querysizeof(query), "UPDATE `contas` SET score = '%d' WHERE `nome` = '%s'"GetPlayerScore(playerid), player[playerid][Nome]); // Atualiza o score 
    
mysql_function_query(mysqlqueryfalse""""); // executa a funзгo 
    
return 1;

OnPlayerConnect
PHP код:
GetPlayerName(playeridplayer[playerid][Nome], 24); // Pegar nome do player 
OnPlayerDisconnect
PHP код:
salvartudo(playerid); 
Defines
PHP код:
enum Dados {
    
Nome[MAX_PLAYER_NAME],
    
Ip[24],
    
Logado,
    
Score,
    
Level,
    
Dinheiro
}
new 
player[MAX_PLAYERS][Dados]; 
Mesmo assim nao estб salvando
Reply
#4

Nгo uso mysql, Uso mais DOF2 mesmo

Vai na callback public OnGameModeExit(), Й coloque assim

pawn Код:
public OnGameModeExit()
{
    for(new i = 0; i < MAX_PLAYERS; i ++)
    if(!IsPlayerConnected(i))
    {
         SalvarContas(i);
    }
    DOF2::Exit();
    return 1;
}
Veja ai ser pega, Esto usando DOF2 ai, Й pra setar o player quando ele connectar tem que fazer outra stock tambйm ...
Reply
#5

Obrigado jб descobrir o erro, o meu sistema estб funcionando perfeitamente sу tem um detalhe

quando eu uso

PHP код:
    format(querysizeof(query), "UPDATE `contas` SET dinheiro = '%d' WHERE `nome` = '%s'"GetPlayerMoney(i), nome); // Atualiza o dinheiro 
    
format(querysizeof(query), "UPDATE `contas` SET score = '%d' WHERE `nome` = '%s'"GetPlayerScore(i), nome); // Atualiza o score 
    
mysql_function_query(mysqlqueryfalse""""); // executa a funзгo 
o mysql_function_query ele sу pega o format de cima entгo ele sу salvava o score...

para funcionar eu tive q assim
PHP код:
    format(querysizeof(query), "UPDATE `contas` SET score = '%d' WHERE `nome` = '%s'"GetPlayerScore(i), nome); // Atualiza o score 
    
mysql_function_query(mysqlqueryfalse""""); // executa a funзгo 
    
format(querysizeof(query), "UPDATE `contas` SET dinheiro = '%d' WHERE `nome` = '%s'"GetPlayerMoney(i), nome); // Atualiza o dinheiro 
    
mysql_function_query(mysqlqueryfalse""""); // executa a funзгo 
Reply
#6

Amigo nгo precisa disso

Olhe bem:

PHP код:
    format(querysizeof(query), "UPDATE `contas` SET `dinheiro` = %d, `score`= %d WHERE `nome` = '%s'"GetPlayerMoney(i), GetPlayerScore(i), nome); 
    
mysql_function_query(mysqlqueryfalse""""); 
Reply
#7

Quote:
Originally Posted by Vegassilva
Посмотреть сообщение
Nгo uso mysql, Uso mais DOF2 mesmo

Vai na callback public OnGameModeExit(), Й coloque assim

pawn Код:
public OnGameModeExit()
{
    for(new i = 0; i < MAX_PLAYERS; i ++)
    if(!IsPlayerConnected(i))
    {
         SalvarContas(i);
    }
    DOF2::Exit();
    return 1;
}
Veja ai ser pega, Esto usando DOF2 ai, Й pra setar o player quando ele connectar tem que fazer outra stock tambйm ...
Desse jeito nunca salvaria as contas dos players Online.

Bem nгo precisa de 2 query's para isso.
Reply
#8

Quote:
Originally Posted by PT
Посмотреть сообщение
Desse jeito nunca salvaria as contas dos players Online.

Bem nгo precisa de 2 query's para isso.
Mais pelo menos o cara conseguiu acha o erro -_-
Reply
#9

Quote:
Originally Posted by Cleyson
Посмотреть сообщение
Amigo nгo precisa disso

Olhe bem:

PHP код:
    format(querysizeof(query), "UPDATE `contas` SET `dinheiro` = %d, `score`= %d WHERE `nome` = '%s'"GetPlayerMoney(i), GetPlayerScore(i), nome); 
    
mysql_function_query(mysqlqueryfalse""""); 
Ah obrigado, vou utilizar assim ...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)