Molotov Grenade

amxx reapi Molotov Grenade 1.0.3

Нет прав для скачивания
Версия Дата выхода Скачиваний Оценка
1.0.3 546 0.00 звёзд 0 оценок
1.0.2 509 0.00 звёзд 0 оценок
1.0.1 107 0.00 звёзд 0 оценок
1.0.0 95 0.00 звёзд 0 оценок
Публичные багфиксы 🐌
Спасибо BlackSignature и BalbuR

medusa человек пожаловался на то что при включённой функции molotov_smoke_touch (Тушить ли коктейль молотова дымовой гранатой) сервер через некоторое время уходит в повышенное потребление CPU вплоть до 99% при долгой игре на карте. Прямо указал что без этой функции всё нормально. Однако код модифицирован (не оригинал). В изначальном (твоём) варианте я вижу тип энтити CLASSNAME_SMOKE_TOUCHER который создаётся при условии что включён вышеупомянутый квар.

При этом в коде данный тип энтити не удаляется, ему через # времени анрегается touch (CleanUpMap или в хуке touch). Это точно нормальное поведение? Мне кажется эту энтити нужно удалять путём установки ей nextthink и SetThink(). Особо я не разбирался, мы внесли удаление как раз этим способом + в CleanUpMap вместо анрега touch() добавили удаление. Пока смотрим, вроде проблема с CPU ушла.

строку 802 попробуйте заменить, у кого стоит этот плагин

PHP:
public FireMolotov_Think_Post(iEntity)

{

    if (is_nullent(iEntity)) return;



    if (FClassnameIs(iEntity, EFFECT_CLASSNAME_MUZZLEFLASH)) {

        static iOwner; iOwner = get_entvar(iEntity, var_owner);

        static iItem;

        if (is_user_alive(iOwner)) {

            iItem = get_member(iOwner, m_pActiveItem);



            if (is_nullent(iItem)) {

                set_entvar(iEntity, var_flags, FL_KILLME);

            }

            else if (FClassnameIs(iItem, ITEM_CLASSNAME)) {



            }

            else {

                set_entvar(iEntity, var_flags, FL_KILLME);

            }

        }

        else {

            set_entvar(iEntity, var_flags, FL_KILLME);

        }

    }



    set_entvar(iEntity, var_nextthink, get_gametime() + 0.025);

}


Изменено 🍄
— Удален выбор режима отрисовки спрайтов molotov_effect_mode (оставлена только отрисовка через Temporary Entities [TE_SPRITE]).
— Изменена логика работы molotov_effect_num (теперь значение влияет на отрисовку волн огня, а не на количество отрисовываемых спрайтов)
— Измено имя конфигурационного файла - new const CONFIG_NAME[] = "molotov_grenade"; !Конфиг все так-же создается автоматически в директории configs/plugins

Добавлено 🦔
— Квар molotov_water_touch 1 / 0 - Отвечает за тушение молотова при соприкосновении с водой. (Так же активирует немного другое поведение, при броске с затушенным фитилем - молотов не детанирует, а просто разбивается)
— Квар molotov_sky_force 1 / 0 - Отвечает за удаление молотова при соприкосновении со скайбоксом карты
— Мультиязычность - фаил, к конфигу и уведомлениям. (Написано на скорую руку, могут быть неправильные формулировки, а так - же, не качественный перевод на Английский язык)

ОБНОВЛЕНИЕ СОДЕРЖИТ, НОВЫЕ ЗВУКИ И МОДЕЛИ, А ТАК ЖЕ ИЗМЕНЕННЫЕ ДЕФОЛТНЫЕ НАСТРОЙКИ.
ДЛЯ КОРРЕКТНОЙ РАБОТЫ РЕКОМЕНДУЮ ПОЛНОСТЬЮ ОБНОВИТЬ ПЛАГИН, КОНФИГ И РЕСУРСЫ.
- Добавлен макрос #define ALLOW_CUSTOMNADE который отвечает за "поддержку" других гранат, которые используют замену WEPON_GLOCK
если макрос активен: Можем использовать коктейль молотова вместе с другими кастомными гранатами (например HealthNade от fantom'a), но лишаемся поддержки - выпадения гранат при mp_dropnade 1\2, покупки и поднятия оружия WEAPON_TMP.
если макрос закомментирован: Конфликты с кастомными гранатами завязанными на подмене WEAPON_GLOCK. Поддержка mp_dropnade 1\2. Предпочтительно

(в данном случае избавление от поддержки mp_dropnade обусловлено тем, что подмененный айтем находится в слоте гранат, и выпадает вместе с молотовым, что приводит к фейковому дропу неосизаемой модельки заменяемого оружия, которое реагирует на тач, а так же при соприкосновении с игроков добавляет ему нулевой\невалидный аммо, что может приводить к неожиданным результатам)


- Добавлены нативы для выдачи и проверки коктейля молотова
NativeGiveUserMolotov(id); //Выдача коктейля молотова
NativeIsUserHasMolotov(id); //Проверка есть ли коктейль молотова в арсенали у игрока


Код:
native NativeGiveUserMolotov(id);
native NativeIsUserHasMolotov(id);

if(!NativeIsUserHasMolotov(id))
    NativeGiveUserMolotov(id);

  • Исправлен неправильный способ блокировки урона.
  • Исправление тача огня с дымовой гранатой (когда молотов догорел, а дымовая граната детонировала на том месте)
  • Перенес чтение флагов пользователя в plugins_init (возможно проблема чтения флагов этим "мувом" будет решена не полностью -_-) (поймать и полностью протестировать почему не всегда читается флаг у некоторых нет возможности)
  • Небольшие правки по отрисовки модели

ИНФО:
Так же хочу обратить внимание, что некоторые квары не поддерживают "горячей" замены, и читаются только при загрузке плагина (т.е при рестарте сервера\ смены карты)
molotov_buy_access
mp_buytime
mp_nadedrops

Конфигурационный фаил создается автоматически. После каждого обновления рекомендуется удалять старый конфиг, и генерировать новый (если вы не уверены что все осталось на своих метах)
Добавлено:
  • Звук затухания молотова который догорел.
  • Квар molotov_effect_mode 1\2 - режим отрисовки спрайтов (1 - через Entities [env_sprite], 2 - через Temporary Entities [TE_SPRITE]). 2 метод сделан в угоду экономии энтити.
  • Квар molotov_buy_limit - устанавливает с какого раунда после начала игры будет доступен молотов.
  • Квар molotov_demage_radius_mode 1\2 - режим нанесения урона от огня (1 - через Ham_TakeDamage [урон фиксированный в любой точке радиуса горения], 2 - через rg_dmg_radius [урон зависит от дальности к эпицентру горения и наличия брони])

Исправлено:
  • Опечатки, которые могли привести к крашам и не правильной работе.
  • Перераспределены участки по работе со звуком.
  • Квар molotov_buy_limit теперь имеет минимальное значение -1.
  • Киллфид приставка к нику которая реагировала на убийство [HE] гранатой.
  • Удаление фитиля на летящей гранате.
  • Работа и описание некоторых кваров.
Сверху Снизу