[Tutorial] Crear un menu como la de GTA SA SinglePlayer.
#1

Buenas a todos, tengan un cordial saludo, hoy les voy a traer como crear un menu tipo GTA SA normal bien, vamos al grano.

Paso 1:
Primero quй todo, definiremos nuestra variable del menu, la cual serнa estб

pawn Код:
new Menu:EjemploMenu;
Esto va debajo de los #define
Donde dice "EjemploMenu" lo vas a cambiar por el nombre que quieras


Paso 2:
Despuйs nos vamos a OnGameModeInit, y ponemos esto:

pawn Код:
public OnGameModeInit()
{
    EjemploMenu = CreateMenu("Nombre del Menu", 0, 200.0, 100.0, 150.0, 150.0);
    AddMenuItem(EjemploMenu, 0, "Desert Eagle");
    AddMenuItem(EjemploMenu, 0, "9mm");
    // lo demбs que tienes en OnGameModeInit.
    return 1;
}
EjemploMenu = Es la variable quй definimos, allн van a ponerlo al nombre quй ustedes le pusieron
Nombre Del Menu = Allн pondran el nombre que tendra su menu, por ejemplo "Armas"
0 = Es el nъmero de columnas que ustedes desean poner, por lo tanto lo dejamos en "0"
200.0 = es la posiciуn X que tendra su numero, si lo quieren izquierda o derecha, arriba o abajo.
100.0 es la posicion Y quй tendrб su menu.
150.0 y 150.0 Es el ancho de columnas quй tu pusistes, un ejemplo: si tu pusistes "2" columnas, tienes que cambiarlas de anchura, y si no, lo dejamos con los mismos numeros



Paso 3:
Ahora pondremos el comando para ver el menu cuando tu pones el comando, tambien puedes hacerlo con teclas, con pickups, etc. pero estб vez lo harй con comandos.

Bien, nos vamos a OnPlayerCommandText y haremos nuestro comando, quedarнa asн.


pawn Код:
if(strcmp(cmdtext, "/armas", true) == 0)
    {
            ShowMenuForPlayer(EjemploMenu, playerid);
            TogglePlayerControllable(playerid, 0);
            return 1;
    }
ShowMenuForPlayer = es la funciуn quй hace ver el menu.
EjemploMenu = Es el nombre de la variable que hicimos en el primer paso, recuerda ponerle el nombre de la variable que tu le pusistes.
TogglePlayerControllabe = Es para congelar o descongelar al jugador, si estб en 0 = Congelado, 1 = Descongelado
playerid = es la id del jugador quй escribio el comando.


Paso 4:
Ahora, ya que hicimos el comando, definiremos el menu para darle las acciones, como por ejemplo los nombres quй pusй arriba, Desert Eagle y 9mm, definiendo los menus, le daremos la opcion de darle una accion, como por ejemplo darle una Desert Eagle cuando tu lo apretas "Desert Eagle" del menu.

Bien, nos vamos a OnPlayerSelectedMenuRow y haremos lo siguiente:


pawn Код:
public OnPlayerSelectedMenuRow(playerid, row)
{
    new Menu:SelecMenu;
    SelecMenu = GetPlayerMenu(playerid);
    if(SelecMenu == EjemploMenu)
    {
        switch(row)
        {
            case 0:
            {
            GivePlayerWeapon(playerid, 24, 500);
            SendClientMessage(playerid,COLOR_ROJO,"Has obtenido una Desert Eagle con 500 balas");
            TogglePlayerControllable(playerid, 1);
            }
            case 1:
            {
            GivePlayerWeapon(playerid, 22, 500);
            SendClientMessage(playerid,COLOR_ROJO,"Has obtenido una 9mm con 500 balas");
            TogglePlayerControllable(playerid, 1);
        }
      }
    }
    return 1;
}
SelecMenu = Es la variable que definimos para que se vean los menus, es decir, los detecta cuando ponemos el comando. como por ejemplo: EjemploMenu.

Despuйs de que hicimos eso, nos falta una cosa, como estбs congelado al ponerlo, debemos descongelarlo, y con eso hacemos lo siguiente:

Nos vamos a OnPlayerExitedMenu y ponemos esto:


