Ir para conteúdo

Tutoriais sobre Scripting

Aprenda com os mestres da comunidade a desenvolver seus scripts, sistemas e domine a linguagem .lua!

Atenção!

- Esta área é para publicação de Tutoriais sobre criação de códigos Otserv.

- Ao ler um tutorial, dê reputação ao membro que o publicou e comente no tópico. Este pequeno incentivo faz com que membros continuem trazendo tutoriais e outros conteúdos ao fórum.

- Se o conteúdo não for seu, adicione Créditos!

- Por motivos de segurança é necessário que um membro da equipe Aprove o seu Tópico, dessa forma mantemos o fórum organizado e livre de conteúdos maliciosos, obrigado pela compreensão!

 

Procure pelo tipo de código:

 

  1. Started by thiagobji,

    Olá Galera do TK, agora estou postando um tutorial sobre stages.xml Todo mundo sabe que é super fácil, mais não existe ainda (EU ACHO), não custa nada criar Só irei explicar essa parte abaixo <stage minlevel="1" maxlevel="50" multiplier="200"/> Explicação agora <stage minlevel="1" maxlevel="50" multiplier="200"/> - Do level 1 ao 50 o player irá upar 200x de EXP Pronto, só isso.. rsrs

    • 0 respostas
    • 430 visualizações
  2. Started by thiagobji,

    Eai Galera, venho trazer mais um tutorial só que agora sobre WEAPON, é simples <!-- Rods --> <wand id="2182" level="7" mana="2" min="8" max="18" type="earth" event="function" value="default"> <!-- Snakebite Rod --> <vocation id="2"/> </wand> Agora vou explicar como editar passo a passo <wand id="2182" - Aqui é o ID do item, para saber os ID só ir na pasta items/items.xml (¬¬) level="7" - Aqui é o level para o player poder usar a rod ou wand, no caso é rod mana="2" - Mana para poder usar a rod ou wand, no caso é rod min="8" max="18" - Aqui é minimo e o máximo hit que a wand ou a rod irá hi…

    • 0 respostas
    • 511 visualizações
  3. Started by Ryzor,

    LuaSql Apesar de já existir um tutorial sobre luaSql no forum ele é antigo e agora usa outro metodo. O que é? LuaSql é você inserir, alterar, deletar, subistituir valores no bacno de dados MySql ou Sqlite de seu servidor facil e rapido. Como uso? É relativamente simples. caso você ja tenha mexido com MySql não vai ter 1 pingo de duvidas. Bom vamos começar pegando um valor da database. Para pega um valor antigamente tinha uma treta GIGANTESCA usando assert e outras coisas agora é mais facil basta usar a função: db.getResult(query) Essa função ela executa query no servidor Mysql ou sqlite vamos dar um exemplo. vamos criar uma Query que p…

    • 0 respostas
    • 717 visualizações
  4. Started by VictorFT,

    Eai Galera Tudo Bom? Estou aqui para ajudar a todos que querem começar a Programar , este tutorial que estou fazendo explicando a programação , funções e etc, irá te dar uma Noção de Programação. Primeiro não é lendo tutoriais,revistas vendo videos, que você vai ficar bom em programação. Sempre Faça Exercícios para ficar bom em programação e cada fez melhorar. Introdução . Linguagem de Programação . - Uma Linguagem de programação é um conjunto de símbolos (comandos, indentificadores, caracteres ASCII, etc...) e regras de sintaxe que permitem a construção de sentenças que descrevem de forma precisa ações compreensíveis e executáveis para o computador. …

    • 0 respostas
    • 995 visualizações
  5. Started by thiagobji,

    Bom, é o seguinte, eu estava pesquisando algo de útil sobre programação no PC e achei esse tutorial útil (na minha opinião), gostei muito dele e venho aqui compartilhar com vocês. Assim como todas as linguagens de programação, LUA tem suas particularidades e sua estrutura lógica própria, a qual envolve suas funções, operadores e engines. Para começarmos a programação em LUA, devemos conhecer sua lógica, para que possamos aplicá-la em nossos códigos. Abaixo, você encontra os operadores da linguagem e sua explicação: • “Local” = É usado para a definição de variáveis. Pode ser encontrado também destacando uma função. Neste último caso, seu uso pode ser dispensado…

    • 0 respostas
    • 941 visualizações
  6. Started by Skyligh,

    Olá galera. Muitos de vocês que são iniciantes em scripting tem certa dificuldade para criar scripts, uns por falta de ideias, outros por realmente não conseguirem montar nada. Por isso, resolvi fazer esse tutorial simples e claro. Aprendendo a Scriptear Introdução: Bom, primeiramente, você já se perguntou "por quê quero scriptear"? Se sim, legal, mas chegou à uma resposta? Se não, pense nisso. Tente chegar à algo que te inspire, seja observando trabalhos de scripters mais conhecidos e habilidosos ou simplesmente querendo criar novas coisas para ter seu nome conhecido. Sem uma inspiração você não vai avançar, acredite em mim. Começando no mundo dos sc…

    • 0 respostas
    • 612 visualizações
  7. Olá a todos, eu não achei nenhum tutorial nesta página de como colocar potions infinitas, então resolvi elaborar um. Primeiro Método: Na pasta do seu servidor, entrar na pasta "data", depois na pasta "actions" e por último na pasta "liquids" "Pasta do Servidor/data/actions/liquids/" Procure pelo arquivo "potions.lua" e abra ele com algum editor. (bloco de notas, etc..) (se não tiver esse arquivo veja o segundo método) Depois de ter aberto o arquivo procure por essa linha: (dica: Control + F) [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion Copie o primeiro ID da linha (no caso…

    • 0 respostas
    • 496 visualizações
  8. Started by Ryzor,

    Este tutorial abaixo foi inteiramente criado por shoeei. Introdução Vou tentar ajudar vocês com um tutorial de os.date. Sendo sincero, eu aprendi a pouco tempo como usar o os.date, em um exemplar de programação lua. Estou fazendo este tutorial para esclarecer a maioria das duvidas que vocês possam ter, então, por favor, prestem muita atenção se forem ler, e não leiam a menos, que estejam com tempo, paciência e vontade de aprender, pois eu creio que mesmo sendo novato com o os.date, eu vou conseguir fazer um bom tutorial. Publico Alvo Este tutorial foi feito para ensinar programadores lua, do nível iniciante/intermediário, ou seja, aqueles que já tem algum conhecimento…

    • 0 respostas
    • 2.8k visualizações
  9. Started by Ryzor,

    Tenho em meu PC algumas listas copm informações para se colocar em algumas funções que não se acha tão facilmente... - = Slots = - Aposto que muitos já se perguntaram o que por em slot na função getPlayerSlotItem(cid, slot). Abaixo há a resposta: CONST_SLOT_HEAD (1) = helmet CONST_SLOT_NECKLACE (2) = necklace slot CONST_SLOT_BACKPACK (3) = backpack CONST_SLOT_ARMOR (4) = armor CONST_SLOT_LEFT (5) = left hand CONST_SLOT_RIGHT (6) = right hand CONST_SLOT_LEGS (7) = legs CONST_SLOT_FEET (8) = boots CONST_SLOT_RING (9) = ring slot CONST_SLOT_AMMO (10) = ammo slot Exemplo de uso: if getPlayerSlotItem(cid, 10).it…

    • 0 respostas
    • 600 visualizações
  10. Started by xFatality,

    Hoje eu ensinarei como criar uma Spell de cura estilo "Heal Editeds" para criar uma magia dessa é simplesmente fácil, só requer paciência. Então vamos ao que interessa. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, 80000, 0, 100000)[/b] [left][b]function onCastSpell(cid, var) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Healing 80k~100k.") return doCombat(cid,…

    • 0 respostas
    • 1.9k visualizações
  11. Started by Ryzor,

    Algumas LIBs úteis em OTServ Introdução: Não sou NENHUM expert em lua e estou LONGE de ser. Porém, ontem eu vim procurar algum tutorial que me evidenciasse facilmente o assunto em questão e não encontrei, então resolvi estudar um pouquinho e trazer para vocês Fonte: A fonte do meu estudo foi um site muito conhecido por scripters, que é: Lua-Users.org Explicações: Optei por incluir nesse tutorial explicações somente das libs que eu achei mais interessantes e que pude ver uma utilidade em OTServ, como Math, Os e Table. Se você acha que faltou algo de interessante ou que alguma explicação pode ser melhorada, por favor, poste construtivamente aqui, …

    • 0 respostas
    • 813 visualizações
  12. Started by Ryzor,

    Manipulando arquivos através de LUA Abrindo um arquivo Para começar, você terá que abrir o arquivo.Para isso, usamos a função io.open(arquivo[modo]), que também pode cria-lo caso não exista.Arquivo será o seu diretório,que caso não exista retornará nil, e modo são os seguintes: "r" - Modo de leitura. "rb" - Leitura em modo binário. "w" - Modo de escrita. "wb" - Escrita em modo binário. "a" - Adicionar ao arquivo. "r+" - Modo de atualização preservando os dados anteriores. "w+" - Modo de atualização apagando os dados anteriores. "a+" - Modo de adição e atualização, preservando os dados anteriores e adicionando ao final do arquivo. …

    • 0 respostas
    • 4.1k visualizações
  13. Started by Ryzor,

    Metamétodos Bem, talvez não seja útil a todos (ou apenas não vejam a utilidade disso no começo), mas como já tinha feito um tutorial de POO em lua decidi me aprofundar mais e entrar em um assunto que não tem muita gente que sabe, ter um conhecimento intermediário sobre POO ajuda a aprender isso (saber usar a função setmetatable também), mas apenas um complementa o outro como veremos logo a seguir. Porque aprender ? Se eu dissesse que isso é necessário para programar eu estaria mentindo, mas pode acabar sendo útil, quem sabe para complementar o conhecimento de POO, mas é como eu já disse no outro tópico, aprende quem quiser. Metamétodos Metaméto…

    • 0 respostas
    • 1.8k visualizações
  14. Started by Skyligh,

    Ola galera do tk muitos como eu tem um problema na logica da programação lua como eu mais andei lendo uns texto da programação e estou entendendo melhor então vou explica-los +- o resumo dela O que é Lua? Quais as origens de Lua? Como contribuir para a comunidade Lua? Por que escolher Lua? Lua é rápida Lua é portátil Lua é embutível Lua é poderosa (e simples) Lua é pequena Incluir Lua numa aplicação não aumenta quase nada o seu tamanho. O pacote de Lua 5.2.1, contendo o código fonte e a documentação, ocupa 245K comprim…

    • 0 respostas
    • 1.1k visualizações
  15. Started by Ryzor,

    Math A matemática por traz do script introdução: bem, antes de começar a explicar o math em si, acho melhor explicar que: não é recomendado colocar variáveis como x ou y em uma equação alem do exemplo acima, funções lua ou de otserv, não podem ser declaradas como nome de variáveis "=" é diferente de "==" para facilitar, de uma olhada nessa tabela com os simbulos matemáticos em lua : + ---------------------- adição - ------------------ subtração *---------------- multiplicação / ---------------------- divisão == ------------------ igualdade ~= -------------- desigualdade > ----------------- maior que >= --------…

    • 0 respostas
    • 1.4k visualizações
  16. Started by Ryzor,

    Cálculos Baseados em Porcentagem Autor: Guiminhah Nível: Fácil -------------------------------------------------------------- Olá galera, tudo bom? Vim aqui compartilhar uma ideia que não vi por enquanto aqui no fórum, e acho que é legal usar de vez em quando no servidor. Cálculos com porcentagem são úteis para balancear, já que utilizam valores relativos, e não absolutos. Para começar o tutorial, fiz um script para exemplificar. •Explicação: Quero criar uma action que quando o player (maior que level 50) clicar em um Life Crystal gaste 20% da sua mana total para adicionar +2 no HP total. ----------Life Crystal Increasing Players' Max H…

    • 0 respostas
    • 583 visualizações
  17. Started by Ryzor,

    {B}em... muitos vezes vejo nos meus e nos scripts de outras pessoas sendo declarandas variáveis uma embaixo da outra, como por exemplo: local stor1 = getPlayerStorageValue(cid,5551) local stor2 = getPlayerStorageValue(cid,5552) local stor3 = getPlayerStorageValue(cid,5553) local stor4 = getPlayerStorageValue(cid,5554) local stor5 = getPlayerStorageValue(cid,5555) local stor6 = getPlayerStorageValue(cid,5556) {U}ma forma de simplificar isto seria separando as variáveis por vírgula, colocando todas antes de um igual(=) e colocando, depois do igual(=), o valor atribuído a cada variável RESPECTIVAMENTE. Usando o exemplo acima, ficaria assim: …

    • 0 respostas
    • 541 visualizações
  18. Started by Ryzor,

    Scripting Dictionary Antes de tudo Olá comunidade Tibia King. Venho através desse tutorial facilitar a vida de muitos scripters. Trago a vocês o Scripting Dictionary. Uma forma mais simples de entender aquelas siglas ou palavrinhas chatas encontradas em todos os scripts e que poucas pessoas sabem o significado ou o motivo de estar ali. Vocês também podem ajudar a aumentar o conteúdo desse dicionário enviando-me as palavras que vocês gostariam de serem adicionadas. Para isso, poste nesse mesmo tópico. Estou disposto a atualizar sempre que for preciso o tópico, mas, caso algum imprevisto aconteça, a moderação está liberada para editar, adicionando dicas e palav…

    • 0 respostas
    • 800 visualizações
  19. Started by Ryzor,

    Ae galera, anônimo da OTbr mais uma vez aqui. Brinks :B Bom galera, hoje falarei sobre o RETURN, que todos acham que é um bicho de sete cabeças mas que na verdade não passa de algo simples e bem útil em alguns casos. Utilização: Exemplo 1: function getPlayerSet(cid) local items = {} for i = 1,10 do local item = getPlayerSlotItem(cid, i) if item.uid > 0 then table.insert(item, items) end end return items end Como podem ver nessa função, eu criei uma função que cria um loop e verifica todos os items do corpo do player e ela usa o return para retornar essa tabela com os items. Com isso se eu precisar p…

    • 0 respostas
    • 596 visualizações
  20. Started by Ryzor,

    ..:: String Tutorial ::.. O que são strings? São seqüências ordenadas de caracteres, símbolos, escolhidos a partir de um conjunto pré-determinado. Manipulando Strings A biblioteca string provê funções com diversas utilidades, para manipulação de strings (cadeias de caracteres, como explicado acima). Como exemplos, podemos citar a localização e extração de subcadeias, além de casamento de padrões. Em lua, o primeiro caractere da indexação vai estar na posição 1, e não na 0 (como em C). Os índices podem ter valores negativos, e nesse caso serão interpretados como uma indexação de trás pra frente, começando do final da cadeira. Logo, o ultimo caractere est…

    • 0 respostas
    • 806 visualizações
  21. Started by MaXwEllDeN,

    Pattern Pattern ("Padrão" em pt-br) é uma poderosa funcionalidade para manipulação de strings (caso você não saiba o que é uma "string", busque saber antes de continuar, recomendo também ter um certo domínio sobre a biblioteca string), e usada para buscar um padrão de texto pré-definido. Porque aprender ? Possui recursos indispensáveis quando se precisa trabalhar com strings, alta aplicabilidade em scripts direcionados a otserv (talkactions), não que se vá usar isso a todo o momento, mas é altamente recomendado que se saiba trabalhar com patterns, é extremamente útil as vezes. Funções Algumas funções da biblioteca padrão string que aceitam pattern em seu…

  22. Started by Ryzor,

    Referência Rápida de C++ Variáveis tipo tamanho(bytes) descrição char 1 representa um caractere ( valores entre 0 - 255 ) short int 2 valor inteiro curto int 2,4 valor inteiro long int 4 valor inteiro longo float 4 valor real (ponto flutuante) double 8 valor real (precisao dupla) long double 10 valor real long (precisao dupla) signed indica que o valor possui sinal unsigned indica que o valor não possui sinal void tipo vazio Constantes Constantes do pré-processador: (PS: não se utiliza ponto-e-vírgula no final deste tipo de constante) #define <constante> <valor> exemplo: #define PI 3.1415926 Tipos Constantes: …

  23. Started by Ryzor,

    Primeiramente você deve ter um Editor de Texto e um Compilador. Recomendados: Windowns - Dev-ccp Linux - Gedit e Terminal (G++) Acredito que em todos Linux já venha integrado. 1º Abra seu Editor(Gedit ou Dev-Ccp) e escreva as libs que vamos usar Código: [#include <string> #include <iostream> 2º Digite int main() e Abra seu Escopo. 3º Agora Vamos Criar as Variáveis: Código: char SkyFail; std::string r("potencia"); double x=0; double y=0; double z=0; Vou Explicar SkyFail = a Variavel onde ira guardar o tipo de Conta std::string r("potencia"); = Necessário para que você posa usar Letras no IF. double z x e y = Onde ira guardar os numeros da soma Agor…

    • 0 respostas
    • 1k visualizações
  24. primeiramente seu mapa tem que ser nessa versão 0.4... Vamos la, para quem teve problema coma erro do talkaction do war system supostamente seguio esses passo aki que irei posta http://www.tibiaking.com/forum/topic/8827-war-system-guild-war-com-escudos-completo/ << esse aki usei como exemplo pois eu segui esses passo e mesmo assim fui surpriendido com erro do talkaction.... mais alguns dias de pesquisa consegui encontra aonde estava meu erro. Vou explica melhor, siga todos os passos desse tutorial aki http://www.tibiaking.com/forum/topic/8827-war-system-guild-war-com-escudos-completo/, apos isso voce vem aqui nesse topico http://tibiadev.com/index.php?/top…

  25. Started by Marcus Pereira,

    A calculadora ainda não ganhou forma, apenas está no console. Irei fazer isso com o tempo, também irei otimizar a calculadora, porém vou disponibilizar o código-fonte para vocês. Lembrando que é (OPEN-SOURCE) e quem quiser editar ou fazer alguma coisa, vai fundo. Para não ficar muito extensa a tela do post irei postar o link para cada class, entretanto toda codificação será mantida e atualizada no github, irei também postar uma prévia do código. Abraços. Knight.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace JogoDaVelha.Vocacoes { class Knight : MaeVoc { …

    • 0 respostas
    • 1k visualizações
  26. Hoje é dia de brincadeira e iremos criar uma solução onde o app em modo cli verifica se o número é impar ou par. Abra um editor de texto de sua preferencia e então digite: import time # criando função par. def par(numeroPar): #Verifica se o resto do número passado no parametro é 0, se for 0 então retorna Par se não, retorna Ímpar if numeroPar %2 == 0: return ("%d - Par" %numeroPar) else: return ("%d - Ímpar" %numeroPar) print(par(4)) ''' ou também poderíamos fazer assim: Primeiro iremos pedir para o usuário digitar qualquer número quando o usuário digitar, verificamos se o número é par ou impar ''' digite_um_numero = int(input()) # caso o usuário digite um númer…

    • 0 respostas
    • 1.4k visualizações
  27. Alguem sabe como e pra Tfs 1.3 Tentei com um tutorial, ta pra os tfs 0.4+ n pode pra tfs 1.3 e mt mais diferente https://tibiaking.com/forums/topic/76124-tutorial-2-em-1-magic-e-shoot-effects/ N tem mesmas code q tfs 0.4!

    • 0 respostas
    • 429 visualizações
  28. Started by Standard,

    TFS 0.4 OBJETIVO: OBTER A POSITION DE UM ITEM NO CHAO QUE TENHA O ID 636 Tenho o script abaixo que serve para executar uma função de acordo com a analise do container de um item que está em uma POSITION especifica no chão, porém eu gostaria de criar mais desses items que estão no chão, e quero saber se tem alguma função para obter a POSITION do item que está no chão e que o ID é 636 ATRAVÉS DO GLOBALEVENTS. Pois não daria certo por actions pois se adicionar um item em actions.xml ele não se torna mais possível de abrir o container IN-GAME. Resumo: Obter a POSITION apenas dos items com ID 636 através do GLOBAL EVENTS. Spoi…

    • 0 respostas
    • 467 visualizações
  29. Started by Beaterytb,

    Primeiramente, bom dia!Gostaria de pedir o auxilio de vocês, estou tendo um problema, no qual não consigo solucionar, preciso de um sistema que verifique se há algum player na sala enfrentando o boss, e aposo combate, o player terá um delay de 20 horas para poder enfrentar novamente, também preciso fazer a checagem para conferir se o player morreu na sala, e tirar o boss que ele não conseguiu matar. abaixo tem o script que ja consegui! desde já obrigado! esse é o código que consegui, pesquisando, mas ele não faz o que eu preciso local t = { players = { -- posições que os players devem ficar ao puxar a alavanca [1] = Position(33395,32661,6), …

    • 0 respostas
    • 520 visualizações
  30. Started by amoxicilina,

    Olá pessoal, venho aqui hoje trazer a solução para o erro que tenho visto no servidor OTXServer Global Full Kilmaresh by malucooo, hasflag e não perde o Loot ao morrer. erro hasflag na console: Lembrando que essa solução consegui através de outro fórum e resolvi trazer-lo aqui. Quem me ajudou a solucioná-lo foi: Sarah Wesker, da otland. Então vamos ao que interessa, rs... Abra a pasta do seu servidor OTX em, data/lib/core/player.lua Cole ao final. function Player.hasFlag(self, flag) if not flag or type(flag) ~= 'number' then return false end return bit.band(self:getGroup():getFlags(), flag) ~= 0…

    • 0 respostas
    • 959 visualizações
  31. Started by MaXwEllDeN,

    << Aula 3 - Primeiros Passos Operadores Aritméticos e Bibliotecas Aula 4 Na aula anterior vimos como chamar funções e conhecemos as funções print e type. Nesta aula apenas vou reforçar a aula anterior ensinando as funções mais básicas e usadas que são nativas da linguagem Lua, ou seja, não são funções criadas para Open Tibia Server, e sim funções prontas que já estão incluídas na linguagem Lua, e vou ensinar também os operadores aritméticos. Vamos começar com eles. Os Operadores Aritméticos OBS: Você pode fazer seus testes no editor e interpr…

    • 0 respostas
    • 795 visualizações
  32. Started by Sun,

    ~ Olá galera, fiz parte do grupo por uns anos e fiquei 3 longos anos sem dar as caras Antes pessoas me ajudavam, hoje, consigo ajudar as pessoas, e queria compartilhar com vocês conhecimento sobre itemAttribute! essa função do tibia é maravilhosa, porém muitos não sabem seu potencial ou até mesmo não coloca ela em seus planos, ela é bem simples porém deixa duvida em muitos, principalmente servidores de Poketibia que utiliza isso em quase tudo. getItemAttribute(uid, key) -- ## oque é get? get em ingl…

  33. Nesse tópico você irá aprender a diferença entre ItemID, ActionID e UniqueID na criação de scripts. Primeiramente vamos começar com o ItemID, imagine que você está criando um simples script que o player pode ter acesso a uma área VIP, só que para ele entrar, primeiro precisará passar por um tile especial que possui o ID 471, até aqui tudo bem, só que qualquer player do servidor irá ter acesso também, já que não possui nenhuma restrição. Como poderíamos resolver isso? É aqui que entra a função da ActionID, com ela podemos dizer que os tiles que tiverem o valor 1000 no atributo ActionID, serão os tiles referentes a área VIP. Agora temos u…

  34. Conversor de Mapas ServerID para ClientID Ferramenta para converter qualquer mapa de ServerID para ClientID e vice-versa. Imagens: Requisitos: - Node.js - Download Como usar: 1. Coloque os arquivos .otbm na pasta "input_folder". 2. Execute o arquivo autorun.bat. 3. Selecione no menu para qual ID você deseja converter os mapas. 4. Após a execução do script, os mapas convertidos estarão na pasta "output_folder". Download: ServerId and ClientID Map Converter.zip

Quem Está Navegando 0

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

Informação Importante

Confirmação de Termo