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ł?


Dodatki SourceMod



Temat jest zamknięty