pawn Код:
public OnPlayerExitedMenu(playerid)
{
    new Menu:SelecMenu = GetPlayerMenu(playerid);
    if(Menu:SelecMenu == EjemploMenu)
    {
        TogglePlayerControllable(playerid, 1);
    }
    return 1;
}
Aqui definimos SelecMenu tambien, y con TogglePlayerControllabe, cuando estб en uno, se descongela, tambien podemos usar false y true.

PD: Si usted no lo quiere que lo congele cuando abra el menu, quitele el TogglePlayerControllabe y ya. y si lo quita, quite lo del OnPlayerExitedMenu, ya que no vas a congelarlo cuando abra el menu.




Espero que le haya gustado el tutorial, y si van a poner comentarios negativos. por favor decir el porquй.
Y tambien si van a criticar, hacerlo constructiva.


Algun error o algo, avisarme. Muchas gracias
Reply
#2

Se ve bien. buen trabajo
Reply
#3

Bien explicado, Buen Post
Reply
#4

pawn Код:
new :Menu:EjemploMenu;
Quitб el : primero, quedando:

pawn Код:
new Menu:EjemploMenu;
Reply
#5

Buen tutorial, bien explicado.
Reply
#6

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
pawn Код:
new :Menu:EjemploMenu;
Quitб el : primero, quedando:

pawn Код:
new Menu:EjemploMenu;
Gracias por decirme, fue un error mio.

Gracias a todos!
Reply
#7

me sale unvalid function or declaration cuando pongo los:

new Menu:SelecMenu;
SelecMenu = GetPlayerMenu(playerid);
if(SelecMenu == EjemploMenu)
{
switch(row)
{
case 0:
{
GivePlayerWeapon(playerid, 24, 500);
SendClientMessage(playerid,COLOR_ROJO,"Has obtenido una Desert Eagle con 500 balas");
TogglePlayerControllable(playerid, 1);
}
case 1:
{
GivePlayerWeapon(playerid, 22, 500);
SendClientMessage(playerid,COLOR_ROJO,"Has obtenido una 9mm con 500 balas");
TogglePlayerControllable(playerid, 1);
}
}
}
return 1;
}

me podrias desir por q me sale el error?
Reply
#8

Quote:
Originally Posted by AoKDeviL
Посмотреть сообщение
me sale unvalid function or declaration cuando pongo los:

new Menu:SelecMenu;
SelecMenu = GetPlayerMenu(playerid);
if(SelecMenu == EjemploMenu)
{
switch(row)
{
case 0:
{
GivePlayerWeapon(playerid, 24, 500);
SendClientMessage(playerid,COLOR_ROJO,"Has obtenido una Desert Eagle con 500 balas");
TogglePlayerControllable(playerid, 1);
}
case 1:
{
GivePlayerWeapon(playerid, 22, 500);
SendClientMessage(playerid,COLOR_ROJO,"Has obtenido una 9mm con 500 balas");
TogglePlayerControllable(playerid, 1);
}
}
}
return 1;
}

me podrias desir por q me sale el error?
Eso tiene que ir en la public OnPlayerSelectedMenuRow asi:

pawn Код:
public OnPlayerSelectedMenuRow(playerid, row)
{
    new Menu:SelecMenu;
    SelecMenu = GetPlayerMenu(playerid);
    if(SelecMenu == EjemploMenu)
    {
        switch(row)
        {
            case 0:
            {
            GivePlayerWeapon(playerid, 24, 500);
            SendClientMessage(playerid,COLOR_ROJO,"Has obtenido una Desert Eagle con 500 balas");
            TogglePlayerControllable(playerid, 1);
            }
            case 1:
            {
            GivePlayerWeapon(playerid, 22, 500);
            SendClientMessage(playerid,COLOR_ROJO,"Has obtenido una 9mm con 500 balas");
            TogglePlayerControllable(playerid, 1);
        }
      }
    }
    return 1;
}
Reply
#9

bien ya pude solucionar errores pero cuando intento crear otro menu me lo ago me compila y me abre bien el juego
pero cuando pongo el comando para abrir el otro menu no se me ve nada solo el cuadro negro en chikito

1er menu se llama en el titulo del menu Armas
aqui tengo las armas normales sniper deagle etc

2do menu se llama en el titulo del menu Armas2
aqui puse accesorios como sierra cuchillo etc pero no se
ve nada solo el cuadro en chikito
bueno gracias y buen aporte

Reply
#10

Perdonen la ignorancia, dado a que uso puros dialogs, ese menu es el gris que sale en los ammunations y asi no?

Buen aporte, saludos
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)