[Tutorial] Creating simple menu
#1

Introduзгo:
Eae galera a razao de eu estar criando este Tutorial estou cansado de peassoas me pedindo a como criar um menu igual ao do AmmuNation apesar desse menu ser bem old algumas pessoas curtem e no qual ficam me pedindo entaum vamos ao que entereзa:

Variavel Global(Obrigatoria):
Primeiramente criaremos uma variavel global para armazenar o menu; a mais oque й variavel global? uma variavel global pode ser usada em qualquer Callback(Public) ou oque for.
pawn Код:
new Menu:Tuto;
Criando o menu:

Bom agora vamos a criaзгo do menu colocaremos ele dentro da Callback(Public): OnGameModeInit

pawn Код:
Tuto = CreateMenu("Tuto", 2, 200.0, 100.0, 150.0, 150.0);
Argumentos:
Agora um pouco de uma explicaзгo sobre os argumentos CreateMenu.

pawn Код:
CreateMenu(title, columns, Float:x, Float:y, Float:col1width, Float:col2width);
Код:
title: The heading of the menu tнtulo: O tнtulo do menu
columns: The number here defines how much columns are used [2 is maximum] colunas: O nъmero aqui define quanta colunas sгo usadas [2 й mбxima]
Float:x: The heigth position of the menu on screen [left to right] Float: x: O heigth posicionam do menu na tela [esquerda para a direita]
Float:y: The width position of the menu on screen [up and down] Float: y: A posiзгo de largura do menu na tela [cima e para baixo]
Float:col1width: The width of the first column Float: col1width: A largura da primeira coluna
Float:col2width: The width of the second column Float: col2width: A largura da segunda coluna
Itens Menu:
Agora vamos adicionar alguns items no menu.

pawn Код:
AddMenuItem ( Tuto, 0 , "LS" ) ; AddMenuItem (Tuto, 0, "LS");
AddMenuItem ( Tuto, 0 , "LS" ) ; AddMenuItem (Tuto, 0, "LS");
AddMenuItem ( Tuto, 0 , "SF" ) ; AddMenuItem (Tuto, 0, "SF");
AddMenuItem ( Tuto, 0 , "SF" ) ; AddMenuItem (Tuto, 0, "SF");
AddMenuItem ( Tuto, 0 , "LV" ) ; AddMenuItem (Tuto, 0, "LV");
AddMenuItem ( Tuto, 0 , "LV" ) ; AddMenuItem (Tuto, 0, "LV");

AddMenuItem ( Tuto, 1 , "Grove Street" ) ; AddMenuItem (Tuto, 1, "Grove Street");
AddMenuItem ( Tuto, 1 , "Starfish Tower" ) ; AddMenuItem (Tuto, 1, "Torre Starfish");
AddMenuItem ( Tuto, 1 , "Wheel Arch Angels" ) ; AddMenuItem (Tuto, 1, "Wheel Arch Angels");
AddMenuItem ( Tuto, 1 , "Jizzys" ) ; AddMenuItem (Tuto, 1, "Jizzys");
AddMenuItem ( Tuto, 1 , "4 Dragons" ) ; AddMenuItem (Tuto, 1, "4 Dragons");
AddMenuItem ( Tuto, 1 , "Come-a-Lot" ) ; AddMenuItem (Tuto, 1, "Come-a-Lot");
Explicaзгo sobre "AddMenuItem":

pawn Код:
AddMenuItem(menuid, column, text);
Код:
menuid: O menuid do menu onde o item serб exibido
column: A coluna na qual o item deve ser indicado
text: O texto do item
Criando os Efeitos para os itens:

