Ir para conteúdo

Frenesy

Membro
  • Registro em

  • Última visita

Tudo que Frenesy postou

  1. O Script que te passei não remove os monstros, apenas verifica se eles estão na sala, se tiver, não da pra chamar mais. Mas pelo que entendi não deve ter dado certo pra você. Estranho, testei aqui e funcionou.
  2. Por via das dúvidas, troque seu Vocation.xml por esse. <?xml version="1.0" encoding="UTF-8"?> <vocations> <vocation id="0" name="None" description="none" needpremium="0" gaincap="5" gainhp="5" gainmana="5" gainhpticks="6" gainhpamount="1" gainmanaticks="6" gainmanaamount="1" manamultiplier="4.0" attackspeed="2000" soulmax="100" gainsoulticks="120" fromvoc="0" attackable="no"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/> </vocation> <vocation id="1" name="Sorcerer" description="a sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="5" gainmanaticks="3" gainmanaamount="60" manamultiplier="1.1" attackspeed="2000" soulmax="100" gainsoulticks="120" fromvoc="1"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/> </vocation> <vocation id="2" name="Druid" description="a druid" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="5" gainmanaticks="3" gainmanaamount="60" manamultiplier="1.1" attackspeed="2000" soulmax="100" gainsoulticks="120" fromvoc="2"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.0"/> </vocation> <vocation id="3" name="Paladin" description="a paladin" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="4" gainhpamount="5" gainmanaticks="4" gainmanaamount="60" manamultiplier="1.4" attackspeed="2000" soulmax="100" gainsoulticks="120" fromvoc="3"> <formula meleeDamage="1.3" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/> </vocation> <vocation id="4" name="Knight" description="a knight" needpremium="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="3" gainhpamount="5" gainmanaticks="6" gainmanaamount="60" manamultiplier="3.0" attackspeed="1500" soulmax="100" gainsoulticks="120" fromvoc="4"> <formula meleeDamage="1.4" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/> </vocation> <vocation id="5" name="Master Sorcerer" description="a master sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="10" gainmanaticks="2" gainmanaamount="60" manamultiplier="1.1" attackspeed="1400" soulmax="200" gainsoulticks="15" fromvoc="1" lessloss="30"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/> </vocation> <vocation id="6" name="Elder Druid" description="an elder druid" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="10" gainmanaticks="2" gainmanaamount="60" manamultiplier="1.1" attackspeed="1400" soulmax="200" gainsoulticks="15" fromvoc="2" lessloss="30"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.0"/> </vocation> <vocation id="7" name="Royal Paladin" description="a royal paladin" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="3" gainhpamount="10" gainmanaticks="3" gainmanaamount="60" manamultiplier="1.4" attackspeed="1400" soulmax="200" gainsoulticks="15" fromvoc="3" lessloss="30"> <formula meleeDamage="1.3" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/> </vocation> <vocation id="8" name="Elite Knight" description="an elite knight" needpremium="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="10" gainmanaticks="2" gainmanaamount="80" manamultiplier="3.0" attackspeed="1400" soulmax="200" gainsoulticks="15" fromvoc="4" lessloss="30"> <formula meleeDamage="1.4" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/> </vocation> <vocation id="9" name="Epic Master Sorcerer" description="an epic master sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="10" gainmanaticks="2" gainmanaamount="10" manamultiplier="1.1" attackspeed="2000" soulmax="200" gainsoulticks="15" fromvoc="5" lessloss="50"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/> </vocation> <vocation id="10" name="Epic Elder Druid" description="an epic elder druid" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="10" gainmanaticks="2" gainmanaamount="10" manamultiplier="1.1" attackspeed="2000" soulmax="200" gainsoulticks="15" fromvoc="6" lessloss="50"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.0"/> </vocation> <vocation id="11" name="Epic Royal Paladin" description="an epic royal paladin" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="3" gainhpamount="10" gainmanaticks="3" gainmanaamount="10" manamultiplier="1.4" attackspeed="2000" soulmax="200" gainsoulticks="15" fromvoc="7" lessloss="50"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/> </vocation> <vocation id="12" name="Epic Elite Knight" description="an epic elite knight" needpremium="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="8" gainhpamount="10" gainmanaticks="4" gainmanaamount="10" manamultiplier="3.0" attackspeed="2000" soulmax="200" gainsoulticks="15" fromvoc="8" lessloss="50"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/> </vocation> </vocations> Se desejar testar, instale esse NPC que fiz rapidinho aqui. Nele usei doPlayerSetPromotionLevel(cid, 2) Para adicionar a Promotion. NPC.lua local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if (msgcontains(msg, 'promotion')) then selfSay('Eu posso lhe ensinar uma nova promotion, voce aceita?', cid) talkState[talkUser] = 1 elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerPremiumDays(cid) > 0 then selfSay('Parabens, voce evoluiu sua promotion!', cid) doPlayerSetPromotionLevel(cid, 2) doSendMagicEffect(getThingPos(cid), CONST_ME_GIFT_WRAPS) talkState[talkUser] = 0 else selfSay('Voce precisa ser premium para ter essa promotion.', cid) talkState[talkUser] = 0 end elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then selfSay('Entao adeus, jovem gafanhoto.', cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  3. local fromPos = {x = 494, y = 499} -- Configurar position da sala. local toPos = {x = 497, y = 502} -- Configurar position da sala. local function isThereSomeMonster() for x = fromPos.x, toPos.x do for y = fromPos.y, toPos.y do local area = {x = x, y = y, z = 5} -- floor onde a sala esta. local creature = getTopCreature(area).uid if isMonster(creature) then return true end end end return false end function onUse(cid, item, fromPos, itemEx, toPos) -- [[INICIO CONFIG - Beyond Sky]] monstros = { [1] = {chance = 30, name = "Demon"}, --[[Monstro do shirine fire e item fire]] [2] = {chance = 30, name = "Fire Elemental"}, --[[Monstro do shirine fire e item fire]] [3] = {chance = 30, name = "Hellfire Fighter"}, --[[Monstro do shirine fire e item fire]] [4] = {chance = 10, name = "Dourado"}, --[[Monstro do shirine fire e item fire]] [5] = {chance = 30, name = "Gigante de Gelo"}, --[[Monstro do shirine ice e item ice]] [6] = {chance = 30, name = "Frost Dragon"}, --[[Monstro do shirine ice e item ice]] [7] = {chance = 30, name = "Frost Giantess"}, --[[Monstro do shirine ice e item ice]] [8] = {chance = 10, name = "Orghus"}, --[[Monstro do shirine ice e item ice]] [9] = {chance = 30, name = "Multi"}, --[[Monstro do shirine tera e item tera]] [10] = {chance = 30, name = "Juggernaut"}, --[[Monstro do shirine tera e item tera]] [11] = {chance = 30, name = "Hydra"}, --[[Monstro do shirine tera e item tera]] [12] = {chance = 10, name = "Guardiao da Montanha"}, --[[Monstro do shirine tera e item tera]] [13] = {chance = 30, name = "Minotaur Mage"}, --[[Monstro do shirine energy e item energ]] [14] = {chance = 30, name = "Dragon Guardian"}, --[[Monstro do shirine energy e item energ]] [15] = {chance = 30, name = "Thunder Dragon"}, --[[Monstro do shirine energy e item energ]] [16] = {chance = 10, name = "Nephtys"} --[[Monstro do shirine energy e item energ]] } local uniqid = 9999 --[[UNIQUE ID DA ALAVANCA - Beyond Sky]] local ItemIdFire = 6550 --[[Item do shrine Fire]] local ItemIdIce = 6551 --[[Item do shrine Ice]] local ItemIdTera = 6549 --[[Item do shrine Tera]] local ItemIdEnergy = 6548 --[[Item do shrine Energy]] local PosNameFire = {x=2203, y=2085, z=8} --[[Pos do monster da shrine Fire]] local PosNameIce = {x=2203, y=2079, z=8} --[[Pos do monster da shrine Ice]] local PosNameTera = {x=2203, y=2076, z=8} --[[Pos do monster da shrine Tera]] local PosNameEnergy = {x=2203, y=2088, z=8} --[[Pos do monster da shrine Energy]] local PosItem = {x=2229, y=2081, z=8, stackpos = 255} --[[Posição do item que vai ser preciso]] local getitem = getThingfromPos(PosItem) -- [[FIM CONFIG - Beyond Sky]] for i = 1, 4 do if item.uid == uniqid and getitem.itemid == ItemIdFire and item.itemid == 9825 and (monstros[i].chance >= math.random(1, 100)) then doSummonCreature(monstros[i].name, PosNameFire) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and getitem.itemid == ItemIdIce and item.itemid == 9825 and (monstros[i+4].chance >= math.random(1, 100)) then doSummonCreature(monstros[i+4].name, PosNameIce) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i+4].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and getitem.itemid == ItemIdTera and item.itemid == 9825 and (monstros[i+8].chance >= math.random(1, 100)) then doSummonCreature(monstros[i+8].name, PosNameTera) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i+8].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and getitem.itemid == ItemIdEnergy and item.itemid == 9825 and (monstros[i+12].chance >= math.random(1, 100)) then doSummonCreature(monstros[i+12].name, PosNameEnergy) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i+12].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and item.itemid == 9826 then if isThereSomeMonster() then return doCreatureSay(cid, "Ainda tem monstros no local.", TALKTYPE_ORANGE_1) and doSendMagicEffect(getPlayerPosition(cid), 2) end doTransformItem(item.uid, 9825) return true end end end
  4. Tem que haver duas verificações: Se Tiver monstro, acontece X Se Não tiver monstro acontece Y Já usei isso. Não foi. if not isMonster(creature.uid) then -- verifica se não é um monster
  5. Quero ajustar esse Script. Quero Teleportar o Jogador para X Posição se a área/sala não tiver nenhum monstro. No entanto, se na área/sala ainda tiver monstro, ele é empurrado pra trás. Tenho esse Script que estava usando como base. Tentei usar else mas da erro. function onStepIn(cid, item, position, fromPosition) for posx = 494,497 do -- checar posição X, começo e final da sala for posy = 499,502 do -- checar posicao Y, começo e final da sala local pos = {x=posx, y=posy, z=5, stackpos=253} -- posição que ira verificar se existe creatures (stackpos = 253) local creature = getThingfromPos(pos) -- pega informações da creature da posição if isMonster(creature.uid) then -- verifica se é um monster doTeleportThing(cid, fromPosition) doSendMagicEffect(getPlayerPosition(cid), 2) end end end return TRUE end No Aguardo!
  6. Sim, é verdade. Mas fico feliz que a criatividade tem um espaço maior. Até porque não sou nenhum "expert" em .lua e tenho alguns problemas em organizar adequadamente os meus scripts. Tipo, fazer algo que seria feito em poucas linhas, acabar fazendo na raça e tornando o script enorme. Mas já mandei o meu script para analisarem e espero que gostem!
  7. Versão do Server: 8.60 O Objetivo é sincronizar as estátuas de seus respectivos elementos para criar um portal. Utilizei Actions para Girar as Estátuas e fazer a verificação das posições e Movements para fazer com que as Estátuas se posicionem de maneira aleatória, para que assim, qualquer jogador tenha uma experiência nova ao fazer a Quest. Cada estátua tem seu elemento. As estátuas da esquerda são o padrão. Você deve ajustar as estátuas da direita de acordo com o padrão estabelecido da esquerda. Uma sala é formada por dois grupos de estátuas. 6 na esquerda, 6 na direita. Cada Elemento possui duas estátuas diferentes. Uma do lado esquerdo, outra do lado direito (Notar imagem abaixo). As estátuas do lado esquerdo possui ActionID. Elas não giram. Elas que geram um padrão para posicionar as outras estátuas. O Objetivo é posicionar a estátua do lado direito do elemento fogo, por exemplo, de acordo com a posição da estátua do lado esquerdo com o mesmo elemento. Movements: Crie um arquivo .lua com nome EPQ em Movements/Script/ e coloque o código abaixo dentro dele. (Configure o local das estátuas) function onStepIn(cid, item, position, fromPosition) local pos_enter = {x = 999, y = 1009, z = 7} local statues = { -- Estátuas que ficam na posição esquerda {x = 997, y = 993, z = 7, stackpos= 1}, {x = 995, y = 994, z = 7, stackpos= 1}, {x = 994, y = 996, z = 7, stackpos= 1}, {x = 994, y = 998, z = 7, stackpos= 1}, {x = 995, y = 1000, z = 7, stackpos= 1}, {x = 997, y = 1001, z = 7, stackpos= 1}, -- Estátuas que ficam na posição direita {x = 1001, y = 993, z = 7, stackpos= 1}, {x = 1003, y = 994, z = 7, stackpos= 1}, {x = 1004, y = 996, z = 7, stackpos= 1}, {x = 1004, y = 998, z = 7, stackpos= 1}, {x = 1003, y = 1000, z = 7, stackpos= 1}, {x = 1001, y = 1001, z = 7, stackpos= 1}, } doTeleportThing(cid, pos_enter, true) for _, pos in ipairs(statues) do local lv = getThingfromPos(pos).uid doTransformItem(lv, math.random(3705, 3708)) end return TRUE end Adicione essa tag em Movements.xml <movevent type="StepIn" actionid="5485" event="script" value="EPQ.lua"/> No piso, coloque ActionID: 5485. Actions: Crie um arquivo .lua com nome EPQ em Action/Script/ e coloque o código abaixo dentro dele. function onUse(cid, item, frompos, item2, topos) if (item.actionid ~= 15784) then -- As Estatuas que tenham essa Action não podem ser movidas. if item.itemid == 3705 then doTransformItem(item.uid, 3706) elseif item.itemid == 3706 then doTransformItem(item.uid, 3707) elseif item.itemid == 3707 then doTransformItem(item.uid, 3708) elseif item.itemid == 3708 then doTransformItem(item.uid, 3705) end else doSendMagicEffect(getPlayerPosition(cid), 2) end return TRUE end Em Action.xml adicione essa tag. <action itemid="3705-3708" event="script" value="EPQ.lua"/> Nas estátuas da esquerda, coloque nelas ActionID: 15784 Crie um arquivo .lua com nome EPQUm em Action/Script/ e coloque o código abaixo dentro dele. (Configurações estão no início do Script) -- Config. local config = { toPos = {x = 998, y = 985, z = 7}, -- Posição da Sala da recompensa. Pos = {x = 999, y = 994, z = 7}, -- Posição onde será criado o Teleport. tp = {x = 999, y = 994, z = 7}, -- Posição que o Teleport apareceu, para que ele seja removido. tempo = 5, -- Tempo que o Teleport ficará disponível, em segundos } local posA = { -- Estátuas que ficam na posição esquerda {x = 997, y = 993, z = 7, stackpos= 1}, -- Fogo {x = 995, y = 994, z = 7, stackpos= 1}, -- Pedra {x = 994, y = 996, z = 7, stackpos= 1}, -- Dark {x = 994, y = 998, z = 7, stackpos= 1}, -- Terra {x = 995, y = 1000, z = 7, stackpos= 1}, -- Gelo {x = 997, y = 1001, z = 7, stackpos= 1}, -- Poison -- Estátuas que ficam na posição direita {x = 1001, y = 993, z = 7, stackpos= 1}, -- Gelo {x = 1003, y = 994, z = 7, stackpos= 1}, -- Poison {x = 1004, y = 996, z = 7, stackpos= 1}, -- Pedra {x = 1004, y = 998, z = 7, stackpos= 1}, -- Fogo {x = 1003, y = 1000, z = 7, stackpos= 1}, -- Dark {x = 1001, y = 1001, z = 7, stackpos= 1}, -- Terra } -- Fim da Config. function onUse(cid, item, frompos, item2, topos) local posC = { [1] = getThingfromPos(posA[1]), [2] = getThingfromPos(posA[10]), [3] = getThingfromPos(posA[2]), [4] = getThingfromPos(posA[9]), [5] = getThingfromPos(posA[3]), [6] = getThingfromPos(posA[11]), [7] = getThingfromPos(posA[4]), [8] = getThingfromPos(posA[12]), [9] = getThingfromPos(posA[5]), [10] = getThingfromPos(posA[7]), [11] = getThingfromPos(posA[6]), [12] = getThingfromPos(posA[8]), } if getPlayerStorageValue(cid, 10000) == -1 then if posC[1].itemid == posC[2].itemid and posC[3].itemid == posC[4].itemid and posC[5].itemid == posC[6].itemid and posC[7].itemid == posC[8].itemid and posC[9].itemid == posC[10].itemid and posC[11].itemid == posC[12].itemid then doSendMagicEffect(getPlayerPosition(cid), 14) setPlayerStorageValue(cid, 10000, 1) setPlayerStorageValue(cid, 10001, 1) addEvent(CombCerta, 1000, cid) else doSendMagicEffect(getPlayerPosition(cid), 13) setPlayerStorageValue(cid, 10000, 1) addEvent(doSendMagicEffect, 500, posA[11], 17) addEvent(doSendMagicEffect, 500, posA[3], 17) addEvent(doSendMagicEffect, 1500, posA[9], 44) addEvent(doSendMagicEffect, 1500, posA[2], 44) addEvent(doSendMagicEffect, 2500, posA[8], 46) addEvent(doSendMagicEffect, 2500, posA[6], 46) addEvent(doSendMagicEffect, 3500, posA[12], 50) addEvent(doSendMagicEffect, 3500, posA[4], 50) addEvent(doSendMagicEffect, 4500, posA[7], 43) addEvent(doSendMagicEffect, 4500, posA[5], 43) addEvent(doSendMagicEffect, 5500, posA[10], 6) addEvent(doSendMagicEffect, 5500, posA[1], 6) addEvent(doSendMagicEffect, 6500, getPlayerPosition(cid), 13) addEvent(setPlayerStorageValue, 6502, cid, 10000, -1) end else doSendMagicEffect(getThingPos(cid), 2) end return TRUE end function CombCerta(cid) local posC = { [1] = getThingfromPos(posA[1]), [2] = getThingfromPos(posA[10]), [3] = getThingfromPos(posA[2]), [4] = getThingfromPos(posA[9]), [5] = getThingfromPos(posA[3]), [6] = getThingfromPos(posA[11]), [7] = getThingfromPos(posA[4]), [8] = getThingfromPos(posA[12]), [9] = getThingfromPos(posA[5]), [10] = getThingfromPos(posA[7]), [11] = getThingfromPos(posA[6]), [12] = getThingfromPos(posA[8]), } if getPlayerStorageValue(cid, 10001) == 1 then doTransformItem(posC[1].uid, 3705) doSendMagicEffect(posA[1], 14) doTransformItem(posC[10].uid, 3705) doSendMagicEffect(posA[7], 14) addEvent(CombCerta, 1000, cid) setPlayerStorageValue(cid, 10001, -1) setPlayerStorageValue(cid, 10001, 2) elseif getPlayerStorageValue(cid, 10001) == 2 then doTransformItem(posC[3].uid, 3705) doSendMagicEffect(posA[2], 14) doTransformItem(posC[12].uid, 3705) doSendMagicEffect(posA[8], 14) addEvent(CombCerta, 1000, cid) setPlayerStorageValue(cid, 10001, -2) setPlayerStorageValue(cid, 10001, 3) elseif getPlayerStorageValue(cid, 10001) == 3 then doTransformItem(posC[5].uid, 3706) doSendMagicEffect(posA[3], 14) doTransformItem(posC[4].uid, 3708) doSendMagicEffect(posA[9], 14) addEvent(CombCerta, 1000, cid) setPlayerStorageValue(cid, 10001, -3) setPlayerStorageValue(cid, 10001, 4) elseif getPlayerStorageValue(cid, 10001) == 4 then doTransformItem(posC[7].uid, 3706) doSendMagicEffect(posA[4], 14) doTransformItem(posC[2].uid, 3708) doSendMagicEffect(posA[10], 14) addEvent(CombCerta, 1000, cid) setPlayerStorageValue(cid, 10001, -4) setPlayerStorageValue(cid, 10001, 5) elseif getPlayerStorageValue(cid, 10001) == 5 then doTransformItem(posC[9].uid, 3707) doSendMagicEffect(posA[5], 14) doTransformItem(posC[6].uid, 3707) doSendMagicEffect(posA[11], 14) addEvent(CombCerta, 1000, cid) setPlayerStorageValue(cid, 10001, -5) setPlayerStorageValue(cid, 10001, 6) elseif getPlayerStorageValue(cid, 10001) == 6 then doTransformItem(posC[11].uid, 3707) doSendMagicEffect(posA[6], 14) doTransformItem(posC[8].uid, 3707) doSendMagicEffect(posA[12], 14) addEvent(CombCerta, 1000, cid) setPlayerStorageValue(cid, 10001, -6) setPlayerStorageValue(cid, 10001, 7) elseif getPlayerStorageValue(cid, 10001) == 7 then for _, pos in ipairs(posA) do doSendDistanceShoot(pos, config.Pos, 35) end doSendMagicEffect(config.Pos, 10) doCreateTeleport(1387, config.toPos, config.Pos) doCreatureSay(cid, "O teleport irá sumir em "..config.tempo.." segundos.", TALKTYPE_ORANGE_1) addEvent(removetp, config.tempo*1000, cid) end end function removetp(cid) for _, ale in ipairs(posA) do local st = getThingfromPos(ale).uid doTransformItem(st, math.random(3705, 3708)) end local t = getTileItemById(config.Pos, 1387) doRemoveItem(t.uid, 1) doSendMagicEffect(config.Pos, CONST_ME_POFF) setPlayerStorageValue(cid, 10000, -1) end Em Action.xml adicione essa tag. <action actionid="8798" event="script" value="EPQUm.lua" /> As estátuas precisam estar nesse formato circular para que o efeito das animações possam acontecer corretamente. Vídeo: https://www.youtube.com/watch?v=kBVUf_ejmLs&feature=youtu.be Download OTServ para demonstração da Quest: CLIQUE AQUI
  8. Um detalhe que esqueci de mencionar é que Irei adicionar vários addEvents abaixo do outro, só mudando o tempo de execução de cada um.
  9. Não to conseguindo utilizar o: addEvent(doTransformItem Pra transformar um item que esta em X Posição. Já tentei assim: local i = { [1] = {x = 997, y = 993, z = 7, stackpos= 1}, } local posC = { [1] = getThingfromPos(i[1]), } addEvent(doTransformItem, 500, posC[1].uid, IDDoNovoITEM) Mas não vai. Se eu uso assim: doTransformItem(posC[1].uid, IDDoNovoITEM) Da certo, mas quando adiciono ele no addEvent não funciona.
  10. function onUse(cid, item, fromPos, itemEx, toPos) -- [[INICIO CONFIG - Beyond Sky]] monstros = { [1] = {chance = 30, name = "Demon"}, --[[Monstro do shirine fire e item fire]] [2] = {chance = 30, name = "Fire Elemental"}, --[[Monstro do shirine fire e item fire]] [3] = {chance = 30, name = "Hellfire Fighter"}, --[[Monstro do shirine fire e item fire]] [4] = {chance = 10, name = "Dourado"}, --[[Monstro do shirine fire e item fire]] [5] = {chance = 30, name = "Gigante de Gelo"}, --[[Monstro do shirine ice e item ice]] [6] = {chance = 30, name = "Frost Dragon"}, --[[Monstro do shirine ice e item ice]] [7] = {chance = 30, name = "Frost Giantess"}, --[[Monstro do shirine ice e item ice]] [8] = {chance = 10, name = "Orghus"}, --[[Monstro do shirine ice e item ice]] [9] = {chance = 30, name = "Multi"}, --[[Monstro do shirine tera e item tera]] [10] = {chance = 30, name = "Juggernaut"}, --[[Monstro do shirine tera e item tera]] [11] = {chance = 30, name = "Hydra"}, --[[Monstro do shirine tera e item tera]] [12] = {chance = 10, name = "Guardiao da Montanha"}, --[[Monstro do shirine tera e item tera]] [13] = {chance = 30, name = "Minotaur Mage"}, --[[Monstro do shirine energy e item energ]] [14] = {chance = 30, name = "Dragon Guardian"}, --[[Monstro do shirine energy e item energ]] [15] = {chance = 30, name = "Thunder Dragon"}, --[[Monstro do shirine energy e item energ]] [16] = {chance = 10, name = "Nephtys"} --[[Monstro do shirine energy e item energ]] } local uniqid = 9999 --[[UNIQUE ID DA ALAVANCA - Beyond Sky]] local ItemIdFire = 6550 --[[Item do shrine Fire]] local ItemIdIce = 6551 --[[Item do shrine Ice]] local ItemIdTera = 6549 --[[Item do shrine Tera]] local ItemIdEnergy = 6548 --[[Item do shrine Energy]] local PosNameFire = {x=2203, y=2085, z=8} --[[Pos do monster da shrine Fire]] local PosNameIce = {x=2203, y=2079, z=8} --[[Pos do monster da shrine Ice]] local PosNameTera = {x=2203, y=2076, z=8} --[[Pos do monster da shrine Tera]] local PosNameEnergy = {x=2203, y=2088, z=8} --[[Pos do monster da shrine Energy]] local PosItem = {x=2229, y=2081, z=8, stackpos = 255} --[[Posição do item que vai ser preciso]] local getitem = getThingfromPos(PosItem) -- [[FIM CONFIG - Beyond Sky]] for i = 1, 4 do if item.uid == uniqid and getitem.itemid == ItemIdFire and item.itemid == 9825 and (monstros[i].chance >= math.random(1, 100)) then doSummonCreature(monstros[i].name, PosNameFire) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and getitem.itemid == ItemIdIce and item.itemid == 9825 and (monstros[i+4].chance >= math.random(1, 100)) then doSummonCreature(monstros[i+4].name, PosNameIce) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i+4].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and getitem.itemid == ItemIdTera and item.itemid == 9825 and (monstros[i+8].chance >= math.random(1, 100)) then doSummonCreature(monstros[i+8].name, PosNameTera) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i+8].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and getitem.itemid == ItemIdEnergy and item.itemid == 9825 and (monstros[i+12].chance >= math.random(1, 100)) then doSummonCreature(monstros[i+12].name, PosNameEnergy) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i+12].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and item.itemid == 9826 then for posx = 367,480 do -- checar posição X, começo e final da sala for posy = 378,478 do -- checar posicao Y, começo e final da sala local pos = {x=posx, y=posy, z=14, stackpos=253} -- nao mexer aqui local creature = getThingfromPos(pos) -- pega informações da creature da posição (nao mexer aqui) if creature.uid ~= 0 and isMonster(creature.uid) then doSendMagicEffect(cid, 2) end end end doTransformItem(item.uid, item.itemid - 1) return TRUE end end end
  11. Por que eu não tenho essa função na minha lista de Funções LUA? É óbvio que minha lista esta desatualizada. Obrigado!
  12. Gostaria que um efeito de Distance Effect saísse da Posição X para a Y. Ex: Tenho uma estátua na Posição X. Quero que um efeito de Distance, tipo de fogo, por exemplo, saísse de onde a estatua está até um Tile na Posição Y.
  13. Fico feliz que a criatividade pode contar mais que a habilidade em Lua. Estou terminando de desenvolver o meu Script aqui e certamente irei participar.
  14. Aproveitem, porque o #zipter98 está inspirado hoje!
  15. Fiz uma rápida modificação na Action de sua máquina. Você precisa configurar no final com as coordenadas de sua sala. function onUse(cid, item, fromPos, itemEx, toPos) -- [[INICIO CONFIG - Beyond Sky]] monstros = { [1] = {chance = 30, name = "Demon"}, --[[Monstro do shirine fire e item fire]] [2] = {chance = 30, name = "Fire Elemental"}, --[[Monstro do shirine fire e item fire]] [3] = {chance = 30, name = "Hellfire Fighter"}, --[[Monstro do shirine fire e item fire]] [4] = {chance = 10, name = "Dourado"}, --[[Monstro do shirine fire e item fire]] [5] = {chance = 30, name = "Gigante de Gelo"}, --[[Monstro do shirine ice e item ice]] [6] = {chance = 30, name = "Frost Dragon"}, --[[Monstro do shirine ice e item ice]] [7] = {chance = 30, name = "Frost Giantess"}, --[[Monstro do shirine ice e item ice]] [8] = {chance = 10, name = "Orghus"}, --[[Monstro do shirine ice e item ice]] [9] = {chance = 30, name = "Multi"}, --[[Monstro do shirine tera e item tera]] [10] = {chance = 30, name = "Juggernaut"}, --[[Monstro do shirine tera e item tera]] [11] = {chance = 30, name = "Hydra"}, --[[Monstro do shirine tera e item tera]] [12] = {chance = 10, name = "Guardiao da Montanha"}, --[[Monstro do shirine tera e item tera]] [13] = {chance = 30, name = "Minotaur Mage"}, --[[Monstro do shirine energy e item energ]] [14] = {chance = 30, name = "Dragon Guardian"}, --[[Monstro do shirine energy e item energ]] [15] = {chance = 30, name = "Thunder Dragon"}, --[[Monstro do shirine energy e item energ]] [16] = {chance = 10, name = "Nephtys"} --[[Monstro do shirine energy e item energ]] } local uniqid = 9999 --[[UNIQUE ID DA ALAVANCA - Beyond Sky]] local ItemIdFire = 6550 --[[Item do shrine Fire]] local ItemIdIce = 6551 --[[Item do shrine Ice]] local ItemIdTera = 6549 --[[Item do shrine Tera]] local ItemIdEnergy = 6548 --[[Item do shrine Energy]] local PosNameFire = {x=2203, y=2085, z=8} --[[Pos do monster da shrine Fire]] local PosNameIce = {x=2203, y=2079, z=8} --[[Pos do monster da shrine Ice]] local PosNameTera = {x=2203, y=2076, z=8} --[[Pos do monster da shrine Tera]] local PosNameEnergy = {x=2203, y=2088, z=8} --[[Pos do monster da shrine Energy]] local PosItem = {x=2229, y=2081, z=8, stackpos = 255} --[[Posição do item que vai ser preciso]] local getitem = getThingfromPos(PosItem) -- [[FIM CONFIG - Beyond Sky]] for i = 1, 4 do if item.uid == uniqid and getitem.itemid == ItemIdFire and item.itemid == 9825 and (monstros[i].chance >= math.random(1, 100)) then doSummonCreature(monstros[i].name, PosNameFire) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and getitem.itemid == ItemIdIce and item.itemid == 9825 and (monstros[i+4].chance >= math.random(1, 100)) then doSummonCreature(monstros[i+4].name, PosNameIce) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i+4].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and getitem.itemid == ItemIdTera and item.itemid == 9825 and (monstros[i+8].chance >= math.random(1, 100)) then doSummonCreature(monstros[i+8].name, PosNameTera) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i+8].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and getitem.itemid == ItemIdEnergy and item.itemid == 9825 and (monstros[i+12].chance >= math.random(1, 100)) then doSummonCreature(monstros[i+12].name, PosNameEnergy) doRemoveItem(getitem.uid,1) doCreatureSay(cid, "A máquina de summon criou um "..monstros[i+12].name..".", TALKTYPE_ORANGE_1) doSendMagicEffect(PosItem, 13) elseif item.uid == uniqid and item.itemid == 9826 then for posx = 367,480 do -- checar posição X, começo e final da sala for posy = 378,478 do -- checar posicao Y, começo e final da sala local pos = {x=posx, y=posy, z=14, stackpos=253} -- nao mexer aqui local creature = getThingfromPos(pos) -- pega informações da creature da posição (nao mexer aqui) if creature.uid ~= 0 and isMonster(creature.uid) then doSendMagicEffect(cid 2) end end end doTransformItem(item.uid, item.itemid - 1) return TRUE end end end No caso, apenas quando a alavanca esta desativada (pro outro lado), ele verifica se tem monstro na sala. Se tiver, ele não volta ao normal. Se não houver monstros na sala, ela volta pro outro lado pra você poder usá-la novamente. OBS: Fiz esse script no bloco de notas do trabalho. Não garanto que esteja certo. Mas não custa nada tentar.
  16. Exatamente! Cara, eu to no trabalho agora. Assim que chegar em casa a gente verifica isso.
  17. O Script que lhe passei foi um Movements, não uma Action. OnUse = Action onStepIn = Movements Confesso que estou meio perdido com relação a esse seu Script. Verifiquei o tópico dele que você passou e não entendi muito bem. A alavanca fica na mesma sala onde os monstros são criados? Porque qualquer jogador pode fazer esse "desafio" com outro ainda realizando ele. Por que, tipo: Se um Jogador ativa a alavanca e Summona um Monstro, e outro jogador, mesmo com o primeiro player ainda matando o monstro, clica na alavanca e summona outro monstro, é natural que a sala fique cheia. Uma ideia seria colocar na alavanca, uma verificação da sala. Se na sala tiver monstros, ao clicar na alavanca, não summona nada. Caso contrário, se não tiver nenhum monstro na sala, qualquer jogador, ao clicar na alavanca, summona o monstro em questão.
  18. Delete todas as casas e refaça novamente. -== ==- #ModoDesesperoON -== ==-
  19. Fez alguma alteração em seu Login.lua? Há sempre a possibilidade de você baixar outro servidor PokeTibia e substituir seu Login.
  20. É como eu te disse, precisa remover a Global Storage na hora que o player sai da arena pra poder entrar outros player. Se você não remover, o NPC sempre dirá que está ocupado.
  21. No caso seria no NPC. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg:lower(), "arena") or msgcontains(msg:lower(), "enter") then if isThereSomeone(ARENA.fromPos, ARENA.toPos) then selfSay("Someone is at the arena right now, please wait.", cid) talkState[talkUser] = 0 return true elseif getPlayerStorageValue(cid, ARENA.STORAGES.storage) > -1 then selfSay("You already completed the arena.", cid) talkState[talkUser] = 0 return true else selfSay("You really want enter in the arena? It will cost you {"..ARENA.NPC.price.."}.", cid) talkState[talkUser] = 1 return true end elseif msgcontains(msg:lower(), "yes") and talkState[talkUser] == 1 then if getGlobalStorageValue(1000) == -1 then if doPlayerRemoveMoney(cid, ARENA.NPC.price * 100) then selfSay("Good luck! ^.^", cid) setGlobalStorageValue(1000, 1) doTeleportThing(cid, ARENA.NPC.position) setPlayerStorageValue(cid, ARENA.STORAGES.wave_sto, 1) doWave(cid, 1) talkState[talkUser] = 0 return true else selfSay("You do not have enough money.", cid) talkState[talkUser] = 0 return true end else selfSay("Ocupado!", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg:lower(), "no") and talkState[talkUser] == 1 then selfSay("Ok, then...", cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Por Global Storage é mais fácil. Não esqueça de colocar em algum lugar pra remover a Global Storage que se ganha ao entrar na arena.
  22. Poste o Script dele para que possamos fazer as devidas alterações.
  23. Use um: setGlobalStorageValue(Storage, value) para impedir que outra pessoa use a arena.
  24. As entradas para essas casas não estão definidas. Precisa definir uma entrada pelo RME.

Informação Importante

Confirmação de Termo