Jump to content
This Topic
Conéctate para seguir esto  
kINg BiT

[ZP] Armas por niveles

Recommended Posts

3 posts en este tema

Hola Nostalgia Gamers

 Aquí dejo un tutorial de armas por niveles y aquí esta, tienen dudas por favor díganlo.

Cita

#include <amxmodx>
#include <hamsandwich>
#include <fun>
#include <cstrike>

#define PLUGIN "Tutorial Armas por niveles"
#define VERSION "1.1"
#define AUTHOR "[M]etrikcz"

#define user_level(%1) g_level[%1] // variable de su nivel deben de modificarla aqui!

new g_menu[33], g_level[33]
enum armas_caracteristicas { // crearemos un enum para que nos sea mas facil, comodo y mejor utilizar el const
    NOMBRE[20],
    CSW_NAME,
    WEAPON_NAME[20],
    BPAMMO,
    NIVEL
}
new const g_armas_prim[][armas_caracteristicas] = 
{ 
    // Nombre en el menu | CSW_ | weapon_ | Balas | Nivel    
    { "Schmidt TMP" , CSW_TMP , "weapon_tmp", 60, 1},
    { "Ingram MAC-10" , CSW_MAC10 , "weapon_mac10" , 60, 2}, 
    { "UMP 45" , CSW_MP5NAVY , "weapon_mp5navy" , 60, 3}, 
    { "Navy MP5" , CSW_UMP45 , "weapon_ump45" , 60, 4}, 
    { "M3 Super 90" , CSW_M3 , "weapon_m3" , 28, 5}, 
    { "XM1014 M4" , CSW_XM1014 , "weapon_xm1014" , 28, 6}, 
    { "FN P90" , CSW_P90 , "weapon_p90" , 100, 7}, 
    { "Schmidt Scout" , CSW_SCOUT , "weapon_scout" , 10, 8}, 
    { "Famas" , CSW_FAMAS , "weapon_famas" , 90, 10}, 
    { "IMI Galil" , CSW_GALIL , "weapon_galil" , 105, 12}, 
    { "AK-47 Kalashnikov" , CSW_AK47 , "weapon_ak47" , 90, 14},
    { "M4A1 Carbine" , CSW_M4A1, "weapon_m4a1", 90, 16},
    { "SG-552 Commando" , CSW_SG552 , "weapon_sg552" , 90, 18},
    { "Aug" , CSW_AUG , "weapon_aug" , 90, 20},
    { "AWP Magnum Sniper" , CSW_AWP , "weapon_awp" , 10, 22},
    { "G3SG1 Auto-Sniper" , CSW_G3SG1 , "weapon_g3sg1" , 60, 23},
    { "SG-550 Auto-Sniper" , CSW_SG550 , "weapon_sg550" , 60, 24},
    { "M249 SAW" , CSW_M249 , "weapon_m249" , 200, 25} // Importante que el ultimo no lleve coma ya que es el ultimo como en una oracion: pepito se cogio a sara, victoria, andrea (despues de andrea ya no lleva coma)
} 
new const g_armas_sec[][armas_caracteristicas] = 
{ 
    // Nombre en el menu | CSW_ | weapon_ | Balas | Nivel
    { "Glock" , CSW_GLOCK18 , "weapon_glock18" , 40, 0},  
    { "USP" , CSW_USP , "weapon_usp", 12, 15},
    { "P228" , CSW_P228 , "weapon_p228", 40, 30},
    { "Deagle" , CSW_DEAGLE , "weapon_deagle", 21, 50},
    { "Fiveseven" , CSW_FIVESEVEN , "weapon_fiveseven", 40, 70},
    { "Dual Elite" , CSW_ELITE , "weapon_elite", 60, 90} 
} 
// funcion que se llama cuando inicia el plugin, osea en un cambio de mapa o inicio del servidor
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR) // registramos plugin
    RegisterHam(Ham_Spawn, "player", "fw_spawn", 1) // registramos cuando el usuario revive
    register_clcmd("say /guns", "cmd_guns") // registramos el comando para abrirle el menu de armas
}
// funcion que se llama cuando el usuario reviva
public fw_spawn(id) {
    if(cs_get_user_team(id) == CS_TEAM_CT) {// si es policia .
        g_menu[id] = 0 // en el menu que esta se lo setearemos en 0
        show_guns_prim(id) // le abriremos el menu de armas primarias
    }    
}
show_guns_prim(id) {
    new len[50], menu = menu_create("Eliga su arma primaria", "handler_prim") // creamos el menu en la variable menu
    for(new i = 0; i < sizeof g_armas_prim; i++) { // lopearemos entre todas las armas primarias que hay
        // si el level del usuario es mayor o igual al del arma ...
        if(user_level(id) >= g_armas_prim[i][NIVEL]) menu_additem(menu, g_armas_prim[i][NOMBRE], "") // agregamos el item normal
        else { // y si no lo es
            formatex(len, charsmax(len), "\r[ \yNivel Requerido: \d%d \r]", g_armas_prim[i][NIVEL])
            menu_additem(menu, len, "")
        }
    }
    menu_display(id, menu, 0) // le mostramos el menu al usuario en la pagina 1
}
public handler_prim(id, menu, item) {
    if(item == MENU_EXIT) {  // si esta saliendo del menu, osea presiono 0
        menu_destroy(menu) // destruimos el menu para ahorrar memoria
        return PLUGIN_HANDLED; // paramos la funcion
    }
    if(!(cs_get_user_team(id) == CS_TEAM_CT)) // checamos si no es policia
        return PLUGIN_HANDLED; // si no lo es detenemos la funcion
        
    if(user_level(id) < g_armas_prim[item][NIVEL]) { // si su nivel es inferior a la del arma
        client_print(id, print_center, "Bloqued Level: %d", g_armas_prim[item][NIVEL]) // le mandaremos un mensaje diciendo el nivel que ocupa
        show_guns_prim(id) // le abriremos de nuevo el menu
        return PLUGIN_HANDLED; // y paramos la funcion
    }
    strip_user_weapons(id) // le tiramos todas las armas
    give_item(id, "weapon_knife") // le damos el cuchillo ya que tambien se lo quita
    give_item(id, g_armas_prim[item][WEAPON_NAME]) // le damos la arma que eligio
    cs_set_user_bpammo(id, g_armas_prim[item][CSW_NAME], g_armas_prim[item][BPAMMO]) // damos el numero de balas del arma
    g_menu[id] = 1 // seteamos la variable en 1 y ya explicare luego para que la usamos
    show_guns_sec(id) // le llamamos a la funcion del menu de armas secundarias osea pistolas al usuario
    return PLUGIN_HANDLED; // y returneamos al final la funcion por reglas de pawn porque si no nos mandaria un waring
}
show_guns_sec(id) {
    new len[50], menu = menu_create("Eliga su arma secundaria", "handler_sec") // creamos el menu en la variable menu
    for(new i = 0; i < sizeof g_armas_sec; i++) { // lopearemos entre todas las armas secundarias que hay
        // si el level del usuario es mayor o igual al del arma ...
        if(user_level(id) >= g_armas_sec[i][NIVEL]) menu_additem(menu, g_armas_sec[i][NOMBRE], "") // agregamos el item arma normal
        else { // y si no lo es
            formatex(len, charsmax(len), "\r[ \yNivel Requerido: \d%d \r]", g_armas_sec[i][NIVEL])
            menu_additem(menu, len, "")
        }
    }
    menu_display(id, menu, 0) // le mostramos el menu al usuario en la pagina 1
}
public handler_sec(id, menu, item) {
    if(item == MENU_EXIT) {  // si esta saliendo del menu, osea presiono 0
        menu_destroy(menu) // destruimos el menu para ahorrar memoria
        return PLUGIN_HANDLED; // paramos la funcion
    }
    if(!(cs_get_user_team(id) == CS_TEAM_CT)) // checamos si no es policia
        return PLUGIN_HANDLED; // si no lo es detenemos la funcion
        
    if(user_level(id) < g_armas_sec[item][NIVEL]) { // si su nivel es inferior a la del arma
        client_print(id, print_center, "Bloqued Level: %d", g_armas_sec[item][NIVEL]) // le mandaremos un mensaje diciendo el nivel que ocupa
        show_guns_sec(id) // le abriremos de nuevo el menu
        return PLUGIN_HANDLED; // y paramos la funcion
    }
    give_item(id, g_armas_sec[item][WEAPON_NAME]) // le damos la arma secundaria que eligio
    cs_set_user_bpammo(id, g_armas_sec[item][CSW_NAME], g_armas_sec[item][BPAMMO]) // damos el numero de balas del arma
    g_menu[id] = 2 // seteamos la variable en 2
    return PLUGIN_HANDLED; // y returneamos al final la funcion por reglas de pawn porque si no nos mandaria un waring
}
// funcion que se llamara cuando el usuario escriba /guns
public cmd_guns(id) {
    // ahora aqui es donde utilizaremos la variable g_menu
    // en ella sabremos: si ya eligio armas, si no lo ha hecho, si eligio pero se quedo a medias
    // por ejemplo eligio primaria pero no eligio secundaria porque se le cerro o el mismo se salio sin querer
    
    // bien al respawnear no ha elegido armas y le seteamos la variable g_menu en 0, en "fw_spawn(id)"
    switch(g_menu[id]) { // swtich se ira directamente al case donde este su valor
        // si no ha elegido
        case 0: show_guns_prim(id) // abrimos armas primarias
        case 1: show_guns_sec(id) // abrimos secundarias ya que ya eligio primarias
        case 2: client_print(id, print_chat, "Usted ya eligio armas") // le desimos que ya eligio armas
    }
} 

 

@Vergasaurio si no tenes idea, decime y te ayudo.

Compartir este post


Enlace al post
Compartir en otros sitios

Hola, si no pongo armas por niveles en zp es por mayoria, la mayoria no quiere entrar y que sean nivel 10 con ak (por ej) y recien son TMP , a pesar de que es la idea de los niveles pero bueno, si en algun momento hacen votación o algo y sale mayoria armas por niveles y @Hazar me dice, lo actualizo, hasta entonces no.

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Crear una cuenta

Regístrate en nuestra comunidad. ¡Es fácil!

Registrar una cuenta nueva

Iniciar Sesión

¿Ya tienes cuenta? Conéctate aquí.

Iniciar Sesión
Conéctate para seguir esto  

×