Po zadaniu obrażeń nie tracimy punktów kam...
Andrzejek
13.12.2013
Witam, mam takie pytanko powiedzcie mi czemu nie tracimy punktów kamizelki po zadaniu obrażeń? Poniżej załączam przykładowy kod:
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_TakeDamage, "player", "player_damage");
RegisterHam(Ham_TraceAttack, "player", "player_attack");
}
public player_damage(id, ent, attacker, Float:damage, damagebits)
return ObrazeniaGracza(id, attacker, damage, damagebits, true);
public player_attack(id, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
return ObrazeniaGracza(id, attacker);
ObrazeniaGracza(this, idattacker, Float:damage=0.0, damagebits=0, bool:obrazenia=false)
{
if(!is_user_connected(this) || !is_user_connected(idattacker) || this == idattacker)
return HAM_IGNORED
if(obrazenia) {
if(get_user_weapon(attacker) == CSW_KNIFE && damagebits & DMG_BULLET)
SetHamParamFloat(4, damage*0.5);
}
return HAM_IGNORED
}
Co miał bym dodać żeby kamizelka redukowała obrażenia
FORMOZA
13.12.2013
Ustaw na PreThink moze jakis
cs_set_user_armor(index, 100, CS_ARMOR_VESTHELM)
i tyle
Andrzejek
13.12.2013
W odrodzeniu gracza mam ustawione Chyba że ci o coś innego chodzi, jak byś mógł wytłumaczyć
FORMOZA
13.12.2013
Sorry, źle zrozumiałem myślalałem ze chcesz na stałe kamizelke
i mi sie wydaje ze cos to z SetHamParamFloat
a spróbuj wykonać z ExecuteHam(Ham_TakeDamage, pid, ent, attacker, float(hp), 1);
GwynBleidD
14.12.2013
Wywołanie Ham_TakeDamage w evencie Ham_TakeDamage? Ktoś tu się prosi o problemy. Tak się nie robi, chyba że chcesz zadać zupełnie inne obrażenia, np dodać tzw mirror damage. A i tak trzeba odpowiednie warunki ustawić, żeby wykonywało się to tylko w odpowiednich okolicznościach (żeby mirror damage nie wywołał następnego mirror damage).
Taka zasada dotyczy wszystkich eventów.
Taka zasada dotyczy wszystkich eventów.
Andrzejek
14.12.2013
czyli np.
set_user_armor(ofiara, get_user_armor(ofiara)-damage)
if(get_user_armor(ofiara) > 0) damage = (damage)/2;
if(obrazenia) {
if(get_user_weapon(attacker) == CSW_KNIFE && damagebits & DMG_BULLET)
SetHamParamFloat(4, damage*0.5);
}
Bo coś innego na razie mi nie wchodzi do głowy