Problema con give_item
#1
Buenas, implemente el siguiente code..
Código PHP:
new boolg_awpfrost[33]
frost_man(victim)
{
    
// Get origin
    
static Float:originF[3]
    
pev(victimpev_originoriginF)
    
    
// Frost nade explode sound
    
engfunc(EngFunc_EmitSoundvictimCHAN_WEAPONgrenade_frost[random_num(0sizeof grenade_frost 1)], 1.0ATTN_NORM0PITCH_NORM)
    
    
// Only effect alive unfrozen zombies
    
if (!is_user_alive(victim) || !g_zombie[victim] || g_frozen[victim] || g_nodamage[victim])
        return;
    
    
// Freeze icon?
    
if (get_pcvar_num(cvar_hudicons))
    {
        
message_begin(MSG_ONE_UNRELIABLEg_msgDamage_victim)
        
write_byte(0// damage save
        
write_byte(0// damage take
        
write_long(DMG_DROWN// damage type - DMG_FREEZE
        
write_coord(0// x
        
write_coord(0// y
        
write_coord(0// z
        
message_end()
    }
    
    
// Light blue glow while frozen
    #if defined HANDLE_MODELS_ON_SEPARATE_ENT
    
fm_set_rendering(g_ent_playermodel[victim], kRenderFxGlowShell0150250kRenderNormal1)
    
#else
    
fm_set_rendering(victimkRenderFxGlowShell0150250kRenderNormal1)
    
#endif
    
    // Freeze sound
    
engfunc(EngFunc_EmitSoundvictimCHAN_BODYgrenade_frost_player[random_num(0sizeof grenade_frost_player 1)], 1.0ATTN_NORM0PITCH_NORM)
    
    
// Get freeze duration setting
    
static Float:freezeduration
    freezeduration 
get_pcvar_float(cvar_freezeduration)
    
    
// Add a blue tint to their screen
    
message_begin(MSG_ONE_UNRELIABLEg_msgScreenFade_victim)
    
write_short(UNIT_SECOND*1// duration
    
write_short(floatround(UNIT_SECOND*freezeduration)) // hold time
    
write_short(FFADE_IN// fade type
    
write_byte(0// red
    
write_byte(50// green
    
write_byte(200// blue
    
write_byte(100// alpha
    
message_end()
    
    
// Prevent from jumping
    
if (pev(victimpev_flags) & FL_ONGROUND)
        
set_pev(victimpev_gravity999999.9// set really high
    
else
        
set_pev(victimpev_gravity0.000001// no gravity
    
    // Set a task to remove the freeze
    
g_frozen[victim] = true;
    
set_task(freezeduration/2"remove_freeze"victim)

Lo que quiero es darle al nemesis la awp, pero no me la da.
Código PHP:
        if (g_nemround)
        {
            
// Play Nemesis sound
            
ArrayGetString(sound_nemesisrandom_num(0ArraySize(sound_nemesis) - 1), soundcharsmax(sound))
            
PlaySound(sound);
            
            
// Show Nemesis HUD notice
            
set_dhudmessage(25500HUD_EVENT_XHUD_EVENT_Y10.05.01.01.0)
            
show_dhudmessage(0"Modo: Nemesis")
            
            
// Mode fully started!
            
g_modestarted true
            fm_give_item
(id"weapon_awp")
            
awp__frost[id] = true
            
            
// Round start forward
            
ExecuteForward(g_fwRoundStartg_fwDummyResultMODE_NEMESISforward_id);
        }
        else
        {
            
// Show First Zombie HUD notice
            
set_dhudmessage(02550HUD_EVENT_XHUD_EVENT_Y00.05.01.01.0)
            
show_dhudmessage(0"¡ MUTO EL PRIMER ZOMBIE !")
            
            
// Mode fully started!
            
g_modestarted true
            
            
// Round start forward
            
ExecuteForward(g_fwRoundStartg_fwDummyResultMODE_INFECTIONforward_id);
        }
    } 
Responder
#2
No deberías colocar el ID del zombie?
Responder
#3
Código PHP:
fm_give_item(id"weapon_awp")
awp__frost[id] = true
// ----------------->
fm_give_item(forward_id"weapon_awp")
awp__frost[forward_id] = true 

Responder
#4
(03/11/2019, 02:27 AM)Skylar escribió:
Código PHP:
fm_give_item(id"weapon_awp")
awp__frost[id] = true
// ----------------->
fm_give_item(forward_id"weapon_awp")
awp__frost[forward_id] = true 

No...
Sigue sin darmela...
Responder
#5
A lo mejor este confundido pero no hay una parte del código en donde prohíbe tener armas los zombies ?
“Quien te quiere en su vida, volverá a buscarte”
Qué frase más estúpida
Porque quien te quiere en su vida, jamás se iría.
Responder
#6
(03/11/2019, 08:20 PM)HK-416 escribió: A lo mejor este confundido pero no hay una parte del código en donde prohíbe tener armas los zombies ?
Código PHP:
// Allowed weapons for zombies (added grenades/bomb for sub-plugin support, since they shouldn't be getting them anyway)
const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4)|(1<<CSW_AWP
Ya puede tener la awp, pero en vez de congelar sin dañarlo, los congela y los mata...
Responder
#7
ve a la public takedamage del zp y donde aplicas el daño del nemesis has un if con el weapon del apw poniendo el daño en 0... tambien haciendo esto awp__frost[id] = true vas a tener que falsear en el spawn post, menu de armas y otras partes para que no mantenga activado el apw del nemesis
Responder
#8
(03/11/2019, 10:37 PM)GoldenCosta escribió: ve a la public takedamage del zp y donde aplicas el daño del nemesis has un if con el weapon del apw poniendo el daño en 0... tambien haciendo esto awp__frost[id] = true vas a tener que falsear en el spawn post, menu de armas y otras partes para que no mantenga activado el apw del nemesis

Algo asi?
Código PHP:
        if (get_user_weapon(attacker) == CSW_AWP)
        {
            
awp__frost[attacker] = 0;
        } 
Responder
#9
(05/11/2019, 02:51 PM)Reverant escribió:
(03/11/2019, 10:37 PM)GoldenCosta escribió: ve a la public takedamage del zp y donde aplicas el daño del nemesis has un if con el weapon del apw poniendo el daño en 0... tambien haciendo esto awp__frost[id] = true vas a tener que falsear en el spawn post, menu de armas y otras partes para que no mantenga activado el apw del nemesis

Algo asi?
Código PHP:
        if (get_user_weapon(attacker) == CSW_AWP)
        {
            
awp__frost[attacker] = 0;
        } 

Código PHP:
if( awp__frostattacker ] ) return HAM_SUPERCEDE

Responder
#10
(05/11/2019, 04:50 PM)Skylar escribió:
(05/11/2019, 02:51 PM)Reverant escribió:
(03/11/2019, 10:37 PM)GoldenCosta escribió: ve a la public takedamage del zp y donde aplicas el daño del nemesis has un if con el weapon del apw poniendo el daño en 0... tambien haciendo esto awp__frost[id] = true vas a tener que falsear en el spawn post, menu de armas y otras partes para que no mantenga activado el apw del nemesis

Algo asi?
Código PHP:
        if (get_user_weapon(attacker) == CSW_AWP)
        {
            
awp__frost[attacker] = 0;
        } 

Código PHP:
if( awp__frostattacker ] ) return HAM_SUPERCEDE

Me sigue matando a los humanos..,
Código PHP:
    if (g_nemesis[attacker])
    {
        
// Ignore nemesis damage override if damage comes from a 3rd party entity
        // (to prevent this from affecting a sub-plugin's rockets e.g.)
        
if (inflictor == attacker)
        {
            
// Set nemesis damage
            
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        }
        
        if( 
awp__frostattacker ] )
        
        return 
HAM_IGNORED;
    } 
Responder
#11
si tu zp no esta editado... ve a

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)

buscas esto
Código PHP:
    
    
// Attacker is zombie...
    
    // Prevent infection by HE grenade (bugfix)
    
if (damage_type DMG_HEGRENADE)
        return 
HAM_SUPERCEDE;
    
    
// Nemesis?
    
if (g_nemesis[attacker])
    {
        
// Set nemesis damage
        
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        return 
HAM_IGNORED;
    } 

lo q vas a hacer
Código PHP:
    // Nemesis?
    
if (g_nemesis[attacker])
    {
        if (
get_user_weapon(attacker) == CSW_AWP)
            {
                if (
awp__frost[attacker])
                {
                    
SetHamParamFloat(4damage *= 0.0)
                    
frost_man(victim// nose si es el public asi donde aplicas el efecto de congelacion
                
}

            }
        
// Set nemesis damage
        
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        return 
HAM_IGNORED;
    } 
Responder
#12
(05/11/2019, 08:34 PM)GoldenCosta escribió: si tu zp no esta editado... ve a

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)

buscas esto
Código PHP:
    
    
// Attacker is zombie...
    
    // Prevent infection by HE grenade (bugfix)
    
if (damage_type DMG_HEGRENADE)
        return 
HAM_SUPERCEDE;
    
    
// Nemesis?
    
if (g_nemesis[attacker])
    {
        
// Set nemesis damage
        
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        return 
HAM_IGNORED;
    } 

lo q vas a hacer
Código PHP:
    // Nemesis?
    
if (g_nemesis[attacker])
    {
        if (
get_user_weapon(attacker) == CSW_AWP)
            {
                if (
awp__frost[attacker])
                {
                    
SetHamParamFloat(4damage *= 0.0)
                    
frost_man(victim// nose si es el public asi donde aplicas el efecto de congelacion
                
}

            }
        
// Set nemesis damage
        
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        return 
HAM_IGNORED;
    } 

Sigue haciendo daño el awp, es mas no me esta dando el model ahora que me doy cuenta, pero es lo de menos...
Deje el takedamage identico al que me dejaste, pero me los mata a los hm, y le agregue una cvar para confirmar si el problema se soluciona y no
No se que decis, quizas la funcion frost_man esta mall.

Código PHP:
frost_man(victim)
{
    
// Get origin
    
static Float:originF[3]
    
pev(victimpev_originoriginF)
    
    
// Frost nade explode sound
    //engfunc(EngFunc_EmitSound, victim, CHAN_WEAPON, grenade_frost[random_num(0, sizeof grenade_frost - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
    
    // Only effect alive unfrozen zombies
    
if (!is_user_alive(victim) || g_frozen[victim] || g_nodamage[victim])
        return;
    
    
// Freeze icon?
    
if (get_pcvar_num(cvar_hudicons))
    {
        
message_begin(MSG_ONE_UNRELIABLEg_msgDamage_victim)
        
write_byte(0// damage save
        
write_byte(0// damage take
        
write_long(DMG_DROWN// damage type - DMG_FREEZE
        
write_coord(0// x
        
write_coord(0// y
        
write_coord(0// z
        
message_end()
    }
    
    
// Light blue glow while frozen
    #if defined HANDLE_MODELS_ON_SEPARATE_ENT
    
fm_set_rendering(g_ent_playermodel[victim], kRenderFxGlowShell0150250kRenderNormal1)
    
#else
    
fm_set_rendering(victimkRenderFxGlowShell0150250kRenderNormal1)
    
#endif
    
    // Freeze sound
    //engfunc(EngFunc_EmitSound, victim, CHAN_BODY, grenade_frost_player[random_num(0, sizeof grenade_frost_player - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
    
    // Get freeze duration setting
    
static Float:freezeduration
    freezeduration 
get_pcvar_float(cvar_freezeduration)
    
    
// Add a blue tint to their screen
    
message_begin(MSG_ONE_UNRELIABLEg_msgScreenFade_victim)
    
write_short(UNIT_SECOND*1// duration
    
write_short(floatround(UNIT_SECOND*freezeduration)) // hold time
    
write_short(FFADE_IN// fade type
    
write_byte(0// red
    
write_byte(50// green
    
write_byte(200// blue
    
write_byte(100// alpha
    
message_end()
    
    
// Prevent from jumping
    
if (pev(victimpev_flags) & FL_ONGROUND)
        
set_pev(victimpev_gravity999999.9// set really high
    
else
        
set_pev(victimpev_gravity0.000001// no gravity
    
    // Set a task to remove the freeze
    
g_frozen[victim] = true;
    
set_task(get_pcvar_float(cvar_freezeduration), "remove_freeze"victim)

Responder
#13
Prueba alguna de estas dos
Código PHP:
if (g_nemesis[attacker])
    {
        if (
get_user_weapon(attacker) == CSW_AWP)
        {
            if (
awp__frost[attacker])
            {
                
damage 0.0
                SetHamParamFloat
(4damage)
                
frost_man(victim// nose si es el public asi donde aplicas el efecto de congelacion
            
}
            
        }
        
// Set nemesis damage
        
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        return 
HAM_IGNORED;
    } 
Código PHP:
if (g_nemesis[attacker])
    {
        if (
get_user_weapon(attacker) == CSW_AWP)
        {
            if (
awp__frost[attacker])
            {
                
damage 0.0
                SetHamParamFloat
(4damage)
                
frost_man(victim// nose si es el public asi donde aplicas el efecto de congelacion
            
}
            
        }
        
// Set nemesis damage
        
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        return 
HAM_SUPERCEDE;
    } 
“Quien te quiere en su vida, volverá a buscarte”
Qué frase más estúpida
Porque quien te quiere en su vida, jamás se iría.
Responder
#14
sacale el bool al arma, dejalo como nueva variable

crear una nueva cvar con su comando

cvar_nemapwdamage


cvar_nemapwdamage = register_cvar("zp_nem_awp_d", "0")

anda a takedamage y reemplaza

SetHamParamFloat(4, damage *= 0.0)

------------------>

SetHamParamFloat(4, get_pcvar_float(cvar_nemapwdamage))

_____________________________________________________________________

ahora para el model lo estas reemplazando mal seguro....
Responder
#15
(06/11/2019, 12:05 AM)GoldenCosta escribió: sacale el bool al arma, dejalo como nueva variable

crear una nueva cvar con su comando

cvar_nemapwdamage


cvar_nemapwdamage = register_cvar("zp_nem_awp_d", "0")

anda a takedamage y reemplaza

SetHamParamFloat(4, damage *= 0.0)

------------------>

SetHamParamFloat(4, get_pcvar_float(cvar_nemapwdamage))

_____________________________________________________________________

ahora para el model lo estas reemplazando mal seguro....

Dejo el code para que veas, me sigue hacienddo el daño..
Código PHP:
    if (g_nemesis[attacker])
    {
        if (
get_user_weapon(attacker) == CSW_AWP)
        {
            if (
awp__frost[attacker])
            {
                
SetHamParamFloat(4get_pcvar_float(cvar_awpfrost__dmg))
                
frost_man(victim)
            }
            
        }
        
// Ignore nemesis damage override if damage comes from a 3rd party entity
        // (to prevent this from affecting a sub-plugin's rockets e.g.)
        
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        
        return 
HAM_IGNORED;
    }

        if (
g_nemround)
        {
            
// Play Nemesis sound
            
ArrayGetString(sound_nemesisrandom_num(0ArraySize(sound_nemesis) - 1), soundcharsmax(sound))
            
PlaySound(sound);
            
            
// Show Nemesis HUD notice
            
set_dhudmessage(25500HUD_EVENT_XHUD_EVENT_Y10.05.01.01.0)
            
show_dhudmessage(0"Modo: Nemesis")
            
            
// Mode fully started!
            
g_modestarted true
            fm_give_item
(forward_id"weapon_awp")
            
awp__frost[forward_id] = true
            
            
// Round start forward
            
ExecuteForward(g_fwRoundStartg_fwDummyResultMODE_NEMESISforward_id);
        } 
Ya le saque el bool, y deje en false en putinserver, en menu de armas y extras.

(05/11/2019, 11:17 PM)HK-416 escribió: Prueba alguna de estas dos
Código PHP:
if (g_nemesis[attacker])
    {
        if (
get_user_weapon(attacker) == CSW_AWP)
        {
            if (
awp__frost[attacker])
            {
                
damage 0.0
                SetHamParamFloat
(4damage)
                
frost_man(victim// nose si es el public asi donde aplicas el efecto de congelacion
            
}
            
        }
        
// Set nemesis damage
        
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        return 
HAM_IGNORED;
    } 
Código PHP:
if (g_nemesis[attacker])
    {
        if (
get_user_weapon(attacker) == CSW_AWP)
        {
            if (
awp__frost[attacker])
            {
                
damage 0.0
                SetHamParamFloat
(4damage)
                
frost_man(victim// nose si es el public asi donde aplicas el efecto de congelacion
            
}
            
        }
        
// Set nemesis damage
        
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        return 
HAM_SUPERCEDE;
    } 

Por otro lado hk, son dos codes iguales...
y no funcionan
Responder
#16
me mato... donde pusiste el codigo del daño? en takedamage o dentro de la funcion del modo?

[Imagen: images?q=tbn:ANd9GcQ535byq6d1xKMexouDv8b...RkL1bP-o&s]
Responder
#17
(08/11/2019, 01:39 AM)GoldenCosta escribió: me mato... donde pusiste el codigo del daño? en takedamage o dentro de la funcion del modo?

[Imagen: images?q=tbn:ANd9GcQ535byq6d1xKMexouDv8b...RkL1bP-o&s]

El daño en takedamage, en el modo solo le di el arma y puse en true la variable. En el modo le da perfecto, porque los congela pero les saca daño...
Responder
#18
(08/11/2019, 10:18 PM)Reverant escribió:
(08/11/2019, 01:39 AM)GoldenCosta escribió: me mato... donde pusiste el codigo del daño? en takedamage o dentro de la funcion del modo?

[Imagen: images?q=tbn:ANd9GcQ535byq6d1xKMexouDv8b...RkL1bP-o&s]

El daño en takedamage, en el modo solo le di el arma y puse en true la variable. En el modo le da perfecto, porque los congela pero les saca daño...

En el comentario que hiciste arriba, se ve que pusiste el código del damage en donde se dan los modos Genius

Responder
#19
la ultima idea que tengo es que donde tienes la entidad de congelar del apw se establesca en 0 el daño, se me hace muy raro que en takedamage no te este tomando el daño, si estas espesificando bien que solo el nemesis, weapon apw y la variable se requiere para usarlo... aparte si no te funcionaria no tendria que congelar a los humanos
Responder
#20
(08/11/2019, 11:15 PM)Skylar escribió:
(08/11/2019, 10:18 PM)Reverant escribió:
(08/11/2019, 01:39 AM)GoldenCosta escribió: me mato... donde pusiste el codigo del daño? en takedamage o dentro de la funcion del modo?

[Imagen: images?q=tbn:ANd9GcQ535byq6d1xKMexouDv8b...RkL1bP-o&s]

El daño en takedamage, en el modo solo le di el arma y puse en true la variable. En el modo le da perfecto, porque los congela pero les saca daño...

En el comentario que hiciste arriba, se ve que pusiste el código del damage en donde se dan los modos Genius
No, solo enganche ambos códigos en una misma llave
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)