Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Neste tutorial espero ensina-los a criar um mod simples, composto por uma janela e um botão, para ativa-la e desativá-la.
 
O mod deve ficar mais ou menos assim:
 
4CkIZjq.png
 
 

• Entre na pasta mods do seu otclient, e crie um arquivo com um nome quaisquer, como por exemplo, o nome que quer para seu mod,  o meu, vou chamar de "tutorial".
 
Dentro da pasta criada, crie um novo arquivo com extensão "otmod", coloque o nome do seu mod nele, eu vou colocar o nome de "tutorial", ficando "tutorial.otmod": nbLn5wq.png
 
• Dentro do seu arquivo de extensão "otmod" adicione o seguinte código:
 

Module
  name: 
  description: 
  author: 
  website: 
  version: 

  autoload: 
  autoload-priority: 

  scripts: [  ]

  @onLoad: 
  @onUnload: 

 
• Explicando
 
Dai você me pergunta por que isso está identado dessa forma?

Module
  name: 

Com dois espaços antes de "name:"?
Porque "Module" é uma declaração do tipo de arquivo que está sendo utilizado, já o "name:", é um componente do "Module", por isso, ele deve estar dentro de "Module", caso contrário, poderá ocorrer erros.

 

Nesta linha:

Module

Ele está declarando que este arquivo é um modulo, uma modificação para seu client.
 
 
 
Nesta linha:

  name: 

Aqui, estará sendo declarado o nome do seu módulo, eu vou colocar o nome "Tutorial":

  name: Tutorial

Ao clicar no gerenciador de módulos, ele irá mostrar o seu mod com o nome escolhido:84nJGbS.png
 
 

Nesta linha:

  description: 

Aqui, entrará a descrição do seu mod, por exemplo:

  description: Um mod simples.

Irá mostrar mais ou menos assim:
3y51NjM.png
 
 
 
Nesta linha:

  author: 

Entrará o seu nome, ou seja, o nome de quem criou o mod(autor óbvio), por exemplo:
 

  author: Snowsz

Ficaria mais ou menos assim:
Wafv2vj.png
 
 
 
Nesta linha:

  website: 

Você pode declarar o seu site, por exemplo:
 

  website: tibiaking.com

Ficaria mais ou menos assim:
M7MsrrO.png
 
 
 
Nesta linha:

  version: 

Você pode colocar a versão do seu mod, por exemplo:

  version: 1.0

Ficaria mais ou menos assim:
RLyonHV.png
 
 
A parte com explicação gráfica terminou  :O!
 
 
 
Nesta linha:

  autoload: 

Será determinado se o seu mod irá ser carregado automaticamente, por exemplo:
 
Exemplo 1:

  autoload: false

Assim, seu mod só irá ser carregado manualmente, você terá que ir no gerenciador de módulos e clicar em carregar para inciar seu mod.
 
Exemplo 2:
 

  autoload: true 

Assim, seu mod só irá ser carregado automaticamente, sem a necessidade de clicar para ser carregado.
 
 
 
Nesta linha:

  autoload-priority: 

Será determinada a prioridade de carregamento do seu mod, "Como assim?", é simples, ele irá carregar antes ou depois de outro mod, isso determina em que posição de carregamento seu mod deve estar, como por exemplo, em primeiro lugar  :LOL:, um exemplo de prioridade:

  autoload-priority: 1000

Acho que não tem nenhum mod com essa prioridade? Hehe, será um dos primeiros a carregar!
 
 
 
Nesta linha:

  scripts: [  ]

Será determinado os scripts carregados pelo seu módulo, os scripts usado por ele, por exemplo:

  scripts: [ tutorial ]

Ele irá busca um arquivo com o nome tutorial.lua na mesma pasta que ele estiver, e carregará tudo que tem dentro daquele arquivo.
 
 
 
Nesta linha:

  @onLoad: 

Será determinado que função o seu mod irá chamar ao iniciar, por exemplo:
 

  @onLoad: print("Hello World!")

Irá mostrar uma mensagem no seu terminal do otclient.
 
 
 
Por fim, nesta linha:

  @onUnload: 

Será determinado que função o seu mod irá chamar ao ser descarregado, ao se desligar, por exemplo:

  @onUnload: print("Bye World! ;(")

Irá mostrar uma mensagem no seu terminal do otclient.
 
Bom, a configuração que usaremos no nosso mod simples será essa:
 

Module
  name: Tutorial
  description: Um mod simples.
  author: Snowsz
  website: tibiaking.com
  version: 1.0
 
  autoload: true
  autoload-priority: 1000
 
  scripts: [ tutorial ]
 
  @onLoad: init()
  @onUnload: terminate()

 
Mexa apenas no que souber ;)
 
 

 
Na pasta do seu mod, crie um novo arquivo, com o nome "tutorial", ele deverá conter a extensão "lua", ficando "tutorial.lua", que é o arquivo de script setado no nosso "tutorial.otmod":

  scripts: [ tutorial ]

Dentro dele, coloque o seguinte código:

function init()
        tutorialWindow = g_ui.displayUI('tutorial.otui')
        tutorialWindow:hide()
        
        tutorialButton = modules.client_topmenu.addRightButton('tutorialButton', tr('Exemplo'), 'icone', onoff, true)
end

function terminate()
        tutorialWindow:hide()
end

function onoff()
    if tutorialWindow:isVisible() then
        tutorialWindow:hide()
    else
        tutorialWindow:show()
    end
end

A função "init()" é a função chamada pelo seu mod, ao iniciar, a função "terminate()", é chamada pelo seu mod, ao ser desligado.

Na função "init()", em uma de suas linhas podemos encontrar isso:

        tutorialWindow = g_ui.displayUI('tutorial.otui')

Onde tem "tutorialWindow", está sendo declarado uma variável global, um iniciante em lua deve saber o que é, então não vou explicar.
Dentro de tal variável, há uma função, "O que essa função faz?", ela executa os elementos contidos em um arquivo, que seria os arquivos de extensão "otui", nela, estaremos executando o "tutorial.otui".
 
 
Nesta linha:

        tutorialWindow:hide()

Ele executa uma função na variável "tutorialWindow", que seria uma função para esconder a janela, pois, o que estava contido no "tutorial.otui" seria uma janela que criaremos logo logo.
 
Nesta linha:

        tutorialButton = modules.client_topmenu.addRightButton('tutorialButton', tr('Exemplo'), 'icone', onoff, true)

Está sendo declarado uma variável global, nela, está contido a referencia de uma função, que seria um botão adicionado ao lado direito do menu, exemplo:
sYrnuha.pngUtilizei a imagem de ícone do otclient para demonstração.
 
Explicando a função:
Sua base é essa:

modules.client_topmenu.addRightButton(id, description, icon, callback, front)

Id: Será o id dado ao botão, para melhorar o acesso.
 Description: É a descrição do botão, ao passar o mouse em cima, aparecerá um texto.
 Icon: É a imagem do botão, como a que eu utilizei no exemplo, usei o ícone do otclient.
 Callback: É uma função chamada ao clicar nele.
 Front: Define se o botão será adicionado na frente ou atrás dos demais botões do seu menu.
 
 
Explicando a função "terminate()", na sua única linha podemos encontrar isso:

        tutorialWindow:hide()

É o seguinte, ao seu mod descarregar, ele irá esconder sua janela criada.
 
 
Explicando a função "onoff()", nas suas linhas podemos encontrar isso:

    if tutorialWindow:isVisible() then
        tutorialWindow:hide()
    else
        tutorialWindow:show()
    end

Mas bem, o que isso faz? Simples, "tutorialWindow:isVisible()", ele checa se a janela está visível, se estiver, ele irá esconde-la "tutorialWindow:hide()", caso a janela não esteja visível, ele irá mostra-la "tutorialWindow:show()", essa é a utilidade da função utilizada no botão do menu.
 
 
 
Agora, na pasta do seu mod, crie um novo arquivo, com o nome de "tutorial", a extensão dele deve ser "otui", ficando "tutorial.otui", dentro desse arquivo, adicione isso:

MainWindow
  id: tutorialwindow
  height: 255
  width: 438
  !text: tr("Mod simples")

Explicando:
 
"MainWindow", seria o objeto que irá ser utilizado pelo arquivo, no caso, uma janela.
 "id", o id, estaria setando um id para a sua janela.
 "height", seria a altura da sua janela, do "MainWindow".
 "width", seria a largura da sua janela, do "MainWindow".
 "!text", seria o texto inserido como título de sua janela, a função chamada nele "tr()", chama uma tradução para aquela frase, caso não tenha ficaria aquilo mesmo, caso tenha, iria mudar para outro texto traduzido.
 
 
 
 
Bom gente, espero que tenham gostado do tutorial, eu não sou bom com tutoriais... Se tiver me perdido peço desculpas, qualquer erro podem postar aqui que irei corrigir, se eu tiver me enrolado em algo, me desculpem, dei várias pausas enquanto fazia isso kk', espero que tenham entendido tudo.
 
Créditos: Snowsz

Editado por Snowsz (veja o histórico de edições)

  • Respostas 10
  • Visualizações 4.8k
  • Created
  • Última resposta

Top Posters In This Topic

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo