[Ajuda] Salvar o dinheiro
#1

nao estou conseguindo salvar o dinheiro ao player desconectar do servidor, alguem pode me ajudar ?


https://pastebin.com/3rB1gAXr
Reply
#2

Quando Salvar A conta, Use essa funзгo:
https://sampwiki.blast.hk/wiki/GetPlayerMoney
Vou deixar uma define minha que uso a bastante tempo evitando tambйm Anti Money Hacks.
PHP код:
#define     GivePlayerCash(%0,%1) SetPVarInt(%0,"Money",GetPlayerCash(%0)+%1),GivePlayerMoney(%0,%1)
#define     ResetPlayerCash(%0) SetPVarInt(%0,"Money",0),ResetPlayerMoney(%0)
#define     GetPlayerCash(%0) GetPVarInt(%0,"Money") 
Код:
Use: sGivePlayerCash(playerid, Quantia); para setar grana, e GetPlayerCash(playerid); para salvar a grana e verificar Moneys.
Reply
#3

Tente usar assim em OnPlayerDisconnect


PHP код:
public OnPlayerDisconnect(playeridreason)
{
    new 
file[40], Nome[MAX_PLAYER_NAME];
    
GetPlayerName(playeridNome32);
    
format(file,40,"Contas/%s.ini"Nome);
    if(
DOF2_FileExists(file))
    {
        
DOF2_SetInt(file"Dinheiro"PlayerInfo[playerid][pDinheiro]);
        
DOF2_SaveFile();
    }
    return 
1;

Reply
#4

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new file[64];
    GetPlayerName(playerid, file, sizeof(file));
    format (file, sizeof(file), DOF2_File(file));
    DOF2_SetInt(file, "Dinheiro", PlayerInfo[playerid][pDinheiro]);
    return 1;
}
por

PHP код:
public OnPlayerDisconnect(playeridreason)
{
    new 
file[64];
    
GetPlayerName(playeridfilesizeof(file));
    
format (filesizeof(file), DOF2_File(file));
    
PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
    
DOF2_SetInt(file"Dinheiro"PlayerInfo[playerid][pDinheiro]);
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    
PlayerInfo[playerid][pDinheiro] = SetPlayerMoney(playeridDOF2_GetInt(file"Dinheiro"));
    return 
1;
}
stock SetPlayerMoney(playeridcash)
{
    
ResetPlayerMoney(playerid);
    return 
GivePlayerMoney(playeridcash);

Reply
#5

Quote:
Originally Posted by zG
Посмотреть сообщение
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new file[64];
    GetPlayerName(playerid, file, sizeof(file));
    format (file, sizeof(file), DOF2_File(file));
    DOF2_SetInt(file, "Dinheiro", PlayerInfo[playerid][pDinheiro]);
    return 1;
}
por

PHP код:
public OnPlayerDisconnect(playeridreason)
{
    new 
file[64];
    
GetPlayerName(playeridfilesizeof(file));
    
format (filesizeof(file), DOF2_File(file));
    
PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
    
DOF2_SetInt(file"Dinheiro"PlayerInfo[playerid][pDinheiro]);
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    
PlayerInfo[playerid][pDinheiro] = SetPlayerMoney(playeridDOF2_GetInt(file"Dinheiro"));
    return 
1;
}
stock SetPlayerMoney(playeridcash)
{
    
ResetPlayerMoney(playerid);
    return 
GivePlayerMoney(playeridcash);

OnPlayerSpawn? O ideal era o OnPlayerConnect.
Reply
#6

Mano recomendo a utilizar esse cуdigo aqui. Tirei do meu antigo GM. Й sу vocк adaptar ao seu GM. Mas jб coloquei em comentбrio onde tem que colocar cada coisa.

PHP код:
/**
* @Author: wups
*/
//Coloca no inнcio do GM
#define CHECK_TIME 30 // Muda o tempo em segundos de quando vai atualizar
new PMoney[MAX_PLAYERS];
forward GetPlayerMonez(playerid);
forward ResetPlayerMonez(playerid);
forward GivePlayerMonez(playerid,moneyex);
forward MoneyCheck();
//Coloca em OnGameModeInit
public OnGameModeInit()
{
    
SetTimer("MoneyCheck",CHECK_TIME*1000,true);
    return 
1;
}
//coloca em OnPlayerConnect
public OnPlayerConnect(playerid)
{
    
PMoney[playerid]=0;
    return 
1;
}
//Cola no Final do GM
public MoneyCheck()
{
    new 
moneyex;
    foreach(new 
playeridPlayer)
    {
        
moneyex GetPlayerMoney(playerid);
        if( 
moneyex PMoney[playerid] && moneyex > -PMoney[playerid]=moneyex;
        
ResetPlayerMoney(playerid);
        
GivePlayerMoney(playerid,PMoney[playerid]);
    }
    return 
1;
}
public 
GivePlayerMonez(playeridmoneyex)
{
    new 
rmoney GetPlayerMoney(playerid);
    if( 
rmoney PMoney[playerid] && rmoney > -PMoney[playerid]=rmoney;
    
PMoney[playerid]+=moneyex;
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(filesizeof(file), "Contas/%s.ini"name);
    
DOF2_SetInt(file"Dinheiro"PMoney[playerid]);
    
DOF2_SaveFile();
    
ResetPlayerMoney(playerid);
    
GivePlayerMoney(playeridPMoney[playerid]);
    return 
1;
}
public 
ResetPlayerMonez(playerid)
{
    
ResetPlayerMoney(playerid);
    
PMoney[playerid]=0;
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(filesizeof(file), "Contas/%.ini"name);
    
DOF2_SetInt(file"Dinheiro"0);
    
DOF2_SaveFile();
    return 
1;
}
public 
GetPlayerMonez(playerid) return PMoney[playerid]; 
Reply
#7

Funcionou obrigado
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)