Ok, agora que nуs criamos um menu cheio com itens que deve acontecer quando vocк escolhe um item? In our example we want to make a teleportmenu, so we should get teleported to the position we choose. No nosso exemplo, queremos fazer uma teleportmenu, por isso devemos ser teleportado para a posiзгo que escolhemos. When a player selects an item on a menu the script calls the callback: public OnPlayerSelectedMenuRow(playerid, row). Quando um jogador seleciona um item em um menu o script chama o callback: OnPlayerSelectedMenuRow pъblica (playerid, row). The best way to do it is to do it with a switch, this is like several if statements to check if a variable is worth certain values. A melhor maneira de fazer isso й fazк-lo com uma chave, isto й como se vбrias declaraзхes para verificar se uma variбvel vale a pena certos valores. But first we only want these effects for the menu we want so we need to create a variable that holds what menu the player is looking at, this is done with 'GetPlayerMenu': Mas primeiro nуs sу queremos esses efeitos para o menu queremos por isso precisamos criar uma variбvel que contйm o menu do leitor estб olhando, isso й feito com 'GetPlayerMenu':

pawn Код:
new Menu:CurrentMenu = GetPlayerMenu(playerid);
Agora, quando alguйm escolhe algo no menu, sua menuid serгo salvas em 'CurrentMenu'.

Now we have to check that the menu they selected on is the menu we want: Agora temos que verificar que o menu selecionado no que й o menu que queremos:
pawn Код:
if (CurrentMenu == Tuto)
{
   // ...
}
Agora entre estes suportes й onde o 'switch' й, este verifica qual item o jogador selecionado ou 'linha' isso pode ser feito com if verificando o que й fila, mas a chave й uma maneira muito mais simples de escrever.

pawn Код:
if(CurrentMenu == Tuto)
{
    switch(row)
    {
        case 0: //Grove Street
        {
            SetPlayerPos(playerid, 2493.9133, -1682.3986, 13.3382);
            SetPlayerInterior(playerid, 0);
            SendClientMessage(playerid, 0xFFFFFFFF, "Bem vindo a to Grove Street");
        }
        case 1: //Starfish Tower
        {
            SetPlayerPos(playerid, 1541.2833, -1362.4741, 329.6457);
            SetPlayerInterior(playerid, 0);
            SendClientMessage(playerid, 0xFFFFFFFF, "Bem vindo a the top of Starfish Tower");
        }
        case 2: //Wheel Arch Angels
        {
            SetPlayerPos(playerid, -2705.5503, 206.1621, 4.1797);
            SetPlayerInterior(playerid, 0);
            SendClientMessage(playerid, 0xFFFFFFFF, "Bem vindo a the Wheel Arch Angels tuning-shop");
        }
        case 3: //Jizzys
        {
            SetPlayerPos(playerid, -2617.5156, 1390.6353, 7.1105);
            SetPlayerInterior(playerid, 0);
            SendClientMessage(playerid, 0xFFFFFFFF, "Bem vindo a Jizzy's Nightclub!");
        }
        case 4: //4Dragons
        {
            SetPlayerPos(playerid, 2028.5538, 1008.3543, 10.8203);
            SetPlayerInterior(playerid, 0);
            SendClientMessage(playerid, 0xFFFFFFFF, "Bem vindo a the Four Dragons Casino");
        }
        case 5: //Com-a-Lot
        {
            SetPlayerPos(playerid, 2169.1838, 1122.5426, 12.6107);
            SetPlayerInterior(playerid, 0);
            SendClientMessage(playerid, 0xFFFFFFFF, "Bem vindo a the Come-a-Lot casino!");
        }
    }
}
Explicaзгo do (switch):

Agora vou explicar como funciona o interruptor(switch), no topo, hб o seguinte:

isso define o que verificar, neste caso sua linha do menu, em seguida, entre as chaves em 'switch' hб 'caso, estas sгo as diferentes condiзхes que a variбvel no' suportes switch 'pode ser, vocк pode definir estas. Under the cases are more braces, this is where you put functions to take place if that case is the right one. De acordo com os casos sгo chaves mais, este й o lugar onde vocк coloca as funзхes a ter lugar se esse caso й o caminho certo.
Quando tudo й feito corretamente, como se eu tivesse mostrou nesses exemplos, os efeitos de itens de menu sгo criados com sucesso.

Ultimo Passo:

Criaremos um comando para abrir o menu de teles:

pawn Код:
if(strcmp(cmdtext, "/teles", true) == 0)
{
    ShowMenuForPlayer(Tuto,playerid);
    return 1;
}
Script Pronto:

