dwa razy większe dmg z noża
Blondyna
07.01.2013
Cześć, robię klasę do cod mod nowy i mam problem :
Ten kod daje nam o ile chcemy większe dmg, pytanie jest taki:
Jak będzie wyglądał kod na 2x dmg z noża ;?
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_perk[idattacker]) return HAM_IGNORED; if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_AK47 && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, 5.0, 0.0, idinflictor, damagebits); return HAM_IGNORED; }
Ten kod daje nam o ile chcemy większe dmg, pytanie jest taki:
Jak będzie wyglądał kod na 2x dmg z noża ;?
GT Team 07.01.2013
Myślę że tak:
if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_KNIFE && damagebits & DMG_BULLET)
cod_inflict_damage(idattacker, this, (damage*2.0), 0.0, idinflictor, damagebits);
d0naciak
07.01.2013
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_perk[idattacker]) return HAM_IGNORED; if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_KNIFE && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, damage, 0.0, idinflictor, damagebits); //po wywolaniu obrazen, jeszcze raz zadajesz obrazenia, czyli obrazenia podwoja sie return HAM_IGNORED; }
Użytkownik d0n tHe Pr0oo edytował ten post 07.01.2013 19:37
GT Team 07.01.2013
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_perk[idattacker])
return HAM_IGNORED;
if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_KNIFE)
damage *= 2
SetParamFloat(4, damage)
return HAM_IGNORED;
}
Tak też może być
d0naciak
07.01.2013
a nie czasem tak ?
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_perk[idattacker]) return HAM_IGNORED; if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_KNIFE) SetHamParamFloat(4, damage*2) return HAM_IGNORED; }
GT Team 07.01.2013
Własnie brat obok mi mówił, że tak było by lepiej, ale ja myślę, że Vesfper będzie chciał jeszcze dodać inne damage więc tak na przyszłość, ale oba roziązania były dobre
sebul
07.01.2013
Wszędzie tam gdzie jest sprawdzana broń tylko w taki sposób
jest źle, razem z
już jest lepiej choć najlepiej będzie tak, najpierw zapisujemy id broni do zmiennej, a potem dopiero dajemy warunki, z jakiej broni, itp.
get_user_weapon(idattacker) == CSW_KNIFE
jest źle, razem z
damagebits & DMG_BULLET
już jest lepiej choć najlepiej będzie tak, najpierw zapisujemy id broni do zmiennej, a potem dopiero dajemy warunki, z jakiej broni, itp.
new weapon;
if(idinflictor == idattacker) weapon = get_user_weapon(idattacker);
else if(damagebits & (1<<24) && is_valid_ent(idinflictor)) {
new szClass[32];
entity_get_string(idinflictor, EV_SZ_classname, szClass, 31);
if(equal(szClass, "grenade"))
weapon = CSW_HEGRENADE;
}
Gość_21977_* 08.01.2013
Albo po prostu sprawdzić, czy damagebits zawiera DMG_SLASH, który domyślnie występuje jedynie przy obrażeniach z noża.