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! При его использовании не встретил проблем, в отличии от аналогов которые встречал раньше.
 
I noticed a bug (if it is a bug) - according to the idea from CS 2, a molotov/grenade can fly through smoke and not go out, but here there is the opposite problem - if you throw a molotov/grenade through smoke, it/it will go out, although smoke should, in theory, only extinguish an already exploded Molotov/grenade (or if the molotov/grenade is thrown directly into the smoke)
try this:

How to make SmokeGrenade affects medusath/Molotov-Grenade like CS2:​

Attention : This short tutorial made for plug-in medusath/Molotov-Grenade only
1 – Open molotov_grenade.sma with any code editor.
2 – Go to line #1665 then you will this:

if(equali(ModelSmoke, SmokeOwner))

3 – Add this FClassnameIs(other, "sg_smoke") inside condition and now should be like this :
if(equali(ModelSmoke, SmokeOwner) || FClassnameIs(other, "sg_smoke"))
4 – Save and compile it!
 

Вложения

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

Назад
Верх