Página 1 de 1

Como criar menus

Enviado: 15 Set 2019, 22:45
por Junior_Djjr
Imagem
[english]
  


Como criar menus no estilo original do jogo

Disponível somente no GTA SA, o sistema de menu do jogo é de fato muito simples de usar.
 
Os comandos principais se resumem à isto:
CREATE_MENU
SET_MENU_COLUMN
GET_MENU_ITEM_SELECTED
DELETE_MENU
 
E você precisa criar algumas entradas GXT:
Como usar entradas GXT (GXT entry)
 
E aqui está um exemplo completo:

Código: Selecionar tudo

SCRIPT_START
{
    NOP

    LVAR_INT menu selected

    WHILE TRUE
        WAIT 0

        IF TEST_CHEAT "MENU"

            // Example: 08D4: create_menu 'IE09' position 29.0 170.0 width 180.0 columns 1 interactive 1 background 1 alignment 0 store_to $1153
            CREATE_MENU MENUNM (30.0 170.0) (180.0) 1 TRUE TRUE 0 (menu)
            SET_MENU_COLUMN menu 0 DUMMY (ITEM1 ITEM2 ITEM3 DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY)

            WHILE TRUE
                WAIT 0

                IF IS_BUTTON_PRESSED PAD1 CROSS // sprint key
                    GET_MENU_ITEM_SELECTED menu (selected)
                    SWITCH selected
                        CASE 0
                            PRINT_STRING "Item 1 is selected" 100
                            BREAK
                        CASE 1
                            PRINT_STRING "Item 2 is selected" 100
                            BREAK
                        CASE 2
                            PRINT_STRING "Item 3 is selected" 100
                            BREAK
                    ENDSWITCH
                    //BREAK //uncomment it to break when selected
                ENDIF

                IF IS_BUTTON_PRESSED PAD1 TRIANGLE // action key
                    BREAK
                ENDIF

            ENDWHILE

            DELETE_MENU menu

        ENDIF

    ENDWHILE

}
SCRIPT_END
Eu usei as entradas GXT chamadas MENUNM e ITEM1, ITEM2 e ITEM3:

Código: Selecionar tudo

MENUNM Menu name
ITEM1 Item 1
ITEM2 Item 2
ITEM3 Item 3
Mas como eu deixei super claro no tutorial de como usar entradas GXT, é necessário inventar nomes únicos para não causar conflitos! Não use estes nomes!!! Troque eles!!!
Se você ainda não leu o tutorial de como usar entradas GXT, leia!!!

Imagem

Todos os DUMMY são placeholders, ou seja, indica que não há texto nenhum ali. Se no comando SET_MENU_COLUMN dá erro de quantia de argumentos, provavelmente faltou ou sobrou algum DUMMY ali. São sempre 12 itens.

Leia atentamente o script de exemplo para entender como funciona e assim fazer as manipulações necessárias para o seu caso.

A lógica é basicamente esta:
  • O menu é criado, enviando o nome, tamanho, número de colunas e outras propriedades.
  • É colocado cada item do menu.
  • Entra um loop (utilizando WHILE TRUE e BREAK).
  • Checa se pressionou o comando de seleção, que é o comando de correr (X no controle de PS2; Espaço no teclado).
  • - Então pega o atual item selecionado e usa SWITCH para fazer diferentes ações a cada linha. Perceba que a primeira linha começa a partir do 0.
  • Checa se pressionou o comando de cancelar, que é o comando de ação (Triângulo no controle de PS2; Enter no teclado).
  • - Então entra no BREAK, que quebra o WHILE TRUE e continua abaixo dele.
  • Abaixo e fora do WHILE TRUE nós temos o comando para deletar o menu, e lá o trabalho acaba e volta para o loop principal de ativação.
Eu recomendo altamente que você digite MENU e veja todos os comandos relacionados com menus para entender as suas possibilidades.
Há vários comandos que podem lhe ser úteis, como HIGHLIGHT_MENU_ITEM e SET_ACTIVE_MENU_ITEM.
Você também pode usar duas colunas, algo que é útil para por exemplo menus de compra com preço.

Note que só é possível 12 itens. Se você precisa de um menu com mais de 12 itens, eu recomendo que no último item você adiciona algo como "Próximo" para passar para a próxima página ou algo assim, deste modo você terá itens infinitos.


"Eu quero algo mais avançado que isto!"

Mas se você quer de fato enfiar as mãos na lama e criar o seu próprio sistema de menu e interface, você pode. Será mais difícil de começar, mas quando você fizer, terá um total controle.
Foi assim que eu criei toda a interface do Tuning Mod: Shine GUI - Crie interfaces personalizadas. Mas esse sistema é muito manual, pois eu queria algo mais maleável, então não espere nada pronto, você terá que usar a cabeça.

Se você está à procura de um sistema de menu / interface realmente avançado para um projeto grande, o melhor a se fazer é utilizar MoonLoader com ImGui, pois ainda não existe nada neste nível para CLEO.
 

Re: Como criar menus

Enviado: 05 Out 2019, 17:12
por Und
porque copiando seu codigo nao compila?

Re: Como criar menus

Enviado: 05 Out 2019, 17:28
por nadalao
Und escreveu:
05 Out 2019, 17:12
porque copiando seu codigo nao compila?

acredito que você não tem WHILE TRUE instalado

Re: Como criar menus

Enviado: 06 Out 2019, 11:28
por Und
instalei, compilei e as opcoes do menu nao aparecem

Re: Como criar menus

Enviado: 23 Jun 2020, 15:32
por wooZ
Ta dando esse erro aqui no exemplo,e eu não sei como corrigir kk
Imagem

Re: Como criar menus

Enviado: 23 Jun 2020, 16:27
por Um_Geek
SpoilerAbrir
wooZ escreveu:
23 Jun 2020, 15:32
Ta dando esse erro aqui no exemplo,e eu não sei como corrigir kk
Imagem

isto ai é uma configuração do cmpilador
No caso tem que ir nas configurações do vscode e por este -fbreak-continue

Código: Selecionar tudo

{
	"gta3script.compiler":"Y:/gt3script/gta3sc.exe",
	"gta3script.gamebin": {
		"gtasa":["Y:/GTA_SA.EXE"],
		"gtavc":[""],
		"gta3":[""]
	},
	"gta3script.buildflags": {
		"gtasa":[
		"-fno-entity-tracking",
		"--guesser",
		"-fbreak-continue",
		"--cs"
		],
		"gtavc":[
		"--cs"
		],
		"gta3":[
		"--cs"
		]
	},

Re: Como criar menus

Enviado: 23 Jun 2020, 16:44
por wooZ
Um_Geek escreveu:
23 Jun 2020, 16:27
SpoilerAbrir
wooZ escreveu:
23 Jun 2020, 15:32
Ta dando esse erro aqui no exemplo,e eu não sei como corrigir kk
Imagem

isto ai é uma configuração do cmpilador
No caso tem que ir nas configurações do vscode e por este -fbreak-continue

Código: Selecionar tudo

{
	"gta3script.compiler":"Y:/gt3script/gta3sc.exe",
	"gta3script.gamebin": {
		"gtasa":["Y:/GTA_SA.EXE"],
		"gtavc":[""],
		"gta3":[""]
	},
	"gta3script.buildflags": {
		"gtasa":[
		"-fno-entity-tracking",
		"--guesser",
		"-fbreak-continue",
		"--cs"
		],
		"gtavc":[
		"--cs"
		],
		"gta3":[
		"--cs"
		]
	},
Era isso mesmo,arigato <3