1. Очень серьёзная ошибка заключается в том, что глобальные переменные определены с помощью оператора new, который включает данные переменные в глобальную зону видимости. Это может вызвать ошибки, особенно, если в коде уже присутствует переменная с таким именем. Я рекомендую определить глобальные переменные с помощью оператора static, который не включает переменные в глобальную зону, а оставляет видимыми только лишь в файле.
2. Используйте file guard, который не позволит включить ваш файл второй раз. Тем более, что это избавит вас от разнообразных ошибок с именами и т.п.
3. Это не очень эффективный способ исправления проверок с strcmp. Зачем? Вы можете проверить первый символ массива на нуль.
PHP код:
for(new i; i < MAX_DISCONNECT_SLOTS; i++)
{
und_disc_slots[i] = "NaN"; //обход бага с нуль символом (for strcmp)
}
4. Непонятный код в OnFilterScriptInit, который вряд ли будет работать (строки 70-73).
PHP код:
#if defined UIS_OnPlayerDisconnect
UIS_OnPlayerDisconnect(playerid, reason);
#endif
return 1;
5. Можно было использовать упакованные строки и оператор char, чтобы сэкономить расходуемое пространство.