Molotov/Incendiary Grenade

Molotov/Incendiary Grenade 1.1.0

Нет прав для скачивания
Заметил баг (если это баг) - по идеи из CS 2, молотов/граната может пролетать через дым и не тухнуть, тут же обратная проблема - если кинуть молотов/гранату через дым, то он/она потухнет, хотя дым должен по идеи тушить только уже взорванный молотов/гранату (ну или если молотов/граната кидается прямиком в дым)
Что было сделано:

Баг 1 — ложная smoke-зона при взрыве молотова:

CSGrenade_ExplodeSmokeGrenade_Pre срабатывал на ВСЕ weapon_smokegrenade — включая приземляющийся молотов. Это создавало smoke-зону прямо под огнём, которая мешала логике. Теперь молотовы (grenade_molotov) пропускаются — хук работает только для настоящих дымовых гранат.

Баг 2 — огонь не тушился дымом:
ThinkFire (огонь на земле) вообще не проверял наличие дыма. Проверка была только в GrenadeThink — для летящей гранаты. Теперь каждые 40мс ThinkFire проверяет: если есть smoke-зона (CLASSNAME_SMOKE_TOUCHER) в радиусе flRadius + 110 юнитов — огонь тухнет со звуком extinguish.
 

Вложения

Заметил баг (если это баг) - по идеи из CS 2, молотов/граната может пролетать через дым и не тухнуть, тут же обратная проблема - если кинуть молотов/гранату через дым, то он/она потухнет, хотя дым должен по идеи тушить только уже взорванный молотов/гранату (ну или если молотов/граната кидается прямиком в дым)
нет, он должен тухнуть.
 
cslover попробуй эту версию если будут баги, используй оригинал..
 

Вложения

  • Добавил безопасные проверки player id, is_user_connected, is_user_alive, is_nullent в опасных местах.
  • Исправил FClassnameIs() по потенциально нулевому other/inflictor.

C-подобный:
/*
* Compares the entity to a specified classname.
* @note This native also checks the validity of an entity.
*
* @return       true/false
*/
native bool:FClassnameIs(const entityIndex, const className[]);


C-подобный:
stock bool:is_player_index(const id)
{
    return id >= 1 && id <= MaxClients;
}

stock bool:is_player_connected(const id)
{
    return is_player_index(id) && is_user_connected(id);
}

stock bool:is_player_alive_connected(const id)
{
    return is_player_connected(id) && is_user_alive(id);
}

лолчто

Проверять то, что уже проверяется нативами это не просто смело, а очень смело.
 
Спасибо за плагин автору @medusa! При его использовании не встретил проблем, в отличии от аналогов которые встречал раньше.
 

Кто просматривает тему

Назад
Верх