Problem Take damage
#1
Tengo un problema al aumentarle el daño por knife al zombie.

Lo que pasa esque los humanos no resiven daño, no se que ise mal.

Les dejo code
Código PHP:
public fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if(!
zp_get_user_zombie(attacker))
        return 
HAM_IGNORED;
    
    if (
get_user_weapon(attacker) != CSW_KNIFE)
        return 
HAM_IGNORED;
    
    if (
zp_get_user_zombie_class(attacker) == g_zclassid1)
    {
        
damage *= get_pcvar_float(cvar_damage)
        
SetHamParamFloat(4damage)
    }
    
    return 
HAM_SUPERCEDE


Zombie completo
Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <basebuilder>
#include <hamsandwich>

new const zclass_name[] = { "Chainsaw Zombie" 
new const 
zclass_info[] = { "Chainsaw Zombie Class" 
new const 
zclass_model[] = { "zombie_chainsaw" 
new const 
zclass_clawmodel[] = { "v_chainsaw" }
const 
zclass_health 4000
const zclass_speed 450
const Float:zclass_gravity 0.6
const zclass_adminflags ADMIN_ADMIN

new g_zclassid1

new cvar_damage;

new const 
spawm_chain[][] = { "zombie_plague/chainsaw1_hit.wav" }

new const 
chainsaw_sounds[][] =
{
        
"zombie_plague/chainsaw2_miss.wav",
        
"zombie_plague/chainsaw1_miss.wav",
        
"zombie_plague/chainsaw2_miss.wav",
        
"zombie_plague/chainsaw1_hit.wav",
        
"zombie_plague/chainsaw2_hit.wav",
        
"zombie_plague/chainsaw1_hit.wav",
        
"zombie_plague/chainsaw1_miss.wav",
        
"zombie_plague/chainsaw2_miss.wav",
        
"zombie_plague/chainsaw1_hit.wav"
}

new const 
knife_sounds[][] =
{
    
"weapons/knife_deploy1.wav",
    
"weapons/knife_hit1.wav",
    
"weapons/knife_hit2.wav",
    
"weapons/knife_hit3.wav",
    
"weapons/knife_hit4.wav",
    
"weapons/knife_hitwall1.wav",
    
"weapons/knife_slash1.wav",
    
"weapons/knife_slash2.wav",
    
"weapons/knife_stab.wav"
}

public 
plugin_init()
{
    
register_plugin("[ZP] Chainsaw Zombie Class""0.1""Artos")
    
    
register_forward(FM_EmitSound"fw_EmitSound");
    
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
    
RegisterHam(Ham_Spawn"player""ham_PlayerSpawn_Post"1)
     
    
cvar_damage register_cvar("zp_chainsaw_damage""10.0");
}

public 
plugin_precache()
{    
    new 
x;
    for(
0sizeof spawm_chainx++) precache_sound(spawm_chain[x]);
    
g_zclassid1 =bb_register_zombie_class(zclass_namezclass_infozclass_modelzclass_clawmodelzclass_healthzclass_speedzclass_gravity0.0zclass_adminflags)

    for(new 
0sizeof chainsaw_soundsi++) 
        
precache_sound(chainsaw_sounds[i])
}

public 
fw_EmitSound(idchannel, const sound[])
{
    if(!
is_user_alive(id) || !zp_get_user_zombie(id))
        return 
FMRES_IGNORED
        
    
for(new 0sizeof chainsaw_soundsi++)
    {
        if(
equal(soundknife_sounds[i]) && (bb_get_user_zombie_class(id) == g_zclassid1))
        {
            
emit_sound(idchannelchainsaw_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
            return 
FMRES_SUPERCEDE
        
}
    }
            
    return 
FMRES_IGNORED
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if(!
zp_get_user_zombie(attacker))
        return 
HAM_IGNORED;
    
    if (
get_user_weapon(attacker) != CSW_KNIFE)
        return 
HAM_IGNORED;
    
    if (
zp_get_user_zombie_class(attacker) == g_zclassid1)
    {
        
damage *= get_pcvar_float(cvar_damage)
        
SetHamParamFloat(4damage)
    }
    
    return 
HAM_SUPERCEDE
}
public 
ham_PlayerSpawn_Post(id)
{
    if (!
is_user_alive(id))
        return ;
        
     if(
bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclassid1)
     {
     
emit_sound(idCHAN_STREAMspawm_chain[random_num(0sizeof spawm_chain -1)], 1.0ATTN_NORM0PITCH_HIGH)
    }

Experiencia en Pawn: Bien
Estado: Aprendiendo
Responder
#2
Código PHP:
if (zp_get_user_zombie_class(attacker) == g_zclassid1)
    {
        
damage *= get_pcvar_float(cvar_damage)
        
SetHamParamFloat(4damage)
    }
    
    return 
HAM_SUPERCEDE


Detienes la función luego de multiplicar el daño, por ende nunca se aplica
Responder
#3
Mmmm..
Help a anonymous.
SOMOS LEGION..
¡NO OLVIDAMOS!
Esperamos...

MI STEAM pacman
Responder
#4
(24/07/2017, 12:00 PM)Chamo. escribió:
Código PHP:
if (zp_get_user_zombie_class(attacker) == g_zclassid1)
    {
        
damage *= get_pcvar_float(cvar_damage)
        
SetHamParamFloat(4damage)
    }
    
    return 
HAM_SUPERCEDE


Detienes la función luego de multiplicar el daño, por ende nunca se aplica

Sigue igual Whatdone
Experiencia en Pawn: Bien
Estado: Aprendiendo
Responder
#5
Como lo tienes ahora?
Responder
#6
(24/07/2017, 12:21 PM)Nek escribió:
(24/07/2017, 12:00 PM)Chamo. escribió:
Código PHP:
if (zp_get_user_zombie_class(attacker) == g_zclassid1)
    {
        
damage *= get_pcvar_float(cvar_damage)
        
SetHamParamFloat(4damage)
    }
    
    return 
HAM_SUPERCEDE


Detienes la función luego de multiplicar el daño, por ende nunca se aplica

Sigue igual Whatdone

Código PHP:
#define HAM_IGNORED        1    /**< Calls target function, returns normal value */
#define HAM_HANDLED        2    /**< Tells the module you did something, still calls target function and returns normal value */
#define HAM_OVERRIDE    3    /**< Still calls the target function, but returns whatever is set with SetHamReturn*() */
#define HAM_SUPERCEDE    4    /**< Block the target call, and use your return value (if applicable) (Set with SetHamReturn*()) */ 

asi que no puede ser HAM_SUPERCEDE
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#7
(24/07/2017, 01:21 PM)Sugisaki escribió:
(24/07/2017, 12:21 PM)Nek escribió:
(24/07/2017, 12:00 PM)Chamo. escribió:
Código PHP:
if (zp_get_user_zombie_class(attacker) == g_zclassid1)
    {
        
damage *= get_pcvar_float(cvar_damage)
        
SetHamParamFloat(4damage)
    }
    
    return 
HAM_SUPERCEDE


Detienes la función luego de multiplicar el daño, por ende nunca se aplica

Sigue igual Whatdone

Código PHP:
#define HAM_IGNORED        1    /**< Calls target function, returns normal value */
#define HAM_HANDLED        2    /**< Tells the module you did something, still calls target function and returns normal value */
#define HAM_OVERRIDE    3    /**< Still calls the target function, but returns whatever is set with SetHamReturn*() */
#define HAM_SUPERCEDE    4    /**< Block the target call, and use your return value (if applicable) (Set with SetHamReturn*()) */ 

asi que no puede ser HAM_SUPERCEDE

Aún si el daño se cambiara, por alguna razón no surge efecto.

De allí que piense ahora si es por algún otro plugin, probablemente el ZP.

PD: Ahora que lo pienso bien, si tal utiliza el valor devuelto por SetHam..., la función según la documentación se bloquearía igualmente, o estoy viendo mal.
Responder
#8
Muchas gracias, ya quedó al 100, cambie a HAM_INGNORED, de HAM_SUPERCEDE
Experiencia en Pawn: Bien
Estado: Aprendiendo
Responder
#9
mira esa doble cuenta papaa pacman

nek = anonymous


y todavía se da auto rep jajajaja. Roflmao
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)