- Исправлена опасная проверка player id
Было:
1 <= owner <= MaxClients
В Pawn это работает неверно. Заменено на нормальную проверку через IsPlayerIndex().
- Добавлен helper:
bool:IsPlayerIndex(id){ return (1 <= id && id <= MaxClients);}
- Исправлен IsHumanConnected()
Теперь сначала проверяется валидный диапазон id, и только потом вызываются is_user_connected, is_user_bot, is_user_hltv.
- Убрано удаление entity в plugin_end()
Раньше при смене карты плагин вручную искал и удалял свои entity. Это могло крашить сервер на mapchange. Теперь plugin_end() только сбрасывает runtime-состояние.
- Убрано удаление entity в client_disconnected()
На смене карты disconnect вызывается в нестабильный момент выгрузки мира. Удаление entity оттуда убрано.
- Добавлен ResetRuntimeState()
Функция безопасно сбрасывает массивы:
- активные действия;
- corpse state;
- счётчики entity;
- лимиты за раунд;
- cooldown;
- notice cooldown;
- fly sound cooldown.
- Добавлен g_iPlayerSerial[]
Защита от ситуации, когда игрок вышел, а в тот же слот зашёл другой. Entity старого игрока теперь не портит счётчик нового игрока.
- Entity теперь хранит serial владельца:
set_entvar(ent, var_iuser3, g_iPlayerSerial[id]);
- При удалении entity счётчик владельца уменьшается только если:
- owner в диапазоне 1..MaxClients;
- serial entity совпадает с текущим serial игрока;
- счётчик больше нуля.
- Удалена мёртвая функция ClearPlayerEntities()
Она стала не нужна и была потенциально опасна на смене карты.
- Включена анимация мух по умолчанию
В .sma:
register_cvar("shit_fun_move_sprite", "1");
В .cfg:
shit_fun_move_sprite "1"
- Анимация мух оставлена без лишней нагрузки
Нагрузка ограничена существующими настройками:
- shit_fun_max_entities;
- MAX_SAFE_ENTITIES;
- shit_fun_fly_tick;
- MIN_FLY_TICK.
- Версия плагина поднята:
#define PLUGIN_VERSION "1.1.0"