Welcome Soldier.



[AMXMODX] Hacer tu propio menu.

PlayEasymx Sin conexión
User
#1
hoy le vengo a traer un totorial, de como hacer tu propio menu principal.

-Existen 2 tipos de menues.

Menu Nuevo

Código PHP:
<?php 
menu_additem
(mxe, "\wOpcion ", "1")

Menu Viejo
Código PHP:
<?php 
len
+= formatex(menu[len], sizeof menu - 1 - len, "\y[1]\wOpcion^n");

pero en peronal para mi es mejor el Nuevo.
EMPECEMOS

Abrimos el AmxmodxStudio..

-Agregaremos un comando con cual quieras abrir el menu.

Quedaria así

Código PHP:
<?php 
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /mxemenu", "cmdmenux") // ACA LO AGREGE..
}
Ese es mi caso, tu puedes ponerle cualquier comando para abrir el menu, solo que "say" No tendras que borrarlo, o si quieres, tendras que poner ese comando en consola y no por say (Y)

-Ahora ya que pusismos el comando, donde dice cmdmenu, es donde /mxemenu, llamara esa funcion,
ahora lo que aremos el lo siguiente..

Código PHP:
<?php 
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /mxemenu", "cmdmenux")
}

public
cmdmenux(id) // Donde llama /mxemenu
{

}
Listo, una vez puesto esa funcion, procederemos hacer el titulo del menu, y los items que, queremos agregarle.

Código PHP:
<?php 
public cmdmenux(id)
{
new
mxemenu = menu_create("\rTitulo \ddel \ymenu", "hmenu")


}
creamos el menu en la variable "mxemenu" con el titulo "Titulo del menu
que segun la opcion que elija el usuario va a llamar a la funcion 'hmenu'
   
COLORES PARA EL MENU: 
\r = rojo
\y = amarillo
\d = Gris
\w = blanco

-Ahora procederemos a agregarle los items que queramos..

Código PHP:
<?php 
public cmdmenux(id)
{
new
mxemenu = menu_create("\rTitulo \ddel \ymenu", "hmenu")

menu_additem(mxemenu, "\rArmas", "1")
menu_additem(mxemenu, "\wTop15", "2")
menu_additem(mxemenu, "\dMis Estadisticas", "3")


menu_display(id, mxemenu, 0)
}
En mi cao fueron 3 item, ustedes puedes agregar las que quieran..

Ahora bamos al "hmenu"

-les dejare todo el codigo completo de una vez..

Código PHP:
<?php 
public hmenu(id, mxemenu, item)        //los parametros deben ir en este orden
{
   if ( item == MENU_EXIT )    //si el item seleccionado es igual a '0'(Exit[Salir])
   {
       menu_destroy(mxemenu)        //destruimos el menu
       return PLUGIN_HANDLED;    //y returnamos la funcion
   }
   switch(item)    //hacemos un swicheo de los posibles resultados:
   {
       case 0:        //en caso de que precione 1: le mandamos un msj
       {
           client_print(id, print_center, "HOLA SOY LA OPCION #1.")
       }
       case 1:        //en caso de que precione 2: le mandamos otro msj
       {
           client_print(id, print_center, "HOLA SOY LA OPCION #2.")
       }
       case 2:        //en caso de que precione 3: le mandamos otro msj
       {
           client_print(id, print_center, "HOLA SOY LA OPCION #3")
       }
   }
   return PLUGIN_HANDLED;    // returnamos la funcion
}
Ami me quedo asi..

Código PHP:
<?php 
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /mxemenu", "cmdmenux")
}

public
cmdmenux(id)
{
new
mxemenu = menu_create("\rTitulo \ddel \ymenu", "hmenu")

menu_additem(mxemenu, "\rVIDITA HP(100)", "1")
menu_additem(mxemenu, "\rSmoke", "2")
menu_additem(mxemenu, "\dMenu de admin", "3")


menu_destroy(mxemenu)

}
public
hmenu(id, mxemenu, item)      
{
   if ( item == MENU_EXIT )    
   
{
       menu_destroy(mxemenu)      
       return PLUGIN_HANDLED
;    
   
}
   switch(item)    
   
{
       case 0:    // OPCION 1.. VIDA  
       {
if(!
is_user_alive(id)) // SI EL PLAYER ESTA MUERTO
{
client_print(id, print_chat, "ESTAS MUERTO PVTO >:V")
return
PLUGIN_HANDLED //Returnamos
}
if(
cs_get_user_money(id) >= 2000){ // SI EL PLAYER TIENE 2000 de dinero
set_user_health(id, get_user_health(id) + 100) // le damos 100 HP
cs_set_user_money(id, cs_get_user_money(id) - 2000) // LE QUITAMOS 2000 de MONEY
client_print(id, print_chat, "COMPRASTE VIDA!") // MANDAMOS UN MENSSAJE
}else // SI NO TENE 2000 DE MONEY
    client_print(id, print_chat, "NO TE ALCANSA ALV ") // LE MANAMOS UN MENSAJE QUE NO LE ALCANSA
       }
       case 1:   // OPCION 2.. DAR SMOKE      
       {
           if(!is_user_alive(id)) // SI EL PLAYER ESTA MUERTO
{
client_print(id, print_chat, "ESTAS MUERTO PVTO >:V")
return
PLUGIN_HANDLED //Returnamos
}
if(
cs_get_user_money(id) >= 4000){ // SI EL PLAYER TIENE 4000 de dinero
give_item(id, "weapon_smokegrenade") // LE DAMOS LA BONBA
cs_set_user_money(id, cs_get_user_money(id) - 4000) // QUITAMOS 4000 de money
client_print(id, print_chat, "COMPRASTE SMOJE")
}else
// si no trae 4000 de MONEY
client_print(id, print_chat, "NO TE ALCANSA") // MANDAMOS UN MSG QUE NO LE ALCANSA
       }
       case 2:   // OPCION 3, Menu de admin    
       {
          if(is_user_admin(id)){ // Checamos si el jugador es admin
  client_cmd(id, "amxmodmenu") // le abrimos este comando
}else // si no e admin
client_print(id, print_chat, "NO ERES ADMIN")
       }
   }
   return PLUGIN_HANDLED;  
}
Dudas, preguntas, comentalo!
Responder

Fury Ausente
User
#2
Buen tuto.

PD: 3 Warnings xd

"El día que seas capaz de llorar de impotencia ante una injusticia, ese día seremos compañeros"
[+] 1 user says Thank You to Fury for this post
Responder

PlayEasymx Sin conexión
User
#3
Se me olvido darle indenter xd
[+] 1 user says Thank You to PlayEasymx for this post
Responder

ChrstopH Ausente
Hypnotize
#4
Con suerte eso compila y dudo que sirva, mejor explícales como hacer un menú con for

[spoiler]
te dejo la base, no lo probé pero seguro sirve.
Código PHP:
<?php 
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>


enum eMenu{ iNombre[100], iTypo };
enum{ USER = 0, ADMIN_ORO, ADMIN_PLATA, ADMIN_STAFF };

new const
iMenu[][eMenu] = {
{
"opcion 1", ADMIN_ORO}
}
new
iTipo[ 33 ];
public
plugin_init() {
register_plugin("", "", "ChrstopH");

// Add your code here...
register_clcmd("say /menu", "clcmd_Menu");
}
public
client_putinserver(index){
if(
is_user_admin(index)){
if(
get_user_flags(index) & ADMIN_CVAR) iTipo[ index ] = ADMIN_STAFF;
if(
get_user_flags(index) & ADMIN_BAN) iTipo[ index ] = ADMIN_PLATA;
else
iTipo[index ] = ADMIN_ORO;
}
else
iTipo[ index ] = USER

}
public
clcmd_Menu(index){
new
menu = menu_create("titulo del menu", "handler_menu");

for(new
i = 0; i < sizeof(iMenu); ++i){
if(
iTipo[ index ] >= iMenu[i][iTypo]) menu_additem(menu, iMenu[i][iNombre]);
else
menu_additem(menu, iMenu[i][iNombre]);

}
menu_display(index, menu, 0)
return
PLUGIN_HANDLED;

}
public
handler_menu(id, menu, item)
{
if (
item == MENU_EXIT)
{
menu_destroy(menu);
return
PLUGIN_HANDLED;
}
if(
iTipo[id] < iMenu[ item ][ iTypo ]) return PLUGIN_HANDLED;

//mandas el switch

return PLUGIN_HANDLED;
}
[/spoiler]

PD; pesimo tutorial, a pesar de que copiaste y pegaste partes del tutorial de [Anti], no explicas como debería de ser, aparte hablas del estilo nuevo y viejo y no explicas el viejo.
[Imagen: 76561198283253977.png]

Mapas Frutas 100%
DeathRun Levels 100%
Atrapa al Traidor (Edición) 100%
Battle Royale 40%
[+] 2 users say Thank You to ChrstopH for this post
Responder





Usuarios navegando en este tema:
1 invitado(s)



Sobre M X E M E X I C O

Comunidad MxE © 2020 - La mejorar comunidad de Counter Strike 1.6 .