[Duda] Crear un comando
#1

Hola, bueno quiero ponerle un comando a mн GameMode, es decir que al poner por ejemplo: "/reglas" salga un cuadro 3D en el centro de la pantalla que muestre las reglas (que yo le pondrй, cuando sepa como hacer esto) y que diga abajo "Cancelar" y "Siguiente", el problema es que la verdad no tengo idea cуmo hacer algo asн, el GM que estoy creando es nuevo, no es un GM descargado ni los que trae por defecto el SA:MP, entonces querrнa saber cуmo realizar este comando. Desde ya muchas gracias, un saludo.
Reply
#2

їCuadro 3D? їDices diбlogos? їO dices TextDraws?

Esto son los diбlogos:

DIALOG_STYLE_MSGBOX:


DIALOG_STYLE_INPUT:


DIALOG_STYLE_LIST:


DIALOG_STYLE_PASSWORD:
Reply
#3

Serнa como el primero, sн un diбlogo.
Reply
#4

Como no sй como estб haciendo su GM, supondrй que usa strcmp, asн que le dejo el comando y lo de las reglas, todo explicadito:

1є - Usaremos OnPlayerCommandText para verificar si el jugador insertу un comando.

Si no sabe que es "OnPlayerCommandText", puedes leer lo de abajo, es una mini explicaciуn de quй es lo que hace
Quote:

12є) OnPlayerCommandText

Descripciуn:
Este CallBack es llamado cuando un jugador inserta un comando en la ventana de chat, por ejemplo: /ayuda.

Parбmetros:
(playerid, cmdtext[])

playerid = La ID del jugador que insertу el comando
cmdtext = El comando que fue ejecutado (Incluye el "/")

Returns:
0 si el comando no fue procesado, de lo contrario, 1

El cуdigo deberнa de ser asн, si no lo tiene en su GM, simplemente cуpielo y pegelo en cualquier parte del script.

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    return 1;
}
2є - Usamos ShowPlayerDialog para mostrar el dialogo de reglas

ShowPlayerDialog permite mostrarle un cuadro al jugador, ya sea una lista, una informaciуn o simplemente un cuadro para pedirle al jugador que se registre.

La funciуn es:

pawn Код:
ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])
Quote:
playerid es el ID de la persona que podrб ver el menъ (se sugiere dejarlo en playerid para que todos los jugadores puedan acceder al menъ)

dialogid es la id que tendrб este dialogo, Ej: ID nъmero 69

style es el estilo en el que se mostrara el menъ, como haremos un menъ escogeremos DIALOG_STYLE_LIST

caption[] es el nombre que le pondremos al menъ, el nombre aparecerб en la esquina superior del dialogo

info[] es el texto que aparecerб en nuestro menъ - Si quieres una lнnea nueva, usa \n, si quieres una opciуn mбs, usa \r\n (Sуlo DIALOG_STYLE_LIST)

button1[] es la primera opciуn

button2[] es la segunda opciуn

El cуdigo deberнa ser asн:

pawn Код:
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Reglas", "Bienvenido al servidor, por favor, lea las reglas:\n1є - Prohibido insultar\n2є - Prohibido fumar", "Acepto", "Rechazo");
3є - Usamos strcmp para verificar si el jugador insertу el comando "/reglas"

Bбsicamente strcmp compara una cadena de textos con otra, lo que nos permitirб, en este caso, verificar si el jugador insertу "/reglas" en el chat, si es asн, procedemos al bloque de abajo, de lo contrario, continuamos verificando si el comando existe o no.

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/reglas", true))
    {
        ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Reglas", "Bienvenido al servidor, por favor, lea las reglas:\n1є - Prohibido insultar\n2є - Prohibido fumar", "Acepto", "Rechazo"); //Mostramos el dialogo.
        return 1; //Retornamos 1 para que no diga que el comando no existe.
    }
    return 1;
}
De ahн ya tiene lo bбsico, sin embargo, apretar o no los botones, no harб nada, a continuaciуn le darй una explicaciуn de como hacer que el server reaccione ante una acciуn en el menъ:

4є - Usamos OnDialogResponse para procesar el dialogo.

Definiciуn del callback:

Quote:

Este callback es llamado cuando un jugador presiona alguno de los botones de un dialogo creado con ShowPlayerDialog.

Quote:

1є) OnDialogResponse

Descripciуn:
Este CallBack es llamado cuando un jugador responde a un diбlogo de ShowPlayerDialog, ya sea clickeando un botуn, apretando ESC/ENTER o haciendo doble click en un elemento de la lista (DIALOG_STYLE_LIST).

Parбmetros:
(playerid, dialogid, response, listitem, inputtext[])

playerid = La ID del jugador que respondiу el menъ
dialogid = La ID del diбlogo del cual el jugador respondiу
response = 1 si apretу el botуn izquierdo y 0 si apretу el botуn derecho
listitem = La ID del item seleccionado por el jugador (Comienza desde 0) (Solo si se usa DIALOG_STYLE_LIST)
inputtext = El texto introducido por el jugador (DIALOG_STYLE_INPUT) o el texto del нtem seleccionado (DIALOG_STYLE_LIST)

Returns:
Retornando 0 en este CallBack pasarб el cуdigo del diбlogo a otro script si ningъn cуdigo igual se encuentra en el CallBack del GameMode.

El cуdigo del CallBack deberнa de ser asн.

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 0) //Aquн verificamos si el dialogo respondido fue el dialogo ID 0 (Nuestro dialogo)
    {
       if(!response) return Kick(playerid); //Si el jugador apreta el segundo botуn (Rechazar) o apreta ESC para cerrar el menъ, lo kickeamos del server.
       SendClientMessage(playerid, 0xFFFF00FF, "Gracias por aceptar las reglas!"); //De lo contrario, le damos gracias por aceptar las reglas.
    }
    return 0; //Retornamos 0.
}
Y es muy simple, el cуdigo final serнa:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/reglas", true))
    {
        ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Reglas", "Bienvenido al servidor, por favor, lea las reglas:\n1є - Prohibido insultar\n2є - Prohibido fumar", "Acepto", "Rechazo");
        return 1;
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 0)
    {
       if(!response) return Kick(playerid);
       SendClientMessage(playerid, 0xFFFF00FF, "Gracias por aceptar las reglas!");
    }
    return 0;
}
Espero que sea legible y que entienda, aunque el cуdigo es corto, prefiero dar una gran explicaciуn para no dejarle dudas.
Reply
#5

Ahora intentarй hacerlo funcionar, muchas gracias por tu tiempo, saludos.
Agrego:
їEl Pawn o Pawno sirve para eso? O sino їQuй programa servirнa para realizar ese proceso?
Reply
#6

Listo, ya estб, muchas gracias.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)