Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
  • Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

Include u_ac_money.inc | Античит на деньги

Untonyst

Умник
Добрый вечер, уважаемый пользователь форума Pawno-info.Ru и его гость. Представляю вам гибкий в настройках античит на деньги. Если игрок захочет себе наделать денег собейтом, то ничего не выйдет. Его начитеренные деньги сбросятся античитом и его старый баланс будет восстановлен. Есть функция настройки индивидуального наказание игрока на читтинг на деньги (как захотите, так и наказывайте)

  • Чтобы его подключить, вам просто надо в начале мода ко всем инклудам добавить

    PHP:
    #include <u_ac_money>
  • При ложных срабатываниях, связанных с проблемами с сетью, высоким пингом или чем-нибудь еще, перед подключением инклуда добавим
    PHP:
    #define AC_MONEY_IGNORE_TICK_TIME (значение)
    #include <u_ac_money>
    Важно, чтобы значение было больше 1000. Если не выставлять это значение, то ставится значение по умолчанию - 1000.

  • Чтобы настроить индивидуально наказание, оповещение администраторам или что-нибудь еще, достаточно в моде добавить каллбэк 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

Копирование данной тема без разрешения автора (меня) запрещено!​
 
Последнее редактирование:
Сверху Снизу