Enviar respuesta 
Guia definitiva de Sistemas de Niveles (Zombie Plague y Normal) [ 10/11/18 ]
Autor Mensaje
totopizza Sin conexión
http://www.MexicanServers.com


Donador Forum supporter Trebol verde Trebol de oro 1k
Mensajes: 1,984
Registro en: Mar 2014
Reputación: 39
Mensaje: #211
RE: Crear niveles por experiencia con daño acumulado + Resets + HappyHour (16/10/15)
(10/11/2018 12:04 AM)DeeD escribió:  
(09/11/2018 08:19 PM)kikizon2 escribió:  No se me habia ocurrido agregar "GrandResets" a la guia, actualmente es muy dificil subir resets con este tipo de sistema... tal vez me plantee agregar los GrandResets como opcion extra Insecure

Estaría bueno como dices ponerlo de opción extra ya la gente decidirá si lo usa o no pero no creo este de mas.

Por cierto, como hago para poner que gane mas experiencia al infectar en la Happy Hour?

en donde infectas colocas:
Código PHP:
if(isHappyTime)
{
   
//Aqui le das la EXP en hora feliz
}
else
{
  
// Aqui la exp si no es hora feliz


o tambien así:
Código PHP:
kExpindex ] = isHappyTime EXP_CON_HAPPYHOUR EXP_SIN_HAPPYHOUR 

ejemplo:
En hora feliz le dare 30 de EXP si no es hora feliz le dare 15
Código PHP:
kExpindex ] = isHappyTime 30 15 

[Imagen: 1098.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016 05:05 PM)meTaLiCroSS escribió:  Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.

Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
(Este mensaje fue modificado por última vez en: 10/11/2018 12:39 AM por totopizza.)
10/11/2018 12:39 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
DeeD Sin conexión
Miembro Junior


Mensajes: 28
Registro en: Nov 2018
Reputación: 0
Mensaje: #212
RE: Crear niveles por experiencia con daño acumulado + Resets + HappyHour (16/10/15)
(10/11/2018 12:39 AM)totopizza escribió:  
(10/11/2018 12:04 AM)DeeD escribió:  
(09/11/2018 08:19 PM)kikizon2 escribió:  No se me habia ocurrido agregar "GrandResets" a la guia, actualmente es muy dificil subir resets con este tipo de sistema... tal vez me plantee agregar los GrandResets como opcion extra Insecure

Estaría bueno como dices ponerlo de opción extra ya la gente decidirá si lo usa o no pero no creo este de mas.

Por cierto, como hago para poner que gane mas experiencia al infectar en la Happy Hour?

en donde infectas colocas:
Código PHP:
if(isHappyTime)
{
   
//Aqui le das la EXP en hora feliz
}
else
{
  
// Aqui la exp si no es hora feliz


o tambien así:
Código PHP:
kExpindex ] = isHappyTime EXP_CON_HAPPYHOUR EXP_SIN_HAPPYHOUR 

ejemplo:
En hora feliz le dare 30 de EXP si no es hora feliz le dare 15
Código PHP:
kExpindex ] = isHappyTime 30 15 

Recién veo esto... Gracias pero donde estaría lo de infectar?
Probe en la función zombieme pero igual con el segundo método me salta undefined symbol "index"
10/11/2018 10:34 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Hypnotize Ausente
Miembro Sr.


Plugin developer Donador
Mensajes: 455
Registro en: Dec 2017
Reputación: 12
Mensaje: #213
RE: Crear niveles por experiencia con daño acumulado + Resets + HappyHour (16/10/15)
Prueba con attacker en lugar de index we

O verifica ahí como es, no es index si no infector o alguna mamada así, lo que sucede es que ese parámetro cambia en algunas partes..

Image
(05/12/2018 02:58 AM)angel escribió:  Image
(Este mensaje fue modificado por última vez en: 10/11/2018 10:47 PM por Hypnotize.)
10/11/2018 10:46 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
DeeD Sin conexión
Miembro Junior


