Postado Maio 26, 2015 9 anos 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: • 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": • 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: Nesta linha: description: Aqui, entrará a descrição do seu mod, por exemplo: description: Um mod simples. Irá mostrar mais ou menos assim: 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: Nesta linha: website: Você pode declarar o seu site, por exemplo: website: tibiaking.com Ficaria mais ou menos assim: Nesta linha: version: Você pode colocar a versão do seu mod, por exemplo: version: 1.0 Ficaria mais ou menos assim: A parte com explicação gráfica terminou ! 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 , 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:Utilizei 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 Maio 27, 2015 9 anos por Snowsz (veja o histórico de edições)
Postado Maio 26, 2015 9 anos Autor Parabéns ficou muito bom o tutorial. Obrigado , espero que todos comecem a mexer no OTC.
Postado Maio 26, 2015 9 anos excelente tutorial, ficou bem fácil de entender pra quem não tem noção nenhuma(como eu).
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.