[Include] [INC] Самый дерзкий анти деньги чит хД
#1

Анти-чит на деньги
ВНИМАНИЕ!: Скрипт не будет корректно работать со сторонними фильтрскриптами в которых даются или отнимаются деньги! следует добавить этот скрипт во все сторонние фильтрскрипты!

и так начнём урок создание простейшего и эффективного анти чита на деньги.
создадим переменную в которой будем хранить денежки игроков:

Code:
new playersmoneys[MAX_PLAYERS]; 

Далее в OnPlayerDisConnect засунем

playersmoneys[playerid] = 0; 

Потом (можно в самом низу мода) создаём свои функции денег:

stock GiveServerMoney(playerid,amout)//дает деньги от сервера 
{ 
GivePlayerMoney(playerid,amout); 
playersmoneys[playerid] = GetPlayerMoney(playerid);//сохраняем деньги в нашу переменную 
return 1; 
} 

stock ResetServerMoney(playerid)//отбирает деньги 
{ 
GivePlayerMoney(playerid,-GetPlayerMoney(playerid)); 
playersmoneys[playerid] = GetPlayerMoney(playerid);//сохраняем деньги в нашу переменную 
return 1; 
}
Дальше заменяем GivePlayerMoney и ResetPlayerMoney на новые функции

Далее создаём таймер или вставляем этот код в OnPlayerUpdate:

Code:
if(GetPlayerMoney(playerid) > playersmoneys[playerid]/* && !IsPlayerAdmin(playerid)*/)//раскомментируйте если нехотите чтобы кикало админов 
{ 
ResetPlayerMoney(playerid); 
GiveServerMoney(playerid,playersmoneys[playerid]); 
for(new i; i < MAX_PLAYERS; i++) 
if(IsPlayerConnected(i) && playerid != i){ 
format(str,sizeof(str),"\"%s\" был кикнут администратором \"Server\". (Причина: Денежный чит)",GetName(playerid)); 
SendClientMessage(i,red,str);} 
SendClientMessage(playerid,red,"Вы были кикнуты администратором \"Server\". (Причина: Денежный чит)"); 
TogglePlayerControllable(playerid,0); 
Kick(playerid);//если хотите чтобы банило замените на Ban(playerid); 
return 1; 
}
Всё античит готов, урок закончен всем спасибо

P.S. Античит проверен пицотраз рабочий 100% если у вас есть какие то ошибки(которых быть не может) то, попробуйте всё сделать руками!
Reply
#2

тьфу забыл написать [урок] модераторы не злитесь =)
Reply
#3

stock ResetServerMoney(playerid)//отбирает деньги
{
GivePlayerMoney(playerid,-GetPlayerMoney(playerid));
playersmoneys[playerid] = GetPlayerMoney(playerid);//сохраняем деньги в нашу переменную
return 1;
}

lol

stock ResetServerMoney(playerid)
{
ResetPlayerMoney(playerid);
playersmoneys[playerid] = 0;
return 1;
}

кикать - глупо, проще просто отбирать

if(GetPlayerMoney(playerid) > playersmoneys[playerid])
{
ResetServerMoney(playerid);
GiveServerMoney(playerid,playersmoneys[playerid]);
return 1;
}

где lostmoneys в GiveServerMoney(playerid,lostmoneys[playerid]);)))
Reply
#4

выкладывал на одном сайте, сделал playersmoneys а для себя делал lostmoneys забыл поменять
Reply
#5

Quote:
Originally Posted by ZiGGi
кикать - глупо, проще просто отбирать
может конечно отбирать и проще, но я не думаю, что кик это очень глупо т.к. при игре если кто-то начитит денег, то его кикнет
и все кто есть на сервере увидят что этот игрок читер, и отношение у всех к нему сразу изменится, а если у него деньги просто
отнимутся этот момент может остаться тайным так и будут читеры играть

з.ы. оформление топика просто жесть
Reply
#6

Напиши в поиске по этому форуму "INC Money Anticheat" и ты увидишь нормальный античит, а не эту ересь.

я не спорь что он будет работать, но косяки в некоторых моментах будут. где именно узнаешь когда перестанешь плагиатить чужие исходные коды и что-то сделаешь сам.
Reply
#7

У кого руки не из жопы и кому надо было — тот себе так давным давно сделал. Некоторые даже продумали данный скрипт и сделали кое-какие исключения (Pay'n'spray, Sprunk и пр.)
Reply
#8

На заметку. Такое устройство античита придумали не буржуи, а русский программист [TDH]Boss сразу после релиза 01б. И система как Yagu Race уже была на сервере GTA.ru в 2006ом году, только чеки не гоночные.

Так что не всё мы воруем (
Reply
#9

Чем проще код - тем быстрее работает? Неправда ли?

new global_money[max_players];

#define setPlayerMoney(%0, %1) global_money[%0]=(%1)
#define getPlayerMoney(%0) global_money[%0]
#define givePlayerMoney(%0, %1) global_money[%0]+=(%1)


OnPlayerConnect:
setPlayerMoney(playerid, 0);

OnPlayerUpdate:
if(global_money[playerid] != GetPlayerMoney(playerid)) {
GivePlayerMoney(playerid, (global_money[playerid] - GetPlayerMoney(playerid)));
}

:P Всё гениальное - просто.
Reply
#10

Как ни странно, но набрав в поиске "INC Money Anticheat", результатов не было. И даже "Money Anticheat" - ничего не выдал.
^Psy, Будь аккуратнее
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)