Heja.
Robię obecnie plugin na codmoda, który po śmierci gracza wysypuje z niego nieśmiertelnik (w postaci spritesa) i potem przeciwnik może go podnieść.
Problem polega na tym, że jak już udało mi sie stworzyć byt, to nie moge złapać nijak jego zetknięcia z graczem.
Spawn bytu:
public CreateDogtag(id, Float:origin[3]) { new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "env_sprite" ) ) engfunc( EngFunc_SetOrigin, ent, origin ) engfunc( EngFunc_SetModel, ent, "sprites/LosT_CodMod_Sprites/dogtag.spr" ) engfunc(EngFunc_SetSize, ent, Float:{-1.0, -1.0, -1.0}, Float:{1.0, 1.0, 1.0}); set_pev( ent, pev_classname, "dogtag") set_pev( ent, pev_rendermode, kRenderTransAdd ) set_pev( ent, pev_renderamt, 200.0 ) set_pev( ent, pev_iuser1, get_user_team(id)) set_pev(ent, pev_scale, 0.6) //jakby byl za duzy :) set_pev( ent, pev_animtime, 1.0); set_pev(ent, pev_solid, SOLID_TRIGGER); set_pev(ent, pev_movetype, MOVETYPE_TOSS); set_pev( ent, pev_framerate, 1.0 ) set_pev( ent, pev_spawnflags, SF_SPRITE_STARTON ) dllfunc( DLLFunc_Spawn, ent ) set_task( USUN_DOGTAG, "UsunDogtag", TASK_DOGTAG+ent); }
I jeszcze dotyk:
public fw_touch(Ptd, Ptr) { new Classname[33],Ent = Ptd,id = Ptr pev(Ptd,pev_classname,Classname,32) if(!equal(Classname, "dogtag")) { Ent = Ptr id = Ptd pev(Ptr,pev_classname,Classname,32) if(!equal(Classname,"dogtag")) return FMRES_IGNORED } if(pev(Ent, pev_iuser1) != get_user_team(id)) { engfunc(EngFunc_RemoveEntity, Ent) dogtags_gracza[id]++ SaveDogTags(id) } return FMRES_HANDLED }
Próbowałem to robić fakemetą (FM_Touch jak teraz mamy) i tak samo za pomocą engine (register_touch). Żadna z tych metod nie działa.
Ma ktoś pomysł?