Ayuda con menu
#1
Hola, tengo una duda

Ejemplo

Para kickear a un usuario, tradicionalmente coloco kick "juan" no? y asi lo kickearia.

Mi duda es, como aplico ese comando mediante un Menu? Tipo...

Menu tanto tanto

1. Banear
2. Kickear

al seleccionar una se despliega un menu con los jugadores y el comando se ejecuta con el nick del usuario, ojala se entienda , gracias!!
Responder
#2
amxmodmenu y amx_kickmenu? a eso te refieres??
Responder
#3
(13/08/2017, 02:28 AM)warrior escribió: amxmodmenu y amx_kickmenu? a eso te refieres??

Si eso los conozco, pero solo quiero saber como manejar eso, como poder tener una lista de jugadores donde se ejecute X comando
Responder
#4
Lo pondes bindear, vos decis al crear un menu tenga la opcion de ingresar el menu kick, etc, directamente?
Responder
#5
(13/08/2017, 02:40 AM)Renatomon escribió: Si eso los conozco, pero solo quiero saber como manejar eso, como poder tener una lista de jugadores donde se ejecute X comando
Lo que queres es un menu de jugadores y al seleccionar x jugador le das x cosa? osea vida, le mandas un msj etc
La Verdadera Vuelta


Aprendiendo :$
Responder
#6
Algo asi, yo uso ban pepito123 en consola y se ejecuta el comando, mi idea es poder usar el comando ban en jugadores pero mediante un menu, eso es todo creo
Responder
#7
Ayer alguien pidió algo parecido a lo tuyo solo que este cambia el menu de admin por defecto del amx, aquí esta un ejemplo

Código PHP:
#include <amxmodx>

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


public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_concmd("amxmodmenu""clcmd_amxmodmenu")
}

public 
clcmd_amxmodmenu(id)
{
    new 
menu menu_create("AMXMODX Menu""cmd_amxmodmenu")
    
    
menu_additem(menu"Kick Player")
    
menu_additem(menu"Ban Player")
    
menu_additem(menu"Slap/Slay Player")
    
menu_additem(menu"Team Player")
    
menu_additem(menu"Changelevel")
    
menu_additem(menu"Vote for Maps")
    
    
menu_display(idmenu)
    
    return 
PLUGIN_HANDLED;
}

