Untonyst
Умник
Добрый вечер, уважаемый пользователь форума Pawno-info.Ru и его гость. Представляю вам гибкий в настройках античит на деньги. Если игрок захочет себе наделать денег собейтом, то ничего не выйдет. Его начитеренные деньги сбросятся античитом и его старый баланс будет восстановлен. Есть функция настройки индивидуального наказание игрока на читтинг на деньги (как захотите, так и наказывайте)
Автор: Untonyst
- Чтобы его подключить, вам просто надо в начале мода ко всем инклудам добавить
PHP:#include <u_ac_money> - При ложных срабатываниях, связанных с проблемами с сетью, высоким пингом или чем-нибудь еще, перед подключением инклуда добавим
Важно, чтобы значение было больше 1000. Если не выставлять это значение, то ставится значение по умолчанию - 1000.PHP:#define AC_MONEY_IGNORE_TICK_TIME (значение) #include <u_ac_money>
- Чтобы настроить индивидуально наказание, оповещение администраторам или что-нибудь еще, достаточно в моде добавить каллбэк OnMoneyCheatDetected
Функция вызывается читером и не возвращает какого-либо конкретного значения.PHP:#include <u_ac_money> public OnMoneyCheatDetected(playerid) { SendClientMessage(playerid, -1, "Ваш баланс восстановлен. Администрация уже вкурсе!"); }
PHP:
/*
Античит на здоровье
от Untonyst
Copyright (c) 2015 Untonyst
*/
#if defined ust_ac_money_inc__
#endinput
#endif
#define ust_ac_money_inc__
#if !defined AC_MONEY_IGNORE_TICK_TIME
#define AC_MONEY_IGNORE_TICK_TIME 1000
#endif
static ignore_tick[MAX_PLAYERS],
ac_money[MAX_PLAYERS],
ac_timer[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
ac_money[playerid] = ignore_tick[playerid] = 0;
ac_timer[playerid] = SetTimerEx("AC_MoneyCore", 1000, false, "i", playerid);
#if defined ac_money__OnPlayerConnect
ac_money__OnPlayerConnect(playerid);
#endif
return 1;
}
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect ac_money__OnPlayerConnect
#if defined ac_money__OnPlayerConnect
forward ac_money__OnPlayerConnect(playerid);
#endif
public OnPlayerDisconnect(playerid, reason)
{
ac_money[playerid] = ignore_tick[playerid] = 0;
KillTimer(ac_timer[playerid]);
#if defined ac_money__OnPlayerDisconnect
ac_money__OnPlayerDisconnect(playerid, reason);
#endif
return 1;
}
#if defined _ALS_OnPlayerDisconnect
#undef OnPlayerDisconnect
#else
#define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect ac_money__OnPlayerDisconnect
#if defined ac_money__OnPlayerDisconnect
forward ac_money__OnPlayerDisconnect(playerid, reason);
#endif
forward AC_MoneyCore(playerid);
public AC_MoneyCore(playerid)
{
ac_timer[playerid] = SetTimerEx("AC_MoneyCore", 1000, false, "i", playerid);
if ((GetPlayerMoney(playerid) != ac_money[playerid])
&& (GetTickCount() > ignore_tick[playerid]))
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, ac_money[playerid]);
#if defined OnMoneyCheatDetected
OnMoneyCheatDetected(playerid);
#endif
return 1;
}
return 0;
}
stock ac_money___GivePlayerMoney(playerid, money)
{
ignore_tick[playerid] = GetTickCount() + AC_MONEY_IGNORE_TICK_TIME;
ac_money[playerid] = money;
GivePlayerMoney(playerid, ac_money[playerid]);
}
#if defined _ALS_GivePlayerMoney
#undef GivePlayerMoney
#else
#define _ALS_GivePlayerMoney
#endif
#define GivePlayerMoney ac_money___GivePlayerMoney
stock ac_money__GetPlayerMoney(playerid)
{
ac_money[playerid] = GetPlayerMoney(playerid);
return ac_money[playerid];
}
#if defined _ALS_GetPlayerMoney
#undef GetPlayerMoney
#else
#define _ALS_GetPlayerMoney
#endif
#define GetPlayerMoney ac_money__GetPlayerMoney
stock ac_money__ResetPlayerMoney(playerid)
{
ignore_tick[playerid] = GetTickCount() + AC_MONEY_IGNORE_TICK_TIME;
ac_money[playerid] = ResetPlayerMoney(playerid);
}
#if defined _ALS_ResetPlayerMoney
#undef ResetPlayerMoney
#else
#define _ALS_ResetPlayerMoney
#endif
#define ResetPlayerMoney ac_money__ResetPlayerMoney
#if defined OnMoneyCheatDetected
forward OnMoneyCheatDetected(playerid);
#endif
Автор: Untonyst
Копирование данной тема без разрешения автора (меня) запрещено!
Последнее редактирование:
