AntiMoneyCheat_J(playerid)
{
new clientmoney = GetPlayerMoney(playerid);
if(clientmoney < 0) return SetPlayerMoney_J(playerid,0);
if(clientmoney == Player[playerid][pCash]) return true;
if(clientmoney < Player[playerid][pCash] || clientmoney > Player[playerid][pCash]) return SetPlayerMoney_J(playerid,Player[playerid][pCash]);
return true;
}
stock GiveCash(playerid, cash) { GivePlayerMoney(playerid, cash); return PlayerInfo[playerid][pCash] += cash; } stock ResetCash(playerid) { PlayerInfo[playerid][pCash] = 0; ResetPlayerMoney(playerid); return 1; } stock SetCash(playerid, cash) { PlayerInfo[playerid][pCash] = cash; ResetPlayerMoney(playerid); GivePlayerMoney(playerid, cash); return 1; } stock GetCash(playerid) return PlayerInfo[playerid][pCash];
Бессмысленная функция, которая только нагрузку дает......
Braga style |
Никогда не юзайте GetPlayerMoney. Хранишь деньги на серверной стороне в тойже Player[playerid][pCash]. И брать инфо, сколько денег с нее же Player[playerid][pCash]. При передаче отъеме денег делать тоже самое с этой переменной.
И античитов на деньги пруд пруди. Вот тебе пример Код:
stock GiveCash(playerid, cash) { GivePlayerMoney(playerid, cash); return PlayerInfo[playerid][pCash] += cash; } stock ResetCash(playerid) { PlayerInfo[playerid][pCash] = 0; ResetPlayerMoney(playerid); return 1; } stock SetCash(playerid, cash) { PlayerInfo[playerid][pCash] = cash; ResetPlayerMoney(playerid); GivePlayerMoney(playerid, cash); return 1; } stock GetCash(playerid) return PlayerInfo[playerid][pCash]; |
Мне не нужен новый мне нужно чтобы проверили.
Я просто сомневаюсь что это был чит,мне кажется взлом базы, так как у игрока были деньги в переменной. А читом обычным нельзя ни как изменить скриптовую переменную. Может есть у кого идеи как это могло произойти, база или чит? |
Может быть в сохранении аккаунта деньги ты записываешь не с переменной а с кол-ва денег у игрока? (GetPlayerMoney).
|