Page 1 of 1

UmbrellaSwarm *Armored Zombie*

Posted: 2011 Nov 15 17:19
by InvIs
public bacon_takedamage(victim, inflictor, attacker, Float:damage, Float:hedamage, damagetype, damagebits)
{
    if(damagetype & DMG_GENERIC || victim == attacker || !is_user_alive(victim) || !is_user_connected(attacker))
        return HAM_IGNORED
     
    static CsTeams:team[2], hitgroup
    team[0] = cs_get_user_team(attacker), team[1] = cs_get_user_team(victim)   
    hitgroup = g_hitgroups[victim]
   
    if(team[0] == team[1])
    {
        return HAM_HANDLED
    }
 
 if(g_zombie[victim] && InfectedClass[victim] == 4)
    {
            if( damagebits & DMG_HEGRENADE )
            {
                hedamage *= 0.0
                SetHamParamFloat(4, hedamage)
            }
        else
        {
            switch(hitgroup)
            {
                case HIT_HEAD:
                    damage *= 0.25
                case HIT_CHEST:
                    damage *= 0.25
                case HIT_STOMACH:
                    damage *= 0.25
                case HIT_LEFTARM:
                    damage *= 0.25
                case HIT_RIGHTARM:
                    damage *= 0.25
                case HIT_LEFTLEG:
                    damage *= 0.25
                case HIT_RIGHTLEG:
                    damage *= 0.25
                default:
                    damage *= (damagetype & DMG_HEGRENADE) ? get_pcvar_float(cvar_armored_hedamage) : 0.25
            }
       
            SetHamParamFloat(4, damage)
 
            return HAM_HANDLED
        }

    }
    else if(!g_zombie[attacker] && InfectedClass[victim] != 4)
    {   
        switch(hitgroup)
        {
            case HIT_HEAD:
                damage *= get_pcvar_float(cvar_hsdmg_multi)
            case HIT_CHEST:
                damage *= get_pcvar_float(cvar_chdmg_multi)
            case HIT_STOMACH:
                damage *= get_pcvar_float(cvar_stdmg_multi)
            case HIT_LEFTARM:
                damage *= get_pcvar_float(cvar_ladmg_multi)
            case HIT_RIGHTARM:
                damage *= get_pcvar_float(cvar_radmg_multi)
            case HIT_LEFTLEG:
                damage *= get_pcvar_float(cvar_lldmg_multi)
            case HIT_RIGHTLEG:
                damage *= get_pcvar_float(cvar_rldmg_multi)
            default:
                damage *= (damagetype & DMG_HEGRENADE) ? get_pcvar_float(cvar_hedmg_multi) : get_pcvar_float(cvar_wpdmg_multi)
        }
       
        SetHamParamFloat(4, damage)
 
        return HAM_HANDLED
    }
    else if(g_zombie[attacker] && InfectedClass[attacker] == 3)
    {
        switch(hitgroup)
        {
            case HIT_HEAD:
                damage *= get_pcvar_float(cvar_hsdmg_chain)
            case HIT_CHEST:
                damage *= get_pcvar_float(cvar_chdmg_chain)
            case HIT_STOMACH:
                damage *= get_pcvar_float(cvar_stdmg_chain)
            case HIT_LEFTARM:
                damage *= get_pcvar_float(cvar_ladmg_chain)
            case HIT_RIGHTARM:
                damage *= get_pcvar_float(cvar_radmg_chain)
            case HIT_LEFTLEG:
                damage *= get_pcvar_float(cvar_lldmg_chain)
            case HIT_RIGHTLEG:
                damage *= get_pcvar_float(cvar_rldmg_chain)
            default:
                damage *= get_pcvar_float(cvar_wpdmg_chain)
        }
 
        SetHamParamFloat(4, damage)
 
        return HAM_HANDLED
    }      
    return HAM_IGNORED
}
Paryškinta kodo vieta, dėl kurios kyla problemų. Žalos darymas iš ginklo puikiai veikia, su granata niekaip nesusitvarkau :)

Re: UmbrellaSwarm *Armored Zombie*

Posted: 2011 Nov 15 17:49
by aaarnas
Kaip pas tave aprašyta DMG_HEGRENADE ?

Re: UmbrellaSwarm *Armored Zombie*

Posted: 2011 Nov 15 18:58
by InvIs
#define DMG_HEGRENADE (1<<24)

Re: UmbrellaSwarm *Armored Zombie*

Posted: 2011 Nov 15 20:42
by aaarnas
O toks dmg tipas bent yra?

Pamėgink DMG_BLAST. Šiaip reiktų kažkaip kitaip tikrinti ar tai granata.

Re: UmbrellaSwarm *Armored Zombie*

Posted: 2011 Nov 15 20:56
by InvIs
O kaip daug maž tu darytum? Nes kiek skaičiau tai visi kažką tokio panašaus daro.

Re: UmbrellaSwarm *Armored Zombie*

Posted: 2011 Nov 15 21:50
by aaarnas
Ne, turėtų veikti DMG_HEGRENADE.

Tiesiog tikrink kurioje sąlygoje nesuveikia ir rasi šitaip. Galima su log amx arba client_print pvz.

Re: UmbrellaSwarm *Armored Zombie*

Posted: 2011 Nov 16 15:55
by InvIs
Susitvarkiau, ačiū.
Panaudojau print_chat, neprintino, tai persižiūrėjau atidžiai:

public bacon_takedamage(victim, inflictor, attacker, Float:damage, Float:hedamage, damagetype, damagebits) vieną iš šitų reikėjo nutrynti ir viskas jau veikia :)