Ir para conteúdo

[Aula GUI] - Tutorial do Gerenciador Menu GUI (Skript)


!Afonso

Posts Recomendados

Aula GUI(translate) - Tutorial do Gerenciador Menu GUI (Skript)

 

Fala rapaziada, quanto tempo, beleza? Aqui é o !Afonso e venho trazer novamente um tutorial free para o fórum traduzido sobre Menu GUI.
Espero que com ele consiga ajudar muita gente! Créditos de antemão:
Tuke_Nuke.
Recomendo ver meu primeiro tutorial antes (porém não necessário):

 

 

Bom... vamos lá, GUI Manager(Gerenciador Menu GUI) é um recurso do add-on TuSKe para te ajudar a fazer suas GUI's mais fácil, tornando-o automaticamente para lidar com qualquer maneira possível que o jogador tenha para tirar o item ok?
Link para download do
TuSKe: https://www.mediafire.com/file/9br10nwdx6cbewj/TuSKe.jar/file

 

 

Sintaxe do menu gui

 

1. Abrir Inventário:

#Efeito
open (virtual %inventory type% inventory [with size %integer%] [(named|with (nome|titulo)) %string%]) to %players%

#Somente a expressão entre parênteses é do TuSKe, que retorna um inventário em branco.
#O resto é apenas efeito do Skript vanilla(em breve um tutorial sobre).

 

2. Criar o Menu GUI:

#Efeitos
#Para não fazer nada:
(format|create|make) [a] gui slot %integers% of %players% with %item stack% [to [do] nothing]
#Para fechar ao clicar:
(format|create|make) [a] gui slot %integers% of %players% with %item stack% to close [(using|with) %click action% [(button|click|action)]]
#Pedir permissão para clicar no evento e fechar:
(format|create|make) [a] gui slot %integers% of %players% with %item stack% to [close then] (run|exe[cute]) %sender% command %string% [with permission %string%] [(using|with) %click action% [(button|click|action)]] [(using|with) cursor [item] %item stack%]
#Nao pedir permissão para clicar no evento e fechar:
(format|create|make) [a] gui slot %integers% of %players% with %item stack% to [close then] (run|exe[cute]) function %function% [(using|with) %click action% [(button|click|action)]] [(using|with) cursor [item] %item stack%]
#Executar o evento/clique:
(format|create|make) [a] gui slot %integers% of %players% with %item stack% to (run|exe[cute]) [gui [click]] event

 

3. Remover o Menu GUI:

#Efeitos
(unformat|remove) [the] gui slot %integers% of %players%

(unformat|remove) [all] [the] gui slots of %players%

 

4. Condições:

