Ir para conteúdo
Banner com Efeitos

Dwarfer

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Dwarfer recebeu reputação de cain23 em Item Key System   
    Fala, galerinha! Há um tempo atrás tinha feito esse sisteminha simples, como achei que não seria muito útil, acabou sumindo nas profundezas das pastas do meu computador. No entanto, como vi o pedido do membro @DboHere, acho que outras pessoas podem precisar.
     
    Como funciona:
    Uma key única que pode ser usada somente uma vez adicionará um item ao player quando for utilizada.
     
    - Criando uma key contendo 10 crystal coins: 
    !createkey 2160,10 ou !createkey crystal coin,10 
     
    O player receberá a mensagem: "You have created the key: rXo-980376. You can add other items using !addkey."
     
    - Adicionando novos itens à mesma key:
    !addkey rXo-980376,2463,1
     
    O player receberá a mensagem: "You have added other items to the key rXo-980376."
     
    - Checando os itens que uma key possui:
    !checkkey rXo-980376
     

     
    - Utilizando a key o player receberá todos os itens associados a essa key. Depois disso, a key ficará inválida.
    !key rXo-980376
     
    - Deletando a key da database (apenas se necessário):
    !deletekey rXo-980376
     
    Configuração:
     
    Execute o seguinte comando no mysql do seu servidor:
     
    CREATE TABLE `code_key` ( `id` INT NOT NULL AUTO_INCREMENT, `key` VARCHAR(255) NOT NULL, `item_id` INT NOT NULL, `count` INT NOT NULL, `invalid` INT NOT NULL DEFAULT 0, PRIMARY KEY (`id`) );  
    Em talkactions/scripts, crie um arquivo:
     
    keysystem.lua
     
     
    Em "access" edite o grupo que pode utilizar cada comando. No exemplo abaixo, apenas players com acesso maior que 3 podem utilizar o comando !createkey.
     
    ["!createkey"] = {access = 3}, 
     
    Em talkactions.xml, adicione a tag: <talkaction words="!key;!createkey;!deletekey;!checkkey;!addkey" event="script" value="keysystem.lua"/>
     
    E é isso, espero que seja útil  
  2. Gostei
    Dwarfer recebeu reputação de bagulhoescroto em Book System   
    Hail, Durin! Fiz esse sisteminha simples baseado na ideia do @Chriistian . Pode ter utilidade para servidores que queiram implementar o RPG, utilizando em quests dando dicas. Testado em TFS 0.4.
     
    Funcionamento: Ao usar uma estante de livros, o player ganha um livro.
     

     
    Comando !book : Mostra todos os livros que o player conseguiu.

     
    Ao usar outras estantes: 
     

     
    Comando !book Título_do_livro: Mostra o livro para o player.
     

     
    [MOD]
     
     
     
    Configuração:
    {aid = 17710, title = "Criar cerveja", icon = 4839} --> ActionID da estante, título do livro, ícone que aparecerá no livro
     
    stories = {
    [1] = {"Escreva a história do book[1] aqui. Separe por vírgulas para facilitar a escrita no script.",
             " Pode ser que o texto seja muito grande, então isso ajudará na visualização."},
     
    Coloquei para as estantes de id 1718 e 1721, caso queira colocar outras, adicione na linha:
    <action itemid="1718;1721" event="script">
     
    That's all folks! 
  3. Gostei
    Dwarfer recebeu reputação de koyotestark em Aumentando Damage   
    Para evitar maiores modificações, você poderia utilizar esse aumento de dano apenas para player vs player (com monstros não funciona). Após usar a magia, o player só poderia utilizar novamente assim que o efeito do bônus no elemento (fire, ice, etc) acabasse. Então, teste assim:
     
    Em spells/scripts crie um arquivo:
     
    buffelemental.lua
     
     
    Edite as palavras "flam", "frigo" como queira ou adicione outras.
     
    Em spells.xml: (Edite as palavras da magia, o maglvl, mana e os outros parâmetros de acordo com o que desejar, esse aí é apenas para servir como base caso você não saiba como fazer)
     
     
    Em creaturescripts/scripts crie um arquivo:
     
    buffelementalattack.lua
     
     
    No login.lua, registre o evento adicionando: 
    registerCreatureEvent(cid, "BuffElemental") Em creaturescripts.xml, adicione a tag: 
    <event type="statschange" name="BuffElemental" event="script" value="buffelementalattack.lua"/> Para utilizar a magia:
     
    utori buff "flam -- o hit do player quando FIRE será aumentado em 10% como foi configurado lá na spell
     
    Para os demais:
    utori buff "tera
    utori buff "ico
    utori buff "frigo
  4. Gostei
    Dwarfer recebeu reputação de Fiapets em (Resolvido)Npc Crafting   
    crafter.lua
     
     
    Crafter.xml
     
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Crafter" script="crafter.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="66"/> </npc>  
    Edite as falas e os nomes como queira. Apenas coloquei exemplos para te servir como base. 
     
     
  5. Obrigado
    Dwarfer recebeu reputação de DiigooMix em (Resolvido)Bau De Quest e Porta Que precisa dele   
    Em actions/scripts crie um arquivo:
     
    baulivro.lua
     
    local bookid = 1111 -- id do livro aqui local info = "Hiho, my name is Dwarfer. Bye!" function onUse(cid, item, fromPosition, itemEx, toPosition) local p = getPlayerPosition(cid) if getPlayerStorageValue(cid, 19056) ~= -1 then doPlayerSendCancel(cid, "You have already done this quest.") doSendMagicEffect(p, CONST_ME_POFF) return true end local book = doPlayerAddItem(cid, bookid, 1) doItemSetAttribute(book, "text", info) setPlayerStorageValue(cid, 19056, 1) return true end  
    Adicione a tag em actions.xml: <action actionid="ACTION_ID_DO_BAÚ" script="baulivro.lua" />
     
    Caso queira fazer algo maior, dê uma olhada: 
     
     
     
    Para a porta, crie outro arquivo:
     
    portacheck.lua
     
    function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, 19056) == -1 then doPlayerSendCancel(cid, "You don't have the necessary permission to enter.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, toPosition) return true end  
    Em actions.xml: <action actionid="ACTION_ID_DO_BAÚ" script="portacheck.lua" />
     
  6. Gostei
    Dwarfer recebeu reputação de Nerivalhs em (Resolvido)Alavanca potion.   
    local config = { money = 10000, -- Dinheiro que vai custar item = 7591, -- ID do item que vai vender count = 100, -- Quantidade } function onUse(cid, item, fromPosition, itemEx, toPosition) local p = getPlayerPosition(cid) if getPlayerFreeCap(cid) < getItemWeightById(config.item, config.count) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Você não tem cap suficiente para ".. config.count.." "..getItemNameById(config.item)..".") doSendMagicEffect(p, CONST_ME_POFF) return true end if not doPlayerRemoveMoney(cid, config.money) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Você não possui "..config.money.. " gold coins.") doSendMagicEffect(p, CONST_ME_POFF) return true end doPlayerAddItem(cid, config.item, config.count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você comprou "..config.count.." "..getItemNameById(config.item)..".") doSendAnimatedText(toPosition, "SUCCESS!", COLOR_TEAL) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) return true end  
  7. Gostei
    Dwarfer recebeu reputação de Ackerzin em (Resolvido)Npc Crafting   
    crafter.lua
     
     
    Crafter.xml
     
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Crafter" script="crafter.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="66"/> </npc>  
    Edite as falas e os nomes como queira. Apenas coloquei exemplos para te servir como base. 
     
     
  8. Gostei
    Dwarfer recebeu reputação de CainOTServer em (Resolvido)Acrescentar função no sistema ppoints   
    No creaturescripts:
     
     
    E retire a tag  <event type="logout" name="PlayerResetPointsTimer" event="script" value="points.lua"/> do creaturescripts.xml.
     
    No globalevents:
     
     
    No talkactions:
     
     
  9. Gostei
    Dwarfer recebeu reputação de CainOTServer em Item Key System   
    Fala, galerinha! Há um tempo atrás tinha feito esse sisteminha simples, como achei que não seria muito útil, acabou sumindo nas profundezas das pastas do meu computador. No entanto, como vi o pedido do membro @DboHere, acho que outras pessoas podem precisar.
     
    Como funciona:
    Uma key única que pode ser usada somente uma vez adicionará um item ao player quando for utilizada.
     
    - Criando uma key contendo 10 crystal coins: 
    !createkey 2160,10 ou !createkey crystal coin,10 
     
    O player receberá a mensagem: "You have created the key: rXo-980376. You can add other items using !addkey."
     
    - Adicionando novos itens à mesma key:
    !addkey rXo-980376,2463,1
     
    O player receberá a mensagem: "You have added other items to the key rXo-980376."
     
    - Checando os itens que uma key possui:
    !checkkey rXo-980376
     

     
    - Utilizando a key o player receberá todos os itens associados a essa key. Depois disso, a key ficará inválida.
    !key rXo-980376
     
    - Deletando a key da database (apenas se necessário):
    !deletekey rXo-980376
     
    Configuração:
     
    Execute o seguinte comando no mysql do seu servidor:
     
    CREATE TABLE `code_key` ( `id` INT NOT NULL AUTO_INCREMENT, `key` VARCHAR(255) NOT NULL, `item_id` INT NOT NULL, `count` INT NOT NULL, `invalid` INT NOT NULL DEFAULT 0, PRIMARY KEY (`id`) );  
    Em talkactions/scripts, crie um arquivo:
     
    keysystem.lua
     
     
    Em "access" edite o grupo que pode utilizar cada comando. No exemplo abaixo, apenas players com acesso maior que 3 podem utilizar o comando !createkey.
     
    ["!createkey"] = {access = 3}, 
     
    Em talkactions.xml, adicione a tag: <talkaction words="!key;!createkey;!deletekey;!checkkey;!addkey" event="script" value="keysystem.lua"/>
     
    E é isso, espero que seja útil  
  10. Obrigado
    Dwarfer recebeu reputação de Orientalz em [8.6] Task System 4.0! (Task system + Daily Task System)   
    @Thayguroficial Deixa eu tentar ajudar.
     
    Em talkactions/scripts, crie um arquivo.lua:
     
     
     
    Em talkactions.xml: <talkaction words="/taskpoints" event="script" value="NOMEDOSEUARQUIVO.lua"/>
     
    O item de adicionar task points:
     
    Crie um arquivo em actions/scripts:
     
     
    No actions.xml: <action itemid="ID_DO_ITEM" script="NOMEDOARQUIVO.lua" />
  11. Gostei
    Dwarfer recebeu reputação de Victor Cain J em Item Key System   
    Fala, galerinha! Há um tempo atrás tinha feito esse sisteminha simples, como achei que não seria muito útil, acabou sumindo nas profundezas das pastas do meu computador. No entanto, como vi o pedido do membro @DboHere, acho que outras pessoas podem precisar.
     
    Como funciona:
    Uma key única que pode ser usada somente uma vez adicionará um item ao player quando for utilizada.
     
    - Criando uma key contendo 10 crystal coins: 
    !createkey 2160,10 ou !createkey crystal coin,10 
     
    O player receberá a mensagem: "You have created the key: rXo-980376. You can add other items using !addkey."
     
    - Adicionando novos itens à mesma key:
    !addkey rXo-980376,2463,1
     
    O player receberá a mensagem: "You have added other items to the key rXo-980376."
     
    - Checando os itens que uma key possui:
    !checkkey rXo-980376
     

     
    - Utilizando a key o player receberá todos os itens associados a essa key. Depois disso, a key ficará inválida.
    !key rXo-980376
     
    - Deletando a key da database (apenas se necessário):
    !deletekey rXo-980376
     
    Configuração:
     
    Execute o seguinte comando no mysql do seu servidor:
     
    CREATE TABLE `code_key` ( `id` INT NOT NULL AUTO_INCREMENT, `key` VARCHAR(255) NOT NULL, `item_id` INT NOT NULL, `count` INT NOT NULL, `invalid` INT NOT NULL DEFAULT 0, PRIMARY KEY (`id`) );  
    Em talkactions/scripts, crie um arquivo:
     
    keysystem.lua
     
     
    Em "access" edite o grupo que pode utilizar cada comando. No exemplo abaixo, apenas players com acesso maior que 3 podem utilizar o comando !createkey.
     
    ["!createkey"] = {access = 3}, 
     
    Em talkactions.xml, adicione a tag: <talkaction words="!key;!createkey;!deletekey;!checkkey;!addkey" event="script" value="keysystem.lua"/>
     
    E é isso, espero que seja útil  
  12. Gostei
    Dwarfer recebeu reputação de Vodkart em (Resolvido)Npc de Troca   
    @isac001
     
  13. Obrigado
    Dwarfer recebeu reputação de Morg Tuts em Tirar exigência de gold do npc barco   
    @ADM Alef Como sugestão, uma solução mais rápida, para não precisar fazer isso em todos os NPCS: apenas troque o "cost" para false
     
    O que era assim:
    travelKeyword:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, cost = cost, discount = 'postman', destination = destination}, nil, action)  
    Fica assim:
    travelKeyword:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, cost = false, discount = 'postman', destination = destination}, nil, action)  
  14. Curtir
    Dwarfer recebeu reputação de Lethal M em (Resolvido)Spell Cura Self, Mudar para Sio   
    Coloquei a fórmula da magia como no exura sio que você deixou. Qualquer coisa é só trocar a fórmula ali como você quiser.
     
    local spellConfig = { healCount = 12, -- número de vezes que vai curar healInterval = 75 -- intervalo da cura em milisegundos } local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0) combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) function onGetFormulaValues(player, level, maglevel) local div = 1 / spellConfig.healCount local min = div * ((level / 5) + (maglevel * 10)) local max = div * ((level / 5) + (maglevel * 14)) return min, max end combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local function sendHealingEffect(cid, var, target, healcounter) local player = Player(cid) if not player then return end local targetPlayer = Player(target) if not targetPlayer then return end combat:execute(player, var) local targetPos = targetPlayer:getPosition() local randPos = Position(targetPos.x + math.random(-4, 3), targetPos.y + math.random(-3, 2), targetPos.z) randPos:sendMagicEffect(CONST_ME_ASSASSIN) randPos:sendDistanceEffect(targetPos, CONST_ANI_SMALLHOLY) targetPos:sendMagicEffect(CONST_ME_MAGIC_BLUE) if healcounter == 0 then targetPos:sendMagicEffect(CONST_ME_HOLYAREA) end end function onCastSpell(creature, var) local target = Player(var:getNumber()) if not target then return end local healcounter, interval = spellConfig.healCount, spellConfig.healInterval local playerId = creature:getId() local targetId = target:getId() creature:say(string.format('Brothers, heal %s now!', target:getName()), TALKTYPE_MONSTER_SAY) for i = 1, healcounter do addEvent(sendHealingEffect, (i-1) * interval, playerId, var, targetId, healcounter - i) end return false end  
    Pega a tag do exura sio no spells.xml e coloca para sua magia.
     
    Vai ficar assim:
    https://i.imgur.com/Uiha0uB.gif
  15. Gostei
    Dwarfer recebeu reputação de iTzBrHue3 em (Resolvido)Bug ao Remover arma   
    Pelo que entendi da sua magia, já que não tive como testar, primeiro é recomendável que você adicione na tag da magia no spells.xml o seguinte:
    needweapon="1"  
    Para que não dê mais erros, deixe a magia assim:
     
    Dessa maneira, caso o player desequipe a arma ou troque o tipo de arma em relação ao tipo que estava equipado quando soltou a magia (ex.: solta com sword e depois equipa um axe), a magia vai parar. Lembrando que do jeito que sua magia está, ele ainda vai poder desequipar a arma  e caso volte a equipá-la dentro do tempo de duração da magia, a magia voltará a atacar. Não sei se isso foi proposital, se é pra funcionar assim mesmo...
     
    Ajuste o tempo de  duração da magia com o cooldown para soltar novamente e vai funcionar corretamente.
     
  16. Gostei
    Dwarfer recebeu reputação de Vodkart em Como colocar STORAGE GLOBAL, Nesse Script   
    local leverCooldown = {1, "hour"} -- Configure o tempo para usar novamente. Ex.: {30, "sec"}, {2, "min"}, {5, "hour"}, {3, "day"} local cooldownStorage = 91801 -- só modifique se necessário local items = { {pos = {x = 431, y = 285, z = 7}, itemid = 2129}, {pos = {x = 441, y = 284, z = 7}, itemid = 5943}, {pos = {x = 440, y = 290, z = 7}, itemid = 2363}, } local monsters = { {pos = {x = 436, y = 285, z = 7}, name = "Wolf"}, } local config = { onSpawnMonster = CONST_ME_TELEPORT, -- efeito lançado quando monstro é criado onRemoveItem = CONST_ME_BLOCKHIT, -- efeito lançado quando item é removido missingItem = CONST_ME_POFF, -- efeito lançado quando não encontrou o item para remover } -- 255 faz com que não lance efeito algum local function mathtime(table) -- by dwarfer if table[1] == 0 then return 0 end local unit = {"sec", "min", "hour", "day"} for i, v in pairs(unit) do if v == table[2] then return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1) end end end function onUse(cid, item, frompos, item2, topos) if getGlobalStorageValue(cooldownStorage) > os.time() then doPlayerSendCancel(cid, "Espere 1h para usar a alavanca novamente.") return true end local missing_items, remove_items = false, {} for _, itemcheck in pairs (items) do local i = getTileItemById(itemcheck.pos, itemcheck.itemid).uid if i < 1 then missing_items = true if tonumber(config.missingItem) and config.missingItem ~= 255 then doSendMagicEffect(itemcheck.pos, config.missingItem) end else table.insert(remove_items, i) end end if missing_items then return doPlayerSendCancel(cid, "Está faltando algum item.") else for _, iuid in pairs (remove_items) do if tonumber(config.onRemoveItem) and config.onRemoveItem ~= 255 then doSendMagicEffect(getThingPos(iuid), config.onRemoveItem) end doRemoveItem(iuid) end for _, monsterinfo in pairs (monsters) do local m = doCreateMonster(monsterinfo.name, monsterinfo.pos, false) if isCreature(m) and tonumber(config.onSpawnMonster) and config.onSpawnMonster ~= 255 then doSendMagicEffect(getThingPos(m), config.onSpawnMonster) end end setGlobalStorageValue(cooldownStorage, mathtime(leverCooldown) + os.time()) end return true end  
  17. Curtir
    Dwarfer deu reputação a Endless em Gerador de Outfits Automática para o Site   
    Olá meus senhores, tem muita gente que pede serviços em relação a Gerar Outfits Animadas do seu cliente, o que muitos não sabem é que existe esse sistema de Gerar as Outfit animadas gratuitamente na internet e ele foi desenvolvido pelo Gesior.pl (Polones), então todo o crédito deste tutorial em relações a códigos vão para ele.

    Primeiro de tudo, o que é esse Sistema de Gerar Outfits Animadas?

    Basicamente é 1 Sistema Web que vai ler o teu tibia.spr / tibia.dat e seu items.otb e gerar todas suas outfit do seu cliente em forma de frames e na hora de exibir o sistema utiliza uma script em php que fica responsável por montar 1 gif utilizando esses frames.
    O resultado é algo como isto:



    Existe 2 formas de utilizar o sistema, eu vou ensinar a mais fácil, para quem quiser vou deixar o link do código fonte e vocês podem simplesmente estar clonando o repositório e fazer suas alterações a vontade. (Sim, ele é open source e.e).

    Código Fonte: https://github.com/gesior/open-tibia-library 

    Explicando como utilizar o sistema:

    1° acesse o link => https://outfit-images.ots.me/generator/

    Você deve visualizar algo como isto: 



    Percebam que ele vai pedir os seguintes dados: 
    -Client Version:
    -Sprite file:
    -Dat file:
    -Otb file:

    Antes de sair adicionando, precisamos configurar nosso cliente para que o sistema consiga reconhecer ele. Abra seu cliente no object builder. Agora vá na área de effects e apague todos os efeitos. Sim apague TODOS, agora vá até Tools->Spriter Otimizer



    Clique em start e você vai ter 1 retorno parecido com isto:



    Agora aperta CTRL+SHIFT+S, vamos salvar esse cliente em 1 pasta separada (você só vai usar ele pra esse sistema, então fique tranquilo, você não vai apagar o original). Na hora de salvar deixe desmarcado as 3 opções (Extended, Transparency, Improved Animations).



    Tendo feito isso, agora vamos voltar para o site. 
    Em Client Version você vai digitar a versão de seu cliente. Exemplo: Se for 8.60 digite 860
    Em sprite file você vai selecionar o tibia.spr do seu cliente que você exportou (esse sem efeitos)
    Em dat file você vai selecionar o tibia.dat do seu cliente que você exportou (esse sem efeitos)
    Em otb file você vai selecionar o items.otb do seu servidor.

    Agora clique em Load Files. Você deve ter 1 retorno parecido com isto:



    Agora clique em Generate Imagens e ele vai começar a gerar os frames das suas outfits.



    Ao terminar ele vai efetuar sozinho o download das outfits.




    Agora acesse este repositório no github e baixe os arquivos: https://github.com/gesior/open-tibia-library/tree/master/tools/colored-outfit-images-generator

    Tendo feito o download, você vai extrair a pasta outfits.zip que você baixo e extrair a pasta que você clonou o repositório. Ao extrair o arquivo outfits.zip você vai encontrar 1 pasta chamada outfits_anim, dentro dela você deve ter algo como isto:



    Cada pasta é referente a 1 looktype do seu cliente.
    Agora copie a pasta 'outfits_anim' que está dentro da pasta outfits que você extraiu e cole dentro da pasta do repositório que foi clonado. Ficando assim:



    Pronto, agora você somente precisa deixar essa pasta em 1 servidor web e utilizar a mesma via requisição. Exemplo:
    Se você for exibir uma outfit, você pode exibir da seguinte forma:
    <img src="http://seudominio.com/nomedapastaqueestaoosarquivos/animoutfit.php/?id=270">  
    Esse id será o looktype que você deseja. Lembrando que: Você pode colocar 1 script pra puxar a outfit de cada vocação e chamar esse diretório, ele vai exibir a imagem já com o diretório correto.
    Sugestão de uso: Para derivados de NTO/DBO e afins, você pode utilizar para exibir as outfits de transformações de cada Personagens, algo como isto:



     
    Outra opção é exibir na lista de Ranking no menu da direita (Normalmente Tibia Classico faz isso)
    A criatividade fica por conta de vocês.
     
    Créditos:
    Gesior.pl por todo o código e disponibilizar para a comunidade em 1 Forum Gringo
    A mim por disponibilizar o tutorial para a comunidade.
  18. Gostei
    Dwarfer recebeu reputação de Breniinx em Broadcast ao matar o monstro   
    Em creaturescripts/scripts crie um arquivo.lua:
     
    function onDeath(cid, corpse, deathList) local killer = isCreature(deathList[1]) and (isPlayer(deathList[1]) and getPlayerName(deathList[1]) or getPlayerName(getCreatureMaster(deathList[1]))) or "Something" addEvent(doBroadcastMessage, 1, "WOW! "..killer.." has killed "..getCreatureName(cid).."!", MESSAGE_STATUS_WARNING) return true end  
    No creaturescripts.xml: <event type="death" name="broadOnKill" event="script" value="NOMEDOARQUIVO.lua"/>
     
    No arquivo do monstro, antes de </monster>, adicione:
    <script> <event name="broadOnKill"/> </script> Para retirar dos monstros que você quer, é só retirar a parte do script referente a isso.
  19. Curtir
    Dwarfer recebeu reputação de BangxD em Aumentando Damage   
    Para evitar maiores modificações, você poderia utilizar esse aumento de dano apenas para player vs player (com monstros não funciona). Após usar a magia, o player só poderia utilizar novamente assim que o efeito do bônus no elemento (fire, ice, etc) acabasse. Então, teste assim:
     
    Em spells/scripts crie um arquivo:
     
    buffelemental.lua
     
     
    Edite as palavras "flam", "frigo" como queira ou adicione outras.
     
    Em spells.xml: (Edite as palavras da magia, o maglvl, mana e os outros parâmetros de acordo com o que desejar, esse aí é apenas para servir como base caso você não saiba como fazer)
     
     
    Em creaturescripts/scripts crie um arquivo:
     
    buffelementalattack.lua
     
     
    No login.lua, registre o evento adicionando: 
    registerCreatureEvent(cid, "BuffElemental") Em creaturescripts.xml, adicione a tag: 
    <event type="statschange" name="BuffElemental" event="script" value="buffelementalattack.lua"/> Para utilizar a magia:
     
    utori buff "flam -- o hit do player quando FIRE será aumentado em 10% como foi configurado lá na spell
     
    Para os demais:
    utori buff "tera
    utori buff "ico
    utori buff "frigo
  20. Curtir
    Dwarfer deu reputação a Vodkart em [OTX] New Auto Loot Unlimited Edition 2.0   
    [ + ] Descrição: Autoloot refeito para VERSÃO OTX e adicionado algumas outras funções que estarei explicando ao decorrer do tópico.
     
    [ + ] Se você quer o Autoloot ara Versão TFS clica neste Link: AUTOLOOT TFS
     

     
     
    [ + ] Imagem do comando:
     

     
    [ + ] Features:
     
    [ - ] Você pode ativar ou desativar o autoloot a hora que achar necessário.
    [ - ] Também existe um comando para ativar ou desativar mensagens do loot que o autoloot coleta!
    [ - ] Você pode escolher a cor do texto em que irá aparecer a coleta do loot!
    [ - ] O autoloot informará para você se estiver com pouco slots na sua backpack, e o jogador poderá escolher se quer habilitar ou não está função no autloot.
    [ - ] Versão ilimitada de itens(não ficam armazenadas em storages.
    [ - ] O jogador poderá optar por depositar direto no banco os golds que forem dropados.
     
    [ + ] Instalação:
     
    Primeiramente CRIE uma PASTA VAZIA chamanda "autoloot" em DATA/LOGS, ficando assim:
     

     
    Depois instale o MODS normalmente na pasta MODS do seu servidor.
     

     
    new_perfect_autoloot_otx.xml
     
    Link: https://pastebin.com/raw/CW6jgerg
     
     
     [ + ] Configuração:
     
    Dentro do mods tem essa tabela
    info = { directory = "data/logs/autoloot", -- não mexer Warn_Bp_Slots = 5, -- quando tiver 5 ou menos slots na BP vai avisar o jogador Talkaction_delay = 5, -- em segundos // delay para remover e adicionar item BlockMonsters = {}, -- Lista de monstros que o autoloot nao vai funcionar BlockItemsList = {2123,2515}, -- Lista de itens que o autoloot nao coleta Money_ids = {2148, 2152, 2160}, -- id das moedas do ot Max_Slots = {free = 3, premium = 5}, -- quantidade de itens que podem ser adicionados no autoloot por free e premium Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807} -- não mexer }  
    Basta ler acima para esclarecer as dúvidas!!
     
    Estarei anexando o autoloot 2.0 versão atualizada para quem tiver preguiça de copiar e colar!!
     
     
     
    new_perfect_autoloot_otx.xml
  21. Curtir
    Dwarfer recebeu reputação de matheuspeixoto12 em (Resolvido)adicionar magic level nesse script   
    - ####################################### -- ####### Developed by MaXwEllDeN ####### -- ####### Level Points System ####### -- ####### Version: 1.0 ####### -- ####################################### local function addMagLevel(cid, amount) local amount = amount or 1 for i = 1, amount do doPlayerAddSpentMana(cid, getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid), false) end return true end function onSay(cid, words, param) if not (L_LvlPoints.vocPoints[getPlayerVocation(cid)]) then return false end local param = param:lower() local p2 = string.explode(param, ",") if (getPlayerStorageValue(cid, 14574) < 0) then setPlayerStorageValue(cid, 14574, 0) end local skillids = { ["shielding"] = 5, ["sword"] = 2, ["axe"] = 3, ["club"] = 1, ["distance"] = 4, } if (param == "check") then doPlayerPopupFYI(cid, "~*~*~ Level Points System by MaXwEllDeN ~*~*~\n\nPontos disponíveis: ".. getPlayerStorageValue(cid, 14574) .."\nPontos por level: ".. L_LvlPoints.vocPoints[getPlayerVocation(cid)]) elseif (p2[1] and p2[1] == "add") and (L_LvlPoints.attributes[p2[2]]) and (tonumber(p2[3])) then if (getPlayerStorageValue(cid, 14574) < tonumber(p2[3]) * L_LvlPoints.attributes[p2[2]].np) then doPlayerSendCancel(cid, "Você não tem pontos suficientes para distribuir!") return doSendMagicEffect(getThingPos(cid), 2) end if (p2[2] == "vitalidade") then setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + L_LvlPoints.attributes[p2[2]].vl * tonumber(p2[3])) doCreatureAddHealth(cid, L_LvlPoints.attributes[p2[2]].vl * tonumber(p2[3])) elseif (p2[2] == "energy") then setCreatureMaxMana(cid, getCreatureMaxMana(cid) + L_LvlPoints.attributes[p2[2]].vl * tonumber(p2[3])) doCreatureAddMana(cid, L_LvlPoints.attributes[p2[2]].vl * tonumber(p2[3])) elseif (p2[2] == "magic" then) addMagLevel(cid, L_LvlPoints.attributes[p2[2]].vl * tonumber(p2[3])) elseif(skillids[p2[2]]) then for a = 1, tonumber(p2[3]) do doPlayerAddSkillTry(cid, skillids[p2[2]], getPlayerRequiredSkillTries(cid, skillids[p2[2]], getPlayerSkillLevel(cid, skillids[p2[2]]) + 1) - getPlayerSkillTries(cid, skillids[p2[2]]), false) end end doSendMagicEffect(getThingPos(cid), 29) doSendMagicEffect(getThingPos(cid), 30) doSendAnimatedText(getThingPos(cid), "-" .. tonumber(p2[3]) * L_LvlPoints.attributes[p2[2]].np, 180) setPlayerStorageValue(cid, 14574, getPlayerStorageValue(cid, 14574) - tonumber(p2[3]) * L_LvlPoints.attributes[p2[2]].np) else local msgx = "" for i, v in pairs(L_LvlPoints.attributes) do local add = (v.np > 1) and "s" or "" msgx = msgx .. string.upper(i:sub(1,1)) .. i:sub(2, #i) .. " - ".. v.np .. " ponto".. add .. " ~ " .. v.vl .. " ".. v.nm .. "\n" end doPlayerPopupFYI(cid, "Pontos necessários para aumentar os stats:\n\n".. msgx .. "\nExemplo de uso: ".. words .." add, vitalidade, 5\n\nPontos disponíveis: ".. getPlayerStorageValue(cid, 14574)) end return true end  
  22. Obrigado
    Dwarfer recebeu reputação de Lisbeky em Boss para mission, usando item.   
    @Lisbeky Não tive como testar, mas se você configurar certinho creio que funcionará.
     
    1. Adicione o NPC
    Em data/npc, adicione o arquivo.xml. As falas, o nome do NPC bem como o looktype são apenas para exemplo, configure como quiser.
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Ghoster" script="default.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="48"/> <voices> <voice text="Annnnnnkkkhhhhhhhhh" interval2="50"/> <voice text="Boo!" interval2="50"/> <voice text="Why are you scared?" interval2="50"/> </voices> </npc> 2. Em data/actions/scripts crie um arquivo.lua e cole isto dentro:
     
     
    No actions.xml adicione a tag e edite o id do item:
    <action itemid="1111" script="NOMEDOARQUIVO.lua" /> 3. No arquivo do monstro, adicione antes de </monster>, o seguinte:
    <script> <event name = "GhostBossDeath"/> </script> 4. Em data/creaturescripts/scripts, crie um arquivo.lua e cole isto dentro:
     
     
    Edite o storage para os valores da sua quest. Lembrando que só ganharão o storage aqueles que causarem dano ao boss.
     
    No creaturescripts.xml, adicione a tag:
    <event type="death" name="GhostBossDeath" event="script" value="NOMEDOARQUIVO.lua"/> É isso.
     
  23. Curtir
    Dwarfer recebeu reputação de NTORox OTServer em Item Key System   
    Fala, galerinha! Há um tempo atrás tinha feito esse sisteminha simples, como achei que não seria muito útil, acabou sumindo nas profundezas das pastas do meu computador. No entanto, como vi o pedido do membro @DboHere, acho que outras pessoas podem precisar.
     
    Como funciona:
    Uma key única que pode ser usada somente uma vez adicionará um item ao player quando for utilizada.
     
    - Criando uma key contendo 10 crystal coins: 
    !createkey 2160,10 ou !createkey crystal coin,10 
     
    O player receberá a mensagem: "You have created the key: rXo-980376. You can add other items using !addkey."
     
    - Adicionando novos itens à mesma key:
    !addkey rXo-980376,2463,1
     
    O player receberá a mensagem: "You have added other items to the key rXo-980376."
     
    - Checando os itens que uma key possui:
    !checkkey rXo-980376
     

     
    - Utilizando a key o player receberá todos os itens associados a essa key. Depois disso, a key ficará inválida.
    !key rXo-980376
     
    - Deletando a key da database (apenas se necessário):
    !deletekey rXo-980376
     
    Configuração:
     
    Execute o seguinte comando no mysql do seu servidor:
     
    CREATE TABLE `code_key` ( `id` INT NOT NULL AUTO_INCREMENT, `key` VARCHAR(255) NOT NULL, `item_id` INT NOT NULL, `count` INT NOT NULL, `invalid` INT NOT NULL DEFAULT 0, PRIMARY KEY (`id`) );  
    Em talkactions/scripts, crie um arquivo:
     
    keysystem.lua
     
     
    Em "access" edite o grupo que pode utilizar cada comando. No exemplo abaixo, apenas players com acesso maior que 3 podem utilizar o comando !createkey.
     
    ["!createkey"] = {access = 3}, 
     
    Em talkactions.xml, adicione a tag: <talkaction words="!key;!createkey;!deletekey;!checkkey;!addkey" event="script" value="keysystem.lua"/>
     
    E é isso, espero que seja útil  
  24. Obrigado
    Dwarfer recebeu reputação de ITALOx em (Resolvido)Npc Crafting   
    crafter.lua
     
     
    Crafter.xml
     
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Crafter" script="crafter.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="66"/> </npc>  
    Edite as falas e os nomes como queira. Apenas coloquei exemplos para te servir como base. 
     
     
  25. Obrigado
    Dwarfer deu reputação a Diego Rulez em Google Cloud Plataform   
    Introdução
    O que eu quero falar aqui não é a parte técnica de segurança, desempenho e outros pontos. Quero falar sobre o dia a dia de alguém que pretende ser um administrador e que acabou de começar um projeto. Mesmo que você seja leigo e tenha dificuldades com a "tela preta" do Linux onde você digita os comandos, ainda assim vale a pena optar pelo Linux logo de primeira pelos seguintes motivos:
    Quando você for inaugurar seu servidor você vai querer que ele tenha uma boa estabilidade e não fique travando ou sendo derrubado e você vai conseguir isso apenas utilizando Linux, então pra que aprender a montar tudo no Windows se depois, de qualquer forma, você vai ter que aprender Linux? Todo conhecimento é válido, mas você estaria atrasando seu lado fazendo isso. Visual Studio, complementos, bibliotecas. Antes de compilar sua source para Windows você vai precisar fazer o download, instalar e preparar o seu ambiente de trabalho e isso vai te custar muito tempo visto que são programas pesados, que demoram para serem baixados e instalados e que precisam de configurações muito especificas para compilar sem erros. Se você pode fazer isso tudo em 5 minutos e sem erros no Linux, porque insistir no Windows?  
    Google Cloud Platform

    Ativando os créditos
     
    Criando o VPS
     
    Liberando as Portas
     
    Criando um acesso
     
     Enviar arquivos para o VPS
     
    A parte de compilação da source, instalar o site e abrir o server ficará para o próximo tópico, visto que, é possível aplicar em qualquer VPS e não somente do Google.
    Se deseja instalar um site e fazer a compilação da source clique aqui
     
    Se você tiver qualquer dúvida em relação a esse tutorial não fique acuado em perguntar, irei responder todas as dúvidas no tópico.
    Não respondo PM, porém também estou no Discord do TibiaKing e posso ajuda-los por lá.

Informação Importante

Confirmação de Termo