PHP Code:
// Crear
new Array:g_zclass_admin;
// En "plugin_precache"
g_zclass_admin = ArrayCreate( 1 , 1 );
in your
public native_register_zombie_class
ArrayPushCell(g_zclass_admin);
public show_menu_zclass(id)
{
// Player disconnected
if (!g_isconnected[id]) return;
// Bots pick their zombie class randomly
if (g_isbot[id])
{
g_zombieclassnext[id] = random_num(0, g_zclass_i - 1);
return;
}
static menuid, menu[128], class, buffer[32], buffer2[32], buffer3, buffer4, flags;
flags = get_user_flags( id );
// Title
formatex(menu, charsmax(menu), "%L\r", id, "MENU_ZCLASS_TITLE")
menuid = menu_create(menu, "menu_zclass")
// Class List
for (class = 0; class < g_zclass_i; class++)
{
// Retrieve name and info
ArrayGetString(g_zclass_name, class, buffer, charsmax(buffer))
ArrayGetString(g_zclass_info, class, buffer2, charsmax(buffer2))
buffer3 = ArrayGetCell( g_zclass_lvl, class );
buffer4 = ArrayGetCell( g_zclass_admin, class );
if( buffer4 == ADMIN_ALL )
{
if(kNivel[id] >= ArrayGetCell(g_zclass_lvl, class))
{
if (class == g_zombieclassnext[id])
formatex(menu, charsmax(menu), "\d%s \y[ ACTUAL ]", buffer );
else
formatex(menu, charsmax(menu), "\w%s \y%s", buffer, buffer2);
}
else formatex(menu, charsmax(menu), "\d%s %s \r| Nivel %d", buffer, buffer2, buffer3 );
}
else
{
if( flags & buffer4 )
{
if (class == g_zombieclassnext[id])
formatex(menu, charsmax(menu), "\d%s \y[ ACTUAL ]", buffer );
else
formatex(menu, charsmax(menu), "\w%s \y%s", buffer, buffer2);
}
else formatex(menu, charsmax(menu), "\r[ SOLO ADMIN ]" );
}
buffer[0] = class
buffer[1] = 0
buffer[2] = 0
menu_additem(menuid, menu, buffer)
}
// Back - Next - Exit
formatex(menu, charsmax(menu), "%L", id, "MENU_BACK")
menu_setprop(menuid, MPROP_BACKNAME, menu)
formatex(menu, charsmax(menu), "%L", id, "MENU_NEXT")
menu_setprop(menuid, MPROP_NEXTNAME, menu)
formatex(menu, charsmax(menu), "%L", id, "MENU_EXIT")
menu_setprop(menuid, MPROP_EXITNAME, menu)
// If remembered page is greater than number of pages, clamp down the value
MENU_PAGE_ZCLASS = min(MENU_PAGE_ZCLASS, menu_pages(menuid)-1)
// Fix for AMXX custom menus
if (pev_valid(id) == PDATA_SAFE) set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
menu_display(id, menuid, MENU_PAGE_ZCLASS)
}
//// y el otro
public menu_zclass(id, menuid, item)
{
// Player disconnected?
if (!is_user_connected(id) || item == MENU_EXIT )
{
menu_destroy(menuid)
return PLUGIN_HANDLED;
}
// Remember player's menu page
static menudummy;
player_menu_info(id, menudummy, menudummy, MENU_PAGE_ZCLASS);
// Retrieve zombie class id
static buffer[2], dummy, classid, buffer2, buffer3, buffer4[ 32 ], flags;
menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy);
classid = buffer[0];
buffer2 = ArrayGetCell( g_zclass_lvl, classid);
buffer3 = ArrayGetCell( g_zclass_admin, classid);
ArrayGetString(g_zclass_name, classid, buffer4, charsmax(buffer4));
flags = get_user_flags( id );
if( buffer3 == ADMIN_ALL )
{
if (kNivel[id] >= buffer2)
{
g_zombieclassnext[id] = classid
zp_colored_print(id, "^x04[ZP]^x01 %L: %s", id, "ZOMBIE_SELECT", buffer4 );
zp_colored_print(id, "^x04[ZP]^x01 %L: %d %L: %d %L: %d %L: %d%%", id, "ZOMBIE_ATTRIB1", ArrayGetCell(g_zclass_hp, g_zombieclassnext[id]), id, "ZOMBIE_ATTRIB2", ArrayGetCell(g_zclass_spd, g_zombieclassnext[id]),
id, "ZOMBIE_ATTRIB3", floatround(Float:ArrayGetCell(g_zclass_grav, g_zombieclassnext[id]) * 800.0), id, "ZOMBIE_ATTRIB4", floatround(Float:ArrayGetCell(g_zclass_kb, g_zombieclassnext[id]) * 100.0))
}
else
{
zp_colored_print(id,"Necesitas ser nivel: %d", buffer2 );
show_menu_zclass(id)
}
}
else
{
if( flags & buffer3 )
{
g_zombieclassnext[id] = classid
zp_colored_print(id, "^x04[ZP]^x01 %L: %s", id, "ZOMBIE_SELECT", buffer4 );
zp_colored_print(id, "^x04[ZP]^x01 %L: %d %L: %d %L: %d %L: %d%%", id, "ZOMBIE_ATTRIB1", ArrayGetCell(g_zclass_hp, g_zombieclassnext[id]), id, "ZOMBIE_ATTRIB2", ArrayGetCell(g_zclass_spd, g_zombieclassnext[id]),
id, "ZOMBIE_ATTRIB3", floatround(Float:ArrayGetCell(g_zclass_grav, g_zombieclassnext[id]) * 800.0), id, "ZOMBIE_ATTRIB4", floatround(Float:ArrayGetCell(g_zclass_kb, g_zombieclassnext[id]) * 100.0))
}
else
{
zp_colored_print(id,"Necesitas ser^x04 ADMIN" );
show_menu_zclass(id)
}
}
menu_destroy(menuid)
return PLUGIN_HANDLED;
}
native zp_register_zombie_class(const name[], const info[], const model[], const clawmodel[], hp, speed, Float:gravity, Float:knockback, lvl, adm)