23.04.2012, 22:19
Galera queria um sistema ant hacker que quando o player ganhase o dinheiro usando hacker o dinheiro voltase ao normal q nem antes de usar o hacker ;p darei reputaзгo
new slotsMoney[MAX_PLAYERS];
public OnPlayerConnect(playerid) {
return slotsMoney[playerid] = SetTimerEx("OnPlayerMoneyCheck", 500, true, "i", playerid), true;
}
public OnPlayerDisconnect(playerid, reason) {
return KillTimer(slotsMoney[playerid]), true;
}
GivePlayerCash(playerid, quantia) {
GivePlayerMoney(playerid, quantia);
SetPVarInt(playerid, "serverSideMoney", GetPlayerMoney(playerid));
SetPVarInt(playerid, "trueModeServer", 10);
}
// trueModeServer eu usei para dar um atraso na prуxima checagem pуs receber dinheiro do servidor. Assim evita erros de o jogo nгo retornar o valor de getPlayerMoney devido ao pouco tempo entre a chacegem e o GivePlayerMoney. Й necessбrio!
forward OnPlayerMoneyCheck(playerid);
public OnPlayerMoneyCheck(playerid) {
if(GetPVarInt(playerid, "trueModeServer"))
return SetPVarInt(playerid ,"trueModeServer", 0), true;
if(GetPlayerMoney(playerid) < GetPVarInt(playerid,"serverSideMoney")) {
SetPVarInt(playerid, "serverSideMoney", GetPlayerMoney(playerid));
}
else {
// Jogador usando hacking. Faзa algo aqui
// Note que ele sу acusarб de hacking caso o dinheiro que o jovem tem for maior que o que o servidor armazena. Interaзгo com cliente
}
return true;
}
)
// Topo do gamemode
new Money[MAX_PLAYERS];
#define GivePlayerCash(%0, %1) Money[%0] += %1, GivePlayerMoney(%0, %1);
#define GetPlayerCash(%0) Money[%0];
// OnPlayerConnect
Money[playerid] = 0;