Ir para conteúdo

Bomba Spell


meubk

Posts Recomendados

Hoje venho trazer uma spell de bomba, própria minha...



 

vow postar ela de dois geito , pra implantar a bomba no chão e ota pra implantar dentro do corpo do target...

 

1° para implantar no corpo que vai ser por distancia :

 

-- Spell by : XOtServX --


function getTime(s) -- função by : mkalo
local n = math.floor(s / 60)
s = s - (60 * n)
return n, s
end

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 1)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 3)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -6.0, 0, -5.3, 0)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -6.0, 0, -5.3, 0)

arr1 = {
{0, 0, 0},
{0, 3, 0},
{0, 0, 0},
}

arr3 = {
{0, 1, 1, 1, 0},
{1, 1, 1, 1, 1},
{1, 1, 3, 1, 1},
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0},
}

local area1 = createCombatArea(arr1)
setCombatArea(combat1, area1)
local area2 = createCombatArea(arr2)
setCombatArea(combat2, area2)

local function onCastSpell1(parameters)
doCombat(parameters.cid, combat1, parameters.var)
end

local function onCastSpell2(parameters)
doCombat(parameters.cid, combat2, parameters.var)
end

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
local pos = getPlayerPosition(cid)
local storage = 15456
addEvent(onCastSpell1, 0, parameters)

-- Configs --

local tempo = 5 -- tempo em segundos para acontecer a explosão.
local cd = 60 -- tempo em segundos para usar a explosão.

-- daki para baixo , não mexer --
if os.time()-getPlayerStorageValue(cid, storage) <= cd then
minutes,seconds = getTime(cd-(os.time()-getPlayerStorageValue(cid, storage)))
return doPlayerSendTextMessage(cid, 27, "You need to wait " .. minutes .." minutes and ".. seconds .. " seconds to implant other bomb!")
end

local i = 0 
local tempo2 = 0
while i <= tempo-1 do
addEvent(doSendAnimatedText, 0+tempo2, pos, "Tic Tac!", 108)
tempo2 = tempo2+1000
i = i+1
end
addEvent(onCastSpell2, 1000*tempo, parameters)
addEvent(onCastSpell3, 1000*tempo, parameters)
addEvent(doSendAnimatedText, 1000*tempo, pos, "Explosion!", TEXTCOLOR_RED)
setPlayerStorageValue(cid, storage, os.time()+cd)
return TRUE
end

 

tag :

<instant name="" words="nome da spell" lvl="1" mana="20" range="5" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="nomidoarkivo.lua">

 

para implantar no chão :

 

-- Spell by : XOtServX --


function getTime(s) -- função by : mkalo
local n = math.floor(s / 60)
s = s - (60 * n)
return n, s
end

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 1)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -6.0, 0, -5.3, 0)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -6.0, 0, -5.3, 0)

arr1 = {
{0, 0, 0},
{0, 3, 0},
{0, 0, 0},
}

arr3 = {
{0, 1, 1, 1, 0},
{1, 1, 1, 1, 1},
{1, 1, 3, 1, 1},
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0},
}

local area1 = createCombatArea(arr1)
setCombatArea(combat1, area1)
local area2 = createCombatArea(arr2)
setCombatArea(combat2, area2)

local function onCastSpell1(parameters)
doCombat(parameters.cid, combat1, parameters.var)
end

local function onCastSpell2(parameters)
doCombat(parameters.cid, combat2, parameters.var)
end

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
local pos = getPlayerPosition(cid)
local storage = 15456
addEvent(onCastSpell1, 0, parameters)

-- Configs --

local tempo = 5 -- tempo em segundos para acontecer a explosão.
local cd = 60 -- tempo em segundos para usar a explosão.

-- daki para baixo , não mexer --
if os.time()-getPlayerStorageValue(cid, storage) <= cd then
minutes,seconds = getTime(cd-(os.time()-getPlayerStorageValue(cid, storage)))
return doPlayerSendTextMessage(cid, 27, "You need to wait " .. minutes .." minutes and ".. seconds .. " seconds to implant other bomb!")
end

local i = 0 
local tempo2 = 0
while i <= tempo-1 do
addEvent(doSendAnimatedText, 0+tempo2, pos, "Tic Tac!", 108)
tempo2 = tempo2+1000
i = i+1
end
addEvent(onCastSpell2, 1000*tempo, parameters)
addEvent(onCastSpell3, 1000*tempo, parameters)
addEvent(doSendAnimatedText, 1000*tempo, pos, "Explosion!", TEXTCOLOR_RED)
setPlayerStorageValue(cid, storage, os.time()+cd)
return TRUE
end

 

tag:

 

<instant name="" words="nomi da spell" lvl="33" mana="160" exhaustion="2000" needlearn="0" event="script" value="nomidoarkivo.lua">

 

Obg. e reporte bugs

Editado por xotservx
Link para o comentário
Compartilhar em outros sites

  • 2 months later...

Olá, desculpe reviver mas achei um bugzinho.

Toda vez que alguem usa da um erro, ele não interfere em nada, mas se eu deixar vai ficar um spam no console.

 

[Error - Spell Interface]
data/spells/scripts/attack/mine.lua:OnCastSpell
Description:
<lua AddEvent> Callback parameter should be a function.

 

Eu tirei a parte dos segundos para plantar novamente.. Mas o erro não veio a partir disto, portanto está em alguma parte do script. Se alguém me ajudar ficaria grato.

Segue o script:

 

 

-- Spell by : XOtServX --

 

 

function getTime(s) -- função by : mkalo

local n = math.floor(s / 60)

s = s - (60 * n)

return n, s

end

 

local combat1 = createCombatObject()

setCombatParam(combat1, COMBAT_PARAM_EFFECT, 3)

 

local combat2 = createCombatObject()

setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat2, COMBAT_PARAM_EFFECT, 6)

setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 7, 14)

 

arr1 = {

{0, 0, 0},

{0, 3, 0},

{0, 0, 0},

}

 

arr2 = {

{0, 1, 1, 1, 0},

{1, 1, 1, 1, 1},

{1, 1, 3, 1, 1},

{1, 1, 1, 1, 1},

{0, 1, 1, 1, 0},

}

 

local area1 = createCombatArea(arr1)

setCombatArea(combat1, area1)

local area2 = createCombatArea(arr2)

setCombatArea(combat2, area2)

 

local function onCastSpell1(parameters)

doCombat(parameters.cid, combat1, parameters.var)

end

 

local function onCastSpell2(parameters)

doCombat(parameters.cid, combat2, parameters.var)

end

 

function onCastSpell(cid, var)

local parameters = { cid = cid, var = var}

local pos = getPlayerPosition(cid)

local storage = 15456

addEvent(onCastSpell1, 0, parameters)

 

-- Configs --

 

local tempo = 5

local i = 0

local tempo2 = 0

while i <= tempo-1 do

addEvent(doSendAnimatedText, 0+tempo2, pos, "Tic Tac!", 108)

tempo2 = tempo2+1000

i = i+1

end

addEvent(onCastSpell2, 1000*tempo, parameters)

addEvent(onCastSpell3, 1000*tempo, parameters)

return TRUE

end

 

 

Uma SS da spell para quem não viu ainda: Clique aqui.

Editado por Beto06
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...