Postado Outubro 22, 2014 10 anos Este é um post popular. Essa spell foi feita originalmente pro Yazzo numa versão 7.6 do tibia, eu tenho ela salva desde essa época e apenas adaptei e removi umas coisas inúteis (que agora tem função pra isso). A spell não funciona tão bem quanto funcionava naquela época porque muita coisa mudou mas ela funciona e não apresenta nenhum erro então não vejo o porque de não postar já que pode servir de base pra outros scripts de vocês. Ela faz um buraco negro e puxa todos que estão na area em direção ao centro (caso seja possível) Vou colocar duas versões (a primeira é a original arrumada pra rodar em 8.54 e a segundas é ela com algumas funções novas) versão1: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -9.0, -30, -10.0, 4) arr = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area = createCombatArea(arr) setCombatArea(combat, area) function canEffect(pos, pz, proj) -- Night Wolf based on Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTilePzInfo(pos) and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onCastSpell(cid, var) local pos = getPlayerPosition(cid) local player = getThingfromPos({x=pos.x,y=pos.y,z=pos.z,stackpos= 253}) local raio = 3 -- alcance do buraco negro i = ((pos.x)-raio) while i <= ((pos.x)+raio) do j = ((pos.y)-raio) while j <= ((pos.y)+raio) do player = getThingfromPos({x=i,y=j,z=pos.z,stackpos=253}) if ((isMonster(player.uid) or isPlayer(player.uid)) and ((math.abs(i-(pos.x)) > 1) or (math.abs(j-(pos.y)) > 1)) and (canEffect({x = i, y = j, z = pos.z}))) then -- calcula novo X if(i < pos.x) then newx = i + 1 elseif(i == pos.x) then newx = i else newx = i - 1 end -- calcula novo Y if(j < pos.y) then newy = j + 1 elseif(j == pos.y) then newy = j else newy = j - 1 end npos = {x = newx ,y = newy ,z = pos.z} if canEffect(npos) then doSendMagicEffect(npos, 3) doTeleportThing(player.uid,npos, false) end end j = j + 1 end i = i + 1 end doCombat(cid, combat, var) return true end versão2: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -9.0, -30, -10.0, 4) arr = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area = createCombatArea(arr) setCombatArea(combat, area) function canEffect(pos, pz, proj) -- Night Wolf based on Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTilePzInfo(pos) and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onCastSpell(cid, var) local pos = getPlayerPosition(cid) local player = getThingfromPos({x=pos.x,y=pos.y,z=pos.z,stackpos= 253}) local raio = 3 -- alcance do buraco negro i = ((pos.x)-raio) while i <= ((pos.x)+raio) do j = ((pos.y)-raio) while j <= ((pos.y)+raio) do player = getThingfromPos({x=i,y=j,z=pos.z,stackpos=253}) if ((isMonster(player.uid) or isPlayer(player.uid)) and ((math.abs(i-(pos.x)) > 1) or (math.abs(j-(pos.y)) > 1)) and (canEffect({x = i, y = j, z = pos.z}))) then npos = getClosestFreeTile(cid, pos, false, true) if canEffect(npos) then doSendMagicEffect(npos, 10) doTeleportThing(player.uid,npos, false) end end j = j + 1 end i = i + 1 end doCombat(cid, combat, var) return true end spells.xml <instant name="Dark Hole" words="buraco negro" lvl="160" mana="500" prem="1" exhaustion="2000" needlearn="0" event="script" value="especiais/buraco negro.lua"> <vocation id="6"/> <vocation id="7"/> <vocation id="5"/> </instant> Espero que gostem e estudem o código dela! haha Uma imagem da versão 1: e uma da versão 2: Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Outubro 22, 2014 10 anos kkkkkkkk que da hora nao sabia que isso era possivel, seria bacana um tile que tivesse essa função ativável claro Ot Design: https://discord.gg/VgtVRNmCD7
Postado Outubro 22, 2014 10 anos Autor como assim um tile? De pisar e teleportar pra outro lugar? Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Outubro 22, 2014 10 anos Um tile que seria um buraco negro, puxa tudo pro centro e explode criando monstros da um evento legal Ot Design: https://discord.gg/VgtVRNmCD7
Postado Outubro 22, 2014 10 anos Autor daria mesmo mas acho q seria muito dificil controlar isso de uma forma diferente doque uma spell/talkaction Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.