Ir para conteúdo

Featured Replies

Postado
  • 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:


3EnNbNq.png



e uma da versão 2:


QC2Kspn.png

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

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

  • Respostas 28
  • Visualizações 3.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • auheuha vc não me reputou  :angry2:

  • Pronto: Você vai ter que fazer uma pequena alteração no seu spells.xml, deixando ele assim: <instant name="Dark Hole" words="buraco negro" lvl="160" direction="1" mana="500" prem="1" exhaustio

Postado
  • 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

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • 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

I7Pm6ih.png

(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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo