SA-MP Forums Archive
AntiCheat problem (money) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: AntiCheat problem (money) (/showthread.php?tid=66086)



AntiCheat problem (money) - Fen1x - 19.02.2009

Ok, look. I was making my anticheat(money) system and here what I have:
When player type /login pass i start timer for him
Код:
moneytimer[playerid] = SetTimerEx("MoneyCheck",3000,1,"i",playerid);
When he disconnects from server i kill it
Код:
KillTimer(moneytimer[playerid]);
Here is how i check player's money
Код:
forward MoneyCheck(playerid);
public MoneyCheck(playerid)
{
  new clientcash;
  clientcash = GetPlayerMoney(playerid);
  if(clientcash > servercash[playerid])
  {
    SetTimerEx("MoneyCheck2",2000,false,"i",playerid);
  }
  else
  {
    servercash[playerid] = clientcash;
  }
  return 1;
}
if player is suspecting in cehating i start 2 timer for him
Код:
forward MoneyCheck2(playerid);
public MoneyCheck2(playerid)
{
  new clientcash;
  clientcash = GetPlayerMoney(playerid);
  if(clientcash > servercash[playerid])
  {
    new string[256],nick[24];
    GetPlayerName(playerid, nick, sizeof(nick));
      format(string, sizeof(string), "[LSPD] Игрок %s был кикнут за читы на деньги.",nick);
      SendClientMessageToAll(COLOR_RED, string);
    ResetPlayerMoney(playerid);
    Kick(playerid);
  }
return 1;
}
And here is my giveplayermoney function
Код:
forward xGivePlayerMoney(playerid, amount);
public xGivePlayerMoney(playerid, amount)
{
  new tmp;
  tmp = GetPlayerMoney(playerid);
  GivePlayerMoney(playerid,amount);
  servercash[playerid] = tmp + amount;
  return 1;
}
So. think that everything is ok. And it's really working. BUT! Sometimes people is kicked from server because of cheats(they are not cheaters). Help me pls.



Re: AntiCheat problem (money) - CracK - 19.02.2009

I've also had a problem with this... but found a way to avoid errors.
Top of the script:
pawn Код:
forward MoneyGiving(playerid, status);
new givingmoney[MAX_PLAYERS];
OnPlayerConnect:
pawn Код:
givingmoney[playerid] = 0;
Put this in your timer before if(clientcash > servercash[playerid]):
pawn Код:
if(givingmoney[i]) return;
Function:
pawn Код:
public MoneyGiving(playerid, status)
{
    givingmoney[playerid] = status;
}
And finally insert these to your Money funcs:
pawn Код:
givingmoney[playerid] = 1;
SetTimerEx("MoneyGiving", 1500, 0, "i,i", playerid, 0);
З.Ы. русские захватят весь мир))


Re: AntiCheat problem (money) - Fen1x - 19.02.2009

oooh! thx dude!
p.s. лооооол