06/04/2014, 12:14 AM
(Última modificación: 01/06/2020, 03:18 PM por Destro. Edited 2 times in total.)
Una simple API para crear menus old style fácilmente.
Ejemplo:
Solo lo recomiendo para usar con menúes dinámicos donde tengan que regenerar el menu todo el tiempo. Si es estático recomiendo usar el newmenu creándolo solo una vez.
Código PHP:
stock oldmenu_register()
stock oldmenu_create(const handler[], const title[], any:...)
stock oldmenu_additem(itemnum, value, const item[], any:...)
stock oldmenu_display(id, page=1, display_time=-1)
// fix bug en amxx <= 1.8.2
stock fix_pdata_menu(id)
stock oldmenu_calculate_pages(&maxpages, &start, &end, &page, const maxitems, const perpage=7, const start_offset=0)
// 1.2-2016
// Agrega las opciones de Atras/Siguiente/Salir
stock oldmenu_pagination(page, maxpages, separation=true)
stock oldmenu_addtext(const item[], any:...)
// lo olvide, pero por lo que puedo ver devuelve un valor positivo si el menu que el jugador esta mirando esta hecho por esta api
stock oldmenu_current_menu(id)
Ejemplo:
Código PHP:
#include <amxmodx>
#include <api_oldmenu>
public plugin_init()
{
oldmenu_register()
register_clcmd("say /menu1", "show_menu_test")
register_clcmd("say /menu2", "show_menu_players")
}
public show_menu_test(id)
{
oldmenu_create("menu_test", "\rTest OldMenu %s:", "api")
oldmenu_additem(1, 5, "\r%d. \wItem 1", 1)
oldmenu_additem(2, 9, "\r%s. \wItem 2", "2")
oldmenu_additem(3, 88, "\r3. \wItem 3")
oldmenu_additem(4, -51, "\r4. \wItem 4")
oldmenu_additem(-1, 0, "\d5. Item DISABLED")
oldmenu_additem(-1, 0, "Hola!!")
oldmenu_additem(0, MENU_EXIT, "^n\r0.\wSalir")
oldmenu_display(id)
}
public menu_test(id, itemnum, value, page)
{
client_print(id, print_chat, "itemnum: %d - value: %d - page: %d", itemnum, value, page)
}
public show_menu_players(id, page)
{
new maxpages, start, end
oldmenu_calculate_pages(maxpages, start, end, page, get_maxplayers())
oldmenu_create("menu_players", "\rPlayers: %d/%d", page, maxpages)
new name[32]
for(new i=1+start, count=1; i <= end; i++, count++)
{
if(!is_user_connected(i)) continue
get_user_name(i, name, 31)
oldmenu_additem(count, i, "\r%d. \w%s", count, name)
}
if(page > 1) oldmenu_additem(8, 0, "^n\r8. \wAtras")
else oldmenu_additem(-1, 0, "^n\d8. Atras")
if(page < maxpages) oldmenu_additem(9, 0, "\r9. \wSiguiente")
else oldmenu_additem(-1, 0, "\d9. Siguiente")
oldmenu_additem(0, 0, "\r0. \wSalir")
oldmenu_display(id, page)
}
public menu_players(id, itemnum, value, page)
{
if(itemnum == 0)
return
if(itemnum == 8)
{
show_menu_players(id, page-1)
return
}
if(itemnum == 9)
{
show_menu_players(id, page+1)
return
}
new name[32]
get_user_name(value, name, 31)
client_print(id, print_chat, "playerid: %d - name: %s", value, name)
}
Solo lo recomiendo para usar con menúes dinámicos donde tengan que regenerar el menu todo el tiempo. Si es estático recomiendo usar el newmenu creándolo solo una vez.
Tutoriales:
Aportes:
[API] Advanced Vault System - [API] sXe Injected Events - [Modulo] MySQL Threads 1.2 - [API] OldMenu 1.1
[TOOL] AMXX-Editor v2.2 (new)
MyAnimeList
Aportes:
[API] Advanced Vault System - [API] sXe Injected Events - [Modulo] MySQL Threads 1.2 - [API] OldMenu 1.1
[TOOL] AMXX-Editor v2.2 (new)
MyAnimeList