Mensajes: 28
Registro en: Nov 2018
Reputación: 0
Mensaje: #214
RE: Crear niveles por experiencia con daño acumulado + Resets + HappyHour (16/10/15)
(10/11/2018 10:46 PM)Hypnotize escribió:  Prueba con attacker en lugar de index we

O verifica ahí como es, no es index si no infector o alguna mamada así, lo que sucede es que ese parámetro cambia en algunas partes..

Probe varias cosas, no funciona con attacker pero si con infector. El problema es que solo funciona la primera infección luego no suma mas exp o si tenia por ejemplo otro numero que no es Exp: 15 al infectar se pone esa exp. E igual sigo sin saber si realmente va ahí en zombieme.
10/11/2018 11:08 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
kikizon2 Sin conexión
Miembro Héroe


Plugin developer Donador Regalo Beta Tester Trebol purpura 1k Plugin popular
Mensajes: 3,549
Registro en: Jan 2014
Reputación: 62
Mensaje: #215
RE: Crear niveles por experiencia con daño acumulado + Resets + HappyHour (16/10/15)
Editando el tema completo...
Esto queda como referencia v:
(05/09/2014 11:41 PM)kikizon2 escribió:  
[ ACTUALIZADO 16/10/15 ]



Bueno señores hace poco vi en un servidor con mod [ZP] todos conocemos a el mod zp >.<

Bueno voy directo al grano Sonrisa , vi que su sistema de niveles era de la siguiente manera:
-Para subir un nivel se necesitaba cierta cantidad de experiencia
-Para subir esa cierta cantidad de exp se necesitaba acumular cierto daño

Y me pareció un buen sistema ya que la verdad te vicia un poco fue la primera vez que entre al server y jugué durante 5 horas >.<

Y como me pareció un buen sistema aquí se los traigo para los que quieran Usarlo :3

Empecemos:

Agregar Niveles


Paso 1:

Se crean las variables, macros y constantes necesarios :3
(esto lo pueden poner en cualquier parte del plugin solo que no sea dentro de una función pacman pónganlo digamos debajo de donde se definen las librerías :3)

Código PHP:
#define nivel_sig(%1) (%1 * 55 + 20) // nivel x 55 + 20 ejemplo: si soy nivel uno: 1x55+20=75 para sig. nivel || soy nivel 3: 3x55+20=185 para sig. nivel

#define NIVEL_MAXIMO 25 // Nivel Máximo :genius:
new DMG_NECESARIO 1200 /// Se define el Daño Necesario para ganar exp 
#define WINEXP 2 // Se define cuanta experiencia ganara cuando llene el dmg requerido

new kExp[33], kNivel[33// Experiencia, Nivel
new kDamage[33// Guarda el daño infligido 

Paso 2:


Nos vamos a reset vars

Código PHP:
reset_vars(idresetall

Dentro de esta función buscamos la sig. condición

Código PHP:
if (resetall)
    { 

y debajo del corchete pegan lo siguiente

Código PHP:
kDamage[id] = // Seteamos El daño acumulado en 0
kExp[id] = // '' '' Experiencia a 0
kNivel[id] = // '' '' Nivel a 0 

Quedaría:

Código PHP:
if(resetall)

    
kExp[id] = 0
    kNivel
[id] = 0
    kDamage
[id] = // Seteamos El daño acumulado en 0

    //code code code code y mas code


Paso 3:

Ahora nos vamos a TakeDamage

Código PHP:
public fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type

Buscamos dentro de la función:

Código PHP:
// Attacker is human...
if (!g_zombie[attacker])


y debajo del corchete agregamos:

Código PHP:
// Le damos valor a kDamage valor = al daño infligido
kDamage[attacker] += floatround(damage)
        
while(
kDamage[attacker] >= DMG_NECESARIO) { // Mientras el daño infligido sea igual o mayor al daño necesario
        
kDamage[attacker] -= DMG_NECESARIO // Le restamos el valor de la definición DMG_NECESARIO(1200) a kDamage
        
setExpattacker WINEXP ); // Le damos la exp por dmg



Al final la función quedaría así:

Código PHP:
public fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if (
victim == attacker || !is_user_valid_connected(attacker))
        return 
HAM_IGNORED;
    
    if (
g_newround || g_endround)
        return 
HAM_SUPERCEDE;
    
    if (
g_nodamage[victim] || g_frozen[victim])
        return 
HAM_SUPERCEDE;
    
    if (
g_zombie[attacker] == g_zombie[victim])
        return 
HAM_SUPERCEDE;
    
    
// Attacker is human...
    
if (!g_zombie[attacker])
    {
        
kDamage[attacker] += floatround(damage)
        
    while(
kDamage[attacker] >= DMG_NECESARIO) { // Mientras el daño infligido sea igual o mayor al daño necesario
        
kDamage[attacker] -= DMG_NECESARIO // Le restamos el valor de la definición DMG_NECESARIO(1200) a kDamage
        
setExpattacker WINEXP ); // Le damos la exp por dmg
    


    if (!
g_nemesis[victim])
    {
        
damage *= get_pcvar_float(cvar_zombiearmor)
        
SetHamParamFloat(4damage)
    }
        
    if ((
get_pcvar_num(cvar_ammodamage_human) > 0) && (!g_survivor[attacker] || !get_pcvar_num(cvar_survignoreammo)))
    {
        
g_damagedealt_human[attacker] += floatround(damage)
            
        while (
g_damagedealt_human[attacker] > get_pcvar_num(cvar_ammodamage_human))
        {
            
g_ammopacks[attacker]++
            
g_damagedealt_human[attacker] -= get_pcvar_num(cvar_ammodamage_human)
        }
    }
    return 
HAM_IGNORED;
    }
    
// Attacker is zombie...
    
    
if (damage_type DMG_HEGRENADE)
        return 
HAM_SUPERCEDE;
    
    if (
g_nemesis[attacker])
    {
        if (
inflictor == attacker)
        {
            
SetHamParamFloat(4get_pcvar_float(cvar_nemdamage))
        }
        
        return 
HAM_IGNORED;
    }
    
    if (
get_pcvar_num(cvar_ammodamage_zombie) > 0)
    {
        
g_damagedealt_zombie[attacker] += floatround(damage)
        
        while (
g_damagedealt_zombie[attacker] > get_pcvar_num(cvar_ammodamage_zombie))
        {
            
g_ammopacks[attacker]++
            
g_damagedealt_zombie[attacker] -= get_pcvar_num(cvar_ammodamage_zombie)
        }
    }
    
    if (
g_survround || g_nemround || g_swarmround || g_plagueround || fnGetHumans() == 1)
        return 
HAM_IGNORED// human is killed
    
    
if (get_pcvar_num(cvar_humanarmor))
    {
        static 
Float:armor
        pev
(victimpev_armorvaluearmor)
        
        if (
armor 0.0)
        {
            
emit_sound(victimCHAN_BODYsound_armorhit1.0ATTN_NORM0PITCH_NORM)
            if (
armor damage 0.0)
                
set_pev(victimpev_armorvaluearmor damage)
            else
                
cs_set_user_armor(victim0CS_ARMOR_NONE)
            return 
HAM_SUPERCEDE;
        }
    }
    
zombieme(victimattacker001// turn into zombie
    
return HAM_SUPERCEDE;


Paso 4:

Nos dirigimos al final de plugin y agregamos lo siguiente:

Código PHP:
public setExpindex exp )
{
    if(
kNivel[index] >= NIVEL_MAXIMO)
    {
        
kExp[index] = nivel_sig(NIVEL_MAXIMO);
        return;
    }

    
kExp[index] += exp;
    new 
lvl kNivelindex ];
    while(
kExp[index] >= nivel_sig(kNivel[index]) && kNivel[index] < NIVEL_MAXIMO)   // Mientras la exp, sea igual o mayor a la requerida y el nivel sea menor al nivel máximo
        
kNivel[index]++ // Subimos de nivel
    
    
if( lvl kNivelindex ] ) // Esto evita el flood si se llegara a subir varios niveles de una sola vez
        
client_print(indexprint_center"Subiste al nivel: %d"kNivel[index]) // Mandamos un mensaje al centro de la pantalla informando que subió de nivel


Paso 5:

Se busca:

Código PHP:
public ShowHUD(taskid

Reemplazan esa función por esta

Código PHP:
:
public 
ShowHUD(taskid)
{
    static 
id
    id 
ID_SHOWHUD;
    
    if (!
g_isalive[id])
    {
        
id pev(idPEV_SPEC_TARGET)
        if (!
g_isalive[id]) return;
    }
    
    static class[
32], redgreenblue
    
    
if (g_zombie[id])
    {
        
red 200
        green 
250
        blue 
0
        
        
if (g_nemesis[id])
            
formatex(class, charsmax(class), "%L"ID_SHOWHUD"CLASS_NEMESIS")
        else
            
copy(class, charsmax(class), g_zombie_classname[id])
    }
    else 
    {
        
red 255
        green 
255
        blue 
0
        
        
if (g_survivor[id])
            
formatex(class, charsmax(class), "%L"ID_SHOWHUD"CLASS_SURVIVOR")
        else
            
copy(class, charsmax(class), g_human_classname[id])
    }
    
    if (
id != ID_SHOWHUD)
    {
        
set_hudmessage(255255255HUD_SPECT_XHUD_SPECT_Y06.01.10.00.0, -1)
        
ShowSyncHudMsg(ID_SHOWHUDg_MsgSync2"%L: %s^nHP: %d|%L: %s |%L: %d|Nivel: %d|Exp: %d"ID_SHOWHUD"SPECTATING"g_playername[id], pev(idpev_health), ID_SHOWHUD"CLASS_CLASS", class, ID_SHOWHUD"AMMO_PACKS1"g_ammopacks[id], kNivel[id], kExp[id])
    }
    else
    {
        
set_hudmessage(redgreenblueHUD_STATS_XHUD_STATS_Y06.01.10.00.0, -1)
        
ShowSyncHudMsg(ID_SHOWHUDg_MsgSync2"%L: %d|%L: %s|%L %d|Nivel: %d|Exp: %d/%d|Dmg: %d/%d"id"ZOMBIE_ATTRIB1"pev(ID_SHOWHUDpev_health), ID_SHOWHUD"CLASS_CLASS", class, ID_SHOWHUD"AMMO_PACKS1"g_ammopacks[ID_SHOWHUD], kNivel[id], kExp[id], nivel_sig(kNivel[id]), kDamage[id], DMG_NECESARIO)
    }



Agregar Resets


Paso 1:


Crear Variable:

Código PHP:
new kReset[33

Paso 2:

Resetearla en la función Reset Vars...

Código PHP:
public reset_vars(idresetall)
{
    
// code code code


    
if(resetall)
    {
        
// Code code code

        
kReset[id] = 0
    
}


Paso 3:

Crear el menú ( al final del plugin )...

Código PHP:
public show_menu_reset(index
{
    new 
szBuffer[128], menu;
    
formatex(szBuffer127"\r[ZP] \wMenu de Reseteo^n\yNecesitas Nivel:\r %d"NIVEL_MAXIMO);

    
menu menu_createszBuffer"menu_reset" );

    
menu_additem(menu, (kNivel[index] >= NIVEL_MAXIMO)?"Hacer Reseteo":"\dNo puedes hacer reseteo...""");

    
menu_display(indexmenu );
}

public 
menu_reset(indexmenuitem
{
    if( 
item != MENU_EXIT )
    {
        if(
kNivel[index] < NIVEL_MAXIMO)
        {
             
client_print(indexprint_center"No eres Nivel Necesario para hacer un reset");
             return 
PLUGIN_HANDLED;
        }
    
        
kExpindex ] = 0;
        
kNivelindex ] = 1;
        ++
kResetindex ];
        
client_print(indexprint_chat"[ZP] Has hecho un reset :3 Ahora tienes: %d"kReset[index])               
    }
    
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED;


El menu se pone donde mas les convenga, ya sea en el menu principal o desde un comando en say

Código PHP:
// en plugin init

register_clcmd("say /reset""show_menu_reset"); 

Agregar happyHour ( POR DMG )


Paso 1:

Crear variables y const.

Código PHP:
new isHappyTime;
enum _:__hhdata HH_TIME], HH_DMG }
new const 
HappyTime[][__hhdata] =
{
    { 
"13"500 }, // a las 13 horas (1 de la tarde) el dmg requerido sera de 500
    
"15"800 }, // a las 15 hora (3 de la tarde) el dmg requerido sera de 800
    
"23"400 // a las 23 horas (11 de la noche) el dmg requerido sera de 400
}; 

Paso 2:

Código PHP:
// En el evento round_start()

check_happytime(); 

Paso 3:

Crear la función (al final del plugin ).

Código PHP:
check_happytime()
{
    
isHappyTime false;
    
    static 
hour[3], i;
    
get_time("%H"hour);
    
    for( 
0sizeof HappyTime ; ++
    {
        if(
equal(hourHappyTime][HH_TIME]) ) 
        {
            
isHappyTime true;
            
DMG_NECESARIO HappyTime[i][HH_DMG];
        }
    }
    
    if(!
isHappyTimeDMG_NECESARIO 1200;


Visita: Mi blog Y algo mas Whatever -- No ayudo por MP || A los 4k post me voy Nothingdohere

(03/05/2017 10:56 PM)FreDDy escribió:  Estás muy desinformado sobre como actuamos, aquí es una mafia, nosotros mandamos y punto. Si no te cabe puñalada, tiro, tiro, puñalada.
(Este mensaje fue modificado por última vez en: 11/11/2018 12:43 AM por kikizon2.)
11/11/2018 12:42 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
el_juan_fail Sin conexión
Miembro Junior


Mensajes: 18
Registro en: Dec 2018
Reputación: 0
Mensaje: #216
RE: Guia definitiva de Sistemas de Niveles (Zombie Plague y Normal) [ 10/11/18 ]
NO ENTIENDO PRIMERO DEBERIA PONER COMPLETO Y ASI SABER MAS DEL SCRIPTS YA SABE SOY NIVEL A NOVATO A NOVATO Whatever
05/12/2018 10:58 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Hypnotize Ausente
Miembro Sr.


Plugin developer Donador
Mensajes: 455
Registro en: Dec 2017
Reputación: 12
Mensaje: #217
RE: Guia definitiva de Sistemas de Niveles (Zombie Plague y Normal) [ 10/11/18 ]
(05/12/2018 10:58 AM)el_juan_fail escribió:  NO ENTIENDO PRIMERO DEBERIA PONER COMPLETO Y ASI SABER MAS DEL SCRIPTS YA SABE SOY NIVEL A NOVATO A NOVATO Whatever

wat?

Image
(05/12/2018 02:58 AM)angel escribió:  Image
05/12/2018 11:01 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Saymn101 Sin conexión
Miembro Junior


Mensajes: 7
Registro en: Aug 2016
Reputación: 0
Mensaje: #218
RE: Guia definitiva de Sistemas de Niveles (Zombie Plague y Normal) [ 10/11/18 ]
bueno guia exp comboe
01/01/2019 08:42 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