Enviar respuesta 
Ganar ammopacks con granada de fuego ZP
Autor Mensaje
Pawnsito Sin conexión
Miembro Junior


Mensajes: 33
Registro en: Nov 2018
Reputación: 0
Mensaje: #1
Ganar ammopacks con granada de fuego ZP
Alguien me podria decir como hacer para que la granada de fuego del zp me de ammopacks cada cierto daño? Y como escalar el daño de esta segun la habilidad de daño del humano?
06/12/2018 06:36 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
cLAANS Sin conexión
Miembro Sr.


Plugin developer Trebol purpura
Mensajes: 637
Registro en: Oct 2013
Reputación: 16
Mensaje: #2
RE: Ganar ammopacks con granada de fuego ZP
Okey, es mas simple de lo que te puedes imaginar ..

Primero que nada vas a buscar el evento Ham_Think, el mismo seguramente vas a tener justamente el think de todas las grandas.

Busca el de la granada de fuego

Image

Desde ahi te diriges en mi caso hacia la funcion "fire_explode", en el si buscas vas a encontrar que lo mas probable es que hagas un task cada x segundos hacia otra funcion.

En esa otra funcion veras que es donde ejerce el daño, y ahi mismo puedes sumar ammopacks al atacante.

Saludos,
cLAANS.-

Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017 09:30 PM)SoundBlaster escribió:  Espera y llamo a los power rangers para que me digan la linea de error
06/12/2018 04:46 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Pawnsito Sin conexión
Miembro Junior


Mensajes: 33
Registro en: Nov 2018
Reputación: 0
Mensaje: #3
RE: Ganar ammopacks con granada de fuego ZP
Ok listo, ya consegui esa parte y efectivamente hace un task cada 0.2 segundos para llamar a la misma funcion tipo "loop" si aun la granada esta haciendo daño, la cosa es como le aumento el daño a la granada segun el daño del humano? porque tiene una cvar para subir el daño de la misma, pero es un daño para todos
06/12/2018 05:31 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
cLAANS Sin conexión
Miembro Sr.


Plugin developer Trebol purpura
Mensajes: 637
Registro en: Oct 2013
Reputación: 16
Mensaje: #4
RE: Ganar ammopacks con granada de fuego ZP
(06/12/2018 05:31 PM)Pawnsito escribió:  Ok listo, ya consegui esa parte y efectivamente hace un task cada 0.2 segundos para llamar a la misma funcion tipo "loop" si aun la granada esta haciendo daño, la cosa es como le aumento el daño a la granada segun el daño del humano? porque tiene una cvar para subir el daño de la misma, pero es un daño para todos

Mostrame codigo

Saludos,
cLAANS.-

Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017 09:30 PM)SoundBlaster escribió:  Espera y llamo a los power rangers para que me digan la linea de error
08/12/2018 07:29 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Pawnsito Sin conexión
Miembro Junior


