Ir para conteúdo

UsToOliNN

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Obrigado
    UsToOliNN deu reputação a izac ximenes em mini tutorial de como fazer um mondulo(mods)   
    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 
  2. Obrigado
    UsToOliNN recebeu reputação de jeremias em Video Aula C++ - Calculadora Basica   
    Olá rapaziada fiz um video ensinando alguns conceitos basicos de C++ e mostrei como criar uma calculadora basicona, fiz esse video com intuito de ajudar e mostrar um pouco desse linguagem que foi ultilizada para fazer o nosso amado tibia :D
     
  3. Curtir
    UsToOliNN recebeu reputação de Cjaker em [Video Aula] Logica de Programação   
    Olá amigos do tibia king, estou a compartilhar esse conteudo com vocês que eu fiz com intuito de ajudar vocês de uma forma mais contemporanêa, espero que eu consiga suprir a necessidade de vocês.
     
    https://www.youtube.com/watch?v=fZHsW65XkNs
     
  4. Gostei
    UsToOliNN deu reputação a Sekk em (Resolvido)Quest, escolha de item   
    magina cara kkkk
     
    qualquer coisa, tamo ae xD
  5. Gostei
    UsToOliNN deu reputação a Pepeco em Me ajudem em uma verificação SIMPLES   
    doPlayerSendTextMessage(cid, 22, "SYSTEM MENSAGEM: Seu personagem foi criado com sucesso, Personagem "..getPlayerVocation(cid).." Com o nome "..getCreatureName(cid)) Esse MessageClasses, voce pode encontrar na pasta, lib/constant.lua, só pesquisar o MESSAGE_STATUS_CONSOLE_RED = 18 que vai achar todas, voce pode representar como numeros ou escrito.
    O ".." que usei, serve para juntar as coisas.
  6. Gostei
    UsToOliNN deu reputação a KotZletY em Algumas duvidas em script's   
    math.floor retorna o maior inteiro menor de uma fração, exemplo: 1.2 qual é o numero maior quê é inteiro e menor que 1.2 ? A resposta é 1, mesmo quê seja 1.9 a função irá retorna 1 porquê 1 é o numero menor 1.9 é inteiro e é o maior numero menor quê 1.9, se fosse 2.1 o resultado seria ? Então, isso quê o math.floor faz,
    então função do math.floor, diferente do math.ceil quê faz a mesma coisa só que ao contrario, retornar o maior inteiro maior quê 1.2, quê é 2, você pode confirmar isso executando o a comparação aqui: https://repl.it/JPPf basta clicar em run, e verá o resultado na tela a direita.
     
    function onUse(cid, item, fromPosition, itemEx, toPosition)  isso /\ é o callback onUse, quando você da user em algo ele é executado. 
    item é um parâmetro, quando você da user em um item, o parâmetro salva retorna ele, e através dele, você pode retorna o uid do item e o id do item.
     
    Supomos que você dê user no item 1234, se você colocar para printar o parâmetro item e chamar o itemid, "item.itemid", será printado o id do item, quê é 1234,
    e assim por diante.
     
    function doHealOverTime(cid, div, turn, effect) Isso é uma função feita manualmente, ou seja não sei pra quê server sem ver ela completa, kkkk, mas pelo nome ele heala infinitamente, haushuas. 
     
  7. Gostei
    UsToOliNN deu reputação a Sekk em (Resolvido)Quest, escolha de item   
    Aprender sempre é bom kkk, eu faço bastante isso ainda
     
    mas vamos la:
     
    a linha
    local stor = getPlayerStorageValue(cid, 100) O 100 não é o valor da storage, ele é apenas a identificação de qual storage é entendeu?
     
    if stor <= 0 Aqui eu to checando se a storage 100 tem o valor menor que 0, se tiver(sempre começa com -1 ou 0 as storages), seta a storage pro valor 1(agora o player ja possui a storage) e acontece os efeitos.
     
    Eu fiz a mesma checagem em todos os itens pq tipo, eu sou um kina, a storage ta menor que 0, eu pego uma sword, storage vai pra 1, se eu tentar pegar o axe, não vai da, pq a storage ja ta em 1, e ele só entrega o item se for menor ou igual a 0, sacou?
  8. Gostei
    UsToOliNN deu reputação a CoyoteStark em Alguem me ensina oque é Storage em .lua   
    sem ninguem ter me explicado, eu entendi, Storage, numero de identificação, que pode tanto limitar de fazer algo uma unica vez, ou dar acesso a uma porta, alavanca, dentre outras coisas.
    eu havia feito uma quest onde o jogador, precisava de um cartao para ter acesso a cave, porem pensei, so ter o cartao nao, ele tambem vai precisar do storage, pq a pessoa poderia pegar este cartao e dar a outro jogador que nao tenha feito a quest, entao, alem de o jogador ter o item, ele tambem precisa ter o storage daquela quest.
    Tambem usei para talkaction de teletransport, usei para uma quest onde havia 9 estatuas que deveriam ser clicadas em ordem. usei storage em uma quest onde o jogador precisava falar com 8 Npcs para ter acesso a uma hunt. 
  9. Gostei
    UsToOliNN recebeu reputação de CoyoteStark em Alguem me ensina oque é Storage em .lua   
    Bacana estou estudando script, qual quer ajuda é SUPER BEM VINDO
  10. Gostei
    UsToOliNN deu reputação a LeoTK em Alguem me ensina oque é Storage em .lua   
    depende onde você vai criar e o que você vai usar por exemplo de uma olhada na pasta docs do seu servidor tem tudo o que você precisa das funções etc... deixarei o meu para você dar uma olhada
     
    doc.rar
  11. Gostei
    UsToOliNN deu reputação a HolyMaN em Alguem me ensina oque é Storage em .lua   
    o @Brunds informou o modo de usar a storage, mais a definição dela eh bem mais simples..
    storage (storage eh uma variavel) é um espaço na memoria do pc q guarda um dado, no caso do tibia ou open server a variavel guarda um valor ou uma função
     
    é visualizada em praticamente todos os scripts e varias vezes em 1 scrips só.. vo da um exemplo:
     
    storagequalquer = 121690;
     
    if storagequalquer(cid) != "-1" then
     setStorageValue(cid, 1)
    else
    sendCancel(cid, O player ainda n tem a quest x, para continuar fale com o npc y);
    end
     
     
  12. Gostei
    UsToOliNN deu reputação a LeoTK em Alguem me ensina oque é Storage em .lua   
    da uma olhada no video até o final que te passei
    perfeito
  13. Gostei
    UsToOliNN deu reputação a LeoTK em Alguem me ensina oque é Storage em .lua   
    simples storage é uma identificação, essa identificação você pode usar para diversas coisas por exemplo uma quest ao você dar use e pegar o item caso não colocar para o script te entregar uma storage o player podera ficar clicando infinitamente e pegando o premio então e dado uma storage para o player assim o script verifica se o player tem a storage -1 ou 1 a -1 significa que ele não tem a storage a 1 significa que ele tem caso ele não tiver o script entrega o premio para o player e da storage para caso ele tentar fazer a quest novamente o script vai verificar se ele tem a storage caso tiver mostra uma mensagem falando que ele já completou a quest isso só foi um exemplo tem como você usar a storage para diversas coisas lembre a storage e para fazer uma verificação do que você quiser no player
    você pode ver nesse video aqui também sobre a storage eu tirei algumas dúvidas com a explicação dele
     
     

Informação Importante

Confirmação de Termo