Помогите домучать,что-бы модель исчезалась плавно при убийстве противника.
Там она исчезает резко по Таску.
И есть уже готовый пример плавного исчезновения по окончании 10 секунд.
Вот его я немогу подстроить
Код:
#define ENTANGLE_TIME 10.0 // Время исчезновения модели Ультимейта
#define TASK_ENTREMOVE 0x917
#define TASK_ENTFIND 648911118719
#define FIND_TIME 0.1 // Время исчезновения Ульты ( секунды )
#define STEP 10.0
#define VERTICAL_SPEED 20.0
#define HORISONTAL_SPEED 60.0
enum (+= 1) {
STATUS_NONE = 0,
STATUS_EFFECT,
STATUS_KILL
}
public NE_ULT_EntangleEffect( id )
{
new Float:flOrigin[3]
pev(id, pev_origin, flOrigin)
new ent=engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
engfunc(EngFunc_SetOrigin, ent, flOrigin);
switch(random_num(0,2))
{
case 0: engfunc(EngFunc_SetModel, ent, sz_MODEL)
case 1: engfunc(EngFunc_SetModel, ent, sz_MODEL2)
case 2: engfunc(EngFunc_SetModel, ent, sz_MODEL3)
}
set_pev(ent, pev_classname, "elf_ultimate");
set_pev(ent, pev_sequence, 0)
set_pev(ent, pev_framerate, 1.0)
set_pev(ent, pev_iuser4, id)
set_task(FIND_TIME, "Task_EntFind", ent + TASK_ENTFIND, _, _, "b");
set_pev(ent, pev_nextthink, get_gametime() + ENTANGLE_TIME)
set_pev(ent, pev_rendermode, kRenderFxNone);
// Play the entangle sound
emit_sound( id, CHAN_STATIC, g_szSounds[SOUND_ENTANGLING], 1.0, ATTN_NORM, 0, PITCH_NORM );
return PLUGIN_HANDLED
}
public UltimateThink(ent) {
if (!pev_valid(ent)) {
return HAM_IGNORED;
}
switch(pev(ent, pev_impulse)) {
case STATUS_NONE:{
set_pev(ent, pev_movetype, MOVETYPE_FLY);
set_pev(ent, pev_solid, SOLID_NOT);
set_pev(ent, pev_rendermode, kRenderTransAlpha);
set_pev(ent, pev_renderamt, 100.0);
set_pev(ent, pev_velocity, Float:{0.0, 0.0, VERTICAL_SPEED});
set_pev(ent, pev_avelocity, Float:{0.0, HORISONTAL_SPEED, 0.0})
set_pev(ent, pev_impulse, STATUS_EFFECT);
}
case STATUS_EFFECT: {
if (pev(ent, pev_renderamt) > 0.0) {
set_pev(ent, pev_renderamt, floatmax(0.0, pev(ent, pev_renderamt) - STEP));
} else {
set_pev(ent, pev_flags, FL_KILLME);
set_pev(ent, pev_impulse, STATUS_KILL);
}
}
}
set_pev(ent,pev_nextthink,get_gametime() + 0.1)
return HAM_SUPERCEDE;
}
public Task_EntFind(taskid)
{
new ent = taskid - TASK_ENTFIND;
if(!pev_valid(ent)) {
remove_task(taskid);
return;
}
new iEnemy = pev(ent, pev_iuser4);
if (!is_user_alive(iEnemy)) {
remove_task(taskid);
remove_task(ent + TASK_ENTREMOVE);
set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME);
return;
}
}