Page 1 of 1

damage

Posted: 2013 Jun 20 13:46
by nuodas159
Pagal įdėja turėtų daryti damage 300, bet daro 1200 ar net daugiau. Kur klaida?

Code: Select all

 cBlaserDefaultDmg = 300 fMaxDamage = 3000iHP = 100 RegisterHam(Ham_TraceAttack, "player", "hPlayerAttack") public hPlayerAttack(victim, attacker, Float: damage, Float: direction[3], traceresult, damagebits){    new iHP = get_user_health(attacker), Float: fDamage        fDamage = get_pcvar_float(cBlaserDefaultDmg[get_tr2(traceresult, TR_iHitgroup)])        fDamage /= iHP / 100           new Float: fMaxDamage = (get_tr2(traceresult, TR_iHitgroup) == HIT_HEAD) ? get_pcvar_float(cBlaserMaxDmgHs) : get_pcvar_float(cBlaserMaxDmg)    log_amx("maxdmg:%f", fMaxDamage)        if(fDamage > fMaxDamage) {     fDamage = fMaxDamage    }          SetHamParamFloat(3, fDamage) return HAM_OVERRIDE}

Re: damage

Posted: 2013 Jun 20 15:48
by xFrostas

Code: Select all

 #include <amxmodx>#include <hamsandwich> new Cvar_Damagenew g_MaxPlayers #define IsPlayer(%1)  (1 <= %1 <= g_MaxPlayers) public plugin_init(){    Cvar_Damage = register_cvar("Damage", "300")     RegisterHam(Ham_TraceAttack, "player", "Fwd_TraceAttack")     g_MaxPlayers = get_maxplayers()} public Fwd_TraceAttack(const Victim, const Attacker, Float: Damage, const Float: Direction[3], const TraceResult, const DamageBits){    if (IsPlayer(Attacker))    {        SetHamParamFloat(3, get_pcvar_float(Cvar_Damage))        return HAM_HANDLED    }    return HAM_IGNORED}
Gal veiks

Re: damage

Posted: 2013 Jun 20 15:50
by nuodas159
Gal pasižiūrėk kaip aš padariau? Damage darytų pagal HP, tiesiog kai turi 100 hp tuomet turėtų daryt 300

Re: damage

Posted: 2013 Jun 20 16:53
by xFrostas
Nu tai

Code: Select all

        if (IsPlayer(Attacker))
>>>

Code: Select all

        if (IsPlayer(Attacker) && get_user_health(Attacker) == 100)
Ar ne?

Re: damage

Posted: 2013 Jun 20 17:06
by nuodas159
Nu, kad ne... Man reikia jog priklausomai nuo hp darytų atitinkamą damage kiekį. Pasižiūrėk parašyta mano kodą ir suprasi, kaip ten esu padaręs, bet tinkamai neveikia...

Code: Select all

fDamage /= iHP / 100
Jeigu turi 100HP tai turėtų daryti 300, bet man daro 1200... Su 80HP turi daryti apie 400, o daro žymiai daugiau..

Re: damage

Posted: 2013 Jun 20 18:47
by xFrostas
Ai, nežinau tada, nebent fDamage nereik dalint iš padalintų HP, tai pabandyk gal taip pakeist:

Code: Select all

    fDamage = iHP / 100

Re: damage

Posted: 2013 Jun 20 19:12
by nuodas159
Pagal tavo formule tai jeigu 80HP tai damage 0.80.. Kas nors gal padėtu susitvarkyti su šią problema?

Re: damage

Posted: 2013 Jun 20 20:17
by newb
Na pirmas dalykas, pagal mane dmg standartiskai keiciasi per Ham_TakeDamage, o ne Ham_TraceAttack.

Re: damage

Posted: 2013 Jun 21 17:25
by nuodas159
Ačiū, susitvarkiau. Galite lock temą.