Ir para conteúdo

Omega

Marquês
  • Total de itens

    1165
  • Registro em

  • Última visita

  • Dias Ganhos

    13

Histórico de Reputação

  1. Upvote
    Omega recebeu reputação de rorix em Caçadores de Recompensa - Omega Bounty Hunter System   
    Isso não é inédito em OTS, mas fiz o meu sistema de Caçador de Recompensa (Bounty Hunter)
     
    1. Informações sobre o sistema
    Sistema de pontos por recompensa incluído (configurável) Rank de maiores caçadores Rank de maiores recompensas Lista de jogadores com recompensa online  
    2. Funcionamento
    Você fala com o NPC, que oferece várias opções  
    Você pode colocar uma recompensa para a morte de alguém (post), pegar seu dinheiro por caçar alguém (reward), checar as maiores recompensas (most wanted), checar seus pontos de caçador (points) ou obter informações gerais sobre o funcionamento (information)
    Para colocar uma recompensa, você deve fornecer um nome. Se esse jogador existir, você deverá oferecer um valor (mínimo configurável). Depois, desse valor será descontada a taxa da guilda dos assassinos (configurável). Se você tiver esse dinheiro, ele será removido e o nome dessa pessoa estará na lista de procurados, para que o jogador que a matar (não funciona para o jogador que colocou a recompensa) ganhe a recompensa devida
    Quando um jogador mata outro procurado, ele é avisado de que ganhou a recompensa e os pontos (se estiver ativado). Para pegar a recompensa, ele deve falar com o NPC
    Para saber quais jogadores procurados estão online e quais são suas recompensas, foi adicionado um quadro especial que lista esses jogadores, assim como um outro quadro que lista os maiores caçadores do servidor
     
    3. Códigos
     
    3.1. Tags
    Creaturescripts.xml: <event type="kill" name="bountykill" event="script" value="bountykill.lua"/> <event type="look" name="bountyboard" event="script" value="bountyboard.lua"/> talkactions.xml: <talkaction words="/installbounty" access="5" event="script" value="bountyinstall.lua"/> 3.2. NPC
    Crie um arquivo: npcs/Tyrion.xml  
     
     
     
    3.3. Códigos lua
     
    Adicionar em creaturescripts/login.lua, junto com os demais registerCreatureEvent registerCreatureEvent(cid, "bountyboard") registerCreatureEvent(cid, "bountykill") lib/bountylib.lua  
     
     
    creaturescripts/scripts/bountykill.lua  
     
     
    creaturescripts/scripts/bountyboard.lua  
     
     
    npcs/scripts/assguild.lua  
     
     
    talkactions/scripts/bountyinstall.lua  
     
     
     
    4. Configuração / Instalação
    Você deve usar o comando /installbounty pelo GOD para que o sistema adicione a coluna necessária no seu banco de dados As configurações disponíveis estão no bountylib.lua O sistema de pontos apenas adiciona e conta os pontos. Cabe a sua imaginação/habilidade fazer algo a partir deles Para adicionar o rank de melhores caçadores e a lista de procurados online, você deve criar dois itens (eu recomendo o quadro negro - id 1810, por exemplo) e colocar os actionids 3550 e 3551. Assim, quando alguém der look, aparecerão as respectivas listas [óbvio] O sistema depende de que você adicione o NPC no mapa [/óbvio]  
    5. Bugs
    Apesar de ter testado bastante, ainda há espaço para alguns bugs. Caso você os encontre, por favor poste DETALHADAMENTE qual é o erro para que eu possa consertar  
    6. Considerações Finais
    Espero críticas/sugestões/elogios sobre o código e seu funcionamento
  2. Upvote
    Omega recebeu reputação de Insaend em Pacote de Scripts [Simples e Úteis] I - Actions   
    Esse é um pacote com actions úteis para se usar nos servidores e, a menos que esteja indicado o contrário, são de minha autoria.
    [Testado em servidor 8.6]

    Para colocar essas actions no jogo, você deve colocar uma TAG no arquivo actions.xml do seu servidor, com um actionid e o nome do arquivo .lua (contendo o script) na pasta de scripts. Então, você deve colocar um item com aquele actionid no mapa.

    [ACTION #1] Baús de quests completos

    Descrição:
    Com essa action, você pode colocar vários baús simples de quest em apenas um script de forma rápida e organizada. Basta apenas registrar diferentes actionIDs no actions.xml, colocar eles em cada baú e depois inserir no script, conforme o padrão.  



    [ACTION #2] Summon simples

    Descrição:
    Dessa forma você pode criar um pequeno sistema de summon com um monstro. No primeiro uso, ele invoca o monstro à comando do jogador, gastando a mana definida. Então, caso outro uso seja realizado até o exhaust terminar, o monstro será removido. Quando o jogador usar novamente, se o monstro invocado existir, ele será removido e outro monstro será invocado, reiniciando o ciclo. OBS.: os ataques em área do summon ainda vão tirar vida do jogador. Para uma correção, vide final do tópico.  



    [ACTION #3] Fome Zero

    Descrição:
    Script simples: você registra o actionID dele em algum item e então o jogador ganhará uma comida sorteada entre as que constam em foodID (deve ser configurado) Pode ser usado à vontade pelo jogador para conseguir comida.  



    [ACTION #4] Alavanca do Cassino

    Descrição:
    Um script de alavanca: nesse você define as possíveis recompensas, o quanto de dinheiro a pessoa vai precisar e as chances!  


    [ACTION #5] Fantasias de Monstros

    Descrição:
    Quando o jogador clicar em um item, será sorteada uma outfit entre as definidas.  


    [ACTION #6] Passagem Secreta

    Descrição:
    Ao puxar a alavanca, o jogador removerá uma parede do lugar, abrindo uma passagem secreta. Ela se fechará em alguns segundos.  


    [ACTION #7] Baús de vocações

    Descrição:
    Bem óbvio pelo nome, essa action dá prêmios diferentes para cada vocação  


    [ACTION #8] SUSTO!

    Descrição:
    Essa action super engraçada fará o seguinte: o jogador se transformará num cadáver e aparecerá a mensagem You were downgraded from level... (igual a msg do tibia mesmo). Depois de TRÊS segundos, o jogador voltará a sua outfit normal e receberá a mensagem Gotcha! (te peguei em inglês)  


    [ACTION #9] Painel informativo

    Descrição:
    Com essa action você pode fazer aparecer uma mensagem em popup para o jogador contendo as informações que você quiser.  


    [ACTION #10] Armários realistas!
    Autor: Avronex

    Descrição:
    Colocando esse script em armários, os jogadores irão receber a janela de trocar outfit quando clicarem!  
     
    [ACTION #11] Fogos de Artifício

    Descrição:
    Um novo script para fogos de artifício, com efeitos, número de explosões e tempo entre as explosões configuráveis.  
     
     
     
    E aqui a lista termina por enquanto. Me avise se você achar/tiver uma action útil que possa entrar para a lista.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
    Correção para que o summon não dê dano em quem o invocou:
     
  3. Upvote
    Omega recebeu reputação de gtms em Advanced Guild System   
    Bom, eu percebi que algo que poderia deixar os servidores bem legais seria um foco maior nas guilds em si. Então, resolvi criar um sistema que fosse melhorar isso, e surgiu o Advanced Guild System.

    Atualizações
    22/01/14 - Publicação da versão 1.0 21/04/14 - Adição de mais tratamento de erros Informações
    O AGS, em si, não faz nada. Isso mesmo. Ele é uma biblioteca com várias funções focadas para guilds. Além disso, ele também faz algumas modificações no seu banco de dados ao ser instalado:
    Cria a tabela guild_storages; Adiciona a coluna pontos na tabela guilds, se ela não existir; Adiciona a coluna balance na tabela guilds, se ela não existir; Adiciona a coluna guild_id na tabela players; Adiciona um gatilho(trigger) para atualizar a coluna guild_id toda vez que ocorrer uma mudança na tabela guilds. Para acompanhar essa biblioteca e mostrar sua utilidade, fiz alguns sistemas utilizando ela:
    Guild Rank; Guild Tasks; Guild Banker. Funções


    Instalação



    Código
    Salve-o como guildlib.lua em data/lib




    Problemas na Instalação?
    Caso uma ou mais das colunas adicionadas já existam no seu banco de dados, execute as queries manualmente:



    Depois disso, considere seu AGS instalado.
  4. Upvote
    Omega recebeu reputação de gtms em [AGS] Guild Banker   
    Aviso
    Esse script precisa do Advanced Guild System instalado corretamente para funcionar.
     
    Informações
    Esse é um NPC que gerencia as contas bancárias de uma guilda. Antes de qualquer coisa, o líder da guilda deve ir até ele e criar uma conta, definindo as permissões para os membros sacarem e depositarem na conta. Somente o líder da guilda terá a opção de mudar as permissões. Ele também poderá monitorar as transações feitas na conta, que ficarão salvas em um arquivo .txt (para isso deverá ser criada uma pasta chamada guild_bank dentro da pasta principal do seu OTS).
     
    Códigos
    Salve como guildbank.lua em npcs/scripts:
     
     
     
    Salve como Boris.xml em npcs:
     
     
     
    Agora é só colocar o NPC Boris no mapa e pronto.
  5. Upvote
    Omega recebeu reputação de Mendiguinho91 em Advanced Guild System   
    Bom, eu percebi que algo que poderia deixar os servidores bem legais seria um foco maior nas guilds em si. Então, resolvi criar um sistema que fosse melhorar isso, e surgiu o Advanced Guild System.

    Atualizações
    22/01/14 - Publicação da versão 1.0 21/04/14 - Adição de mais tratamento de erros Informações
    O AGS, em si, não faz nada. Isso mesmo. Ele é uma biblioteca com várias funções focadas para guilds. Além disso, ele também faz algumas modificações no seu banco de dados ao ser instalado:
    Cria a tabela guild_storages; Adiciona a coluna pontos na tabela guilds, se ela não existir; Adiciona a coluna balance na tabela guilds, se ela não existir; Adiciona a coluna guild_id na tabela players; Adiciona um gatilho(trigger) para atualizar a coluna guild_id toda vez que ocorrer uma mudança na tabela guilds. Para acompanhar essa biblioteca e mostrar sua utilidade, fiz alguns sistemas utilizando ela:
    Guild Rank; Guild Tasks; Guild Banker. Funções


    Instalação



    Código
    Salve-o como guildlib.lua em data/lib




    Problemas na Instalação?
    Caso uma ou mais das colunas adicionadas já existam no seu banco de dados, execute as queries manualmente:



    Depois disso, considere seu AGS instalado.
  6. Upvote
    Omega recebeu reputação de gabriel28 em X-Weapons   
    Apresento-lhes as X-Weapons, uma pequena galeria com alguns scripts para armas especiais. O @Lucasmml me ajudou fazendo a primeira sprite pra incrementar a iniciativa.
    Magebane - o terror dos magos
    Uma arma lendária: ela tem o poder de, a cada golpe, retirar um pouco do poder mágico do alvo.

     
     
    Winter's Charm - o poder do inverno Esse poderoso cajado se adapta aos poderes do mago que o utiliza, disparando gelo e atrapalhando a movimentação do alvo.

     
     
    Maul of Doom - o martelo dos amaldiçoados Esse martelo foi submetido a rituais profanos, recebendo poderes sobrenaturais que afligem com dores contínuas quem tem o azar de receber seus golpes.
    -- Importante --
    Esse código foi feito pelo @brun123 para uma magia, só adaptei ele pra criar uma arma.

     
     
    Fury's Edge - no pain, no gain Essa espada se alimenta da raiva do seu usuário, causando maior dano conforme o percentual de vida decresce.

     
     
    The Blood Drinker Esse machado é capaz de se alimentar do sangue fresco de suas vítimas, absorvendo-o para aumentar sua força.

     
  7. Upvote
    Omega recebeu reputação de alberto10 em Enciclopédia de Tutoriais de Scripting   
    Última Atualização: 14/03/2014

    Aqui serão organizados os tutoriais da área, divididos por nível de conhecimento (básico, intermediário e avançado) e conteúdo (spells, monsters, ...). Também separei tópicos com material de consulta para scripters, as listas organizadas anteriormente e um adicional de alguns scripts de destaque.

    Recomendações:
    Para os que querem aprender e editar scripts e estão começando, não usem o bloco de notas, muitas vezes destrói a organização do código e torna o scripting muito mais trabalhoso. Para começar, usem o Notepad++. Outra boa ideia para aprender é sempre exercitar-se lendo e criando códigos. Tente procurar por códigos que você consiga entender na pasta do seu otserver e vá aumentando o nível de dificuldade, tentando reproduzi-los por conta própria, à sua maneira. Além disso, você deve criar códigos do zero para se exercitar devidamente. Leia o segundo tutorial (lógica, algoritmos e organização, por iuniX) e aprenda o que é identação antes mesmo de pensar em aprender o resto. 1. Módulo Geral - Tutoriais focados na linguagem LUA e nas bases do scripting

    Nível 0 - Tutoriais focados no desenvolvimento da lógica e contato inicial com a linguagem LUA
    Lua, o que é? - Por iuniX Lógica, algoritmos e organização - Por iuniX Variáveis e Tipos de Dados - Por iuniX Funções e Return - Por apocarai Aulas Iniciais da Escolinha de Scripting - Por Roksas Strings e Numbers em Lua - Por caotic Nível 1 - Tutoriais básicos sobre a linguagem e scripting
    Introdução e Convenções Léxicas - Por apocarai Tutorial de Action - Por BoppreH (postado aqui por Brabo) Editando o config.lua - Por buster287 Aulas da Escolinha de Scripting - Por Roksas Quer aprender a ser scripter? - Por Sir Picaralhos Tutoriais 1-4 da Enciclopédia da Pasta Data - Por tibiaa4e Como funcionam os scripts - por MaXwEllDeN Como Criar Seu Monstro - Por VitorHugoFerreira Como Adicionar Seu NPC no Mapa - Por megaplis Revisão de Monsters, NPCs e Spells - Por Lucas Rap Estruturas de Controle - Por apocarai Nível 2 - Tutoriais intermediários sobre a linguagem e scripting
    A Coisa Mais Importante em um Código - Por Skyen A Partir do Tutorial 5 da Enciclopédia da Pasta Data - Por tibiaa4e Tutorial Sobre Arrays (Tables) - Por Tprocheira Matemática e LUA - Por Demonbholder Como Editar Magias - Por MatheusMkalo Tutorial Creaturescripts - Por Jhon992 Utilização de Loops - Por caotic Loopings - Por Demonbholder Editando Itens - Por Fronick Escrevendo em um arquivo - Por SkyDangerous Lib - O Que É e Como Usar - Por caotic Como usar o AddEvent - Por Killua Nível 3 - Tutoriais avançados sobre a linguagem e scripting
    Tutorial sobre Patterns - por MaXwEllDeN LUA Orientado a Objetos I - Por SkyDangerous LUA Orientado a Objetos II - Por LuckOake Tutorial de Queries para OTServers - Por shutup Utilizando Arquivos XML - Por caotic Queries e SQL para OTServers - Por mim Simulando IF/ELSE com AND/OR - Por River Material de Consulta - Tópicos que podem ser de ajuda quando se está criando códigos (para relembrar como usar aquela funçãozinha que você esqueceu)
    Algumas Funções do TFS com Explicação - Por tibiaa4e Operadores e Bibliotecas - Por Roksas Mais Funções do TFS sem Explicação - Por sukx Manual LUA - Por Roberto Ierusalimschy et al Biblioteca de Funções LUA (poucas funções, mas bem explicadas) - Por Benefactor Lista de Atributos para Itens - Por Oneshot Lista de Efeitos 8.54 - Por antharaz Algumas Fórmulas Úteis para OTServers - Por Oneshot 2. Módulo Específico - Tutoriais variados separados por assunto

    Monsters
    Editando a aparência das criaturas - Por Nickelback Criando seu monstro - Por VictorHugoFerreira NPCs
    Criando Seu NPC - Por Eventide A Magia dos NPCs - Por tibiaa4e Como Adicionar NPC no seu Mapa - Por Megaplis Spells
    Criando Magias - Por Kimoszin Criando Magias Para Monstros - Por 139 Entendendo e Configurando a Área das Magias - Por Krhiegen Criando Runas Novas - Por mxlr14 Spells e suas Grandes Funções - Por tibaa4e Actions
    Criando Quests - Por tibiaa4e Como Fazer um Baú de Quest Simples - Por DarkAlvaro Editando Potions - Por RarTne Actions - Por tibiaa4e Movements
    Criando Pisos Especiais - Por FoDoX Movements - Por tibiaa4e Itens
    Criando Armas Especiais - Por theflammer Tornando Munição Infinita - Por TheSleeper Lista de Atributos para XML - Por amoeba13 Como Fazer um Item Se Tornar Stackable - Por notle2012 Criando Wands e Rods - Por Castiello XML
    Configurando o Quest Log - Por Luiz Vitor Editando Exp Por Stages - Por Schiavinato Tutorial Sobre Outfits - Por Oneshot Configurando as Vocações - Por Flash001 Adicionando Vocações ao Account Manager - Por profelezio Outros
    Criando Exhaustion Com Storage - Por Roksas Resolvendo o Problema de Anti-Idle - Por cs007 Como Usar LUA Para Editar o Quest Log - Por MaXwEllDeN Como Usar addEvent adequadamente - Por skymagnum Como Adicionar Level Máximo - Por McTyn Tutorial Sobre Storages - Por caotic Como usar o os.date - Por Demonbholder 3. Scripts de destaque
    Pacote de Actions Simples e Úteis - Por mim NPC Lutador - Por mim Weapon Hit Rank - Por Vodkart NPC Auction - Por Vodkart War Arena - Por MatheusMkalo Castle Guild War - Por DrakyLucas Barco Que Anda Por Uma Rota - Por MatheusMKalo Simple Task v3.0 - Por Vodkart Fly System - Por Mock Character Market System - Por LuckOake Autoloot - Por Mkalo e Vodkart 4. Listas antigas
    Os Melhores Tutoriais - Por Luckituz X-Find Scripting - Por HenriqueMoura 5. Pedidos de Tutoriais
    Aqui é a lista de tutoriais pedidos para complementar o acervo do XT. Quem fizer algum deles e este for aprovado, me avise e ganhará 3 rep+. Para pedir um tutorial aqui, basta comentar no tópico especificando o conteúdo.
    Tutorial detalhado sobre a criação de mods Tutorial sobre mounts Por fim, deixe sua sugestão de tutorial ou sobre o tópico, denuncie links quebrados e, se o conteúdo do fórum te ajudou, procure devolver contribuindo de volta.
  8. Upvote
    Omega recebeu reputação de gmstrikker em Advanced Guild System   
    Bom, eu percebi que algo que poderia deixar os servidores bem legais seria um foco maior nas guilds em si. Então, resolvi criar um sistema que fosse melhorar isso, e surgiu o Advanced Guild System.

    Atualizações
    22/01/14 - Publicação da versão 1.0 21/04/14 - Adição de mais tratamento de erros Informações
    O AGS, em si, não faz nada. Isso mesmo. Ele é uma biblioteca com várias funções focadas para guilds. Além disso, ele também faz algumas modificações no seu banco de dados ao ser instalado:
    Cria a tabela guild_storages; Adiciona a coluna pontos na tabela guilds, se ela não existir; Adiciona a coluna balance na tabela guilds, se ela não existir; Adiciona a coluna guild_id na tabela players; Adiciona um gatilho(trigger) para atualizar a coluna guild_id toda vez que ocorrer uma mudança na tabela guilds. Para acompanhar essa biblioteca e mostrar sua utilidade, fiz alguns sistemas utilizando ela:
    Guild Rank; Guild Tasks; Guild Banker. Funções


    Instalação



    Código
    Salve-o como guildlib.lua em data/lib




    Problemas na Instalação?
    Caso uma ou mais das colunas adicionadas já existam no seu banco de dados, execute as queries manualmente:



    Depois disso, considere seu AGS instalado.
  9. Upvote
    Omega recebeu reputação de samlecter em Enciclopédia de Tutoriais de Scripting   
    Última Atualização: 14/03/2014

    Aqui serão organizados os tutoriais da área, divididos por nível de conhecimento (básico, intermediário e avançado) e conteúdo (spells, monsters, ...). Também separei tópicos com material de consulta para scripters, as listas organizadas anteriormente e um adicional de alguns scripts de destaque.

    Recomendações:
    Para os que querem aprender e editar scripts e estão começando, não usem o bloco de notas, muitas vezes destrói a organização do código e torna o scripting muito mais trabalhoso. Para começar, usem o Notepad++. Outra boa ideia para aprender é sempre exercitar-se lendo e criando códigos. Tente procurar por códigos que você consiga entender na pasta do seu otserver e vá aumentando o nível de dificuldade, tentando reproduzi-los por conta própria, à sua maneira. Além disso, você deve criar códigos do zero para se exercitar devidamente. Leia o segundo tutorial (lógica, algoritmos e organização, por iuniX) e aprenda o que é identação antes mesmo de pensar em aprender o resto. 1. Módulo Geral - Tutoriais focados na linguagem LUA e nas bases do scripting

    Nível 0 - Tutoriais focados no desenvolvimento da lógica e contato inicial com a linguagem LUA
    Lua, o que é? - Por iuniX Lógica, algoritmos e organização - Por iuniX Variáveis e Tipos de Dados - Por iuniX Funções e Return - Por apocarai Aulas Iniciais da Escolinha de Scripting - Por Roksas Strings e Numbers em Lua - Por caotic Nível 1 - Tutoriais básicos sobre a linguagem e scripting
    Introdução e Convenções Léxicas - Por apocarai Tutorial de Action - Por BoppreH (postado aqui por Brabo) Editando o config.lua - Por buster287 Aulas da Escolinha de Scripting - Por Roksas Quer aprender a ser scripter? - Por Sir Picaralhos Tutoriais 1-4 da Enciclopédia da Pasta Data - Por tibiaa4e Como funcionam os scripts - por MaXwEllDeN Como Criar Seu Monstro - Por VitorHugoFerreira Como Adicionar Seu NPC no Mapa - Por megaplis Revisão de Monsters, NPCs e Spells - Por Lucas Rap Estruturas de Controle - Por apocarai Nível 2 - Tutoriais intermediários sobre a linguagem e scripting
    A Coisa Mais Importante em um Código - Por Skyen A Partir do Tutorial 5 da Enciclopédia da Pasta Data - Por tibiaa4e Tutorial Sobre Arrays (Tables) - Por Tprocheira Matemática e LUA - Por Demonbholder Como Editar Magias - Por MatheusMkalo Tutorial Creaturescripts - Por Jhon992 Utilização de Loops - Por caotic Loopings - Por Demonbholder Editando Itens - Por Fronick Escrevendo em um arquivo - Por SkyDangerous Lib - O Que É e Como Usar - Por caotic Como usar o AddEvent - Por Killua Nível 3 - Tutoriais avançados sobre a linguagem e scripting
    Tutorial sobre Patterns - por MaXwEllDeN LUA Orientado a Objetos I - Por SkyDangerous LUA Orientado a Objetos II - Por LuckOake Tutorial de Queries para OTServers - Por shutup Utilizando Arquivos XML - Por caotic Queries e SQL para OTServers - Por mim Simulando IF/ELSE com AND/OR - Por River Material de Consulta - Tópicos que podem ser de ajuda quando se está criando códigos (para relembrar como usar aquela funçãozinha que você esqueceu)
    Algumas Funções do TFS com Explicação - Por tibiaa4e Operadores e Bibliotecas - Por Roksas Mais Funções do TFS sem Explicação - Por sukx Manual LUA - Por Roberto Ierusalimschy et al Biblioteca de Funções LUA (poucas funções, mas bem explicadas) - Por Benefactor Lista de Atributos para Itens - Por Oneshot Lista de Efeitos 8.54 - Por antharaz Algumas Fórmulas Úteis para OTServers - Por Oneshot 2. Módulo Específico - Tutoriais variados separados por assunto

    Monsters
    Editando a aparência das criaturas - Por Nickelback Criando seu monstro - Por VictorHugoFerreira NPCs
    Criando Seu NPC - Por Eventide A Magia dos NPCs - Por tibiaa4e Como Adicionar NPC no seu Mapa - Por Megaplis Spells
    Criando Magias - Por Kimoszin Criando Magias Para Monstros - Por 139 Entendendo e Configurando a Área das Magias - Por Krhiegen Criando Runas Novas - Por mxlr14 Spells e suas Grandes Funções - Por tibaa4e Actions
    Criando Quests - Por tibiaa4e Como Fazer um Baú de Quest Simples - Por DarkAlvaro Editando Potions - Por RarTne Actions - Por tibiaa4e Movements
    Criando Pisos Especiais - Por FoDoX Movements - Por tibiaa4e Itens
    Criando Armas Especiais - Por theflammer Tornando Munição Infinita - Por TheSleeper Lista de Atributos para XML - Por amoeba13 Como Fazer um Item Se Tornar Stackable - Por notle2012 Criando Wands e Rods - Por Castiello XML
    Configurando o Quest Log - Por Luiz Vitor Editando Exp Por Stages - Por Schiavinato Tutorial Sobre Outfits - Por Oneshot Configurando as Vocações - Por Flash001 Adicionando Vocações ao Account Manager - Por profelezio Outros
    Criando Exhaustion Com Storage - Por Roksas Resolvendo o Problema de Anti-Idle - Por cs007 Como Usar LUA Para Editar o Quest Log - Por MaXwEllDeN Como Usar addEvent adequadamente - Por skymagnum Como Adicionar Level Máximo - Por McTyn Tutorial Sobre Storages - Por caotic Como usar o os.date - Por Demonbholder 3. Scripts de destaque
    Pacote de Actions Simples e Úteis - Por mim NPC Lutador - Por mim Weapon Hit Rank - Por Vodkart NPC Auction - Por Vodkart War Arena - Por MatheusMkalo Castle Guild War - Por DrakyLucas Barco Que Anda Por Uma Rota - Por MatheusMKalo Simple Task v3.0 - Por Vodkart Fly System - Por Mock Character Market System - Por LuckOake Autoloot - Por Mkalo e Vodkart 4. Listas antigas
    Os Melhores Tutoriais - Por Luckituz X-Find Scripting - Por HenriqueMoura 5. Pedidos de Tutoriais
    Aqui é a lista de tutoriais pedidos para complementar o acervo do XT. Quem fizer algum deles e este for aprovado, me avise e ganhará 3 rep+. Para pedir um tutorial aqui, basta comentar no tópico especificando o conteúdo.
    Tutorial detalhado sobre a criação de mods Tutorial sobre mounts Por fim, deixe sua sugestão de tutorial ou sobre o tópico, denuncie links quebrados e, se o conteúdo do fórum te ajudou, procure devolver contribuindo de volta.
  10. Upvote
    Omega recebeu reputação de samlecter em Advanced Guild System   
    Bom, eu percebi que algo que poderia deixar os servidores bem legais seria um foco maior nas guilds em si. Então, resolvi criar um sistema que fosse melhorar isso, e surgiu o Advanced Guild System.

    Atualizações
    22/01/14 - Publicação da versão 1.0 21/04/14 - Adição de mais tratamento de erros Informações
    O AGS, em si, não faz nada. Isso mesmo. Ele é uma biblioteca com várias funções focadas para guilds. Além disso, ele também faz algumas modificações no seu banco de dados ao ser instalado:
    Cria a tabela guild_storages; Adiciona a coluna pontos na tabela guilds, se ela não existir; Adiciona a coluna balance na tabela guilds, se ela não existir; Adiciona a coluna guild_id na tabela players; Adiciona um gatilho(trigger) para atualizar a coluna guild_id toda vez que ocorrer uma mudança na tabela guilds. Para acompanhar essa biblioteca e mostrar sua utilidade, fiz alguns sistemas utilizando ela:
    Guild Rank; Guild Tasks; Guild Banker. Funções


    Instalação



    Código
    Salve-o como guildlib.lua em data/lib




    Problemas na Instalação?
    Caso uma ou mais das colunas adicionadas já existam no seu banco de dados, execute as queries manualmente:



    Depois disso, considere seu AGS instalado.
  11. Upvote
    Omega recebeu reputação de diarmaint em X-Weapons   
    Apresento-lhes as X-Weapons, uma pequena galeria com alguns scripts para armas especiais. O @Lucasmml me ajudou fazendo a primeira sprite pra incrementar a iniciativa.
    Magebane - o terror dos magos
    Uma arma lendária: ela tem o poder de, a cada golpe, retirar um pouco do poder mágico do alvo.

     
     
    Winter's Charm - o poder do inverno Esse poderoso cajado se adapta aos poderes do mago que o utiliza, disparando gelo e atrapalhando a movimentação do alvo.

     
     
    Maul of Doom - o martelo dos amaldiçoados Esse martelo foi submetido a rituais profanos, recebendo poderes sobrenaturais que afligem com dores contínuas quem tem o azar de receber seus golpes.
    -- Importante --
    Esse código foi feito pelo @brun123 para uma magia, só adaptei ele pra criar uma arma.

     
     
    Fury's Edge - no pain, no gain Essa espada se alimenta da raiva do seu usuário, causando maior dano conforme o percentual de vida decresce.

     
     
    The Blood Drinker Esse machado é capaz de se alimentar do sangue fresco de suas vítimas, absorvendo-o para aumentar sua força.

     
  12. Upvote
    Omega recebeu reputação de rorix em Bruce The Fighter - O NPC Lutador   
    Informações
    Bruce The Fighter é um NPC, mas também pode lutar contra outros jogadores, servindo como um ótimo boss de quests; A luta é inicada com um diálogo; Ele tem duas formas: normal e evoluída, mudando da primeira pra segunda quando chegar a uma porcentagem de vida configurável; Quando ele é derrotado, adiciona um storage (para ser usado como você quiser), itens, dinheiro e experiência; Também pode ser configurado se ele irá lutar novamente com o mesmo jogador, tendo também uma opção de exhaust; Quase totalmente configurável; São vários arquivos, então acompanhe atentamente o passo-a-passo da configuração/instalação. Códigos
    creaturescripts/scripts/monster1.lua  
     
    creaturescripts/scripts/monster2.lua  
     
    npcs/Bruce The Fighter.xml  
     
    npcs/scripts/challenger.lua  
     
    monsters/challenger.xml  
     
    monsters/challenger_evolved.xml  


    TAGs
    creaturescripts.xml <event type="statschange" name="Monster1" event="script" value="monster1.lua"/> <event type="statschange" name="Monster2" event="script" value="monster2.lua"/> monsters/monsters.xml <monster name="Bruce The Fighter" file="Meus Monstros/challenger.xml"/> <monster name="Bruce The Fighter_evolved" file="Meus Monstros/challenger_evolved.xml"/>
    Configuração/Instalação
    Na parte dos códigos, está indicado o lugar e o nome que o arquivo deverá ter. Não troque; No arquivo monsters1.lua, você pode decidir a porcentagem da vida na qual o Bruce trocará para a forma evoluída. A forma evoluída virá com essa mesma porcentagem de vida; No arquivo monsters2.lua, configure a experiência (exp), o dinheiro (money), o item e a quantidade (count) desse item que o jogador ganhará quando derrotar o Bruce. Também deve-se configurar o tempo de exhaust, como indicado no arquivo; Em Bruce The Fighter.xml, você pode definir as falas, o nome e a aparência inicial do Bruce (se mudar, não esqueça de trocar nos monstros também); No arquivo challenger.lua, escolha se o Bruce irá duelar novamente com o mesmo jogador; Nos arquivos challenger.xml e challenger_evolved.xml você definirá a força, vida e muitas outras coisas do Bruce (se tiver mudado a aparência ou o nome, deve mudar aqui também). Caso não saiba mexer nos monstros, procure um tutorial na seção de tutoriais de scripting; Ao mudar algo do Bruce, verifique o padrão e preste bastante atenção para não esquecer nenhuma parte; O storage que será mudado ao derrotá-lo é 69507, tendo valor inicial -1 (não derrotou nenhuma vez) e aumentando +1 para cada vez que o Bruce é derrotado (0, 1, 2, ...). Recomendo que o Bruce esteja em uma sala onde somente um jogador de cada vez possa entrar.
  13. Upvote
    Omega recebeu reputação de Miinerva em Evento Cidade Optional PvP Invasao   
    local event_pos1 = {x=x, y=y, z=z} local event_pos2 = {x=x, y=y, z=z} Aqui você bota a posição do canto superior esquerdo e do canto inferior direito da área na qual o evento irá ocorrer.
  14. Upvote
    Omega recebeu reputação de kleytonhigor em Tour Mod   
    Informações
    Apresento-lhes um mod simples, mas muito útil para servidores com mapas próprios. Ele faz com que o jogador passe por certos locais, sem poder se mexer nem entrar em combate, recebendo caixas de diálogo com informações sobre cada local Basta adicionar o código na pasta mods do seu servidor como tourMod.xml O comando é ativado in-game usando /tour ou !tour Só pode ser ativado em PZ A duração de cada posição é configurável Caso haja algum erro, GMs podem usar o comando /tour debug para finalizar o tour de todos os jogadores online Código
     
     
     
     
    Configuração
    As posições para as quais o jogador será levado e o tempo pelo qual ele ficará em cada posição são configuráveis em tourLocations, seguindo o padrão Depois de cada duração, você deve configurar a mensagem que o jogador irá receber em tourDesc, usando a mesma numeração
  15. Upvote
    Omega recebeu reputação de kleytonhigor em Pacote de Scripts [Simples e Úteis] I - Actions   
    Esse é um pacote com actions úteis para se usar nos servidores e, a menos que esteja indicado o contrário, são de minha autoria.
    [Testado em servidor 8.6]

    Para colocar essas actions no jogo, você deve colocar uma TAG no arquivo actions.xml do seu servidor, com um actionid e o nome do arquivo .lua (contendo o script) na pasta de scripts. Então, você deve colocar um item com aquele actionid no mapa.

    [ACTION #1] Baús de quests completos

    Descrição:
    Com essa action, você pode colocar vários baús simples de quest em apenas um script de forma rápida e organizada. Basta apenas registrar diferentes actionIDs no actions.xml, colocar eles em cada baú e depois inserir no script, conforme o padrão.  



    [ACTION #2] Summon simples

    Descrição:
    Dessa forma você pode criar um pequeno sistema de summon com um monstro. No primeiro uso, ele invoca o monstro à comando do jogador, gastando a mana definida. Então, caso outro uso seja realizado até o exhaust terminar, o monstro será removido. Quando o jogador usar novamente, se o monstro invocado existir, ele será removido e outro monstro será invocado, reiniciando o ciclo. OBS.: os ataques em área do summon ainda vão tirar vida do jogador. Para uma correção, vide final do tópico.  



    [ACTION #3] Fome Zero

    Descrição:
    Script simples: você registra o actionID dele em algum item e então o jogador ganhará uma comida sorteada entre as que constam em foodID (deve ser configurado) Pode ser usado à vontade pelo jogador para conseguir comida.  



    [ACTION #4] Alavanca do Cassino

    Descrição:
    Um script de alavanca: nesse você define as possíveis recompensas, o quanto de dinheiro a pessoa vai precisar e as chances!  


    [ACTION #5] Fantasias de Monstros

    Descrição:
    Quando o jogador clicar em um item, será sorteada uma outfit entre as definidas.  


    [ACTION #6] Passagem Secreta

    Descrição:
    Ao puxar a alavanca, o jogador removerá uma parede do lugar, abrindo uma passagem secreta. Ela se fechará em alguns segundos.  


    [ACTION #7] Baús de vocações

    Descrição:
    Bem óbvio pelo nome, essa action dá prêmios diferentes para cada vocação  


    [ACTION #8] SUSTO!

    Descrição:
    Essa action super engraçada fará o seguinte: o jogador se transformará num cadáver e aparecerá a mensagem You were downgraded from level... (igual a msg do tibia mesmo). Depois de TRÊS segundos, o jogador voltará a sua outfit normal e receberá a mensagem Gotcha! (te peguei em inglês)  


    [ACTION #9] Painel informativo

    Descrição:
    Com essa action você pode fazer aparecer uma mensagem em popup para o jogador contendo as informações que você quiser.  


    [ACTION #10] Armários realistas!
    Autor: Avronex

    Descrição:
    Colocando esse script em armários, os jogadores irão receber a janela de trocar outfit quando clicarem!  
     
    [ACTION #11] Fogos de Artifício

    Descrição:
    Um novo script para fogos de artifício, com efeitos, número de explosões e tempo entre as explosões configuráveis.  
     
     
     
    E aqui a lista termina por enquanto. Me avise se você achar/tiver uma action útil que possa entrar para a lista.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
    Correção para que o summon não dê dano em quem o invocou:
     
  16. Upvote
    Omega recebeu reputação de PsyMcKenzie em Tour Mod   
    Informações
    Apresento-lhes um mod simples, mas muito útil para servidores com mapas próprios. Ele faz com que o jogador passe por certos locais, sem poder se mexer nem entrar em combate, recebendo caixas de diálogo com informações sobre cada local Basta adicionar o código na pasta mods do seu servidor como tourMod.xml O comando é ativado in-game usando /tour ou !tour Só pode ser ativado em PZ A duração de cada posição é configurável Caso haja algum erro, GMs podem usar o comando /tour debug para finalizar o tour de todos os jogadores online Código
     
     
     
     
    Configuração
    As posições para as quais o jogador será levado e o tempo pelo qual ele ficará em cada posição são configuráveis em tourLocations, seguindo o padrão Depois de cada duração, você deve configurar a mensagem que o jogador irá receber em tourDesc, usando a mesma numeração
  17. Upvote
    Omega recebeu reputação de narutomaniacos em Enciclopédia de Tutoriais de Scripting   
    Última Atualização: 14/03/2014

    Aqui serão organizados os tutoriais da área, divididos por nível de conhecimento (básico, intermediário e avançado) e conteúdo (spells, monsters, ...). Também separei tópicos com material de consulta para scripters, as listas organizadas anteriormente e um adicional de alguns scripts de destaque.

    Recomendações:
    Para os que querem aprender e editar scripts e estão começando, não usem o bloco de notas, muitas vezes destrói a organização do código e torna o scripting muito mais trabalhoso. Para começar, usem o Notepad++. Outra boa ideia para aprender é sempre exercitar-se lendo e criando códigos. Tente procurar por códigos que você consiga entender na pasta do seu otserver e vá aumentando o nível de dificuldade, tentando reproduzi-los por conta própria, à sua maneira. Além disso, você deve criar códigos do zero para se exercitar devidamente. Leia o segundo tutorial (lógica, algoritmos e organização, por iuniX) e aprenda o que é identação antes mesmo de pensar em aprender o resto. 1. Módulo Geral - Tutoriais focados na linguagem LUA e nas bases do scripting

    Nível 0 - Tutoriais focados no desenvolvimento da lógica e contato inicial com a linguagem LUA
    Lua, o que é? - Por iuniX Lógica, algoritmos e organização - Por iuniX Variáveis e Tipos de Dados - Por iuniX Funções e Return - Por apocarai Aulas Iniciais da Escolinha de Scripting - Por Roksas Strings e Numbers em Lua - Por caotic Nível 1 - Tutoriais básicos sobre a linguagem e scripting
    Introdução e Convenções Léxicas - Por apocarai Tutorial de Action - Por BoppreH (postado aqui por Brabo) Editando o config.lua - Por buster287 Aulas da Escolinha de Scripting - Por Roksas Quer aprender a ser scripter? - Por Sir Picaralhos Tutoriais 1-4 da Enciclopédia da Pasta Data - Por tibiaa4e Como funcionam os scripts - por MaXwEllDeN Como Criar Seu Monstro - Por VitorHugoFerreira Como Adicionar Seu NPC no Mapa - Por megaplis Revisão de Monsters, NPCs e Spells - Por Lucas Rap Estruturas de Controle - Por apocarai Nível 2 - Tutoriais intermediários sobre a linguagem e scripting
    A Coisa Mais Importante em um Código - Por Skyen A Partir do Tutorial 5 da Enciclopédia da Pasta Data - Por tibiaa4e Tutorial Sobre Arrays (Tables) - Por Tprocheira Matemática e LUA - Por Demonbholder Como Editar Magias - Por MatheusMkalo Tutorial Creaturescripts - Por Jhon992 Utilização de Loops - Por caotic Loopings - Por Demonbholder Editando Itens - Por Fronick Escrevendo em um arquivo - Por SkyDangerous Lib - O Que É e Como Usar - Por caotic Como usar o AddEvent - Por Killua Nível 3 - Tutoriais avançados sobre a linguagem e scripting
    Tutorial sobre Patterns - por MaXwEllDeN LUA Orientado a Objetos I - Por SkyDangerous LUA Orientado a Objetos II - Por LuckOake Tutorial de Queries para OTServers - Por shutup Utilizando Arquivos XML - Por caotic Queries e SQL para OTServers - Por mim Simulando IF/ELSE com AND/OR - Por River Material de Consulta - Tópicos que podem ser de ajuda quando se está criando códigos (para relembrar como usar aquela funçãozinha que você esqueceu)
    Algumas Funções do TFS com Explicação - Por tibiaa4e Operadores e Bibliotecas - Por Roksas Mais Funções do TFS sem Explicação - Por sukx Manual LUA - Por Roberto Ierusalimschy et al Biblioteca de Funções LUA (poucas funções, mas bem explicadas) - Por Benefactor Lista de Atributos para Itens - Por Oneshot Lista de Efeitos 8.54 - Por antharaz Algumas Fórmulas Úteis para OTServers - Por Oneshot 2. Módulo Específico - Tutoriais variados separados por assunto

    Monsters
    Editando a aparência das criaturas - Por Nickelback Criando seu monstro - Por VictorHugoFerreira NPCs
    Criando Seu NPC - Por Eventide A Magia dos NPCs - Por tibiaa4e Como Adicionar NPC no seu Mapa - Por Megaplis Spells
    Criando Magias - Por Kimoszin Criando Magias Para Monstros - Por 139 Entendendo e Configurando a Área das Magias - Por Krhiegen Criando Runas Novas - Por mxlr14 Spells e suas Grandes Funções - Por tibaa4e Actions
    Criando Quests - Por tibiaa4e Como Fazer um Baú de Quest Simples - Por DarkAlvaro Editando Potions - Por RarTne Actions - Por tibiaa4e Movements
    Criando Pisos Especiais - Por FoDoX Movements - Por tibiaa4e Itens
    Criando Armas Especiais - Por theflammer Tornando Munição Infinita - Por TheSleeper Lista de Atributos para XML - Por amoeba13 Como Fazer um Item Se Tornar Stackable - Por notle2012 Criando Wands e Rods - Por Castiello XML
    Configurando o Quest Log - Por Luiz Vitor Editando Exp Por Stages - Por Schiavinato Tutorial Sobre Outfits - Por Oneshot Configurando as Vocações - Por Flash001 Adicionando Vocações ao Account Manager - Por profelezio Outros
    Criando Exhaustion Com Storage - Por Roksas Resolvendo o Problema de Anti-Idle - Por cs007 Como Usar LUA Para Editar o Quest Log - Por MaXwEllDeN Como Usar addEvent adequadamente - Por skymagnum Como Adicionar Level Máximo - Por McTyn Tutorial Sobre Storages - Por caotic Como usar o os.date - Por Demonbholder 3. Scripts de destaque
    Pacote de Actions Simples e Úteis - Por mim NPC Lutador - Por mim Weapon Hit Rank - Por Vodkart NPC Auction - Por Vodkart War Arena - Por MatheusMkalo Castle Guild War - Por DrakyLucas Barco Que Anda Por Uma Rota - Por MatheusMKalo Simple Task v3.0 - Por Vodkart Fly System - Por Mock Character Market System - Por LuckOake Autoloot - Por Mkalo e Vodkart 4. Listas antigas
    Os Melhores Tutoriais - Por Luckituz X-Find Scripting - Por HenriqueMoura 5. Pedidos de Tutoriais
    Aqui é a lista de tutoriais pedidos para complementar o acervo do XT. Quem fizer algum deles e este for aprovado, me avise e ganhará 3 rep+. Para pedir um tutorial aqui, basta comentar no tópico especificando o conteúdo.
    Tutorial detalhado sobre a criação de mods Tutorial sobre mounts Por fim, deixe sua sugestão de tutorial ou sobre o tópico, denuncie links quebrados e, se o conteúdo do fórum te ajudou, procure devolver contribuindo de volta.
  18. Upvote
    Omega recebeu reputação de Night Wolf em Queries e SQL para OTservers   
    Esse é um tutorial básico sobre SQL e as funções LUA que são usadas em OTServers.

    Definição
    Primeiramente, deve ser útil uma definição de banco de dados: são, fundamentalmente, conjuntos de informações armazenadas em tabelas. Para OTServers, são onde todas as informações sobre as contas e personagens são guardadas.
    SQL (Structured Query Language) é uma linguagem que é usada por quase todos os bancos de dados (no nosso caso, todos). Quando você envia comandos em SQL para o seu banco de dados, você pode modificá-lo ou extrair valores dele.
    Query (queries no plural) são consultas ou comandos que são enviadas para o banco de dados.

    Introdução
    Para nós, scripters, às vezes é fundamental tirar informações ou mudar valores dos personagens que só estão disponíveis no banco de dados, para isso existe uma biblioteca de funções que já vem com os servidores, a biblioteca db (de database, que significa banco de dados em inglês). Dela, usaremos principalmente duas funções:

    db.getResult
    Retorna os valores que foram selecionados em uma query

    db.query ou db.executeQuery
    Executa uma query usada para modificar informações no banco de dados. Essa função se chama db.executeQuery na maioria dos servidores, mas também pode ser utilizada como db.query em outros.

    Em ambos os casos, a query deverá ser usada entre aspas.

    Queries em SQL

    Primeiramente, devemos saber como executar queries diretamente no banco de dados. Para isso, faça download de um banco de dados que eu disponibilizei abaixo como anexo. Use também o sqlite studio, que você pode baixar aqui.

    Assim que você abrir o banco de dados com o sqlite studio você verá que está dividido em duas janelas: a da esquerda de navegação e a da direita com os dados em si (no caso está branco quando abre). Abra a árvore do banco de dados e selecione a tabela players clicando duas vezes. Você verá a estrutura do banco de dados, com os nomes das colunas e o tipo de dados de cada uma (INT, INTEGER, VARCHAR, BOOLEAN, etc). Em seguida, selecione a aba 'Data' para ver os dados que estão na tabela. Lá estarão todos os jogadores cadastrados no servidor, com várias informações. Essa é a aba importante para nós.

    1. SELECT
    Depois disso, vamos tentar executar um primeiro comando no banco de dados: use ALT+E para abrir o editor de queries e digite:
    SELECT * FROM players Então, aperte F9 e veja o resultado. O que deve acontecer é aparecer toda a tabela players que você já havia visto. Perceba como, em geral, SQL é uma linguagem bem direta: a query que você enviou para o banco de dados significa:
    SELECIONE * DE jogadores E ela faz isso, com a exceção de que * significa todos os dados da tabela.
    OBS.: Apesar de quase toda query de SQL estar nesse padrão, ela é uma linguagem que não é case sensitive, logo
    select * from players Dá no mesmo. Mas fica menos legível, assim utilizamos letras maiúsculas para as palavras-chave dos comandos e letras minúsculas para os nomes de tabelas e colunas.

    Vamos testar outra query, um pouco mais complicada:
    SELECT name, level FROM players Dessa vez não selecionamos todos os dados da tabela, apenas o nome e o level de cada jogador. A sintaxe do comando SELECT é:
    SELECT nome_da_coluna_1, nome_da_coluna_2,..., nome_da_coluna_n FROM nome_da_tabela Assim teremos como retorno os valores dessas colunas para cada elemento da tabela. Tente selecionar apenas o nome e a posição (x, y e z) de cada jogador e confira abaixo.


    Complicando um pouco mais, vamos ordenar a tabela players por level:
    SELECT * FROM players ORDER BY level DESC Adicionamos a palavra-chave ORDER BY e DESC. A primeira significa 'ordene por' e a segunda, 'decrescente'. Ou seja, ordenamos nossa tabela com base na coluna level de maneira decrescente. Se você ocultar o DESC, a ordem natural vai ser crescente.

    Agora vamos filtrar nossos resultados:
    SELECT name, level FROM players WHERE level > 100 ORDER BY level DESC Assim obtemos apenas os jogadores com level maior que 100 e ordenados de maneira decrescente pelo level. A palavra-chave WHERE significa 'onde' e introduz uma condição para os resultados.
    Complicando ainda um pouco mais, vamos fazer a mesma coisa, mas para os jogadores com level entre 100 e 200 (sem contar nenhum dos extremos).
    SELECT name, level FROM players WHERE level > 100 AND level < 200 ORDER BY level DESC Portanto podemos usar AND e OR para escolher melhor os resultados. Para selecionar os extremos, podemos usar os operadores '>=' (maior ou igual) e '<=' (menor ou igual) ou simplesmente:
    SELECT name, level FROM players WHERE level BETWEEN 100 AND 200 Tente pegar os magic levels dos jogadores com level entre 50 e 100 (excluindo os extremos) e vocação 2 (druids), ordenados pelo level de maneira decrescente. Confira abaixo:



    2. UPDATE
    Nesse ponto, eu recomendo que você faça um backup do banco de dados de teste para que, caso você mexa em algo e não saiba reverter, possa trocar facilmente.

    Esse é o comando em SQL para alterar informações em uma tabela. Vamos começar com um exemplo simples: mudar o nome de uma guilda. Faremos isso usando o comando UPDATE, cuja sintaxe é:
    UPDATE nome_da_tabela SET nome_da_coluna = valor Para mudar o nome de uma guilda, precisamos usar o UPDATE, mas se fizermos:
    UPDATE guilds SET name = 'We Keel You' Estaremos mudando o nome de todas as guildas do servidor para 'We Keel You' (as aspas devem estar presentes sempre que a informação que você está tratando é do tipo string, ou seja, um texto). Agora tente mudar apenas o nome da guilda Ownage para We Keel You. Confira abaixo:



    Atualize a tabela guilds apertando F5 e perceba que agora a última guilda listada se chama We Keel You.
    Perceba que a maioria das tabelas tem uma coluna id. Essa é uma coluna importante para reconhecer cada elemento da tabela.

    OBS.: Prefira sempre trabalhar com números do que com textos.

    Agora vamos mudar o nome e a mensagem de uma guild:
    UPDATE guilds SET name = "Bumbum de bebe", motd = "Seja bem vindo!" WHERE id = 2 Agora mudamos, com um UPDATE só, a mensagem (motd) e o nome da guilda com id 2 (Power Abusers).
     
    Em alguns casos, queremos acrescentar e não mudar o valor de alguma coluna. Podemos fazer como o exemplo abaixo, no qual todos os jogadores serão promovidos, desde que já não o sejam.
    UPDATE players SET vocation = vocation + 4 WHERE vocation <= 4
    3. INSERT INTO
    Esse é o comando em SQL para inserirmos dados em uma tabela. Para criar um jogador, por exemplo, podemos utilizar esse comando assim:
    INSERT INTO players VALUES (1, "Char de Teste", 0, 1, 1, 8, 3, 150, 150, 4200, 114, 92, 0, 0, 0, ...) Ou seja, estamos inserindo na tabela players os valores 1, "Char de Teste" , 0, 1, 1, 8, 3, 150, 150, 4200, 114, 92, 0, 0, 0, etc. Esses valores são inseridos na ordem das colunas, então 1 é o id, "Char de Teste" é o nome e assim por diante. Essa é uma das formas de se usar o comando INSERT INTO, mas existe outra:
    INSERT INTO nome_da_tabela (coluna1, coluna2, coluna3, ...) VALUES (valor_da_coluna1, valor_da_coluna2, valor_da_coluna3, ...)
    4. ALTER TABLE
    Esse é um comando um pouco mais complicado porque sua sintaxe varia bastante dependendo do banco de dados. Em OTServers, esse comando é usado principalmente para acrescentar uma coluna em uma determinada tabela. Por exemplo, para criar um sistema VIP pelo banco de dados, poderíamos usá-lo. Sua sintaxe fica assim:
    ALTER TABLE nome_da_tabela ADD nome_da_coluna tipo_de_dado (restrições e padrões) O tipo de dado define quais dados são aceitáveis como valores da coluna. Por exemplo, uma coluna que conterá nomes deve ter como tipo de dado varchar(255). Esse é um padrão que eu vejo nos servidores e significa que serão aceitos caracteres variáveis com comprimento de até 255. Entretanto, o SQLite ignora qualquer número em parênteses e não define um máximo baseado nisso. O máximo é padronizado para 1000000 de bytes (sqlite.org/datatypes). Procure saber como funciona se você usa outro banco de dados (MySQL, por exemplo).
    Para um número, use INT (que significa inteiro). Acho que são só esses dois tipos de dados que são comumente usados quando se trata de OTServers. Para mais informações, clique aqui.

    As restrições são valores que não serão aceitos na coluna, como NOT NULL (para não aceitar valores nulos e facilitar posteriores tratamentos de erros), enquanto padrões são valores que serão inseridos automaticamente na coluna, se nenhum outro for especificado. Por exemplo, ao criar um jogador, vários valores tem padrão (default) 0. Não faz sentido um jogador começar com skull diferente disso, né? Ambas as restrições como valores padrão são opcionais. Exemplo:
    ALTER TABLE players ADD vip_time INT NOT NULL DEFAULT 0 É possível criar colunas, mas nem sempre é possível deletá-las diretamente. Com SQLite, teríamos que passar todos os dados para uma tabela temporária e, dessa tabela, extrair apenas as colunas que queremos para deletar uma coluna. Portanto, sempre faça um backup quando for usar esse comando.
     
    5. COMANDOS COMPOSTOS
    Para introduzir essa seção do tutorial, tente esse exercício: selecione o valor do storage 2308 para o jogador "Hulk".


    Esse comando é mais complicado que os outros pois ele combina dois SELECTs. Perceba que não é possível selecionar o valor do storage diretamente pelo nome, mas é possível determinar o storage pelo id e o id pelo nome. Então temos que acessar a tabela players para selecionar o id do Hulk e depois, com esse id, selecionar o valor do storage 2308.
    Comandos dentro de outros comandos devem ser usados entre parênteses.
     
    Também não podemos ver o skill de um jogador diretamente. Temos que saber seu id e, na tabela player_skills, comparar o número do skill com o id do jogador. Para obtermos os skills de um jogador, podemos executar o seguinte:
    SELECT skillid, value FROM player_skills WHERE player_id = (SELECT id FROM players WHERE name = "Hulk") Assim conseguindo obter os skills e seus valores do jogador Hulk.
    Tente mudar o valor do storage com key 2308 do jogador "Hulk" para 10. Confira abaixo.
     


    Queries SQL em LUA

    Agora, vamos voltar ao nosso mundo de scripting LUA. Agora que já sabemos como usar as queries, vamos aplicá-las: que tal criar um ranking com o TOP 10 do seu servidor em uma talkaction?
    Primeiramente, vamos definir a query SQL que usaremos: queremos os nomes e os levels dos 10 maiores levels do servidor. Tente criar a sua e compare:


    Sim, existe uma palavra-chave nova nessa query que não foi apresentada anteriormente. LIMIT define um limite de valores retornados. Assim impedimos que nossa lista fique maior do que os 10 que queremos mostrar.
    Agora precisamos escolher a função que vamos usar no script. Voltando ao início do tutorial, percebe-se que o SELECT deverá ser associado ao db.getResult. Portanto, nossa função principal do script deve ser:
    db.getResult("SELECT name, level FROM players ORDER BY level DESC LIMIT 10") Colocando isso numa talkaction:
    function onSay(cid, words, param) -- Salvando os resultados da query em uma variável local query = db.getResult("SELECT name, level FROM players ORDER BY level DESC LIMIT 10") -- Criando uma tabela para passar os resultados local list = {} -- Checando se a query foi mal-sucedida (se ocorreu alguam problema, o código irá retornar verdadeiro e nada será exibido) if query:getID() == -1 then return true end repeat -- Armazenando o nome da linha atual do resultado na variável name local name = query:getDataString("name") -- Armazenando o level da linha atual do resultado na variável level local level = query:getDataInt("level") -- Inserindo a string com o nome e o level na tabela table.insert(list, name.. " - level: "..level) -- Termina o loop se não houver mais resultados ou passa pro resultado seguinte until not query:next() -- Envia a mensagem pro jogador, concatenando os resultados com uma quebra de linha doShowTextDialog(cid, 2148, table.concat(list, "\n")) -- Libera os resultados armazenados query:free() return true end Explicando:
    Primeiramente salvamos nossos resultados em uma variável chamada query. Para isso, usamos o db.getResult citado anteriormente. Em seguida, criamos uma variável list, uma tabela vazia, que será utilizada para manipular os resultados. A checagem para saber se algum resultado foi obtido pela query é usar o query:getID(). Se ele for maior que -1, então existem resultados obtidos. Começamos um loop repeat para analisar cada linha do resultado Para pegar o "name" da linha de resultado que temos na query, utilizamos o query:getDataString("nome_da_coluna") e salvamos na variável name. Fazemos o mesmo para uma variável level, lembrando que o tipo de dado será Int (inteiro), então utilizamos query:getDataInt("nome_da_coluna") Insere na tabela list um texto do tipo: Eternal Oblivion - level: 300, de acordo com a linha atual do resultado O método query:next() retorna a próxima linha do resultado se houver ou nil. Assim, passamos pra próxima linha ou terminamos o loop Com o texto formado, utiliza-se a função doShowTextDialog para enviar para o jogador que usou a talkaction, juntando (concatenando) a tabela com os resultados com uma quebra de linha ("\n") Liberamos os resultados armazenados pela query e fechamos o script E assim você acabou de criar uma talkaction com o ranking dos jogadores do seu servidor com base no level!

    Então essa é a base necessária para se acessar o banco de dados através de scripting. O resto depende da sua criatividade.

    Exercícios

    1 - Selecione o maior magic level do servidor



    2 - Adicione 5 dias de dias premium para todas as contas



    3 - Selecione o nome do líder da guild com id 2



    4 - Insira um novo storage com key 71236 e valor 1 para o top level do servidor



    5 - Crie uma talkaction que fará com que todos os jogadores sejam teletransportados para uma posição definida, estando offline ou online.



    W3schools SQL Quiz

    Fontes Consultadas
    http://www.w3schools.com/sql/
    http://www.sqlite.org/

    Considerações
    Seria injusto não dar os devidos créditos ao , cujos códigos serviram de base para meu aprendizado em relação à SQL e às funções LUA relacionadas.

    Scan do arquivo
    DB_Teste.rar
  19. Upvote
    Omega recebeu reputação de Strikerzerah em Enciclopédia de Tutoriais de Scripting   
    Última Atualização: 14/03/2014

    Aqui serão organizados os tutoriais da área, divididos por nível de conhecimento (básico, intermediário e avançado) e conteúdo (spells, monsters, ...). Também separei tópicos com material de consulta para scripters, as listas organizadas anteriormente e um adicional de alguns scripts de destaque.

    Recomendações:
    Para os que querem aprender e editar scripts e estão começando, não usem o bloco de notas, muitas vezes destrói a organização do código e torna o scripting muito mais trabalhoso. Para começar, usem o Notepad++. Outra boa ideia para aprender é sempre exercitar-se lendo e criando códigos. Tente procurar por códigos que você consiga entender na pasta do seu otserver e vá aumentando o nível de dificuldade, tentando reproduzi-los por conta própria, à sua maneira. Além disso, você deve criar códigos do zero para se exercitar devidamente. Leia o segundo tutorial (lógica, algoritmos e organização, por iuniX) e aprenda o que é identação antes mesmo de pensar em aprender o resto. 1. Módulo Geral - Tutoriais focados na linguagem LUA e nas bases do scripting

    Nível 0 - Tutoriais focados no desenvolvimento da lógica e contato inicial com a linguagem LUA
    Lua, o que é? - Por iuniX Lógica, algoritmos e organização - Por iuniX Variáveis e Tipos de Dados - Por iuniX Funções e Return - Por apocarai Aulas Iniciais da Escolinha de Scripting - Por Roksas Strings e Numbers em Lua - Por caotic Nível 1 - Tutoriais básicos sobre a linguagem e scripting
    Introdução e Convenções Léxicas - Por apocarai Tutorial de Action - Por BoppreH (postado aqui por Brabo) Editando o config.lua - Por buster287 Aulas da Escolinha de Scripting - Por Roksas Quer aprender a ser scripter? - Por Sir Picaralhos Tutoriais 1-4 da Enciclopédia da Pasta Data - Por tibiaa4e Como funcionam os scripts - por MaXwEllDeN Como Criar Seu Monstro - Por VitorHugoFerreira Como Adicionar Seu NPC no Mapa - Por megaplis Revisão de Monsters, NPCs e Spells - Por Lucas Rap Estruturas de Controle - Por apocarai Nível 2 - Tutoriais intermediários sobre a linguagem e scripting
    A Coisa Mais Importante em um Código - Por Skyen A Partir do Tutorial 5 da Enciclopédia da Pasta Data - Por tibiaa4e Tutorial Sobre Arrays (Tables) - Por Tprocheira Matemática e LUA - Por Demonbholder Como Editar Magias - Por MatheusMkalo Tutorial Creaturescripts - Por Jhon992 Utilização de Loops - Por caotic Loopings - Por Demonbholder Editando Itens - Por Fronick Escrevendo em um arquivo - Por SkyDangerous Lib - O Que É e Como Usar - Por caotic Como usar o AddEvent - Por Killua Nível 3 - Tutoriais avançados sobre a linguagem e scripting
    Tutorial sobre Patterns - por MaXwEllDeN LUA Orientado a Objetos I - Por SkyDangerous LUA Orientado a Objetos II - Por LuckOake Tutorial de Queries para OTServers - Por shutup Utilizando Arquivos XML - Por caotic Queries e SQL para OTServers - Por mim Simulando IF/ELSE com AND/OR - Por River Material de Consulta - Tópicos que podem ser de ajuda quando se está criando códigos (para relembrar como usar aquela funçãozinha que você esqueceu)
    Algumas Funções do TFS com Explicação - Por tibiaa4e Operadores e Bibliotecas - Por Roksas Mais Funções do TFS sem Explicação - Por sukx Manual LUA - Por Roberto Ierusalimschy et al Biblioteca de Funções LUA (poucas funções, mas bem explicadas) - Por Benefactor Lista de Atributos para Itens - Por Oneshot Lista de Efeitos 8.54 - Por antharaz Algumas Fórmulas Úteis para OTServers - Por Oneshot 2. Módulo Específico - Tutoriais variados separados por assunto

    Monsters
    Editando a aparência das criaturas - Por Nickelback Criando seu monstro - Por VictorHugoFerreira NPCs
    Criando Seu NPC - Por Eventide A Magia dos NPCs - Por tibiaa4e Como Adicionar NPC no seu Mapa - Por Megaplis Spells
    Criando Magias - Por Kimoszin Criando Magias Para Monstros - Por 139 Entendendo e Configurando a Área das Magias - Por Krhiegen Criando Runas Novas - Por mxlr14 Spells e suas Grandes Funções - Por tibaa4e Actions
    Criando Quests - Por tibiaa4e Como Fazer um Baú de Quest Simples - Por DarkAlvaro Editando Potions - Por RarTne Actions - Por tibiaa4e Movements
    Criando Pisos Especiais - Por FoDoX Movements - Por tibiaa4e Itens
    Criando Armas Especiais - Por theflammer Tornando Munição Infinita - Por TheSleeper Lista de Atributos para XML - Por amoeba13 Como Fazer um Item Se Tornar Stackable - Por notle2012 Criando Wands e Rods - Por Castiello XML
    Configurando o Quest Log - Por Luiz Vitor Editando Exp Por Stages - Por Schiavinato Tutorial Sobre Outfits - Por Oneshot Configurando as Vocações - Por Flash001 Adicionando Vocações ao Account Manager - Por profelezio Outros
    Criando Exhaustion Com Storage - Por Roksas Resolvendo o Problema de Anti-Idle - Por cs007 Como Usar LUA Para Editar o Quest Log - Por MaXwEllDeN Como Usar addEvent adequadamente - Por skymagnum Como Adicionar Level Máximo - Por McTyn Tutorial Sobre Storages - Por caotic Como usar o os.date - Por Demonbholder 3. Scripts de destaque
    Pacote de Actions Simples e Úteis - Por mim NPC Lutador - Por mim Weapon Hit Rank - Por Vodkart NPC Auction - Por Vodkart War Arena - Por MatheusMkalo Castle Guild War - Por DrakyLucas Barco Que Anda Por Uma Rota - Por MatheusMKalo Simple Task v3.0 - Por Vodkart Fly System - Por Mock Character Market System - Por LuckOake Autoloot - Por Mkalo e Vodkart 4. Listas antigas
    Os Melhores Tutoriais - Por Luckituz X-Find Scripting - Por HenriqueMoura 5. Pedidos de Tutoriais
    Aqui é a lista de tutoriais pedidos para complementar o acervo do XT. Quem fizer algum deles e este for aprovado, me avise e ganhará 3 rep+. Para pedir um tutorial aqui, basta comentar no tópico especificando o conteúdo.
    Tutorial detalhado sobre a criação de mods Tutorial sobre mounts Por fim, deixe sua sugestão de tutorial ou sobre o tópico, denuncie links quebrados e, se o conteúdo do fórum te ajudou, procure devolver contribuindo de volta.
  20. Upvote
    Omega recebeu reputação de Dmy Recaida em Enciclopédia de Tutoriais de Scripting   
    Última Atualização: 14/03/2014

    Aqui serão organizados os tutoriais da área, divididos por nível de conhecimento (básico, intermediário e avançado) e conteúdo (spells, monsters, ...). Também separei tópicos com material de consulta para scripters, as listas organizadas anteriormente e um adicional de alguns scripts de destaque.

    Recomendações:
    Para os que querem aprender e editar scripts e estão começando, não usem o bloco de notas, muitas vezes destrói a organização do código e torna o scripting muito mais trabalhoso. Para começar, usem o Notepad++. Outra boa ideia para aprender é sempre exercitar-se lendo e criando códigos. Tente procurar por códigos que você consiga entender na pasta do seu otserver e vá aumentando o nível de dificuldade, tentando reproduzi-los por conta própria, à sua maneira. Além disso, você deve criar códigos do zero para se exercitar devidamente. Leia o segundo tutorial (lógica, algoritmos e organização, por iuniX) e aprenda o que é identação antes mesmo de pensar em aprender o resto. 1. Módulo Geral - Tutoriais focados na linguagem LUA e nas bases do scripting

    Nível 0 - Tutoriais focados no desenvolvimento da lógica e contato inicial com a linguagem LUA
    Lua, o que é? - Por iuniX Lógica, algoritmos e organização - Por iuniX Variáveis e Tipos de Dados - Por iuniX Funções e Return - Por apocarai Aulas Iniciais da Escolinha de Scripting - Por Roksas Strings e Numbers em Lua - Por caotic Nível 1 - Tutoriais básicos sobre a linguagem e scripting
    Introdução e Convenções Léxicas - Por apocarai Tutorial de Action - Por BoppreH (postado aqui por Brabo) Editando o config.lua - Por buster287 Aulas da Escolinha de Scripting - Por Roksas Quer aprender a ser scripter? - Por Sir Picaralhos Tutoriais 1-4 da Enciclopédia da Pasta Data - Por tibiaa4e Como funcionam os scripts - por MaXwEllDeN Como Criar Seu Monstro - Por VitorHugoFerreira Como Adicionar Seu NPC no Mapa - Por megaplis Revisão de Monsters, NPCs e Spells - Por Lucas Rap Estruturas de Controle - Por apocarai Nível 2 - Tutoriais intermediários sobre a linguagem e scripting
    A Coisa Mais Importante em um Código - Por Skyen A Partir do Tutorial 5 da Enciclopédia da Pasta Data - Por tibiaa4e Tutorial Sobre Arrays (Tables) - Por Tprocheira Matemática e LUA - Por Demonbholder Como Editar Magias - Por MatheusMkalo Tutorial Creaturescripts - Por Jhon992 Utilização de Loops - Por caotic Loopings - Por Demonbholder Editando Itens - Por Fronick Escrevendo em um arquivo - Por SkyDangerous Lib - O Que É e Como Usar - Por caotic Como usar o AddEvent - Por Killua Nível 3 - Tutoriais avançados sobre a linguagem e scripting
    Tutorial sobre Patterns - por MaXwEllDeN LUA Orientado a Objetos I - Por SkyDangerous LUA Orientado a Objetos II - Por LuckOake Tutorial de Queries para OTServers - Por shutup Utilizando Arquivos XML - Por caotic Queries e SQL para OTServers - Por mim Simulando IF/ELSE com AND/OR - Por River Material de Consulta - Tópicos que podem ser de ajuda quando se está criando códigos (para relembrar como usar aquela funçãozinha que você esqueceu)
    Algumas Funções do TFS com Explicação - Por tibiaa4e Operadores e Bibliotecas - Por Roksas Mais Funções do TFS sem Explicação - Por sukx Manual LUA - Por Roberto Ierusalimschy et al Biblioteca de Funções LUA (poucas funções, mas bem explicadas) - Por Benefactor Lista de Atributos para Itens - Por Oneshot Lista de Efeitos 8.54 - Por antharaz Algumas Fórmulas Úteis para OTServers - Por Oneshot 2. Módulo Específico - Tutoriais variados separados por assunto

    Monsters
    Editando a aparência das criaturas - Por Nickelback Criando seu monstro - Por VictorHugoFerreira NPCs
    Criando Seu NPC - Por Eventide A Magia dos NPCs - Por tibiaa4e Como Adicionar NPC no seu Mapa - Por Megaplis Spells
    Criando Magias - Por Kimoszin Criando Magias Para Monstros - Por 139 Entendendo e Configurando a Área das Magias - Por Krhiegen Criando Runas Novas - Por mxlr14 Spells e suas Grandes Funções - Por tibaa4e Actions
    Criando Quests - Por tibiaa4e Como Fazer um Baú de Quest Simples - Por DarkAlvaro Editando Potions - Por RarTne Actions - Por tibiaa4e Movements
    Criando Pisos Especiais - Por FoDoX Movements - Por tibiaa4e Itens
    Criando Armas Especiais - Por theflammer Tornando Munição Infinita - Por TheSleeper Lista de Atributos para XML - Por amoeba13 Como Fazer um Item Se Tornar Stackable - Por notle2012 Criando Wands e Rods - Por Castiello XML
    Configurando o Quest Log - Por Luiz Vitor Editando Exp Por Stages - Por Schiavinato Tutorial Sobre Outfits - Por Oneshot Configurando as Vocações - Por Flash001 Adicionando Vocações ao Account Manager - Por profelezio Outros
    Criando Exhaustion Com Storage - Por Roksas Resolvendo o Problema de Anti-Idle - Por cs007 Como Usar LUA Para Editar o Quest Log - Por MaXwEllDeN Como Usar addEvent adequadamente - Por skymagnum Como Adicionar Level Máximo - Por McTyn Tutorial Sobre Storages - Por caotic Como usar o os.date - Por Demonbholder 3. Scripts de destaque
    Pacote de Actions Simples e Úteis - Por mim NPC Lutador - Por mim Weapon Hit Rank - Por Vodkart NPC Auction - Por Vodkart War Arena - Por MatheusMkalo Castle Guild War - Por DrakyLucas Barco Que Anda Por Uma Rota - Por MatheusMKalo Simple Task v3.0 - Por Vodkart Fly System - Por Mock Character Market System - Por LuckOake Autoloot - Por Mkalo e Vodkart 4. Listas antigas
    Os Melhores Tutoriais - Por Luckituz X-Find Scripting - Por HenriqueMoura 5. Pedidos de Tutoriais
    Aqui é a lista de tutoriais pedidos para complementar o acervo do XT. Quem fizer algum deles e este for aprovado, me avise e ganhará 3 rep+. Para pedir um tutorial aqui, basta comentar no tópico especificando o conteúdo.
    Tutorial detalhado sobre a criação de mods Tutorial sobre mounts Por fim, deixe sua sugestão de tutorial ou sobre o tópico, denuncie links quebrados e, se o conteúdo do fórum te ajudou, procure devolver contribuindo de volta.
  21. Upvote
    Omega recebeu reputação de Luga03 em Advanced Guild System   
    Bom, eu percebi que algo que poderia deixar os servidores bem legais seria um foco maior nas guilds em si. Então, resolvi criar um sistema que fosse melhorar isso, e surgiu o Advanced Guild System.

    Atualizações
    22/01/14 - Publicação da versão 1.0 21/04/14 - Adição de mais tratamento de erros Informações
    O AGS, em si, não faz nada. Isso mesmo. Ele é uma biblioteca com várias funções focadas para guilds. Além disso, ele também faz algumas modificações no seu banco de dados ao ser instalado:
    Cria a tabela guild_storages; Adiciona a coluna pontos na tabela guilds, se ela não existir; Adiciona a coluna balance na tabela guilds, se ela não existir; Adiciona a coluna guild_id na tabela players; Adiciona um gatilho(trigger) para atualizar a coluna guild_id toda vez que ocorrer uma mudança na tabela guilds. Para acompanhar essa biblioteca e mostrar sua utilidade, fiz alguns sistemas utilizando ela:
    Guild Rank; Guild Tasks; Guild Banker. Funções


    Instalação



    Código
    Salve-o como guildlib.lua em data/lib




    Problemas na Instalação?
    Caso uma ou mais das colunas adicionadas já existam no seu banco de dados, execute as queries manualmente:



    Depois disso, considere seu AGS instalado.
  22. Upvote
    Omega recebeu reputação de Mendiguinho91 em doSpawnMonsters   
    Bom, queria expor minha função, já que sempre vi vários comentários construtivos (e outros nem tanto) nas funções postadas aqui.
     
    Primeiramente, editei a função isWalkable(pos) do Nord pra tirar o loop, com medo de fazer uma função monstruosa demais.
     
    Essa é a função isWalkable original
     
     
    Essa é a minha versão editada:
     
     
     
     
    E agora a minha função: eu queria uma função que distribuiria aleatoriamente alguns monstros em uma área, porque acho que seria muito útil em eventos.
     
     
     
     
  23. Upvote
    Omega recebeu reputação de TuliohSilva em Pacote de Scripts [Simples e Úteis] I - Actions   
    Esse é um pacote com actions úteis para se usar nos servidores e, a menos que esteja indicado o contrário, são de minha autoria.
    [Testado em servidor 8.6]

    Para colocar essas actions no jogo, você deve colocar uma TAG no arquivo actions.xml do seu servidor, com um actionid e o nome do arquivo .lua (contendo o script) na pasta de scripts. Então, você deve colocar um item com aquele actionid no mapa.

    [ACTION #1] Baús de quests completos

    Descrição:
    Com essa action, você pode colocar vários baús simples de quest em apenas um script de forma rápida e organizada. Basta apenas registrar diferentes actionIDs no actions.xml, colocar eles em cada baú e depois inserir no script, conforme o padrão.  



    [ACTION #2] Summon simples

    Descrição:
    Dessa forma você pode criar um pequeno sistema de summon com um monstro. No primeiro uso, ele invoca o monstro à comando do jogador, gastando a mana definida. Então, caso outro uso seja realizado até o exhaust terminar, o monstro será removido. Quando o jogador usar novamente, se o monstro invocado existir, ele será removido e outro monstro será invocado, reiniciando o ciclo. OBS.: os ataques em área do summon ainda vão tirar vida do jogador. Para uma correção, vide final do tópico.  



    [ACTION #3] Fome Zero

    Descrição:
    Script simples: você registra o actionID dele em algum item e então o jogador ganhará uma comida sorteada entre as que constam em foodID (deve ser configurado) Pode ser usado à vontade pelo jogador para conseguir comida.  



    [ACTION #4] Alavanca do Cassino

    Descrição:
    Um script de alavanca: nesse você define as possíveis recompensas, o quanto de dinheiro a pessoa vai precisar e as chances!  


    [ACTION #5] Fantasias de Monstros

    Descrição:
    Quando o jogador clicar em um item, será sorteada uma outfit entre as definidas.  


    [ACTION #6] Passagem Secreta

    Descrição:
    Ao puxar a alavanca, o jogador removerá uma parede do lugar, abrindo uma passagem secreta. Ela se fechará em alguns segundos.  


    [ACTION #7] Baús de vocações

    Descrição:
    Bem óbvio pelo nome, essa action dá prêmios diferentes para cada vocação  


    [ACTION #8] SUSTO!

    Descrição:
    Essa action super engraçada fará o seguinte: o jogador se transformará num cadáver e aparecerá a mensagem You were downgraded from level... (igual a msg do tibia mesmo). Depois de TRÊS segundos, o jogador voltará a sua outfit normal e receberá a mensagem Gotcha! (te peguei em inglês)  


    [ACTION #9] Painel informativo

    Descrição:
    Com essa action você pode fazer aparecer uma mensagem em popup para o jogador contendo as informações que você quiser.  


    [ACTION #10] Armários realistas!
    Autor: Avronex

    Descrição:
    Colocando esse script em armários, os jogadores irão receber a janela de trocar outfit quando clicarem!  
     
    [ACTION #11] Fogos de Artifício

    Descrição:
    Um novo script para fogos de artifício, com efeitos, número de explosões e tempo entre as explosões configuráveis.  
     
     
     
    E aqui a lista termina por enquanto. Me avise se você achar/tiver uma action útil que possa entrar para a lista.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
    Correção para que o summon não dê dano em quem o invocou:
     
  24. Upvote
    Omega recebeu reputação de danrlei5 em [AGS] Guild Task   
    Aviso
    Esse script precisa do Advanced Guild System instalado corretamente para funcionar.
     
    Informações
    Esse sistema de scripts funciona como uma task para toda a guild. Assim, qualquer membro da guilda pode aceitar uma task e cada monstro morto por qualquer membro irá contar para completar a task. Ao terminar a task, um membro deve falar com o NPC, que dará guild points e depositará o dinheiro na conta da guilda. Para melhor usufruto, use em conjunto com o Guild Banker.
     
    Códigos
    data/lib/guildtask_lib.lua
     
     
     
    data/creaturescripts/scripts/guild_onKill.lua
     
     
     
    data/npcs/scripts/guild_task_npc.lua
     
     
     
    data/lib/npc/Arthur.xml
     
     
     
    Configurações
    Para acrescentar monstros: Abra o arquivo guildtask_lib.lua e adicione
    {names = {"nome da task", "nome do monstro(1)", "nome do monstro(2), etc...}, totalKills = numero de monstros para completar a task, money = recompensa(dinheiro), points = recompensa(pontos), minPoints = mínimo de pontos para habilitar a task}, Logo abaixo dos demais monstros. Por exemplo, para acrescentar uma task para matar vários tipos de dragons, ficaria assim (o primeiro nome é o nome do task):
    -- Monsters monsters = { {names = {"dragon"}, totalKills = 5, money = 5000, points = 3, minPoints = 0}, {names = {"dragon lord"}, totalKills = 5, money = 15000, points = 5, minPoints = 1}, {names = {"dragon hunter task", "dragon lord", "dragon", "frost dragon", "undead dragon"}, totalKills = 500, money = 150000, points = 5, minPoints = 10}, }, Para configurar o tempo entre uma task e outra, utilize a variável waitTime (guildtask_lib.lua): -- Other variables waitTime = 1440, -- Tempo de espera para começar outra task após entregar uma } Para que não haja tempo de espera, coloque o valor 0. Esse tempo é em minutos.
  25. Upvote
    Omega recebeu reputação de koalla159 em Action que troca outfit e absorve danos   
    Gostei do pedido e fiz aqui, mas fiz em spell, pra ficar mais fácil de configurar. Dei uma testada e me parece tudo certo.
     
    creaturescripts/scripts/absorb.lua
     
     
     
    tag creaturescripts.xml
    <event type="login" name="absorb2" event="script" value="absorb.lua"/> <event type="statschange" name="absorb" event="script" value="absorb.lua"/> spells/scripts/absorb.lua
     
     
     
    tag spells.xml
    <instant name="Absorb!" words="absorb" lvl="10" mana="300" prem="0" range="10" blockwalls="0" exhaustion="2000" needlearn="0" event="script" value="absorb.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant>
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...