Ir para conteúdo

Dwarfer

Membro
  • Registro em

  • Última visita

Solutions

  1. Dwarfer's post in Aumentando Damage was marked as the answer   
    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
  2. Dwarfer's post in (Resolvido)Npc de Troca was marked as the answer   
    @isac001
     
  3. Dwarfer's post in (Resolvido)Spell Cura Self, Mudar para Sio was marked as the answer   
    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
  4. Dwarfer's post in (Resolvido)Bug ao Remover arma was marked as the answer   
    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.
     
  5. Dwarfer's post in (Resolvido)[Movements] Dúvida was marked as the answer   
    Para os próximos pedidos, tente deixar o título do seu tópico representativo do pedido.
    Se entendi bem o que você quis dizer...
     
     
    No movements.xml adicione as tags para o StepIn e para o StepOut referentes ao actionid do piso.
     
  6. Dwarfer's post in (Resolvido)Script reward was marked as the answer   
    local moneyRate = 50 -- % de dinheiro que será perdida local sendMoneyMsg = true -- 'true' para enviar mensagem de quanto dinheiro foi perdido, 'false' para não enviar function onDeath(cid, corpse, killer, frompos) if not isPlayer(cid) then return true end local check_killer = killer[1] local playerKiller = isCreature(check_killer) and (isPlayer(check_killer) and check_killer or getCreatureMaster(check_killer)) or nil if not playerKiller then return true end local victimName, victimLevel, killerName, killerLevel = getPlayerName(cid), getPlayerLevel(cid), getPlayerName(playerKiller), getPlayerLevel(playerKiller) local victimMoney = getPlayerMoney(cid) if victimMoney > 0 then local money = math.ceil(.01 * moneyRate * victimMoney) if money > 0 then doPlayerRemoveMoney(cid, money) doPlayerAddMoney(playerKiller, money) if sendMoneyMsg then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, string.format("You lost %d gold coin%s due to this death.", money, (money > 1 and "s" or ""))) doPlayerSendTextMessage(playerKiller, MESSAGE_STATUS_CONSOLE_ORANGE, string.format("You earned %d gold coin%s for this kill.", money, (money > 1 and "s" or ""))) end end end doBroadcastMessage(string.format("O jogador %s (Level: %d) foi morto pelo jogador %s (Level: %d).", victimName, victimLevel, killerName, killerLevel), MESSAGE_STATUS_CONSOLE_RED) return true end  
  7. Dwarfer's post in (Resolvido)como por numeros quebrados na stage? was marked as the answer   
    @guhcast Não fique com dúvidas, pergunte mesmo. Podem ter outras pessoas com a mesma dúvida que a sua.
    <stage minlevel="1" maxlevel="7" multiplier="12" /> <stage minlevel="8" maxlevel="50" multiplier="10" /> <stage minlevel="51" maxlevel="80" multiplier="8" /> <stage minlevel="81" maxlevel="100" multiplier="6" /> <stage minlevel="101" maxlevel="140" multiplier="1.5" /> <stage minlevel="141" maxlevel="200" multiplier="0.5" /> <stage minlevel="201" multiplier="0.05" /> Exemplifiquei os três últimos.
  8. Dwarfer's post in (Resolvido)Storage npc outfit was marked as the answer   
    verdade, acabei esquecendo de copiar as linhas de remover. Já editei lá.
  9. Dwarfer's post in (Resolvido)Quais funçoes posso usar em portais? was marked as the answer   
    Você pode usar o actionid em um item qualquer.
    Exemplo da tag com actionid 1111:
    <movevent type="StepIn" actionid="1111" event="script" value="NOMEDOARQUIVO.lua"/>  
  10. Dwarfer's post in (Resolvido)Erro ao tentar colocar loja no npc djin was marked as the answer   
    Bem, @bpm91, existem algumas maneiras de fazer isso. Vamos fazer pela forma mais completa até para que você possa utilizar em outros scripts depois, caso necessite.
    É só seguir o passo a passo abaixo, você é um rapaz esperto, saudável, eu sei que você vai conseguir. EU OUVI UM AMÉM? Além do mais, parece que tá precisando do script já que comentou "up" no tópico (não comente "up", isso é considerado flood, use o botão "Subir este tópico" no canto superior direito - Leia as regras: https://tibiaking.com/forums/forum/101-regras-e-informações/)
     
    Em data/npc/lib/npc/npcsystem, abra o arquivo npchandler.lua:
     
    Abaixo da linha:
    CALLBACK_ONSELL = 11 Adicione:
    CALLBACK_ONTRADEREQUEST = 15 Encontre as linhas:
    elseif(id == CALLBACK_FAREWELL and module.callbackOnFarewell ~= nil) then tmpRet = module:callbackOnFarewell(unpack(arg)) E adicione, logo abaixo, o seguinte:
    elseif id == CALLBACK_ONTRADEREQUEST and module.callbackOnTradeRequest ~= nil then tmpRet = module:callbackOnTradeRequest(unpack(arg)) Procure pela função NpcHandler:onSell (caso a função tenha algumas diferenças em relação ao que eu coloquei abaixo, sem desespero, inspire, expire e siga):
    function NpcHandler:onSell(cid, itemid, subType, amount, ignoreCap, inBackpacks) local callback = self:getCallback(CALLBACK_ONSELL) if(callback == nil or callback(cid, itemid, subType, amount, ignoreCap, inBackpacks)) then if(self:processModuleCallback(CALLBACK_ONSELL, cid, itemid, subType, amount, ignoreCap, inBackpacks)) then -- end end end Adicione, logo abaixo:
    function NpcHandler:onTradeRequest(cid) local callback = self:getCallback(CALLBACK_ONTRADEREQUEST) if callback == nil or callback(cid) then if self:processModuleCallback(CALLBACK_ONTRADEREQUEST, cid) then return true end end return false end Tá vendo, não foi tão difícil.
    Calma aí, tem mais.
     
    Em data/npc/lib/npc/npcsystem, abra o arquivo modules.lua:
     
    Procure por:
    function ShopModule.requestTrade(cid, message, keywords, parameters, node) local module = parameters.module if(not module.npcHandler:isFocused(cid)) then return false end Logo abaixo, adicione:
    if not module.npcHandler:onTradeRequest(cid) then return false end Em seguida, procure por:
    function ShopModule.tradeItem(cid, message, keywords, parameters, node) local module = parameters.module if(not module.npcHandler:isFocused(cid)) then return false end Logo abaixo, adicione:
    if not module.npcHandler:onTradeRequest(cid) then return true end Pronto, eu sempre soube que você conseguiria...
     
    Agora, seu NPC. Primeiramente, a linha abaixo tem um erro, acredito que foi ao colar aqui no fórum e a formatação modificou, dá uma olhada aí. Como não sei qual valor estava, deixei comentado no script final.
     
    Linha: 
    setPlayerStorageValue(cid, 100062, ?  
    Script do NPC com a verificação se o storage do player storage2 é diferente de -1 para poder dar "trade":
     
     
    Se você fizer tudo certo, vai funcionar.
  11. Dwarfer's post in (Resolvido)Sistema de "mate 3 ganhe 1 ponto" was marked as the answer   
    Vejo que é seu primeiro post, então nos próximos tente dar a maior quantidade possível de detalhes sobre o seu pedido como: a versão do seu servidor, a distro utilizada, além de detalhes sobre o próprio script que você quer. Isso facilitará com que as pessoas te ajudem e, por consequência, você tenha o seu pedido atendido o mais rápido possível. Como nunca vi que sistema é esse do qual você está se referindo, supondo que o script que desenvolvi será compatível com seu servidor e que o "ponto" que você se refere é o "premium point da account", siga os passos abaixo (não tive como testar o script):
     
    Em data/lib crie um arquivo.lua e cole isto dentro:
     
     
    Caso ainda não possua a função que adiciona os pontos em algum arquivo da pasta data/lib, adicione-a, no arquivo criado anteriormente, abaixo do "}":
     
     
    Em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro:
     
     
    No creaturescripts.xml, adicione a tag:
    <event type="death" name="AegisDeath" event="script" value="NOMEDOARQUIVO.lua"/> No arquivo.xml do monstro, antes de:
    </monster> adicione:
    <script> <event name = "AegisDeath"/> </script>  
    Fiz um comando adicional aqui rapidinho, caso o jogador queira verificar a quantidade de monstros mortos:
     
    Em data/talkactions/scripts crie um arquivo.lua e cole isto dentro:
     
     
    No talkactions.xml, adicione a tag. Por exemplo:
    <talkaction words="!aegis" event="script" value="NOMEDOARQUIVO.lua"/> Espero que seja isso o que você queria.
  12. Dwarfer's post in (Resolvido)Erro Ao Dar Use na Bandeira AJUDA was marked as the answer   
  13. Dwarfer's post in (Resolvido)Corpse por vocação was marked as the answer   
    local array = { [1] = {[0] = 6080, [1] = 6080}, [2] = {[0] = 6080, [1] = 6080}, --- coloque os outros aqui [30] = {[0] = 5966, [1] = 5966} } function onDeath(cid, corpse) local voc = array[getPlayerVocation(cid)] if voc then local newId = voc[getPlayerSex(cid)] doTransformItem(corpse.uid, newId, 1) doDecayItem(corpse.uid) end return true end  
    No array:
     [1] = { [0] = 6080, -- [0] = id do corpo feminino [1] = 6080 -- [1] = id do corpo masculino }, Faça para os demais, fiz apenas para alguns para exemplificar.
     
  14. Dwarfer's post in (Resolvido)Autoloot TFS 1.3 was marked as the answer   
    @Yinz Como você não postou o código por completo, tive que supor que se tratava de um autoloot que eu vi por aí certa vez. Tente sempre deixar o código completo pra facilitar o trabalho, ajudar outras pessoas, além de se obter uma solução mais rapidamente pra você também.  Espero que minha suposição esteja correta.
    Bem, eu não tive como testar o código, pois estava sem acesso ao meu computador.
     
    Em data/lib, crie um arquivo.lua chamado AutoLootRemove.lua (ou qualquer nome de sua preferência) e cole isto dentro:
     
     
    No global.lua, adicione a linha (ou troque para o nome que você escolheu):
    dofile('data/lib/AutoLootRemove.lua') Em talkactions/scripts, crie um arquivo.lua e cole isto dentro:
     
     
    No talkactions.xml, adicione a tag conforme desejar.
    Ex.: 
    <talkaction words="!autolootremove" script="NOMEDOSEUARQUIVO.lua"/>  
    Em seguida, em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro:
     
     
    No creaturescripts.xml, adicione as linhas:
    <event type="modalwindow" name="RmvAutoLootModal" script="NOMEDOARQUIVO.lua"/> <event type="login" name="RmvAutoLootLogin" script="NOMEDOARQUIVO.lua"/> Qualquer problema, é só retornar.
  15. Dwarfer's post in (Resolvido)Script alavanca was marked as the answer   
    Como você não detalhou se o intervalo de 20 horas é para todos os players ou para os players que foram teleportados, assumi que fosse para os players que foram teleportados.
    Não tive como testar, fiz aqui rapidão.
     
    Em data/actions/scripts crie um arquivo.lua e cole isto dentro:
     
     
    No actions.xml adicione a tag e edite o actionid que ficará na alavanca: 
    <action actionid="ACTIONID_DA_ALAVANCA" script="NOMEDOARQUIVO.lua"/>  
  16. Dwarfer's post in (Resolvido)Script de chuva de itens. was marked as the answer   
    Coloquei para não criar mais de um item em uma mesma posição, exceto se for um item juntável e você queira que a quantidade seja aleatória.
     
    Em data/talkactions/scripts crie o arquivo rainitems.lua e cole isto dentro:
     
     
    Em talkactions.xml, adicione a tag:
    <talkaction words="/rain" access="4" event="script" value="rainitems.lua"/> Edite o "access" como quiser. 
     
    Utilização do comando: /rain [id do item]
     
    Ex.: /rain 2160
     
    O resultado será algo assim:
     

  17. Dwarfer's post in (Resolvido)todos os player ja nascem pk red ! was marked as the answer   
    Sempre tente deixar claro no pedido qual sua distro.
     
    Em data/creaturescripts/scripts crie o arquivo logredskull.lua e cole isto dentro:
     
    function onLogin(cid) if getCreatureSkullType(cid) == SKULL_NONE then doCreatureSetSkullType(cid, SKULL_RED) end return true end No creaturescripts.xml, adicione a tag:  
     
    <event type="login" name="SetSkull" event="script" value="logredskull.lua"/>  
  18. Dwarfer's post in (Resolvido)Autoloot Não Cumpre O Prometido was marked as the answer   
    Em creaturescripts/scripts crie um arquivo e cole isto dentro:
    function onLogin(cid) if not vip.hasVip(cid) then local active_slots = getPlayerStorageValue(cid, 04420011) if active_slots >= 1 then for i = 1, active_slots do doPlayerSetStorageValue(cid, (04420031 + (i * 10)), -1) doPlayerSetStorageValue(cid, 04420011, active_slots - 1) end end end return true end Utilize qualquer tag com o login. 
  19. Dwarfer's post in (Resolvido)Retornar Nome do item Funcion simples was marked as the answer   
    function onUseWeapon(cid, var) local slotitem = getPlayerSlotItem(cid, CONST_SLOT_LEFT) -- edite o slot local nomeitem = getItemNameById(slotitem.itemid) -- tipo isso --codigos return true end  
  20. Dwarfer's post in (Resolvido)Piso de criação de monster was marked as the answer   
    Vê se assim te serve, não tive como testá-lo:
     
     
  21. Dwarfer's post in (Resolvido)shiny stone erro no distito was marked as the answer   
    local evo = { --nome do shiny, qnts stones precisa ["Snorlax"] = {"Shiny Snorlax", 5}, ["Gengar"] = {"Shiny Gengar", 7}, ["Ninetales"] = {"Shiny Ninetales", 4}, ["Raichu"] = {"Shiny Raichu", 5}, ["Alakazam"] = {"Shiny Alakazam", 7}, } local pokeballs = { [2531] = {newBall = 1111}, -- edite o "1111" para o id para o qual a pokeball 2531 se transformará [2557] = {newBall = 1111}, [2524] = {newBall = 1111}, [2525] = {newBall = 1111}, [2523] = {newBall = 1111}, } function onUse(cid, item, fromPosition, itemEx, toPosition) if isMonster(itemEx.uid) and getCreatureMaster(itemEx.uid) == cid then local monster = getCreatureName(itemEx.uid) if evo[monster] then if getPlayerItemCount(cid, item.itemid) >= evo[monster][2] then doPlayerSendTextMessage(cid, 27, "Congratulations! Your "..getPokeName(itemEx.uid).." evolved into a "..evo[monster][1].."!") local health, maxHealth = getCreatureHealth(itemEx.uid), getCreatureMaxHealth(itemEx.uid) doSendMagicEffect(getThingPos(itemEx.uid), 18) doRemoveCreature(itemEx.uid) doPlayerRemoveItem(cid, item.itemid, evo[monster][2]-1) doRemoveItem(item.uid, 1) doSummonMonster(cid,evo[monster][1]) local pokeball = getPlayerSlotItem(cid, 8) doItemSetAttribute(pokeball.uid, "poke", evo[monster][1]) doItemSetAttribute(pokeball.uid, "level", pokes[evo[monster][1]].level) doItemSetAttribute(pokeball.uid, "hp", 1) doItemSetAttribute(pokeball.uid, "happy", 110) local pk = getCreatureSummons(cid)[1] local getShinyPokeballs = pokeballs[getPlayerSlotItem(cid, 8).itemid] if getShinyPokeBalls then doTransformItem(getPlayerSlotItem(cid, 8).uid, getShinyPokeballs.newBall) adjustStatus(pk, pokeball.uid, true, false, true) end return true else return doPlayerSendTextMessage(cid, 27, "You need atleast ".. evo[monster][2] .." stones to do it!") end end end return false end  
  22. Dwarfer's post in (Resolvido)attempt to perform arithmetic on global 'storageplayer' (a boolean value) was marked as the answer   
  23. Dwarfer's post in (Resolvido)Bau inteligente was marked as the answer   
    @Navegante
     
    Em actions/scripts crie um arquivo.lua e cole isto dentro:
     
     
    No actions.xml, coloque a tag como o exemplo abaixo, inserindo um actionid no lugar do XXXX e o mesmo valor para o actionid do baú.
    <action actionid="XXXX" script="NOMEDOSEUARQUIVO.lua"/>  
  24. Dwarfer's post in (Resolvido)Colocar uma verificação no script evitar flood comand was marked as the answer   
  25. Dwarfer's post in (Resolvido)Quest por Tempo was marked as the answer   
    Caso seja tfs 0.4:

    Em talkactions/scripts crie um arquivo.lua:
    local quests = { ["demon"] = { min_level = 10, enter_pos = {x = 1, y = 1, z = 1}, area = {fromPos = {x = 1, y = 1, z = 1}, toPos = {x = 1, y = 1, z = 1}}, time_to_finish = {10, "min"}, time_to_make_again = {1, "hour"} }, ["dragon"] = { min_level = 10, enter_pos = {x = 1, y = 1, z = 1}, area = {fromPos = {x = 1, y = 1, z = 1}, toPos = {x = 1, y = 1, z = 1}}, time_to_finish = {10, "min"}, time_to_make_again = {1, "hour"} } } local time_storage = 87870 -- só modifique se necessário function onSay(cid, words, param, channel) local param, p, check = param:lower(), getPlayerPosition(cid), false if not param or param == "" then local str, n = '~~ [Available Quests] ~~\n\n', 1 for quest, info in pairs(quests) do str = str .. n .. " - " .. Fupper(quest) .. " (Level: "..info.min_level..")\n" n = n + 1 end doShowTextDialog(cid, 1955, str) return true end local t = quests[param] if not t then return doPlayerSendCancel(cid, "Quest not found.") end if getPlayerLevel(cid) < t.min_level then return doPlayerSendCancel(cid, "Only players level "..t.min_level.." or higher can go the "..param.." quest.") end if isInRange(p, t.area.fromPos, t.area.toPos) then return doPlayerSendCancel(cid, "You are already inside the "..param.." quest area.") end for quest, info in pairs(quests) do if isInRange(p, info.area.fromPos, info.area.toPos) then check = true end end if check then return doPlayerSendCancel(cid, "You cannot go to another quest inside a quest.") end local stor = getPlayerStorageValue(cid, time_storage) if stor > os.time() then return doPlayerSendCancel(cid, "You can go to a quest again at "..os.date("%d %B %Y %X", stor)..".") end doSendMagicEffect(p, CONST_ME_POFF) local destination = t.enter_pos doTeleportThing(cid, destination) doSendMagicEffect(destination, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Good luck in "..param.." quest! You have "..getStrTime(t.time_to_finish).." to finish or you will be kicked.") setPlayerStorageValue(cid, time_storage, mathtime(t.time_to_make_again) + os.time()) addEvent(function() if isPlayer(cid) then if isInRange(getPlayerPosition(cid), t.area.fromPos, t.area.toPos) then doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) local temple = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, temple) doSendMagicEffect(temple, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Your time is over!") end end end, mathtime(t.time_to_finish) * 1000) return true end function mathtime(table) -- by dwarfer 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 return error("Bad declaration in mathtime function.") end function getStrTime(table) -- by dwarfer local unit = {["sec"] = "second",["min"] = "minute",["hour"] = "hour",["day"] = "day"} return tostring(table[1].." "..unit[table[2]]..(table[1] > 1 and "s" or "")) end function Fupper(str) return (str:gsub("^%l", string.upper)) end Em talkactions.xml, adicione a tag:
     
    <talkaction words="!quest" event="script" value="NOMEDOARQUIVO.lua"/>  
    Configuração:
     
    ["demon"] = { -- nome da quest min_level = 10, -- level mínimo para ir para a quest enter_pos = {x = 1, y = 1, z = 1}, -- posição de entrada na quest area = { fromPos = {x = 1, y = 1, z = 1}, -- posição do canto superior esquerdo da área toPos = {x = 1, y = 1, z = 1} -- posição do canto inferior direito da área }, time_to_finish = {10, "min"}, -- tempo que o player terá para finalizar a quest ("sec", "min", "hour", "day") time_to_make_again = {1, "hour"} -- tempo para poder fazer uma quest novamente },  
    Utilização:
    !quest -> mostra as quests disponíveis !quest nome da quest -> leva o player para a quest Ex.: !quest demon

Informação Importante

Confirmação de Termo