ME

Bomba Spell

Por meubk, 09 de dez. de 2010 em Globalevents e Spells

script
otserv
4
2.9k
meubkM
09 de dezembro de 2010 às 12:00

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 Dezembro 9 por xotservx

14 de dezembro de 2010 às 13:50

Explica mais sua spell, bota uma foto se possivel :winksmiley02:

2 meses depois...
beto06B
27 de fevereiro de 2011 às 09:54

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 Fevereiro 27 por Beto06

claudiomirC
02 de março de 2011 às 20:28

nossa parece esta muito bom vou testar aki no meu ot versao 8.4 se funciona eu aviso!