Mensajes: 33
Registro en: Nov 2018
Reputación: 0
Mensaje: #5
RE: Ganar ammopacks con granada de fuego ZP
Código PHP:
// Fire Grenade Explosion
fire_explode(ent)
{
    
// Get origin
    
static Float:originF[3]
    
pev(entpev_originoriginF)
    
    
// Make the explosion
    
create_blast2(originF)
    
    
// Fire nade explode sound
    
engfunc(EngFunc_EmitSoundentCHAN_WEAPONgrenade_fire[random_num(0sizeof grenade_fire 1)], 1.0ATTN_NORM0PITCH_NORM)
    
    
// Collisions
    
static victim
    victim 
= -1
    
    
while ((victim engfunc(EngFunc_FindEntityInSpherevictimoriginFNADE_EXPLOSION_RADIUS)) != 0)
    {
        
// Only effect alive zombies
        
if (!is_user_alive(victim) || !g_zombie[victim] || g_nodamage[victim])
            continue;
        
        
// Heat 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_BURN// damage type
            
write_coord(0// x
            
write_coord(0// y
            
write_coord(0// z
            
message_end()
        }
        
        
// Our task params
        
static params[1]
        
        if (
g_nemesis[victim]) // fire duration (nemesis takes less)
            
params[0] = get_pcvar_num(cvar_fireduration)
        else
            
params[0] = get_pcvar_num(cvar_fireduration)*5
        
        
// Set burning task on victim
        
set_task(0.1"burning_flame"victim+TASK_BLOODparamssizeof params)
    }
    
    
// Get rid of the grenade
    
engfunc(EngFunc_RemoveEntityent)


y el task burning_flame es

Código PHP:
// Burning Flames
public burning_flame(args[1], taskid)
{
    
// Get player origin and flags
    
static Float:originF[3], flags
    pev
(ID_BLOODpev_originoriginF)
    
flags pev(ID_BLOODpev_flags)
    
    
// Madness mode - in water - burning stopped
    
if (g_nodamage[ID_BLOOD] || (flags FL_INWATER) || FLAME_DURATION 1)
    {
        
// Smoke sprite
        
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
        
write_byte(TE_SMOKE// TE id
        
engfunc(EngFunc_WriteCoordoriginF[0]) // x
        
engfunc(EngFunc_WriteCoordoriginF[1]) // y
        
engfunc(EngFunc_WriteCoordoriginF[2]-50.0// z
        
write_short(g_smokeSpr// sprite
        
write_byte(random_num(1520)) // scale
        
write_byte(random_num(1020)) // framerate
        
message_end()
        
        return;
    }
    
    
// Randomly play burning zombie scream sounds (not for nemesis)
    
if (!random_num(020) && !g_nemesis[ID_BLOOD])
        
engfunc(EngFunc_EmitSoundID_BLOODCHAN_VOICEgrenade_fire_player[random_num(0sizeof grenade_fire_player 1)], 1.0ATTN_NORM0PITCH_NORM)
    
    
// Get fire slow down setting
    
static Float:slowdown
    slowdown 
get_pcvar_float(cvar_fireslowdown)
    
    
// Fire slow down, unless nemesis
    
if (slowdown 0.0 && !g_nemesis[ID_BLOOD] && (flags FL_ONGROUND))
    {
        static 
Float:velocity[3]
        
pev(ID_BLOODpev_velocityvelocity)
        
xs_vec_mul_scalar(velocityslowdownvelocity)
        
set_pev(ID_BLOODpev_velocityvelocity)
    }
    
    
// Get health and fire damage setting
    
static healthfiredamage
    health 
pev(ID_BLOODpev_health)
    
firedamage get_pcvar_num(cvar_firedamage)
    
    
// Take damage from the fire
    
if (health firedamage)
        
fm_set_user_health(ID_BLOODhealth firedamage)
    
    
// Flame sprite
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_SPRITE// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]+random_float(-5.05.0)) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]+random_float(-5.05.0)) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]+random_float(-10.010.0)) // z
    
write_short(g_flameSpr// sprite
    
write_byte(random_num(510)) // scale
    
write_byte(200// brightness
    
message_end()
    
    
// Decrease task cycle counter
    
FLAME_DURATION -= 1;
    
    
// Keep sending flame messaegs
    
set_task(0.2"burning_flame"taskidargssizeof args)


Aqui en este ultimo es donde le saca la vida al zombie pero no se como hacer para sumarle los ammopacks al atacante segun el daño que le haga, puesto que no se como obtener el "Index" del atacante
10/12/2018 06:53 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
cLAANS Sin conexión
Miembro Sr.


Plugin developer Trebol purpura
Mensajes: 637
Registro en: Oct 2013
Reputación: 16
Mensaje: #6
RE: Ganar ammopacks con granada de fuego ZP
Vale ...

Vamos a dejar codigo en bandeja, solo por esta ocacion.

Primero que nada, no podemos obtener el index atacante en ninguno de los dos codigos que me pasaste. Esto se debe "pasar" anteriormente, para esto nos dirigimos al think de grenade.

Código PHP:
case NADE_TYPE_NAPALM: {
            static 
owner
            owner 
get_pdata_cbase(entity414)

            
fire_explode(entityowner);
            return 
HAM_SUPERCEDE;
        } 

Hecho esto, ya es mas simple, en fire_explode obviamente cambiamos los parametros para poder recibir el id del atacante.

Luego de esto, vamos a cambiar un poquito el asunto del task, y vamos a pasar un parametro mas ... Justamente el id del atacante.

Código PHP:
// Our task params
        
static params];
        
        if( 
g_nemesisvictim ] ) // fire duration (nemesis takes less)
            
params] = get_pcvar_numcvar_fireduration );
        else
            
params] = get_pcvar_numcvar_fireduration ) * 5;

        
params] = idAtacante;
        
        
// Set burning task on victim
        
set_task(0.1"burning_flame"victim+TASK_BLOODparamssizeof params

Finalmente obtenemos el parametro en el task ...

Código PHP:
public burning_flameargs], taskid )
{
    static 
idAtacante args];

    
// code code

    
g_ammopacksidAtacante ]++;


Saludos,
cLAANS.-

Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017 09:30 PM)SoundBlaster escribió:  Espera y llamo a los power rangers para que me digan la linea de error
11/12/2018 04:31 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Pawnsito Sin conexión
Miembro Junior


Mensajes: 33
Registro en: Nov 2018
Reputación: 0
Mensaje: #7
RE: Ganar ammopacks con granada de fuego ZP
Muchas gracias por la ayuda amigo, tan pronto como este en la pc lo testeo y te digo como resulto.

Pd, si no estas muy ocupado quiza podrias echarle un ojo al thread que hice sobre ponerle un sprite a los miembros del party, talvez me puedas ayudar te lo agradeceria
11/12/2018 06:08 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Allied Modders en español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS