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. Eu acho que muito deles já podem ter sido postados aqui, só queria colocá-los juntos para as pessoas que querem entender e programar em C++. C++ Tutoriais - http://www.cplusplus...es/tutorial.pdf Este tutorial é bem detalhado, bem explicado e um pouco longo. C++ Game Programming Nesta página você poderá encontrar tutoriais para C++ e programação de jogos, não bem detalhado mas tem coisa boa. Beginners Games Programming Eu ainda não chequei este, mais parece ter coisas úteis. Programas Úteis - Download Dev C++ from SourceForge.net Aqui você poderá baixar o Dev-C++ v.4.9.9.2, use para criar programas em C++. Links Úteis - Browse Dev-C++ Development Packages File…

  2. 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
  3. Bom dia, gente tou precisando de uma script que quando o player mata uma quamt idade "x" de monstros ele poderá passar pela porta. Será que podem me ajudar? Agradeço

    • 1 resposta
    • 1.6k visualizações
  4. Started by MerlinMage,

    Boa noite pessoal ,eu gostaria de saber primeiramente como que eu faço pros players usarem os outfits com os 2 addons .. sem ter aquela coisa de addon doll . ou de ter q pegar em npc... como eu habilito os 2 addons?

    • 3 respostas
    • 1.6k visualizações
  5. 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
  6. [TESTADO EM OTX 2.x.x SERIES] 8.60 Primeiramente vá em game.cpp e procure por: bool Game::broadcastMessage(const std::string& text, MessageClasses type) { std::clog << "> Broadcasted message: \"" << text << "\"." << std::endl; for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) it->second->sendTextMessage(type, text); return true; } Abaixo adicione: bool Game::globalSendChannelMessage(std::string author, std::string text, MessageClasses type, uint16_t channel) { std::clog << "> Channel message: \"" << text << "\"." << std…

  7. Started by Lurk,

    Peço desculpas caso esteja postando na área errada, por favor movam o tópico. Isso é um tutorial O script já existe na base que o @WooX postou aqui mas quando tentei passar pro meu sv 0.4 ficava dando debug dai eu desisti na época. Dai eu tava tentando ajudar nesse tópico, tentei mais uma vez e consegui fazer funcionar. Exemplo de como fica ingame Vamos a instalação em data/globalevents/scripts crie um arquivo chamado eventcheck.lua e cole isso dentro local EventsListalist = { {time = "01:00", name = "Snowball Event"}, {time = "02:00", name = "DesertWar Event"}, {time = "03:00", name = "Capture The Flag…

    • 2 respostas
    • 1.5k visualizações
  8. Ola galera do tibia king, bom esse topico ja havia sido feito mais estava muito grande e confuso resolvir edita-lo para melhor compreende-lo, bom como o Titulo ja diz eu irei ensinar como adicionar Wayfarer Addon Full nas versoes 8.60. (Desculpe-me pelos erros nas acentuaçoes pois meus acentos nao esta funcionando, n~~ao). Bom vamos la. Abra a pasta DATA>NPC>SCRIPTS> e crie um arquivo chamado wayfarer.lua e coloque isso dentro local focus = 0 local talk_start = 0 function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then se…

  9. 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
  10. Started by Skyforever,

    Strings strings são palavras ou letras geralmente são usadas entre "" vamos aos strings: Esses são os strings mais usados Math's esses são os math's mais conhecidos

    • 4 respostas
    • 1.4k visualizações
  11. Started by Bluetooth,

    Instale as lib # apt-get install git cmake build-essential liblua5.2-dev libgmp3-dev libmysqlclient-dev libboost-system-dev execute os comandos $ cd /pasta_do_tfs $ mkdir build && cd build $ cmake .. $ make pronto sua distro esta na pasta build nomeada de tfs

    • 3 respostas
    • 1.4k visualizações
  12. 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
  13. 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
  14. Started by Skydangerous,

    Manipulações de Strings. Strings devem estar entre aspas (simpes ou duplas). local texto1 = 'Ola mundo.' local texto2 = "TibiaKing" Funções Báscias string.byte() Retorna o valor da tabela ASCII s = string.byte('A') print(s) string.char() Retorna um caracter a partir do valor numérico da tabela ASCII. s = string.char(66) print(s) string.len() Retorna o tamanho da string. s = 'Programar em LUA é muito fácil.' a = string.len(s) print(a) string.lower() Retorna um string com os caracteres maiúsculos convertidos para minúsculo s = 'Programar em LUA é muito fácil.' a = string.lower(s…

    • 1 resposta
    • 1.4k visualizações
  15. Bom Galera Primeiro irei mandar uma foto de como irá ficar a mensagem de boas vindas Imagem e então vamos lá Vocês irão ir em: /mods/firstitems.xml e vocês irão procurar por: doAddContainerItem(bag, 12260, 1) e embaixo disso vocês colocam: Spoiler local msg = [[ --------- Mensagem Inicial by Korobeiniki / Atiralol --------- Bote tudo oque voce quiser aqui : ) Nao esqueca de dar rep xD --Bom jogo a todos!-- ]] doPlayerPopupFYI(cid, msg) se eu ajudei vocês porfavor deixe seu rep não custa nada

    • 1 resposta
    • 1.4k visualizações
  16. Hoje resolvi fazer este tutorial porque os que que encontrei estavam muito confusos e não entendi certas coisas. V [TUTORIAL] Como adicionar pokemons com {Icon System}. 1- Abra o seu ObjectBuilder. 2- Aperte Ctrl+O ou Clique em "File"/"Open". 3- Clique em Browse. 4- E abra a pasta onde fica seu tibia.spr e o tibia.dat. 5- Caso for estendido marque a caixa. 6- Após isto procure as outfit, corpse, ícone e portrait do pokemon desejado. ob…

    • 1 resposta
    • 1.3k visualizações
  17. Started by Jamyn,

    VENHO HOJE COM UM TUTORIAL PARA QUEM ESTÁ COM DIFICULDADES EM COMPILAR TFS USANDO O VISUAL STUDIO Como pouca gente sabe, para compilar o TFS é preciso da versão 2015 do Visual Studio e muita gente que baixa agora, vem com a versão 2017. Para quem já baixou, procure por “Visual Studio Installer” no menu iniciar e abra-o. Quem vai baixar agora, já faça esse procedimento. Link: https://www.visualstudio.com/pt-br/ Clique em modificar. Conforme mostra a imagem. Assim que abrir, abrirá essa janela. Se você ainda não instalou nada, prossiga depois daqui. Clique em Desenvolvimento para desk…

    • 1 resposta
    • 1.3k visualizações
  18. Started by L3K0T,

    Bom pessoal eu estava sofrendo com um erro, que dava shutdown em meu server, ele não reiniciava, ficava só no shutdown o dia todo, então eu resolvi verificar esse código game.cpp, resolvi meu problema e venho compartilhar com vocês. Vá em game.cpp procure void Game::shutdown() até exit(1);#endif } e substitua entre ele por esse abaixo: void Game::shutdown() { std::clog << "Preparing"; Scheduler::getInstance().shutdown(); std::clog << " to"; Dispatcher::getInstance().shutdown(); std::clog << " shutdown"; Spawns::getInstance()->clear(); std::clog << " the"; Raids::getInstance()->clear(); std::clog << " server"; …

  19. Ola amigos do tibiaking, estou trazendo aqui para vocês um TFS 0.4 8.6 com cast system e war system feita pelo LuanLuciano! lembrando que foi feita por ele não por mim, só estou disponibilizando aqui para vocês! TFS 0.4 DEV rev 3777 (by TFS Team) Anti-Divulgação (.servegame, .no-ip, .net, .com, .org, .pl, .biz, .br, .sytes, .info) War System Cast System (by Summ) Retirado bugs de anti-push .. Retirado bugs de elfbot ... Retirado erro de não aceitar outros items ... Retirado erro de Malformed File ... Add creatureevent onMoveItem() ... Add função getCreaturePathTo () ... E vários outros! https://www.youtube.com/watch?v=iIVJxDFLvlg Datapack Sources …

    • 6 respostas
    • 1.3k visualizações
  20. Started by lucascsa123,

    Primeiro Vá Em Data/Spells/Scripts/Attack Crie Um Arquivo Chamado : noble Agora Abra O Arquivo E Cole Isto Dentro : local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_PHYSICALDAMAGE) setAttackFormula(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE, 50, 50, 80, 100) local area = createCombatArea(AREA_CROSS5X5) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end 50, 50, 80, 100) É O Ataque Do Poder Vcs Editam Quanto Vcs Querem ~~ Vamos Lá Salve e feche , Agora vá em 'spells.xml' e adicione esse TAG Aba…

    • 1 resposta
    • 1.3k visualizações
  21. Started by arthurluna,

    Olá Tk, Meu OTRestarter evoluiu desde a última versão 1.0.0, eu melhorei ele algumas vezes sobre e sem liberá-lo aqui devido a alguns comentários ruins última vez. De qualquer forma aqui é com SOPRO recursos! E muito mais na versão 2.0.3! Vamos começar a introdução de OTRestarter v2.0.3 -: | Imagens |: - - Botão Drag'n'Drop! -Visão geral do programa: -Auto-Updater -:| VIRUS SCAN |:- NOTA: Por favor relatar quaisquer bugs Se você encontrou algum. Visite o meu site! AeroSoft Agradecimentos para ver ou fazer download, Aerox Aerox12 ArthurLuna …

  22. Started by thiagobji,

    Como o título já diz tudo, vou ensinar umas partes para os iniciantes hoster de OTServer que sabe pouco ainda Vou fazer só 1 mesmo para entenderem mesmo (Estou pegando o outfits do Global Compacto, rsrs) O Outfit sem está editado <outfit id="1"> <list gender="0" lookType="136" name="Citizen"/> <list gender="1" lookType="128" name="Citizen"/> </outfit> Agora editando, passo a passo <outfit id="1"> - Eu peguei o primeiro addon, então será o número 1 <list gender="0" - Todo mundo sabe que GENDER é SEXO (SÉRIO? ¬¬), o número 0 é o sexo masculino e o número 1 é o sexo feminino. lookType="136" - o n…

    • 2 respostas
    • 1.3k visualizações
  23. Bom dia! Trago estas três funções .lua que utiliza o player ID da database para retornar o Nome, vice-versa e o próprio ID Não consigo lhes dar exemplos de utilização, entretanto eu as utilizo. Estou certo que pode servir para alguém. • getPlayerNameById(id) • getPlayerIdByName(name) • getPlayerID(cid) Créditos a mim mesmo. Abraço!

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

  25. 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
  26. Salve galera bom eu procurei bastante nos fóruns por ai, podemos dizer que tem muita coisa do tipo, mesmo assim eu resolvi trazer esse conteúdo, achei bem interessante e claro para quem gosta de detalhes como eu vai ser muito útil, espero que gostem. Requisitos Alteração na 050-Functions Caminho: Pasta do servidor/data/lib Ir até o final de tudo dar dois enters e adicionar o seguinte código Spoiler function convertTime(a) if(type(tonumber(a)) == "number" and a > 0) then if (a <= 3599) then local minute = math.floor(a/60) local second = a - (60 * minute) if(second == 0) then …

  27. Started by Jeff Owns,

    Olá Galera Hoje Irei Da esse Tutor De quest Então Vamos Lá Vá em data/actions/script. Renomei um arquivo.lua que n estar sendo usado apage tudo que ta dentro.. e adicione isto function onUse(cid, item, fromPosition, itemEx, toPosition) a = 9930 id = 2342 if getPlayerStorageValue(cid, a) < 1 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voçe Pegou (a) "..getItemNameById(id)..".") doPlayerAddItem(cid, id, 1) doPlayerSetStorageValue(cid, a, 1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voçe Ja Pegou Este Item") end return TRUE end Ond tem (a) eh action do seu ot que vc vai bota.. NAO BOTE UMA ACTION JA USA…

    • 2 respostas
    • 1.2k visualizações
  28. Galera acabei de criar um script que baixa e compila o OTserv no Linux, lembrando que está versão é apenas para a distribuição Debian/Ubuntu e suas derivadas... lembrando que eu irei atualizar o código daqui pra frente, então fiquem ligados no GitHub, para onbter o script mais recente... O script é apenas para os preguiçosos de plantão (Assim como eu), ele irá baixar e compilar o otserv automaticamente. O script apenas faz isso, ele não faz mágica, mas é uma boa Fique de olho no projeto oficial. Primeiro baixe os dois arquivos necessários para a compilação: Baixe Aqui Jogue os arquivos na pasta Home, sua pasta deverá ficar assim: Abra o termina…

    • 2 respostas
    • 1.2k visualizações
  29. Started by Ryzor,

    Tutorial - Talk Actions com multiplos parametros - String Explode e Patterns Introdução: Embora muitos ja saibam, e não há dificuldade nisso, muitos se perguntam: "Como eu faço uma talkaction com mais de uma virgula?". Pergunta comum esta é, e ela se da geralmente entre os iniciantes. Se voce não for um, esse tutorial não é para você, mas sera para mim uma honra sua atenção. Nesse tutorial, vou ensinar dois meios faceis e simples de fazer isso. Embora os iniciantes tenham mais esse tipo de dúvida, o conteudo é no minimo, Intermediario. I - Informações No Open Tibia tradicional, em termos de Talkaction temos um padrão simples de parâmetro, Cid (Creature…

    • 3 respostas
    • 1.2k visualizações
  30. ja vi varias pessoas com problema na Arena Quest principalmente em ots 9.6 ( Quando voce mata o Boss e mesmo assim nao passa pelo portal pra proxima room) vou mostrar como e simples arrumar o problema basta fazer o seguinte vá na pasta creaturescripts do seu ot e crie um arquivo com o nome arenakill.lua caso ja tenha basta abrir e subistituir o script, logo em seguida adicione o script: e salve o arquivo e feche. depois abra o arquivo creaturescripts.xml e adicione a linha: caso ja tenha nao precisa adicionar, depois de feito esse procedimento ligue o ot e faça a quest que estará funcionando 100% atenção so irá funciona caso vc nao esteja conseguindo passa…

    • 2 respostas
    • 1.1k visualizações
  31. Started by Eduardo Carvalho,

    Conteúdo removido por "anunciar venda de scripts".

    • 5 respostas
    • 1.1k visualizações
  32. Started by Forged,

    É chato entrar num ot e ver a quest: Mata o dragon e abra o baú. então resolvi fazer um tutorial para vocês. lembrando que: Você não deve fazer uma quest assim exatamente como a minha, com o baú do lado da alavanca e etc..., fiz o mapa em menos de um minuto. Isso serve como exemplo de actions, e realmente, da para fazer muita coisa com esse exemplo. Resumindo: Você puxa uma alavanca, então é atribuido um storage ID à você, quando vc pisa no tile especial, ele checa se vc ja puxou a alavanca, se não, ele move você 1 sqm para o lado oposto. Vou por um esquema para vocês verem: Fiz o script da alavanca o mais facil possivel de configurar: …

    • 4 respostas
    • 1.1k visualizações
  33. 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
  34. Started by MarceLoko,

    Boa noite! Trago ao fórum um simples porém útil tutorial de manipulação dos valores da database. O uso da database me garante melhor organização das minhas variáveis, em comparação a storages. Por storages você está preso a valores numéricos. Via database, você pode atribuir nomes, utilizar strings, e organizar as variáveis em grupos. Responderei dúvidas conforme for possível. Para inserir uma linha nova em uma tabela db.executeQuery("INSERT INTO `accounts` (`id` ,`name` ,`password`)VALUES ('5', 'marcelo', 'druida');") Neste exemplo, será adicionado na tabela accounts, uma nova conta marcelo/druida. (na verdade a senha é encriptada, mas serve como exem…

    • 6 respostas
    • 1.1k visualizações

Quem Está Navegando 0

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

Informação Importante

Confirmação de Termo