pawn Код:
/ Filterscipt funcionalidade / Teste de menu
#include <a_samp>
 
#define TEST_MENU_ITEMS 6
 
new Menu:TestMenu = -1;
new TestMenuStrings[6][16] = {"Test1", "Test2", "Test3", "Test4", "Test5", "Test6"};
 
HandleTestMenuSelection(playerid, row)
{
    new s[256];
 
    if(row < TEST_MENU_ITEMS) {
        format(s,256,"Vocк selecionou item %s",TestMenuStrings[row]);
        SendClientMessage(playerid,0xFFFFFFFF,s);
    }
}
 
InitTestMenu()
{
    TestMenu = CreateMenu("Test Menu", 1, 200.0, 150.0, 200.0, 200.0);
        if(TestMenu == -1)
        {
            printf("A criaзгo do menu falhou!");
            return 0;
        }
    for(new x=0; x < TEST_MENU_ITEMS; x++) {
                AddMenuItem(TestMenu, 0, TestMenuStrings[x]);
    }
        return 1;
}
 
public OnFilterScriptInit()
{
    if(InitTestMenu())
        {
            printf("A criaзгo do menu de sucesso!");
        }
        return 1;
}
 
public OnPlayerSelectedMenuRow(playerid, row)
{
        new Menu:PlayerMenu = GetPlayerMenu(playerid);
 
        if(PlayerMenu == TestMenu) {
         HandleTestMenuSelection(playerid, row);
    }
        return 1;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/menutest", true) && TestMenu != -1)   {
             ShowMenuForPlayer(TestMenu, playerid);
             return 1;
    }
    return 0;
}
Creditos:


Pawn Programmer por me lembrar do "ShowMenuForPlayer Famosa."

|_MeGaTroN_| pelo "Tutorial"
Reply
#2

bom tutorial
pawn Код:
new Menu:Tuto;
pawn Код:
teleportmenu = CreateMenu("Tuto", 1, 200.0, 100.0, 150.0, 0);
deve ser
pawn Код:
Tuto = CreateMenu("Tuto", 1, 200.0, 100.0, 150.0, 0);
Reply
#3

Quote:
Originally Posted by Kostas'
Посмотреть сообщение
bom tutorial
pawn Код:
new Menu:Tuto;
pawn Код:
teleportmenu = CreateMenu("Tuto", 1, 200.0, 100.0, 150.0, 0);
deve ser
pawn Код:
Tuto = CreateMenu("Tuto", 1, 200.0, 100.0, 150.0, 0);
Thanks:

pawn Код:
Tuto = CreateMenu("Tuto", 2, 200.0, 100.0, 150.0, 150.0);
Reply
#4

Vocк deveria ter economizado em alguns pontos como: new s[256]; jб que usarб menos de 50 caracteres no mesmo.
Achei o nome do tуpico 'tosco' por estar nessa board rsrs.
O tutorial tб muito bem explicado, apesar de jб haver dialogs algumas pessoas gostam de menu's pela disponibilidade de criar multiplas colunas e alocar a caixa а qualquer canto da tela.

Nгo cheguei а ler por completo. Bom tutorial pelo que li. Parabйns.

Duvida: Vocк й o Will Smith?
Reply
#5

pawn Код:
new s[256];
pra noobs ¬¬ kk vlw

Nome ownante lek *-* rsrsr
Reply
#6

Mermao peguei essa frase da net tava by: Will Smith entaum coloquei os crйditos dele sou eu nгo .-.
Reply
#7

legal
a proposito meu nick tb veio dos transformers
'----------------'
Reply
#8

Demais! muito bom.
Reply
#9

Belo tuto parabens
Reply
#10

Quote:
Originally Posted by BrunoBSF
Посмотреть сообщение
Belo tuto parabens
Thanks!

Quote:
Originally Posted by Adrian Fahrenheit Tepes
Посмотреть сообщение
Demais! muito bom.
e noxx lek


Quote:
Originally Posted by THE_FALLEN
Посмотреть сообщение
legal
a proposito meu nick tb veio dos transformers
'----------------'
\o/ vc my mestre -.- vlw
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)