%player% has [a] gui
%player% does(n't| not) have [a] gui
 
slot %number% of %player% is [a] gui
slot %number% of %player% is(n't| not) [a] gui

 

 

O que os efeitos fazem

 

Existem 4 tipos de ações: do nothing (também conhecido como unstealalable do SkQuery), run command, run function e run event.

Os primeiros 3 tipos tem a opção de fechar a GUI ao clicar nela, basta incluir o to close. E também tem a opção de fazer a ação apenas com um
determinado tipo de clique, basta incluir o
using %clicktype%
Possíveis click types:

1. Mirreski's Fork (Skript V2.2-8B)

#Efeitos
left
right
shift left
shift right
double click
middle
number key
drop
control drop

 

Bensku's fork (Mais usado para 1.9+, também o tipo é chamado de "click action" nessa bifurcação.

O run command e o run function têm a possibilidade de realizar a ação se o jogador clicar nele usando um item específico em seu cursor.
Basta incluir o
(using|with) cursor [item] %itemstack%.

Run command permite que você execute um comando quando um jogador clicar nele, você pode escolher entre console e player para o sender(remetente), você também tem with permission %string% para fazer com que o jogador execute o comando com a permissão dada (a permissão é ida após o comando).

Run function permite executar uma função quando um jogador clica nela, o formato é o mesmo que chamar uma função simples no Skript ().

Por último o Run event, é apenas no caso de você querer executar mais códigos e ainda quiser que sua GUI esteja protegida contra itens roubados.
Esse não têm detalhes e só rodará um evento ao clicar nos slots de GUI que usam esse efeito.

 

[on] gui (action|click)

#Values(valores):
player : the player who clicked on item.

event-inventory : The inventory (Até o momento só pode ser o inventário principal)

event-number : The slot number

event-item : the item in cursor of the player
#Nota: não é o item no slot, é o cursor. Se você quiser o item no slot, use os dois valores acima: 'slot event-number of event-inventory'

event-type : the click type (left, right ...)
#No caso de você ter o Bensku's fork, é preferível usar 'event-string', que retorna a mesma coisa, mas na forma de string.

 

 

Estrutura básica

 

Para fazer um gui, você só precisa de duas etapas simples:

Use qualquer efeito que abra um inventário.
Use qualquer um dos efeitos acima para criar um gui.

 

Códigos de exemplo:

1. Testando todos os exemplos:

command /gui:
    trigger:
        if sender is console:
            broadcast "Isso foi executado pelo console!"
            stop
        if player has permission "*":
            send "O jogador executou este comando com permissão " "*" ""
            wait a tick
            if player doesn't have permission "*":
                send "O jogador não tem mais essa permissão."
            else:
                send "Bem, o jogador ainda tem essa permissão, mas talvez ele seja um op?"
        else:
            send "O jogador executa este comando sem permissão."

command /guiExemplo:
    trigger:
        open virtual chest inventory to player
        format gui slot 0 of player with stone named "Não fará nada"
        format gui slot 1 of player with stone named "Vai apenas fechar" to close
        format gui slot 2 of player with stone named "Vai fechar, mas apenas pressionando uma tecla numérica" to close using number key
        format gui slot 3 of player with stone named "Isso fará o jogador executar um comando, mas ele pode não ter permissão" to run player command "/gui"
        format gui slot 4 of player with stone named "Isso fará com que o jogador execute um comando com" "*" "permissão" to run player command "/gui" with permission "*"
        format gui slot 5 of player with stone named "Isso fará com que o console execute um comando" to run console command "/gui"
        format gui slot 6 of player with stone named "Ele irá executar a função doSomething()" to run function doSomething()
        format gui slot 7 of player with stone named "Ele irá fechar e, em seguida, executar a função doSomething()" to close then run function doSomething()
        format gui slot 8 of player with stone named "Será executado doSomething() se você clicar nele com uma stone" to run function doSomething() with cursor stone
        format gui slot 9 of player with stone named "Ele irá executar o evento gui" to run gui event
 
function doSomething(i: int = 0): #TuSKe executará esta função mesmo que tenha sido carregada após o comando acima. Precisa 1.7.2+ para isso.
    broadcast "Funcionou"
         
on gui click:
    send "Foi executado em evento separado"

 

2. Exemplo de ação múltipla:

function changeName(p: Player, clicktype: String):
    set {_number} to name of slot 4 of {_p}'s current inventory parsed as number #Requer o SkQuery ou o Bensku.
    if {_clicktype} is "left":
        remove 1 from {_number}
    else if {_clicktype} is "shift left":
        remove 100 from {_number}
    else if {_clicktype} is "right":
        add 1 to {_number}
    else if {_clicktype} is "shift right":
        add 100 to {_number}
    set name of slot 4 of {_p}'s current inventory to "%{_number}%"

command /multiplaacaoExemplo:
    trigger:
        open virtual dispenser inventory named "Exemplo de ação múltipla" to player
        set {_item} to diamond named "1"
        set line 1 of lore of {_item} to "Clique com o botão esquerdo: remove 1"
        set line 2 of lore of {_item} to "Com shift esquerdo, clique: remove 100"
        set line 3 of lore of {_item} to "Clique com o botão direito: add 1"
        set line 4 of lore of {_item} to "Com shift direito, clique: add 100"
        format gui slot 4 of player with {_item} to run function changeName(player, "left") with "left" click
        format gui slot 4 of player with {_item} to run function changeName(player, "shift left") with "shift left" click
        format gui slot 4 of player with {_item} to run function changeName(player, "right") with "right" click
        format gui slot 4 of player with {_item} to run function changeName(player, "shift right") with "shift right" click

 

3. Múltiplas páginas GUI:

function openMenu(p: Player, type: String):
    if {_type} is "page 1":
        open virtual chest inventory with size 1 named "Página 1" to {_p}
        make a gui slot 0 of {_p} with stone named "Vá para página 2" to run function openMeny({_p}, "page 2")
    else if {_type} is "page 2":
        open virtual chest inventory with size 1 named "Página 2" to {_p}
        make a gui slot 0 of {_p} with stone named "Vá para página 3" to run function openMeny({_p}, "page 3")
    #E assim por diante até o final da página...
    else if {_type} is "page 3":
        open virtual chest inventory with size 1 named "Página 3" to {_p}
        make a gui slot 0 of {_p} with stone named "Volte para página 1" to run function openMeny({_p}, "page 1")

 

 

Coisas que você deve saber

 

Se você quiser apenas alterar o item depois de já formatado um slot, você não precisa formatá-lo novamente,
apenas use qualquer expressão para alterar o slot de um inventário, como
set slot 0 of player's current inventory to {_newItem}.
Se você formatar o inventário com um item
air, ele criará um slot bloqueado. O jogador não pode colocar nenhum item nesse slot.
Você pode formatar o mesmo slot com mais de uma ação, como executar um comando ao usar o clique esquerdo e uma função ao usar o clique direito.
No evento
gui click, você precisará verificar se o nome do event-inventory é o nome do gui que você deseja, pois mais scripts podem ter este evento.
Se você usar o
uncancel event no evento gui click, isso permitirá que o jogador remova o item e travará o slot depois disso (por causa do motivo acima), então você pode apenas usar unformat the gui event-number of player se você não não quer que seja trancado.
A partir da 1.7.2, você pode usar funções que ainda não foram carregadas ou estão abaixo do código, o TuSKe obterá essa função quando a interface do usuário for aberta, mas se não conseguir encontrar nenhuma função, obviamente não fará nada.

Obrigado por tudo, se gostou da aquele iike maroto e se você encontrou algo errado ou tem alguma sugestão/exemplo para dar, basta entrar em contato comigo e terei o maior prazer. #AvanteGB

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...