Hola gente, necesito una ayuda!.. Xq en este plugin, de armas x level, no me chekea bien?..
Me tira error en linea 78 y 73..
Tambien me tira en el public spawn
Ademas no se me setea las armas, cuando subo el level :/
Me tira error en linea 78 y 73..
Tambien me tira en el public spawn
Código PHP:
#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], g_conectado[33], g_frags[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
RegisterHam(Ham_Killed, "player", "fw_killed", 1)
}
public client_putinserver(id)
{
g_level[id] = 1
g_frags[id] = 0
g_conectado[id] = 1
}
public fw_killed(victim, attacker)
{
if(!g_conectado[victim] || !g_conectado[attacker] || victim == attacker )
return
g_frags[attacker] += 1
checklevel(attacker)
}
public checklevel(id)
{
while( g_frags[id] >= user_level(g_level[id]) )
{
g_level[id] ++
g_frags[id] = 0
}
}
// 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
}
}
Ademas no se me setea las armas, cuando subo el level :/