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. Olá, Galera do Tibiaking hoje vim trazer para vocês um basico tutorial sobre Programação O que é source? Source é o nome dado ao conjunto de códigos que futuramente será um programa, em otserv nem sempre conseguimos esta source, mesmo sendo uma lei sua liberação, o servidor mais usado atualmente “TFS” tem seus códigos liberados e podemos conseguir na seção Download otserv procurando a versão desejada. Como abrir uma source? Como os códigos são apenas textos podemos abrir-los em um editor de texto normal, porem para facilitar o trabalho do programador usamos IDE, o mais popular no mundo dos otservs, Dev-cpp. Como criar um executável (compilar)? C…

    • 5 respostas
    • 4.1k visualizações
  2. Olá TibiaKing, Vi muitas pessoas com dúvidas, mesmo contendo tutoriais, não entendiam,então tentarei fazer um bom tutorial. Ok, vamos por a mão na massa! Basicamente nós nos basearemos nisso: Localizado em: DATA/XML/VOCATION.XML Exemplo Primeiro vou explicar cada item pra você criar sua vocação certinha! id = não deve haver nenhuma igual, tente seguir a sequencia para não se perder. name = nome da nova vocação. description = quando der look aparecera esse nome, e caso acc manager também. needpremium = se precisa de premmium para ter essa vocação (0 = não 1 = sim) gaincap = o tanto de cap que vai ganhar quando upar gainhp = o …

    • 12 respostas
    • 17.4k visualizações
  3. Ola galerinha, hoje vou ensinar a vc's como usar if, else, elseif, and e or em lua If, Else, ElseIF, Then Agora vamos ver oque é oque: Entendo o Script function onSay(cid, words) -- Função aoFalar if getPlayerVocation(cid) == 4 then -- Se a vocação do player for igual a 4 entao doPlayerSendTextMessage(cid, 22, "Eu sou um Knight") -- Mandar uma mensagem com o texto, dizendo sua vocação elseif getPlayerVocation(cid) == 3 then -- Se nao, se a vocação do player for igual a 3 entao doPlayerSendTextMessage(cid, 22, "Eu sou um Paladin") -- Mandar uma mensagem com o texto, dizendo sua vocação else -- Se nao doPlayerSendTextMessage(cid, 22, …

    • 20 respostas
    • 5.2k visualizações
  4. Started by xFatality,

    Olá Tibia King Hoje,vou trazer a voces um tutorial de potions infinita,testei em todas as versões e nenhuma deu problema. Eu sei que já tem varios topicos de potions infinita,mas como eu tava olhando,tem alguns com bugs e etc,e então vou ensinar um sem bug. Primeiramente siga este caminho na pasta do seu servidor : Data/Actions/Scripts/Liquids/Potions.lua O Script que tem que ser inserido nessa parte é : Após a inserção deste comando no servidor, se você não deseja reiniciar o servidor digite: /reload action Obrigado, Abraços.

    • 1 resposta
    • 2.6k visualizações
  5. Opa, galerinha do TK, pro meu primeiro tutorial resolvi fazer uma solução de um problema que desde que cheguei no TK, vejo que ocorre com uma certa frequência. Os erros da data base. Neste tutorial vou ensinar a resolver os erros do tipo No such table, Insert into, No such column, ... has no column named... etc. 1°) NO SUCH TABLE Bom, para o erro No such table, basta vc visualizar qual table está faltando. Para isso basta ler o erro na distro: No caso da imagem, está faltando a table: player_statements Para resolver este e qualquer outro problema deste tipo, caso sua data base seja sqlite, basta abrir sua data base pelo Sqlite Studio(download: http:/…

  6. O canal abre automaticamente e envia uma mensagem laranja Primeiramente vai em creaturescript/ script e abra o arquivo login.lua e procure por antes de if(lastLogin > 0) then adicione isso: doPlayerOpenChannel(cid, CHANNEL_HELP) pronto. Mas se você quer que abra outro canal só fazer o mesmo processo, mas no lugar de "CHANNEL_HELP" você coloca o ID do canal que vc querer Mas se além disso quer que envia uma mensagem, é só depois disso colocar essa tag: addEvent(valid(doPlayerSendChannelMessage), 150, cid, "", "MENSAQUEM QUE VAI APARECER.", TALKTYPE_CHANNEL_HIGHLIGHT, CHANNEL_HELP) --SE FOR EM OUTRO CANAL É SO POR O ID DELE NO LUGAR D…

  7. 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…

  8. Atualizado (2016) Olá galera do TibiaKing! Hoje vim trazer um tutorial em video de como criar novos moves no seu server de PDA. Então, vamos lá, espero que gostem! VIDEO: Spoiler *Desculpa pela má qualidade, não consegui deixar 720p. SCRIPT USADA: Spoiler elseif spell == "NOME DO ATAQUE" then setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 4*400, cid, 3644587, -1) for i = 1, 1 do addEvent(doMoveInArea2, i*10, cid, EFEITO, AREA, DAMAGE, min, max, spell) …

    • 11 respostas
    • 3.3k visualizações
  9. Started by UsToOliNN,

    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

    • 1 resposta
    • 678 visualizações
  10. Galera vim aki mostrar o meu Primeiro Video do Canal e Escolhi faze-lo sobre uma duvida que muitos ainda tem "Como colocar novos itens no Server e no Mapa". Beleza, no video a seguir to explicando Passo-a-Passo de como fazer isso. Vídeo: https://www.youtube.com/watch?v=X_2et_d9bg8 Bom galera é isso, espero que gostem do video feito para responder essa duvida. Creditos: Eu-> por fazer o video e publicalo Zangoosedoido-> pelo cliente que usei para tirar as Sprites Xandeloko-> pelo server que usei para testar

    • 3 respostas
    • 1.8k visualizações
  11. Introdução a Lua Esse vídeo é para os que não gostam de ler, e preferem um vídeo. Eu fiz ele com a intenção de ajudar, mas vendo o vídeo me atrapalhei de mais, ficar 3 meses sem mecher em programação acaba esquecendo tudo. E to gripado.. e são quase 1h da manhã ..

    • 2 respostas
    • 1.5k visualizações
  12. Started by Bruxo Ots,

    • 7 respostas
    • 6.4k visualizações
  13. [Windows][VS2015] Compilando Sources OTClient Tutorial explicando como compilar as Sources do OTClient com o Visual Studio 2015. 1 - Downloads Necessários - Visual Studio 2015 Update 3: http://my.visualstudio.com/Downloads?pid=2086 - Microsoft Visual C++ 2015 Redistributable:https://www.microsoft.com/pt-br/download/details.aspx?id=48145 - OTClient SDK 1.0 (Bibliotecas): https://github.com/conde2/otclient-sdk - Bibliotecas Boost C++ 1.63.0: https://sourceforge.net/projects/boost/files/boost-binaries/1.63.0/boost_1_63_0-msvc-14.0-32.exe/download 2 - Instale os softwares necessários -…

  14. 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
    • 507 visualizações
  15. Started by Kaiotp,

    Bem galera espero que gostem. Vá em Data/Actions/scripts , é crie o seu bloco de notas ; Coloque o script estará assim ; Aonde está de Vermelho e oque vai falar para o player quando fizer a quest... Aonde está de Azul 2160 < vocês poem o id do item depois da virgula 100 e quantos de item o player vai ganhar a fazer a quest... Aonde está de Verde E o aonde voçê vai por o uniquq id no baú do remere's map editor Para adicionar um novos itens aperte enter e copie a linha e edite novamente o id. 2160,100, 2160, 100 Agora vá em Data/Actions/Clique em actions coloque a seguinte linha Onde está de laranja você coloca o actio…

    • 4 respostas
    • 1.6k visualizações
  16. 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
    • 2k visualizações
  17. Started by xFatality,

    Tutorial de NPCS Esse tutorial irá servir para quem gostar de fazer certo NPCs mais complexos com storages, varias missões e tudo mais. Usando como base o Jiddo system apenas para comprar e vender itens, pois não gosto de usar sistemas que facilitam Pois não criam scripters e sim preguiçosos, ainda mais quando o sistema é abandonado ai você se lasca O npc é dividido em duas partes : - Arquivo XML : Responsavel pelo visual e algumas propriedades dele (pelo jiddo system) - Arquivo Lua : Responvasel pelas falas e vendas (Lua puro) Visual do Npc Bem primeiro vamos explicar o visual de um npc, <npc name="Bonifacius" script="data…

    • 2 respostas
    • 5.5k visualizações
  18. Started by xFatality,

    Criando suas próprias Runas. Primeiramente aqui vão algumas dicas: -Procure criar boas fórmulas de ataque -SEMPRE edite a cor do ataque da runa (Se é uma explosão, um powerbolt, ataque físico,etc) -Edite a animação de quando a runa acerta o alvo. Bom, vamos começar a criar nossas runas Para editar tudo isso, mantenha o arquivo spell.lua aberto. Ele esta localizado em data/spells/lib. Os ids de runes começam em 2260 (blank rune). Teste os Ids desejados para a criação de runas exclusivas 1- Vá até o spells.xml e crie a TAG da runa <rune name="runa" id="2301" charges="9" maglv="1" mana="0" enabled="1"></rune> 2…

    • 3 respostas
    • 1.2k visualizações
  19. Started by Doughell,

    Olá a todos frequentadores da seção Scripting, tomei minha própria iniciativa junto com o Lpz de criar dicas ao scripting, como perceberam ele já começou com seu tópico dicas onde foi muito importante a iniciantes! Hoje começarei de nv. de script inferior, com scripts/comandos/funções básicas! Então vamos começar com o comando parecido com o do !aol que é bastante útil a outros servidores. Ok, vamos lá! function onSay(cid,words,param) if doPlayerRemoveItem(cid,2145,10) == TRUE then doPlayerAddItem(cid,1738,1) doCreatureSay(cid,"MENSAGEM QUE A TALKACTION FOI REALIZADA COM SUCESSO",TALKTYPE_ORANGE_1) else doCreatureSay(cid,"MENSAGEM QUE HOUVE ERRO …

    • 5 respostas
    • 1.4k visualizações
  20. Started by Doughell,

    Olá a todos frequentadores da seção Scripting! Hoje partiremos para nossa segunda aula de Scripting, as duas aulas foram bem rápidas essa aqui já será um pouco mais complexa, mas espero que usufruam bem dela! local config = { doorPosition = {x = 100, y = 100, z = 7}, doorID = 1000, minAccess = 6, message = { doorOpen = "The door has been opened!" doorClose = "The door has been closed!" } } function onSay(cid, words, param) if getPlayerAccess(cid) >= config.minAccess then local item = getTileItemById(config.doorPosition, config.doorID) if item.uid > 0 then doRemoveItem(item.uid, 1) doPlayerSnedTextMessage(ci…

    • 0 respostas
    • 867 visualizações
  21. Started by saciperere,

    Ola, tenho anos de experiencia com programação de servidores Otserv e derivados (C++). Resolvi fazer um vídeo rápido para ver se tem demanda de tutorial nesse assunto. O vídeo a seguir estou acompanhando, sem detalhar muito, o que mais ou menos acontece no lado do servidor quando tem um login. Aqui esta o resultado: Feedback é bem vindo. Qualquer duvida é so falar.

    • 1 resposta
    • 561 visualizações
  22. Started by Skyforever,

    Tipo: Tutorial. Autor: Skymagnum(Skyforever). Encina: Como usar corretamente o addEvent sem bugs e erros no console. Creio que todos vocês conheçam a função addEvent senão vou explicar, ela funciona da seguinte maneira addEvent(function, seconds, ...). Bom se você usar a função doSendMagicEffect(position, effect) ela vai soltar o efeito na hora correto? com addEvent você pode fazer o efeito soltar depois se usar corretamente exêmplo de uso incorreto: addEvent(doSendMagicEffect, getThingPos(cid), 5 * 1000, 35) agora veremos do jeito certo: addEvent(doSendMagicEffect, 5 * 1000, getThingPos(cid), 35) . …

    • 13 respostas
    • 4.3k visualizações
  23. Started by L3K0T,

    ADICIONANDO O ELEMENTO muitas das vezes a gente precisa adicionar um novo elemento em nosso servidor, assim para criar novas magias, esse tutorial é para quem precisa disso. combat.cpp Abaixo de: case CONDITION_FIRE: return COMBAT_FIREDAMAGE; Adicione em baixo: case CONDITION_PLANTA: return COMBAT_PLANTADAMAGE; combat.cpp Abaixo de: case COMBAT_FIREDAMAGE: return CONDITION_FIRE; Adicone em baixo: case COMBAT_PLANTADAMAGE: return CONDITION_PLANTA; Condition.cpp Abaixo de: case CONDITION_FIRE: Adicione: case CONDITION_PLANTA: Abaixo de: case CONDITION_FIRE: re…

  24. Started by Duuhzera,

    Bom galera, vejo que muita gente pede ajuda para adicionar coondown em magias, runas, actions, etc.. entao vim aqui ensianr como adicionar o tao procurado coondown Primeiramente abra seu script, e procure onde ele faz a funçao como: Na linha a baixo da funçao, adicione isto : 23006 é o storage do exaust, coloque diferente em cada magia/action/talkaction para nao interferir umas nas outras. 20 é o tempo em segundos para poder usar a magia/action/talkaction/ novamente. Após adicionar isto, e configura-lo, pule uma linha e pronto Espero ter ajudado!

    • 2 respostas
    • 982 visualizações
  25. Started by TNTDZ,

    removido

    • 1 resposta
    • 576 visualizações
  26. 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
    • 830 visualizações
  27. Started by Tadelho,

    Conforme tive uma dúvida outro dia, consegui obter uma solução satisfatória e, sabendo que pode ser a dúvida de mais gente, resolvi compartilhar na forma deste pequeno tutorial. A ideia é muito simples: fazer com que uma spell de área atinga apenas alguns alvos conforme uma característica específica. Isso pode ser bastante útil para diversas ideias, além do script base servir para tantos outros efeitos interessantes. Atenção, fiz os scripts para: TFS 0.4.0 Teremos como base para esse exemplo a magia "divine caldera", o famoso "exevo mas san". Nela teremos o seguinte script: local combat = createCombatObject() setCombat…

    • 3 respostas
    • 3.2k visualizações
  28. Olá KingTibianos A pedido de um membro, vou postar um tutorial de como criar um NPC. Explicando detalhadamente. Primeiramente, cada npc se encontra em data/npcs no seu ot. Vou postar aqui como exemplo um NPC que venda algumas coisas: <?xml version="1.0" encoding="UTF-8"?> <npc name="Paul" script="default.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="57" body="86" legs="0" feet="114" addons="2"/> <parameters> <parameter key="module_shop" value="1"/> <parameter key="shop_sellable" value="crossbow,2455,150;bow,2456,130"/> <parameter key="sho…

    • 15 respostas
    • 26.7k visualizações
  29. Started by Lyu,

    Fala clã, hoje irei ensiná-los como agrupar funções em uma classe e usá-las como métodos (similar ao TFS 1.x). Bom, primeiramente o que são métodos? Um método é nada mais nada menos que uma função membro de uma classe, destinadas a serem executadas por objetos instanciados. Bom, não irei se aprofundar no assunto, serei direto. Abaixo segue um exemplo da diferença entre uma função e um método: doPlayerSendCancel(player, 'Hello World') -- Função sendo chamada player:sendCancel('Hello World') -- Método sendo chamado por um objeto 'player' Mas afinal, como utilizar métodos em TFS 0.4? Primeiramente teremos que criar uma lib cha…

    • 8 respostas
    • 1.6k visualizações
  30. 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
    • 634 visualizações
  31. Started by ZoR,

    Olá,participo do tibiaking faz muito tempo e nunca tive vontade de aprender LUA até alguns dias atrás. começei a estudar 2 - 4 horas,assisto videos, leio artigos do lua.org, leio tutoriais aqui do tibiaking, em outros lugarem também. porém fico com bastante duvidas, até tenho uma amigo muito bom mesmo com os LUA e outros estilos de linguagem,porém nem toda hora ele pode me ajudar. se alguém puder me ajudar com as duvidas que tenho ficarei muito muito grato mesmo!! 1 - como posso últilizar tabelas? vejo muitos script aqui no tibiaking que possuem tabelas mas não últilizam da função table.insert, ou de outra função table alguém pod…

    • 9 respostas
    • 2.7k visualizações
  32. Salve, pessoas. Recentemente criei esse script para meu servidor particular e, embora simples, dá uma margem legal para a criatividade de vocês. Trata-se de um script para dar uma função especial a uma weapon qualquer do seu servidor quando você enfrenta uma criatura específica (ou mesmo um tipo de criatura). Para isso utilizarmos uma função que pega o nome da criatura que você está atacando e verifica se ela pertence à sua tabela de verificação. Caso positivo, sua arma agirá de um modo diferente contra essa criatura específica. O feitio é simples: criar um script no diretório .../weapons/scripts com o nome à sua escolha. Ex: "nome.lua"…

  33. ESSE MÉTODO NÃO ESTÁ MAIS FUNCIONANDO. Talvez esse aqui posso ser mais útil http://www.tibiaking...-muito-estável/ MAS CASO QUEIRAM TENTAR MESMO ASSIM \/\/\/\/\/\/ ----------------- Muitos que não consegue colocar account manager junto com Site é porque quando criamos conta nele elá é feita senha + salt, ja no site é so a senha então para resolver esse problema é simples, mais precisa das sources da distro para compila depois. Na sources ache o arquivo iologindata.cpp, nele procure: bool IOLoginData::setPassword(uint32_t accountId, std::string newPassword) { std::string salt; if(g_config.getBool(ConfigManager::GENERATE_ACCOUNT_SALT)) { salt = gen…

    • 10 respostas
    • 4.6k visualizações
  34. Started by thiagobji,

    É o seguinte, eu já sofri com esse bug e é muito chato mesmo, creio que muitas pessoas sofrem também, eu achei esse script em um outro fórum, então venho postar aqui pros membros do TibiaKing que tem esse mesmo erro para ajudar eles a soluciona-lo. Então você precisa ir até a pasta data\npc\lib\npcsystem Abra o arquivo npchandler.lua e procure (control+f) por "function NpcHandler:isInRange(cid)" (sem aspas) modifique essa linha: function NpcHandler:isInRange(cid) local distance = getNpcDistanceTo(cid) or -1 return distance ~= -1 and distance <= self.talkRadius end Por: function NpcHandler:isInRange(cid) local distance = g…

    • 5 respostas
    • 2.1k visualizações
  35. Started by Luan Zero,

    Olá pessoal, desejo um ótimo dia para todos, é notório que 90% da galera que tem um servidor com derivado de nto/dbo procuram pelo sistema de Speed Attack igual do NtoBrasil, então hoje venho disponibilizar para vocês, o sistema, eu fiz com a ajuda ADM do ultiimate "LKS", lembrando que o sistema eu testei em uma sources 0.4, alguns amigos meu disseram que funcionou em 0.3.6. Vamos lá, na sua sources procure pelo arquivo : Player.cpp. e procure por : uint32_t Player::getAttackSpeed() { Item* weapon = getWeapon(); if(weapon && weapon->getAttackSpeed() != 0) return weapon->getAttackSpeed(); return vocation->getAttack…

    • 11 respostas
    • 7.4k visualizações

Quem Está Navegando 0

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

Informação Importante

Confirmação de Termo