PDA

Просмотр полной версии : [Include] UIS - Защита от быстрого коннекта



Undertaker
13.11.2016, 20:06
UIS (version 1.0)

Автор скрипта: Undertaker
Инклуд позволяет установить время до следующего коннекта на сервер (а-ля самп-рп).

Установка:
- Если инклуд подключается через фильтрскрипты, до добавления инклуда разкоментируйте #define FILTERSCRIPT
- В случае с модом от Вас только требуется подключить инклуд и ВСЕ.

Настройка:
UND_WAIT_TIME - здесь можете указать время (в секундах) до следующего коннекта (по умолчанию 10)
MAX_DISCONNECT_SLOTS - количество слотов для записи (по умолчанию 20)

Если игрок будет обнаружен в любом из слотов, он будет кикнут, второго вызова OnPlayerConnect не будет.

Скачать:
http://pastebin.com/h2qbn5JW
http://my-files.ru/hj37us

VVWVV
13.11.2016, 20:20
1. Очень серьёзная ошибка заключается в том, что глобальные переменные определены с помощью оператора new, который включает данные переменные в глобальную зону видимости. Это может вызвать ошибки, особенно, если в коде уже присутствует переменная с таким именем. Я рекомендую определить глобальные переменные с помощью оператора static, который не включает переменные в глобальную зону, а оставляет видимыми только лишь в файле.
2. Используйте file guard, который не позволит включить ваш файл второй раз. Тем более, что это избавит вас от разнообразных ошибок с именами и т.п.
3. Это не очень эффективный способ исправления проверок с strcmp. Зачем? Вы можете проверить первый символ массива на нуль.


for(new i; i < MAX_DISCONNECT_SLOTS; i++)
{
und_disc_slots[i] = "NaN"; //обход бага с нуль символом (for strcmp)
}

4. Непонятный код в OnFilterScriptInit, который вряд ли будет работать (строки 70-73).


#if defined UIS_OnPlayerDisconnect
UIS_OnPlayerDisconnect(playerid, reason);
#endif
return 1;

5. Можно было использовать упакованные строки и оператор char, чтобы сэкономить расходуемое пространство.

Undertaker
13.11.2016, 20:42
ОБНОВЛЕНО!

1) Учел.
2) Проблема исчезла в исправлении 1 пункта


Вы можете проверить первый символ массива на нуль.
3) Могу :boredom:
4) CTRL+C с OnPlayerConnect :) Забыл, ибо компилятор ошибок не выдало, так что виноват он.
5) ...