Hook walnięcia nożem/ blokada innych obrażeń
DarkGL
28.11.2010
Chciałem przechwycić uderzenie nożem w ent a resztę damage zablokować
zrobiłem to tak
i nie wykrywa nawalam tym nożem po encie ale warunek nigdy nie jest spełniony
zrobiłem to tak
public spawn(){ new Float:origin[3] if(SsGetOrigin(origin)) { new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) if(ent){ engfunc(EngFunc_SetModel, ent, "models/present1.mdl") engfunc(EngFunc_SetOrigin, ent, origin) set_pev(ent, pev_classname, "prezent"); set_pev(ent,pev_takedamage,DAMAGE_YES) set_pev(ent,pev_health,999999.0) set_pev(ent,pev_max_health,999999.0) set_pev(ent,pev_solid,SOLID_BBOX) engfunc(EngFunc_SetSize,ent,Float:{-15.0,-15.0,-2.0},Float:{15.0,15.0,15.0}) set_pev(ent,pev_movetype,MOVETYPE_TOSS) set_pev(ent,pev_gravity,1.0) RegisterHamFromEntity(Ham_TakeDamage, ent, "fwTakeDamage", 1) } } }model sie spawnuje
public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits){ if((damagebits&(1<<2)) && is_user_alive(idattacker)){ punkty[idattacker]++; remove_entity(this); return HAM_SUPERCEDE; } else { return HAM_SUPERCEDE; } return HAM_SUPERCEDE; }
i nie wykrywa nawalam tym nożem po encie ale warunek nigdy nie jest spełniony
Ortega
28.11.2010
Rejestrujesz jako post, a robisz supercede, które jest wtedy bezsensowne ale czemu nie wykrywa bits to nie wiem
DarkGL
28.11.2010
odświeżam panowie dla testó wyświetliłem sobie wartość damagebits co się okazuje przy strzale ma ona taką samo wartość jak przy uderzeniu nożem
DarkGL
28.11.2010
if(get_user_weapon(idattacker, _, _)==CSW_KNIFE && is_user_alive(idattacker)){ punkty[idattacker]++; remove_entity(this); return HAM_SUPERCEDE; }server leży
DarkGL
28.11.2010
client_print(0,print_chat,"%d | %d | %d",this,idinflictor, idattacker)
pokazuje 101 | 1 | 1 czyli dobrze id enta i dalej id gracza
pokazuje 101 | 1 | 1 czyli dobrze id enta i dalej id gracza
G[o]Q
28.11.2010
hmm a pokaz caly kod albo wyswietl sobie rezultat tego
bo najwyrazniej w tym tkwi blad
a logow zadnych nie masz qconsole?
get_user_weapon(idattacker, _, _)
bo najwyrazniej w tym tkwi blad
a logow zadnych nie masz qconsole?
DarkGL
28.11.2010
if( bitsDamageType == DMG_BULLET | DMG_NEVERGIB && iInflictor == iAttacker && IsPlayer(iAttacker) && get_user_weapon(iAttacker) == CSW_KNIFE && pev(this, pev_dmg_take) > 0 ){ punkty[iAttacker]++; set_pev(this,pev_takedamage,DAMAGE_NO) set_pev(this,pev_dmg_take,DAMAGE_NO) set_pev(this,pev_solid,SOLID_NOT) set_pev(this, pev_effects, (pev(this, pev_effects) | 128) ) }work