[ZP][TUT] Crear Niveles por Experiencia con Daño
#1
Nota antes de empezar: Este tutorial esta hecho para ZP 4.2 no se si anda para el 4.3 fijense ustedes...

Agradesco al usuario de AlliedModders Kiske que use su Tuto de niveles como inspiracion...

Empezemos.

Abajo de los Includes y arriba de Plugin Customization agregamos las siguientes variables:

Código PHP:
new g_level[33// Esta es la variable que usaremos para los niveles
new g_exp[33// Esta es la variable que usaremos para la cantidad de experiencia
#define MAXLEVEL <cantidad> // Este define sirve para definir el nivel maximo que se puede llegar (en <cantidad> pongan el numero que uds. quieran
new const LEVELS[MAXLEVEL] = { cantidades // Este const sirve para definir la experiencia que requiere cada nivel (En cantidad pongan el monto que uds. quieran Ej: { 1, 2, 3, 4, 5 } cada numero separado por una coma. 

Ahora nos vamos al public fw_TakeDamage. Buscan la siguiente linea:

Código PHP:
// Reward ammo packs for every [ammo damage] dealt 

Y abajo de:

Código PHP:
g_damagedealt[attacker] -= ammodamage 

Agregan:

Código PHP:
g_exp[attacker] += <cantidad// Esto sirve para dar la experiencia por el daño que tengas definido en tu zp (en cantidad pornga el monto que quieran)
check_level(id// esto sirve para checkear el nivel cada vez que ganemos un punto de xp por damage. 

Ahora buscan la linea:

Código PHP:
reset_vars(idresetall

Y abajo de:

Código PHP:
WPN_AUTO_ON 

Agregan:

Código PHP:
g_level[id] = // Aca decimos que cuando un player entre al servidor su nivel sera 1
g_exp[id] = // Aca decimos que cuando un player entre al servidor su experiencia sera 0 

Ahora vamos al final del plugin y agregamos lo siguiente:

Código PHP:
public check_level(id

    if (
g_exp[id] > LEVELS[sizeof LEVELS 1] - 1)
        return 
PLUGIN_HANDLED
     
    while(
g_exp[id] >= LEVELS[g_level[id]]) 
    { 
        
g_level[id]++    
        
zp_colored_print(id"^x04[ZP]^x01 Has subido al nivel ^x04%d^x01."g_level[id])  
    } 

    return 
PLUGIN_HANDLED


Para agregar el nivel al Hud vamos a

Código PHP:
public ShowHUD(taskid

Y buscamos la linea

Código PHP:
ShowSyncHudMsg(ID_SHOWHUDg_MsgSync2code... 

Y ahi agregamos
Código PHP:
"Nivel: %d Experiencia: %d"g_level[id], g_exp[id]) 

En mi caso quedaria asi:

Código PHP:
ShowSyncHudMsg(ID_SHOWHUDg_MsgSync2"Nivel: %d Experiencia: %d"g_level[id], g_exp[id]) 

Y esto fue todo para crear niveles.

Saludos, Atte. ShaDow^
Responder
#2
dices que no responderas algunas preguntas porque son faciles.

acaso tu tutorial es algo complejo y dificil?

yo solo lo veo como otra guia mediocre.
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#3
Y por que te parece mediocre?
Responder
#4
A mi me parece un tuto para megaprincipiantes (como yo en mayo de 2012), igual creo que puede servirle a gente que no sabe una mierda de plugins, yo me acuerdo que asi empeze a hacer plugins, viendo estas guias/tut que era buscar y reemplazar, y despues de a poco me empeze a preguntar por que se usaba siempre lo mismo xd
[Imagen: 76561197999970868.png]
Responder
#5
muy incompleto, nunca se llama a check_level
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#6
(11/12/2013, 11:07 AM)RauliTop escribió: muy incompleto, nunca se llama a check_level

Es verdad, me olvide disculpa.
Responder
#7
no entiendo (perdón la ignorancia)
Código PHP:
// Reward ammo packs for every [ammo damage] dealt 

no tengo eso en mi zp 4.2

en mi zp aparese esto:
Código PHP:
// Ham Take Damage Forward (inflictor = weapon)
public fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    
// Non-player damage or self damage
    
if (victim == attacker || !is_user_connected(attacker))
        return 
HAM_IGNORED;
    
    
// New round starting or round ended
    
if (g_newround || g_endround)
        return 
HAM_SUPERCEDE;
    
    
// Victim shouldn't take damage or victim is frozen
    
if (g_nodamage[victim] || g_frozen[victim])
        return 
HAM_SUPERCEDE;
    
    
// Prevent friendly fire
    
if (g_zombie[attacker] == g_zombie[victim])
        return 
HAM_SUPERCEDE;
    
    
// Attacker is human...
    
if (!g_zombie[attacker])
    {
        
// Armor multiplier for the final damage on normal zombies
        
if (!g_nemesis[victim])
        {
            
damage *= get_pcvar_float(cvar_zombiearmor)
            
SetHamParamFloat(4damage)
        }
        
        
// Reward ammo packs
        
if (!g_survivor[attacker] || !get_pcvar_num(cvar_survignoreammo))
        {
            
// Store damage dealt
            
g_damagedealt[attacker] += floatround(damage)
            new 
bool:up
            
            
// Almacenamos daño por combo
            
g_damagecombo[attacker] += floatround(damage)
            
g_damagehits[attacker]++
            
            
show_current_combo(attackerfloatround(damage))
            
            
remove_task(attacker+TASK_RESET_COMBO)
            
            if (
g_damagehits[attacker] > 5)
            {
                while (
g_damagecombo[attacker] >= ammount_damage(g_combo[attacker]))
                {
                    
g_combo[attacker]++
                    
up true
                
}
                
                if (
up)
                {
                    
formatex(g_info_combo[attacker], 63"Combo %d completado!"g_combo[attacker])
                    
                    
remove_task(attacker+TASK_INFO_COMBO)
                    
set_task(3.0"info_combo"attacker+TASK_INFO_COMBO)
                }
                
                
remove_task(attacker+TASK_FINISH_COMBO)
                
set_task(3.0"finish_combo"attacker+TASK_FINISH_COMBO)
            }
            else
            {
                
set_task(1.0"reset_combo"attacker+TASK_RESET_COMBO)
            }
            
            
// Get damage required to get an ammo pack
            
static ammodamage
            ammodamage 
get_pcvar_num(cvar_ammodamage)
            
            
// Reward ammo packs for every [ammo damage] dealt
            
while (g_damagedealt[attacker] >= ammodamage)
            {
                
Levels(attacker1)
                
g_damagedealt[attacker] -= ammodamage
            
}
        }
        
        return 
HAM_IGNORED;
    }
    
    
// 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;
    }
    
    
// Last human or swarm round or plague round
    
if (g_swarmround || g_plagueround || fnGetHumans() == 1)
        return 
HAM_IGNORED// human is killed
    
    // Does human armor need to be reduced before infecting?
    // Get victim armor
    
static Float:armor
    pev
(victimpev_armorvaluearmor)
    
    
// Block the attack if he has some
    
if (armor 0.0)
    {
        
engfunc(EngFunc_EmitSoundvictimCHAN_BODYsound_armorhit1.0ATTN_NORM0PITCH_NORM)
        
set_pev(victimpev_armorvaluefloatmax(0.0g_hclass_armor[g_humanclass[victim]] - damage))
        return 
HAM_SUPERCEDE;
    }
    
    
// Infection allowed
    
SendDeathMsg(attackervictim// send death notice
    
FixDeadAttrib(victim// fix the "dead" attrib on scoreboard
    
UpdateFrags(attackervictimget_pcvar_num(cvar_fragsinfect), 11// add corresponding frags and deaths
    
    
zombieme(victimattacker00// turn into zombie
    
    // ammo packs given to zombie for infection
    
Levels(attackerget_pcvar_num(cvar_ammoinfect))
    
fm_set_user_health(attackerpev(attackerpev_health)+get_pcvar_num(cvar_zombiebonushp)) // attacker gets bonus HP for the infection
    
    
return HAM_SUPERCEDE;

Responder
#8
Código PHP:
// Reward ammo packs for every [ammo damage] dealt
            
while (g_damagedealt[attacker] >= ammodamage)
            {
                
Levels(attacker1)
                
g_damagedealt[attacker] -= ammodamage
            
}
        }
        
        return 
HAM_IGNORED;
    } 

(?
Responder
#9
Rainbow no lo había vistoA ysi
Responder
#10
si bajas de nivel no lo checkea
Responder
#11
(29/12/2013, 01:46 AM)Nike escribió: si bajas de nivel no lo checkea

No entendi :| que quisiste decir??
Responder
#12
mmmmmm donde me parece aver visto esto.... ahh en todo el puto internet
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#13
(30/12/2013, 07:20 AM)[R]ak escribió: mmmmmm donde me parece aver visto esto.... ahh en todo el puto internet

Si venis a comentar pelotudeces mejor ni comentes. ahi gente que no puede entrar a alliedmods por el proxy y no lo encuentra por ningun lado.
y conoce unicamente este lugar. Lo posteo especialmente para ese gente que quizas le sirve este thread. si a vos no te sirve no se ni para que lo lees Sonrisa

Saludos, ShaDow^
Responder
#14
Comento lo que quiero Whatever
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#15
(31/12/2013, 10:34 PM)[R]ak escribió: Comento lo que quiero Whatever

Bueno si vos decis...
Responder
#16
Me hace gracia eso del HUD: Eso es bastante fácil como para preguntar...

Entonces, quien te enseñó a tí, el aire?...lo digo por que poner eso es como decir, no me preguntéis sobre hud que no voy a responder por que todos saben...

Ojalá tio, ojalá!!
Responder
#17
(03/01/2014, 07:40 AM)xPecie escribió: Me hace gracia eso del HUD: Eso es bastante fácil como para preguntar...

Entonces, quien te enseñó a tí, el aire?...lo digo por que poner eso es como decir, no me preguntéis sobre hud que no voy a responder por que todos saben...

Ojalá tio, ojalá!!

:O es verdad. Disculpen mi ignorancia jeje
Responder
#18
no entedi :/
Responder
#19
escribi mal.... quise decir que no chekeas cuando un player baja de nivel.... si yo quiero hacer items o que un jugador compre algo con la xp, no bajara de nivel por restarle la xp....
Responder
#20
:'v nose un carajo necesito ayuda no se por donde empezar xD Cutecry
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)