public 
cmd_amxmodmenu(idmenuitem)
{
    switch(
item)
    {
        case 
0client_cmd(id"amx_kickmenu")
        case 
1client_cmd(id"amx_banmenu")
        case 
2client_cmd(id"amx_slapmenu")
        case 
3client_cmd(id"amx_teammenu")
        case 
4client_cmd(id"amx_mapmenu")
        case 
5client_cmd(id"amx_votemapmenu")
        case 
MENU_EXITmenu_destroy(menu)
    }
    
    return 
PLUGIN_HANDLED;

[Imagen: 76561198068808877.png]
Responder
#8
No me entendieron, lo del kick y el ban es solo un ejemplo, yo quiero saber como hacer uso de cualquier comando mediante una lista de jugadores

que X comando se ejecute cuando elija a X jugador

comando "pepito123"

Gracias igualmente Sonrisa
Responder
#9
(13/08/2017, 02:20 PM)Renatomon escribió: No me entendieron, lo del kick y el ban es solo un ejemplo, yo quiero saber como hacer uso de cualquier comando mediante una lista de jugadores

que X comando se ejecute cuando elija a X jugador

comando "pepito123"

Gracias igualmente Sonrisa

Acá tenes un menú de jugadores online que hizo Metrikcz el cual al jugador que vos seleccionas encuentra su ID, entonces con ese plugin podrás basarte en hacer lo que vos necesitas.

Código PHP:
#include <amxmodx> 

new g_maxplayers // En esta variable guardaremos el maximo numero de jugadores en el servidor (max slots)
public plugin_init() { // Funcion que es llamada al iniciar el plugin, ya sea en un cambio de mapa o reinicio del servidor
    
register_plugin("Menu Players Online""0.1""Metrikcz"// registro del plugin
    // 1 parametro: Definimos el nombre del plugin y como es un string se pone entre comillas 
    // 2 parametro: Definimos la version del plugin ------------------------
    // 3 parametro: Definimos el author del plugin -------------------------
    
register_clcmd("say /mpl""cmdMpl"// registramos el comando
    
g_maxplayers get_maxplayers() // Le damos el valor a la variable ya que get_maxplayers retorna el maximo numero de jugadores
}
public 
cmdMpl(id) {
    
// Funcion que es llamada cuando un jugador escriba /mpl
    // primer y unico parametro: "id", que es la ID del usuario que escribio
    // la ID de los usuarios es un numero entre el 1 y el 32, el cual se puede saber poniendo status en consola
    
new menu //Variable donde guardaremos el "ID" del menu que se usara para agregarle cosas como items o props
    
menu menu_create("Jugadores Online""handler_menuMpl")
    
// 1 parametro definimos el titulo del menu
    // 2 parametro definimos el nombre de la funcion del handler que se llamara cuando usemos el menu
    
    // porque "menu = ..." como ya dije en menu guardaremos la ID del mismo, y menu_create retorna su "ID" y le damos el valor haciendo esto: "menu = "
    
    
new name[32], IDS[12// Creamos las variables donde guardaremos el nombre de un usuario y su ID and USERID pero en un solo string
    // -------- Este pedaso se "llamara|realizara" el numero de veces que sea g_maxplayers ya sea 32 o los slots del servidor --------
    
for(new 1<= g_maxplayersi++) { // Hacemos un bucle o loop, lo que hacemos es mientras "i" sea menor o igual a maxplayers seguira el bucle
        // Ahora vien pasaremos por los 32 usuarios ya que el id del usuario es un numero entre el 1 y 32
        
if(is_user_connected(i)) { // Vamos a checar si esta conectado un usuario con esta ID osea i
            // bien la id "i" que va en el loop esta conectada 
            
get_user_name(inamecharsmax(name)) // Guardamos el nombre del usuario que tenga como su ID: "i donde vaya el bucle"
            
formatex(IDScharsmax(IDS), "%d %d"iget_user_userid(i)) // Guardamos el id and userid del usuario para despues usarlo en el handler e identificar al player
            
menu_additem(menunameIDS// Agregamos el item
            // 1 parametro: la ID del menu donde se agregara el item, por eso se tenia que guardar la ID del menu
            // 2 parametro: el nombre del item el cual es el nombre del usuario
            // 3 parametro: En este guardamos el ID y userid del usuario para despues validarlo y obtener sus ids en el handler
        
}
    
    }
    
// -------- Este pedaso se "llamara|realizara" el numero de veces que sea g_maxplayers ya sea 32 o los slots del servidor --------
    
menu_display(idmenu0// mostramos el menu
    // 1 parametro: la ID del usuario que vera el menu osea la ID del que escribio /mpl
    // 2 parametro: La ID del menu
    // 3 parametro: la pagina en la que se abrira, cada 7 items es 1 pagina, si hay 13 players conectados habra 2 paginas en el menu
}
public 
handler_menuMpl(idmenuitem) { // Funcion que es llamada cuando se usa el menu, se preciona algun item o lo cierras el menu
    
if(item == MENU_EXIT) { // Primero siempre tendremos que checar si item es menu_exit lo cual nos dice que preciono 0 y cerro el menu
        // si item si es menu_exit osea que lo cerro
        
menu_destroy(menu// Destruimos el menu
        
return PLUGIN_HANDLED// Le detemos la funcion para que desde aqui hasta abajo ya no lea nada, que aqui se quede
    
}
    
// Ahora lo que sigue sera obtener el tercer parametro de menu_additem, osea la ID and userid del usuario 
    // usaremos la native menu_item_getinfo lo cual nos data todos los parametros asi que tendremos que crear variables que nos dara sus valores
    
new lolbuffer[12], playeriduserid // Aqui los guardaremos
    
menu_item_getinfo(menuitemlolbuffercharsmax(buffer), __lol)
    
// 1 parametro ID del menu que la tenemos en el handler
    // 2 parametro el item osea lo que presiono si es 3 sera el tercer item que se agrego
    // 3 y 4 parametro aqui nos estara dando el tercer parametro de menu_additem y ahi en buffer ya tendremos la ID and userid del usuario que selecciono el user que abrio el menu
    // los demas no importan ya que tenemos lo que queremos
    
    
new szid[3], szuserid[9// Variables donde guardaremos las IDS que se encuentran en buffer
    // separamos las ids, la id y la userid
    
parse(bufferszidcharsmax(szid), szuseridcharsmax(szuserid)) // separamos los datos
    
playerid str_to_num(szid// Ahora en una variable integer guardaremos la id del usuario, para ello en la variable buffer donde la tenemos la pasamos de string a numero porque las ids de los players es un numero (1-32)
    
userid str_to_num(szuserid// Aqui la userid del usuario que se selecciono
    // pero porque usamos la userid? es facil se explicara mas adelante
    
    // Listo ya tenemos la id del usuario que selecciono ahora lo demas es muy facil
    // Vamos a checar que esta conectado ¿porque si ya lo hicimos cuando creamos el menu?
    // es facil al abrir el menu esta conectado, el que lo abrio puede permanecer con el menu minutos abiertos con el y cuando seleccione a un usuario este ya se pudo haber desconectado
    
if(!is_user_connected(playerid))  { // si no esta conectado ...
        
client_print(idprint_chat"Usuario seleccionado con la ID: %d se ha desconectado."playerid)
        return 
PLUGIN_HANDLED// le detenemos la funcion para que no siga leyendo, que desde aqui hasta abajo ya no lea nada que aqui se acabe
    
}
    
// Aqui es donde usaremos la userid para validar el player, como dije antes un usuario se puede desconectar cuando lo haigan elegido, pero tambien pasa de que se desconecta y se mete otro usuario al servidor y se le asigna ese id, osea que el usuario cambio su id sera igual pero no su userid asi que lo comprobaremos ahora
    
if(userid != get_user_userid(playerid)) { // si la userid no es la del player ...
        
client_print(idprint_chat"Usuario seleccionado no es el que usted eligio.")
    return 
PLUGIN_HANDLED// le detenemos la funcion para que no siga leyendo, que desde aqui hasta abajo ya no lea nada que aqui se acabe
    
}
    new 
name[32// Aqui guardaremos el nombre del user seleccionado
    
get_user_name(playeridnamecharsmax(name))  // Obtenemos su nombre con esta native y lo guardamos en la variable "name"
    
    // Mandamos un mensaje del usuario que selecciono y listo si ustedes le haran otra cosa ya es cosa de ustedes ya tienen su ID para manipularle 
    
client_print(idprint_chat"Has seleccionado a: %s su id es: %d y su userid es: %d"nameplayeriduserid)
    return 
PLUGIN_HANDLED// por "leyes" de pawn si se returnea en la funcion al ultimo tambien tiene que haber un return


Espero que te de una idea de como lograr lo que vos necesitas en tu plugin.

Saludos.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)