Доступ к архиву

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

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

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

Fixes 2 | Anti-AttackPlugin

Статус
В этой теме нельзя размещать новые ответы.

Den_Bellik

Мастер
Fixes 2​

Обновленый - 19/12/12​


[hr][/hr]

Некоторые подвиги показаны на консоли сервера, но на самом деле не заблокирован. До сих пор не было ничего, вы можете делать с этим, однако, теперь вы можете:

PHP:
public OnServerMessage(const msg[])
{
	if (!strcmp(msg, ERROR_INVALID_CLIENT, false, 31))
	{
		FIXES_SilentBanIP(FIXES_ReadIp(msg[31]));
	}
	else if (!strcmp(msg, ERROR_RCON_EXPLOIT, false, 37))
	{
		FIXES_SilentBanIP(FIXES_ReadIp(msg[37]));
	}
	else if (!strcmp(msg, ERROR_PLAYER_DIALOG, false, 40))
	{
		FIXES_SilentBanPlayer(strval(msg[40]));
	}
	else if (!strcmp(msg, ERROR_DIALOG_CRASH, false, 59))
	{
		FIXES_SilentBanPlayer(strval(msg[59]));
	}
	else if (!strcmp(msg, ERROR_PACKET_MODIFIED, false, 33))
	{
		FIXES_SilentBanPlayer(strval(msg[33]));
	}
	else if (!strcmp(msg, ERROR_PORT_REFUSED, false, 32))
	{
		FIXES_SilentBanPlayer(strval(msg[32]));
	}
	else if (!strcmp(msg, ERROR_BLOCKING, false, 9) && strfind(msg, ERROR_SERVER_FULL) != -1)
	{
		FIXES_SilentBanIP(FIXES_ReadIp(msg[9]));
	}
}
Этот плагин добавляет новый обратного вызова "OnServerMessage", который вызывается каждый раз "печатать", что называется, за исключением случаев, "печать" называется изнутри этот обратный вызов (чтобы избежать бесконечной петли).

Константы общих сообщений об ошибках, а функции запретить игроку/IP без их уведомления о том, что они запрещены.

Обратите внимание, что эта функция также требует Sscanf, но ввести некоторые другие интересные варианты:

PHP:
public OnServerMessage(const msg[])
{
	if (!strcmp(msg, "sscanf warning: ", false, 16))
	{
		if (!strcmp(msg[16], "String buffer overflow."))
		{
			SendClientMessage(gLastPlayer, X11_RED, "Please type something shorter");
		}
	}
}
Существует еще одна небольшая проблема с этим - В настоящее время код ПОЛНОСТЬЮ отключает "server_log.txt". Данные записываются на консоли, но это уже не записывается в файл, если это проблема, пожалуйста сказать. Также обратите внимание, что, поскольку некоторые из этих наводнений подвиги сервера так быстро, что даже если perpertrator запрещены после первой, еще будет несколько десятков/сотен больше, прежде чем соединение потеряется.

[hr][/hr]

SetTimer(Ex)

Эти функции не очень точной, и что они не правильно поддерживать строк и массивов. Обе эти проблемы в настоящее время зафиксирован в меру своих способностей. Следует отметить, что точность все еще немного не по причине "сна" вызов на сервер внутренне, но они гораздо лучше.

Также улучшили свои показатели за счет использования "std::priority_queue", так что следующий таймеры для запуска всегда находятся в верхней части списка.

Примечание При передаче массивов, как с "CallLocalFunction" Вы должны следовать массив с его длина в качестве дополнительного параметра или система не имеет возможности узнать, насколько она велика:

PHP:
SetTimerEx("func", 1000, 0, "ai", arr, sizeof (arr));
Эти функции не изменились в любом случае, "0" до сих пор означает "запустить один раз", все остальное по-прежнему означает "работать вечно". Вам даже не нужно перекомпилировать, чтобы использовать новые версии, просто использовать плагин.

Также добавилены две новые функции:

PHP:
SetTimer_("func", 100, 1000, -1);
SetTimerEx_("func", 100, 1000, -1, "i", 42);
Эти версии функции иметь больше контроля над именно то, что вы можете сделать. Есть теперь два временных параметров - начальная задержка и интервал. Таким образом, вышеуказанные функции будет вызван после 100 мс, а затем каждые 1000 мс после этого. Это полезно, если у вас есть несколько глобальных таймеры, чтобы они не все бегут в то же время:
PHP:
SetTimer_("global1", 250, 1000, -1);
SetTimer_("global2", 500, 1000, -1);
SetTimer_("global3", 750, 1000, -1);
SetTimer_("global4", 1000, 1000, -1);
Те, таймеры, все бегут один раз в 1 секунду, но все будут смещены относительно друг друга на 250 мс. Эта функция была уже представленной y_timers, но теперь более родной. Кроме того, "повтор" параметра ("-1" выше) в настоящее время является COUNT. Так что, если вы:

PHP:
SetTimer_("global1", 250, 1000, 4);
Тогда эта функция будет работать ровно четыре раза и не более того. Вы можете установить этот параметр в "0", но в отличие от обычной версии, это означает "Никогда не беги и, таким образом, бессмысленно! "-1" Означает "работать вечно". Туземцы для этих функций являются:

PHP:
native SetTimer_(const func[], const delay, const interval, const count);
native SetTimerEx_(const func[], const delay, const interval, const count, const format[], {Float, _}:...);
native KillTimer_(timer) = KillTimer;
[hr][/hr]

Скачать, .dll и .so:


[hr][/hr]

Обратите внимание, что версия LINUX не была скомпилирован/протестирована с кодом!


  • Автор: Y_Less
  • Перевод: Den_Bellik
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу