| KillLikoe |
11-04-2011 14:26 |
Grenade problem
the problem is that when i want to open the menu the server crashes
PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx> // include obligatorio
#include <amxmisc>
#include <zombieplague> // include del zp
#include <fakemeta_util>
#include <cstrike>
#define PLUGIN "Granade Menu"
#define VERSION "1.0"
#define AUTHOR "KillLikoe"
new g_msgAmmoPickup
// Menu keys
const KEYSMENU = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) // las teclas para el menu
// Ammo IDs for weapons
new const AMMOID[] = { -1, 9, -1, 2, 12, 5, 14, 6, 4, 13, 10, 7, 6, 4, 4, 4, 6, 10,
1, 10, 3, 5, 4, 10, 2, 11, 8, 4, 2, -1, 7 }
new const Grenade_Names[4][3][] = // const con el nombre de las granadas [4] significa las llevas que se abren y cierran el [3] cuantas opciones tiene adentro
{
{
"He Grenade",
"FlashBang Grenade",
"Smoke Grenade"
},
{
"He Grenade",
"FlashBang Grenade",
"Smoke Grenade"
},
{
"He Grenade",
"FlashBang Grenade",
"Smoke Grenade"
},
{
"He Grenade",
"FlashBang Grenade",
"Smoke Grenade"
}
}
new const Ammount_Grenades[4][3] = // lo mismo que arriba
{
{ 1, 2, 2 },
{ 2, 2, 2 },
{ 3, 3, 2 },
{ 3, 3, 3 }
}
new const Kind_Grenades[3][] = { "weapon_hegrenade", "weapon_smokegrenade", "weapon_flashbang" } // armas a dar
new const Grenade_Ent[3] = { CSW_HEGRENADE, CSW_SMOKEGRENADE, CSW_FLASHBANG } // index de la granada
new const Level_Grenades[4] = { 1, 25, 50, 75 } // level de las granadas
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR) // registramos el plugin
register_menu("Menu Granadas", KEYSMENU, "menu_granadas_handler") // registramos el menu
register_clcmd("say /granadas", "clcmd_granadas") // al escribir /granadas se abre el menu
g_msgAmmoPickup = get_user_msgid("AmmoPickup")
}
public clcmd_granadas(id)
{
menu_granadas(id)
}
public menu_granadas(id) // nuevo public
{
static menu[512], len, i, j // creamos variables
len = 0 // seteamos a 0 siempre el len
// Title
len += formatex(menu[len], charsmax(menu) - len, "\yMenu de Granadas^n^n") // titulo
for(i = 0; i < 4; i++) // for para saber el nombre de las granadas
{
if (zp_get_user_ammo_packs(id) >= Level_Grenades[i]) // para saber que level necesitan
{
for(i = 0; j < 3; j++) // para saber lo que hay adentro de la llave
{
if (i != 1)
{
len += formatex(menu[len], charsmax(menu) - len, " \y|\d %d %s^n", Ammount_Grenades[i][j], Grenade_Names[i][j]) // contenido
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\r%d.\y|\d %d %s [\r Min Lvl : \w%d\d ]^n", i+1, Ammount_Grenades[i][j], Grenade_Names[i][j], Level_Grenades[i]) // contenido
}
}
}
else
{
for(i = 0; j < 3; j++)
{
if (i != 1)
{
len += formatex(menu[len], charsmax(menu) - len, " \y|\d %d %s^n", Ammount_Grenades[i][j], Grenade_Names[i][j]) // contenido
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\r%d.\y|\d %d %s [\r Min Lvl : \w%d\d ]^n", i+1, Ammount_Grenades[i][j], Grenade_Names[i][j], Level_Grenades[i]) // contenido
}
}
}
}
}
public menu_granadas_handler(id, key)
{
if(zp_get_user_ammo_packs(id) < Level_Grenades[key]) // si tiene los ammopacks necesarios
{
client_print(id, print_center, "^x04[ZP]^x01 Necesitas tener %d ammopacks", Level_Grenades[key]) // imprimimos
// Show buy menu again
menu_granadas(id) // mostramos el menu
return PLUGIN_HANDLED; // returneamos
}
for(new i = 0; i < 3; i++)
{
set_msg_block(g_msgAmmoPickup, BLOCK_ONCE) // no se
fm_give_item(id, Kind_Grenades[i]) // le damos las granadas
set_msg_block(g_msgAmmoPickup, BLOCK_NOT) // no se
cs_set_user_bpammo(id, Grenade_Ent[i], Ammount_Grenades[key][i]) // le damos las balas
// Flash ammo in hud
message_begin(MSG_ONE_UNRELIABLE, g_msgAmmoPickup, _, id)
write_byte(AMMOID[Grenade_Ent[i]]) // ammo id
write_byte(Ammount_Grenades[key][i]) // ammo amount
message_end()
}
return PLUGIN_HANDLED
}
|