[INC] Money Anticheat -
^Woozie^ - 03.01.2010
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 на мои!
Re: [INC] Money Anticheat -
MX_Master - 03.01.2010
вроде, уже многие сошлись во мнении, что для серва античит на бапки как таковой не нужен. всего лишь нужно кол-во денег игрока всегда хранить в серверных переменных и только када нада - обновлять значение денег в клиенте игрока. серверные бапки также не подходят для стант модов.
Re: [INC] Money Anticheat -
[Saint] - 03.01.2010
Каждый решает сам, что ему использовать....
Re: [INC] Money Anticheat -
MX_Master - 03.01.2010
спору нет, но ты будешь такой античит использовать? если нет, то почему? какие минусы/плюсы?
Re: [INC] Money Anticheat -
^Woozie^ - 03.01.2010
Quote:
вроде, уже многие сошлись во мнении, что для серва античит на бапки как таковой не нужен. всего лишь нужно кол-во денег игрока всегда хранить в серверных переменных и только када нада - обновлять значение денег в клиенте игрока. серверные бапки также не подходят для стант модов.
|
что за тупизм. Все аналоги этого античита обходились, когда между таймером игрок читерил и ему давалось лаве скриптовой функцией или путем GetPlayerMoney, особенно в командах с подачей денег. Вот и всё, по крайней мере я так обошёл несколько античитов в начале лета.
Сейчас может другие авторы поняли свои косяки, но эту уязвимость я уже заметил давно, руки не доходили выложить.
Re: [INC] Money Anticheat - Zeex - 03.01.2010
А если на сервере 2 игрока с ид 2 и 3, что будет делать данный античит? А я скажу что - ничего он не сделает, т.к. даже проверять их не станет... (даю подсказку - КОТОК)))
Кстати что значит КОТОК? Любопытно даже стало
Re: [INC] Money Anticheat -
MX_Master - 03.01.2010
автор
Quote:
Originally Posted by ^Psycho^
Quote:
вроде, уже многие сошлись во мнении, что для серва античит на бапки как таковой не нужен. всего лишь нужно кол-во денег игрока всегда хранить в серверных переменных и только када нада - обновлять значение денег в клиенте игрока. серверные бапки также не подходят для стант модов.
|
что за тупизм. Все аналоги этого античита обходились, когда между таймером игрок читерил и ему давалось лаве скриптовой функцией или путем GetPlayerMoney, особенно в командах с подачей денег. Вот и всё, по крайней мере я так обошёл несколько античитов в начале лета. Сейчас может другие авторы поняли свои косяки, но эту уязвимость я уже заметил давно, руки не доходили выложить.
|
тупизмом можно назвать твой античит недописанный.
выдрал куски из общего какого-то кода и с довольным лицом создал релиз (:
могу пожелать только удачи в исправлениях
Re: [INC] Money Anticheat -
Serafim_sd - 03.01.2010
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...
ЗЫ парень наверно на КОТОК торопился) а вообще это очень забавно - докапываться до названий переменных)))
Re: [INC] Money Anticheat -
Serafim_sd - 03.01.2010
и зачем вообще нужен был коток? можно ведь
Code:
for(new i = 0; i < PlayerCounter(); i++)
Re: [INC] Money Anticheat - Zeex - 03.01.2010
Quote:
Originally Posted by Serafim_sd
и зачем вообще нужен был коток? можно ведь
Code:
for(new i = 0; i < PlayerCounter(); i++)
|
Ну условие цикла ведь проверяется/вычисляется на каждой итерации - получился бы цикл в цикле
Re: [INC] Money Anticheat -
^Woozie^ - 03.01.2010
исправление будет, не ссать.
Re: [INC] Money Anticheat -
CrunkBankS - 13.01.2010
Скоро будет?
Re: [INC] Money Anticheat -
^Woozie^ - 13.01.2010
готово. дело одной минуты
Re: [INC] Money Anticheat -
CrunkBankS - 14.01.2010
Он в интерьере за чит не посчитает если оружие в аммо купить?
Re: [INC] Money Anticheat -
^Woozie^ - 14.01.2010
вроде не должен
Re: [INC] Money Anticheat -
noobik - 21.01.2010
было бы неплохо задействать OnPlayerUpdate.. не для проверки, разумеется....
в существующем коде могут быть ложные срабатывания из-за пинга или если игрок афк.
Re: [INC] Money Anticheat -
CrunkBankS - 22.01.2010
Вообщем в интах не конфликтует, но чит на деньги не всегда определяет
Re: [INC] Money Anticheat -
^Woozie^ - 22.01.2010
Ты обновку античита делал?
Re: [INC] Money Anticheat -
CrunkBankS - 22.01.2010
угу
Re: [INC] Money Anticheat -
ZiGGi - 23.01.2010
ужасный способ...
грузит сервер ппц....