SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Релизы/Releases (https://forum.sa-mp.com/forumdisplay.php?f=66)
-   -   [Include] [INC] Money Anticheat (https://forum.sa-mp.com/showthread.php?t=118395)

^Woozie^ 03/01/2010 11:32 AM

[INC] Money Anticheat
 
90% античитов на деньги обходятся по такой схеме. В этом античите такое не пройдёт.

Инсталляция:

Difference - это отличие между суммой, которую игроку дало скриптом и которая у него на руках. Если эта сумма отличается более чем на 15$ его кикнет. Для стант-серверов рекомендуется сделать побольше, но в пределах нормы.

Ставим в TOP
pawn Code:
#define DIFFERENCE 15
new PlayerMoney[MAX_PLAYERS];

Ставим отдельно:
pawn Code:
//-----------------------------------------------------------------------------------------------------

public OnPlayerConnect(playerid)
{
PlayerMoney[playerid] = 0;
return 1;
}

//-----------------------------------------------------------------------------------------------------

stock GivePlayerMoneyUAC(playerid,money)
{
MoneyAntiCheat(playerid);
PlayerMoney[playerid]+=money;
GivePlayerMoney(playerid,money);
return 1;
}

//-----------------------------------------------------------------------------------------------------

stock SetPlayerMoneyUAC(playerid,money)
{
MoneyAntiCheat(playerid);
PlayerMoney[playerid] = money;
SetPlayerMoney(playerid,money);
return 1;
}

//-----------------------------------------------------------------------------------------------------

stock GetPlayerMoneyUAC(playerid)
{
MoneyAntiCheat(playerid);
return PlayerWant[playerid][playermoneyuac];
}


//-----------------------------------------------------------------------------------------------------

stock ResetPlayerMoneyUAC(playerid)
{
MoneyAntiCheat(playerid);
PlayerMoney[playerid] = 0;
ResetPlayerMoney(playerid);
return 1;
}

//-----------------------------------------------------------------------------------------------------

forward MoneyAntiCheat(playerid);
public MoneyAntiCheat(playerid)
{
new string[128];
new cash = GetPlayerMoney(playerid);
if(cash > playermoneyuac[playerid])
{
if ((cash-playermoneyuac[playerid]) > DIFFERENCE)
{
new hacked = cash - playermoneyuac[playerid];
GivePlayerMoney(playerid, -hacked);
format(string,128, "%s (%d) кикнут с сервера. Причина: Читерство на деньги (%d),GetName(playerid),playerid,hacked);
SendClientMessageToAll(COLOR_RED,string);
Kick(playerid);
}
}
return 1;
}


//-----------------------------------------------------------------------------------------------------

stock GetName(playerid)
{
new Name[256];
GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
return Name;
}

//-----------------------------------------------------------------------------------------------------

stock MoneyLove(playerid)
{
new cash = GetPlayerMoney(playerid);
if(cash > playermoneyuac[playerid])
{
if ((cash-playermoneyuac[playerid]) > DIFFERENCE)
{
playermoneyuac[playerid] = GetPlayerMoney(playerid);
}else{
MoneyAntiCheat(playerid);
}
}
return 1;
}

//-----------------------------------------------------------------------------------------------------

public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger)
{
if(GetVehicleModel(vehicleid) == 420 || GetVehicleModel(vehicleid) == 438)
{
MoneyLove(playerid);
}
return 1;
}


//-----------------------------------------------------------------------------------------------------

Не забудьте заменить функции GetPlayerMoney GivePlayerMoney SetPlayerMoney на мои!

MX_Master 03/01/2010 12:14 PM

Re: [INC] Money Anticheat
 
вроде, уже многие сошлись во мнении, что для серва античит на бапки как таковой не нужен. всего лишь нужно кол-во денег игрока всегда хранить в серверных переменных и только када нада - обновлять значение денег в клиенте игрока. серверные бапки также не подходят для стант модов.

[Saint] 03/01/2010 12:16 PM

Re: [INC] Money Anticheat
 
Каждый решает сам, что ему использовать.... ;)

MX_Master 03/01/2010 01:43 PM

Re: [INC] Money Anticheat
 
спору нет, но ты будешь такой античит использовать? если нет, то почему? какие минусы/плюсы?

^Woozie^ 03/01/2010 03:28 PM

Re: [INC] Money Anticheat
 
Quote:

вроде, уже многие сошлись во мнении, что для серва античит на бапки как таковой не нужен. всего лишь нужно кол-во денег игрока всегда хранить в серверных переменных и только када нада - обновлять значение денег в клиенте игрока. серверные бапки также не подходят для стант модов.
что за тупизм. Все аналоги этого античита обходились, когда между таймером игрок читерил и ему давалось лаве скриптовой функцией или путем GetPlayerMoney, особенно в командах с подачей денег. Вот и всё, по крайней мере я так обошёл несколько античитов в начале лета. :) Сейчас может другие авторы поняли свои косяки, но эту уязвимость я уже заметил давно, руки не доходили выложить.

Zeex 03/01/2010 04:11 PM

Re: [INC] Money Anticheat
 
А если на сервере 2 игрока с ид 2 и 3, что будет делать данный античит? А я скажу что - ничего он не сделает, т.к. даже проверять их не станет... (даю подсказку - КОТОК)))
Кстати что значит КОТОК? Любопытно даже стало

MX_Master 03/01/2010 05:48 PM

Re: [INC] Money Anticheat
 
автор
Quote:

Originally Posted by ^Psycho^
Quote:

вроде, уже многие сошлись во мнении, что для серва античит на бапки как таковой не нужен. всего лишь нужно кол-во денег игрока всегда хранить в серверных переменных и только када нада - обновлять значение денег в клиенте игрока. серверные бапки также не подходят для стант модов.
что за тупизм. Все аналоги этого античита обходились, когда между таймером игрок читерил и ему давалось лаве скриптовой функцией или путем GetPlayerMoney, особенно в командах с подачей денег. Вот и всё, по крайней мере я так обошёл несколько античитов в начале лета. :) Сейчас может другие авторы поняли свои косяки, но эту уязвимость я уже заметил давно, руки не доходили выложить.

тупизмом можно назвать твой античит недописанный.
выдрал куски из общего какого-то кода и с довольным лицом создал релиз (:
могу пожелать только удачи в исправлениях

Serafim_sd 03/01/2010 07:02 PM

Re: [INC] Money Anticheat
 
Quote:

Originally Posted by ^Psycho^
Code:

stock PlayerCounter()
{
new c;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i)) { c++;}
}
return c;
}


Допустим у нас 10 игроков с ид от 0 до 9, игрок с ид 5 вышел и твоя функция вернет 9 игроков. это верно, но тогда цикл
Code:

for(new i = 0; i < KOTOK; i++)
{
MoneyAntiCheat(i);
}

забудет о игроке с ид 9...

ЗЫ парень наверно на КОТОК торопился) а вообще это очень забавно - докапываться до названий переменных)))

Serafim_sd 03/01/2010 07:06 PM

Re: [INC] Money Anticheat
 
и зачем вообще нужен был коток? можно ведь
Code:

for(new i = 0; i < PlayerCounter(); i++)
:-[

Zeex 03/01/2010 07:28 PM

Re: [INC] Money Anticheat
 
Quote:

Originally Posted by Serafim_sd
и зачем вообще нужен был коток? можно ведь
Code:

for(new i = 0; i < PlayerCounter(); i++)
:-[

Ну условие цикла ведь проверяется/вычисляется на каждой итерации - получился бы цикл в цикле


All times are GMT. The time now is 03:06 AM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.