Jump to content

mini tutorial de como fazer um mondulo(mods)


Recommended Posts

O que são?
Modules são scripts que fazem alterações no cliente, se você compilou seu otclient com proteção contra bot, essas modificações se restringirão quase completamente a GUI, o que difere os MODs dos Modules é que os Modules são os scripts essenciais do otclient e os MODs são adições criadas por usuários, portanto se você quer modificar algo que já existe, procure na pasta modules, se você quer criar algo novo, crie na pasta MODs.




Como eu crio um novo MOD?

Primeiro crie uma pasta dentro da pasta mods, por exemplo, meu_mod, o modulo se consiste não apenas de scripts Lua mas também de 2 arquivos: meu_mod.otmod e meu_mod.otui, sendo que o arquivo .otmod é essencial para qualquer modulo enquanto o .otui serve apenas para mods que contenham uma GUI dentro do otclient.

Observe este exemplo de arquivo .otmod:
 


Module
name: otclient_meumod
description: Olha mãe, um mod
author: Eventide
website: http://otserv.com.br

autoload: true
autoload-priority: 1000
sandbox: true

@onLoad: |
dofile 'meu_mod'
meu_mod.init()

@onUnload: |
meu_mod.terminate()

 
 
Note que há um certo numero de espaços entre certas partes do código, este numero de espaços é essencial e não deve ser mudado, o script é extremamente sensível, recomendo que você copie e cole sempre ao invés de digitar tudo, o mesmo vale para o arquivo .otui, agora vou explicar parte por parte, exceto as que são óbvias:
 

autoload: true
autoload-priority: 1000
sandbox: truePadrão, não mude.

@onLoad: |
dofile 'meu_mod'
meu_mod.init()

@onUnload: |
meu_mod.terminate()

 
 
Muito bem, se você está olhando este tutorial provavelmente sabe o que o dofile faz, certo? Não? dofile executa um determinado script, portando esse 'meu_mod' deve ser o nome do script principal do seu modulo, que deve ser, mas pode não ser, o nome do seu modulo, claro que o script tem que ter a extensão .lua, mas não é necessário especificar isso no dofile.
meu_mod.init() e meu_mod.terminate() são duas funções padrão, que ficarão dentro de uma tabela, a tabela do seu modulo, voltarei nisso depois de explicar sobre o arquivo otui.

Agora um exemplo de arquivo .otui:
 

MainWindow
!text: tr('Meu MOD')
size: 160 450

@onEnter: meu_mod.destroy()
@onEscape: meu_mod.destroy()

Label
id: meuModLabel
!text: tr('Oi, eu sou um mod')
width: 130
height: 200
anchors.top: prev.top
anchors.left: prev.left
margin-top: 5
margin-left: 120
    
Button
id: meuModButton
!text: tr('Bem-vindo')
width: 100
height: 15
anchors.right: parent.right
anchors.bottom: parent.bottom
margin-right: -6
margin-bottom: -5
@onClick: meu_mod.welcome()

 
 
Percebe a semelhança com um código CSS? Pois é, essa é uma linguagem baseada no CSS desenvolvida especialmente para o otclient, o nome dessa linguagem é OTML, agora explicando parte por parte.

MainWindow é a janela que será usada para a interface, neste caso, MainWindow é o padrão para a janela do cliente.

!text é o nome da janela, sempre use a função tr() para colocar a string.

size é o tamanho da janela, a sintaxe é: largura, altura.

@onEnter é a função que é chamada quando se aperta a tecla enter.


@onEscape é a função que é chamada quando se aperta a tecla esc.

Label é usado na maioria das vezes para mostrar um texto.

id deve ser um nome único e sem espaços que represente este texto.

!text é o texto que será mostrado na label, novamente a string deve ser colocada dentro da função tr().

width é a largura da label.

margin-right que funciona igual o CSS, quanto maior o valor, mais ele se posicionará contra a direita, quanto menor, a favor.

margin-bottom é igual ao margin-right, mas em vez de contra/favor a direita ele funciona para baixo.

@onClick deve ser configurado com a função que é chamada quando se clica no butão.
 

O script .lua

Agora chegamos a parte final deste tutorial, como fazer o seu script, a parte principal do mod.
Primeiro crie o arquivo, que aqui será chamado de meu_mod.lua, observe como ficou o arquivo a partir do que já foi feito até agora:
 


meu_mod = {}
modWindow = nil

function meu_mod.init()
    connect(g_game, {onGameStart = meu_mod.run})
end

function meu_mod.terminate()
    disconnect(g_game, {onGameStart = meu_mod.run})
end

function meu_mod.run()
    modWindow = g_ui.displayUI('meu_mod.otui')
end

function meu_mod.welcome()
    g_game.talk("Este é o meu modulo!")
end

function meu_mod.destroy()
modWindow:hide()
end

Como eu acredito que já deixei bem claro o que faz maioria das funções, darei enfase a função init e terminate, a função init serve para alinhar os eventos do cliente com o seu script, e a terminate desfaz, isso é feito a partir das funções connect e disconnect, cuja sintaxe é:

connect(g_game, {eventoPadrão= meuEvento})

disconnect(g_game, {eventoPadrão= meuEvento})

Esse tutorial foi feito com o otclient 6.2.1 

 

mini tutorial que achei de otclient

creditos Evesys 

Edited by izac ximenes (see edit history)
Link to post
Share on other sites

Pelo que eu entendi, os mods são guias do clients como as DLLs certo?

Ou talvez possa ser quase semelhante á uma só que menos avançado.

Você sabe como posso criar uma barra de cooldown para pokétibia?

Tipo para o pokémon usar o poder sem precisar falar m1, m2 etc...

Link to post
Share on other sites

Falto bastante coisas a serem explicadas, mais como é um mini tutorial esta bom, Parabéns ao criado do tutorial e a você por trazer para o fórum.

O mesmo BananaFight, mais com um novo Nick.

 

 
Abra sua mente, sangue suga não vive sem um hospedeiro, Não faça script para os outros, ensine-os a fazer.
Link to post
Share on other sites

  • 1 year later...

Alguem pode me explicar sobre como editar as barras de digitar senha e numero da conta por favor?

Exemplo: 

 MenuLabel
    !text: tr('  Account name')
    anchors.left: parent.left
    anchors.top: parent.top
    text-auto-resize: true

  PasswordTextEdit
    id: accountNameTextEdit
    anchors.left: parent.left
    anchors.right: parent.right
    anchors.top: prev.bottom
    margin-top: 2

 

Como faço para jogar as barrinhas de digitar o numero da conta pra direita e deixar ela menor que a janela.. ?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Confirmação de Termo