rxki
Пользователь
- Регистрация
- 5 Янв 2019
- Сообщения
- 208
- Симпатии
- 5
- Пол
- Мужской
Доброго времени суток, ребята. Наткнулся на один баг, но как его правильно ковырнуть - не знаю. В общем, на сервере есть фриз граната и стоп граната. Фриз замедляет движение монстров (TD мод), а стоп - стопит их, соответственно. И вот что я заметил. Когда бросаешь стоп гранату (монстра останавливает на 5 сек) и за это время кинуть фриз гранату - она продливает эффект стоп гранаты. Тобишь, если кинуть 1 раз стоп гранату и остановить монстра, после можно бросать фризы и монстр будет продолжать стоять (главное успеть до окончания действия предыдущей гранаты). В паблике, где описан эффект этой стоп гранаты я нашел пару тасков фриз гранаты, заменил их - монстры просто стали бежать под фризом все время после действия гранаты... В общем, беда какая то, прошу помощи) Ниже креплю паблики стоп гранаты и фриза
PHP:
public FreezeMonsterByStopGrenade(iEnt)
{
iEnt -= TASK_GRENADE_STOP
if (!IsMonster(iEnt) || entity_get_float(iEnt, EV_FL_health) <= 0.0)
return;
fm_set_rendering(iEnt, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
if(task_exists(iEnt + TASK_GRENADE_FROZEN))
remove_task(iEnt + TASK_GRENADE_FROZEN);
_set_monster_speed(iEnt,0, 0, 1)
set_task(float(g_ConfigValues[CFG_FROZEN_NADE_DURATION]), "ResetMonsterSpeedByStopGrenade", iEnt + TASK_GRENADE_STOP)
}
public ResetMonsterSpeedByStopGrenade(iEnt)
{
iEnt -= TASK_GRENADE_FROZEN;
if(is_valid_ent(iEnt))
{
new iType = entity_get_int(iEnt, EV_INT_monster_type);
if(iType == ROUND_BOSS)
fm_set_rendering(iEnt, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16)
else if(iType == ROUND_BONUS)
fm_set_rendering(iEnt, kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 16)
else
{
//fm_set_rendering(iEnt, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
fm_set_rendering(iEnt, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
}
//if(!task_exists(iEnt + TASK_GRENADE_FROZEN))
_set_monster_speed(iEnt, 0, 1, 1);
}
}
public FreezeMonsterByGrenade(iEnt)
{
iEnt -= TASK_GRENADE_FROZEN
if (!IsMonster(iEnt) || entity_get_float(iEnt, EV_FL_health) <= 0.0)
return;
new szData[2];
szData[0] = _td_get_monster_speed(iEnt);
fm_set_rendering(iEnt, kRenderFxGlowShell, 0, 100, 255, kRenderNormal, 17)
if(task_exists(iEnt + TASK_GRENADE_FROZEN))
{
_set_monster_speed(iEnt, szData[0], 0, 1)
szData[0] += 120;
remove_task(iEnt + TASK_GRENADE_FROZEN);
}
else
_set_monster_speed(iEnt, floatround(szData[0] - (szData[0] * g_ConfigValuesFloat[CFG_FLOAT_FROZEN_NADE_PERCENT])), 0, 1)
set_task(float(g_ConfigValues[CFG_FROZEN_NADE_DURATION]), "EndFreezeMonsterEffect", iEnt + TASK_GRENADE_FROZEN, szData, sizeof szData)
}
public EndFreezeMonsterEffect(szData[], iEnt)
{
iEnt -= TASK_GRENADE_FROZEN;
if(is_valid_ent(iEnt))
{
new iType = entity_get_int(iEnt, EV_INT_monster_type);
if(iType == ROUND_BOSS)
fm_set_rendering(iEnt, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16)
else if(iType == ROUND_BONUS)
fm_set_rendering(iEnt, kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 16)
else
{
//fm_set_rendering(iEnt, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
fm_set_rendering(iEnt, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
}
//if(task_exists(iEnt + TASK_GRENADE_STOP))
// return;
if(szData[0] > 0)
_set_monster_speed(iEnt, szData[0], 0, 1)
else
_set_monster_speed(iEnt, 0, 1, 1);
}
}
Последнее редактирование: