InicioHazlo Tu Mismocrear niveles zombie plague
Hola soy novato en taringa viene con la intencion de eseñarles a los que son nuevos en temas de plugin y pawn del amx studio . Hoy les enseñare a crear sistema de niveles para su zp .

Bueno comenzemos .


Se van a // Player vars
Debajo de new g_survivor[33] // is surivor Agregan :


g_level[33] // la variable de los niveles 

Bien ahora vamos a poner el sonido cuando pasa de nivel y cuando baja de nivel nos vamos a :
new const sound_win_zombies[][] = { "zombie_plague/zombiewin.wav" } debajo agregamos :


new const sound_level_up[][] = { "zombie_plague/za_levelup.wav" }
new const sound_level_down[][] = { "zombie_plague/za_leveldown.wav" }

Bien ahora hay que precacharlo nos vamos a :
// Custom sounds y debajo agregamos :

for (i = 0; i < sizeof sound_level_up; i++)
        engfunc(EngFunc_PrecacheSound, sound_level_up[i])
    for (i = 0; i < sizeof sound_level_down; i++)
        engfunc(EngFunc_PrecacheSound, sound_level_down[i])
    for (i = 0; i < sizeof sound_win_zombies; i++)

Bien ahora vamos a setear los niveles y los niveles maximos nos vamos a :
// Player Vars al final antes de llegar a //Game vars y ahi agregamos :

#define MAX_LVL 6 // si agregan mas nivels cambien ese 6 por la cantidad de niveles que pusieron 
new const iLevels[MAX_LVL] = { 0, 1, 50, 100, 150, 200 } // ahi agregamos 6 niveles si quieren mas sigan poniendo , y la cantidad de ammo packs que quieren para el proximo nivel 

Bien ahora vamos a restringir las armas por niveles nos vamos a :
public show_menu_buy1(taskid) y lo cambiamos por esto:


// Buy Menu 1
public show_menu_buy1(taskid)
{
    // Get player id
    static id
    (taskid > g_maxplayers) ? (id = ID_SPAWN) : (id = taskid);
    
    // Zombies, survivors or wesker get no guns
    if (g_zombie[id] || g_survivor[id] || g_wesker[id] || !is_user_alive(id))
        return;
    
    // Bots pick their weapons randomly
    if (is_user_bot(id))
    {
        buy_primary_weapon(id, random_num(0, sizeof g_primary_items - 1))
        menu_buy2(id, random_num(0, sizeof g_secondary_items - 1))
        return;
    }
    
    static menu[999], len, weap
    len = 0
    
    // Title
    len += formatex(menu[len], sizeof menu - 1 - len, "^nyCategoria %s - Arma Primaria r[%d-%d]^n^n", g_categoryb[id] ? "B" : "A", WPN_STARTID+1, min(WPN_STARTID+7, WPN_MAXIDS))
    
    // 1-7. Weapon List
    for (weap = WPN_STARTID; weap < min(WPN_STARTID+7, WPN_MAXIDS); weap++)
        if (g_level[id],g_resets[id] >= g_primary_level[weap],resetsprimary[weap])
            len += formatex(menu[len], sizeof menu - 1 - len, "r%d.w %s [yMin Nivelw%d]^n", weap-WPN_STARTID+1, WEAPONNAMES[get_weaponid(g_primary_items[weap])], g_primary_level[weap])
        else
            len += formatex(menu[len], sizeof menu - 1 - len, "r%d.d %s [rMin Nivelw%dd]^n", weap-WPN_STARTID+1, WEAPONNAMES[get_weaponid(g_primary_items[weap])], g_primary_level[weap])
        
    // 8. Back 9. Next - 0. Exit
    len += formatex(menu[len], sizeof menu - 1 - len, "^nr8.y Anterior^nr9.y Siguiente^n^nr0.y Salir")
    
    show_menu(id, KEYSMENU, menu, -1, "Buy Menu 1")
}

Ahora vamos a crear la const para los niveles de las armas .
nos vamos a // Buy Menu: Primary and Secondary Weapons y debajo agregamos :


new const g_primary_level[] = {0, 1,2, 3, 4, 5, 6, 6, 6, 6, 6, 1, 2, 1, 3, 5,4, 6 } // 18 armas = 18 levels para las armas del 1al 6 si agregaron mas level cambien los 6 por otros niveles ejemplo 50 , 75 etc.

Ahora lo que hicimos antes fue hacer que se vea en el menu de las armas que level pide , ahora lo vamos a bloquear si no tiene el nivel suficiente no la podra comprar entonces nos vamos a public menu_buy1(id, key) y lo cambiamos por esto :

// Buy Menu 1
public menu_buy1(id, key)
{
    // Zombies, survivors or weskers get no guns
    if (g_zombie[id] || g_survivor[id] || g_wesker[id] || !is_user_alive(id))
        return PLUGIN_HANDLED;
    
    // Special keys / weapon list exceeded
    if (key >= MENU_KEY_BACK || WPN_SELECTION >= WPN_MAXIDS)
    {
        switch (key)
        {
            case MENU_KEY_BACK: // back
            {
                if (WPN_STARTID-7 >= 0) WPN_STARTID -= 7
            }
            case MENU_KEY_NEXT: // next
            {
                if (WPN_STARTID+7 < WPN_MAXIDS) WPN_STARTID += 7
            }
            case MENU_KEY_EXIT: // exit
            {
                return PLUGIN_HANDLED;
            }
        }
        // Show buy menu again
        show_menu_buy1(id)
        return PLUGIN_HANDLED;
    }
    if(g_level[id] < g_primary_level[WPN_SELECTION])
{
    show_menu_buy1(id)
        client_print(id, print_center, "No Tenes Nivel Suficiente Para usar esta Arma (Nivel Requerido %d)", g_primary_level[WPN_SELECTION])
        zp_colored_print(id, "^x04[Se]^x01  No Tenes Nivel Suficiente Para usar esta Arma ^x03(Nivel Requerido %d)", g_primary_level[WPN_SELECTION])
    
    return PLUGIN_HANDLED;
}
    // Buy primary weapon
    buy_primary_weapon(id, WPN_SELECTION)
    
    // Show pistols menu
    show_menu_buy2(id)
    
    return PLUGIN_HANDLED;
}

Bueno ahora vamos a setear que cuando el player entre al server sea level 1 como hacemos nos vamos a // Reset Player Vars y nos vamos a la parte de if (resetall) ahi agregamos :

g_level[id] = 1

Ahora vamos a crear el famoso hud que nos indica los niveles que tenemos nos vamos a // Show your health , tambien si usan versiones anteriores van a // Show health y debajo buscamos esto:
if (g_showstats[id]) y lo cambiamos por este :


if (g_showstats[id])
        {
            set_hudmessage(212, 255, 255, 0.1, 0.1, 0, 6.0, 9.9999)
            ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync2, "Clase: %s^nNivel: %d^nAmmoPacks: %d^nVitalidad: %d", class, g_level[id,g_ammopacks[id], pev(id, pev_health))
        }
        else if (!g_showstats[id]) return;
    }
}

Bien ahora esta 100% funcional los niveles lo que vamos a hacer es crear un print que informe cuando subimos y pasamos de nivel , nos vamos al final del plugin incluso debajo de la } y agregamos :

// Actualizar nivel y rango
public update_level(taskid)
{
    static id
    id = ID_UPDATE;
    
    // Subir nivel
    if (g_level[id] < 255)
    {
        while (g_ammopacks[id] >= iLevels[g_level[id] + 1])
        {
            g_level[id]++
            zp_colored_print(id, "^x04[ZE]^x01 Felicidades! Has ascendido a nivel: ^x04%d^x01", g_level[id])
            OnePlaySound(id, sound_level_up[random_num(0, sizeof sound_level_up -1)])
        }
    }
    
    // Decrecer nivel
    if (g_level[id] > 1)
    {
        while (g_ammopacks[id] < iLevels[g_level[id]])
        {
            g_level[id]--
            zp_colored_print(id, "^x04[ZE]^x01 Mala suerte! Has descendido a nivel: ^x04%d^x01", g_level[id])
            OnePlaySound(id, sound_level_down[random_num(0, sizeof sound_level_down -1)])
        }
    }

Bueno ya esta funcional copilen , pegen el amxx en plugin , creen una partida en el cs y disfruten leveleando a lo loco , un salu2 y nos vemos en la prox guia de los sistemas de reset , menus , submenus y guardado nvault , fvault .
Datos archivados del Taringa! original
15puntos
3,144visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

I
IstarsILeon🇦🇷
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.