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

Conéctate para seguir esto  

×