• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Spell Bugs.

Digaral

New Member
Joined
Jan 22, 2010
Messages
11
Reaction score
2
Bug Spell

Recently i upgrade my server to 8.54, but now i have a problem with two runes, this runes don´t use chargues, they are infinite.

Natural Prison.

In Spells.xml

<rune name="Natural prison" id="2280" charges="1" maglv="35" lvl="40" mana="0" aggressive="1" needtarget="0" allowfaruse="1" blockwalls="1" exhaustion="1" enabled="1" script="natural prison.lua"></rune>


natural prison.lua

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 0, -15, 0, -15)


local arr = {
{1, 1, 1},
{1, 2, 1},
{1, 1, 1}
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

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

function onCastSpell(cid, var)

local parameters = { cid = cid, var = var, combat = combat, combat2 = combat2 }
addEvent(onCastSpell2, 2000, parameters)
addEvent(onCastSpell2, 4000, parameters)
addEvent(onCastSpell2, 6000, parameters)
addEvent(onCastSpell2, 8000, parameters)
addEvent(onCastSpell2, 10000, parameters)
doCombat(cid, combat, var)
return true
end


Bolt Shower

In Spells.xml

<rune name="Bolt Shower" id="2297" charges="3" maglv="10" mana="0" aggressive="1" needtarget="0" allowfaruse="1" blockwalls="1" exhaustion="1500" enabled="1" script="boltshower.lua"></rune>



boltshower.lua

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_BOLT)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0.85, 0, 0.75, 50)







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, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 3, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 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, 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)

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

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

local function onCastSpell3(parameters)
doCombat(parameters.cid, parameters.combat, parameters.var)
end

local function onCastSpell4(parameters)
doCombat(parameters.cid, parameters.combat, parameters.var)
end

local function onCastSpell5(parameters)
doCombat(parameters.cid, parameters.combat, parameters.var)
end





function onCastSpell(cid, var)
mano1 = getPlayerSlotItem(cid,5)
mano2 = getPlayerSlotItem(cid,6)

if mano1.itemid == 2455 and getPlayerItemCount(cid,2543) > 4 or mano2.itemid == 2455 and getPlayerItemCount(cid,2543) > 4 or mano2.itemid == 5803 and getPlayerItemCount(cid,2543) > 4 or mano1.itemid == 5803 and getPlayerItemCount(cid,2543) > 4 then
if getPlayerVocation(cid) == 6 or getPlayerVocation(cid) == 7 or getPlayerVocation(cid) == 14 or getPlayerVocation(cid) == 15 or getPlayerVocation(cid) == 16 or getPlayerVocation(cid) == 17 or getPlayerVocation(cid) == 24 or getPlayerVocation(cid) == 25 then
local parameters = { cid = cid, var = var, combat = combat}
setPlayerStorageValue (cid, 5657, 5)
addEvent(exhaust,setExhausted(cid),cid)
addEvent(onCastSpell1, 100, parameters)
addEvent(onCastSpell2, 200, parameters)
addEvent(onCastSpell3, 500, parameters)
addEvent(onCastSpell4, 700, parameters)
addEvent(onCastSpell5, 900, parameters)
doPlayerRemoveItem(cid,2543,5)
elseif getPlayerVocation(cid) == 32 or getPlayerVocation(cid) == 33 then
doPlayerSendCancel(cid,"You are too concentrated.")
return LUA_ERROR
else
doPlayerSendCancel(cid,"You need to be an archer to use this rune.")
return LUA_ERROR
end
else
doPlayerSendCancel(cid,"You need a crossbow in your hand and 5 bolts")
doSendMagicEffect(getPlayerPosition(cid),cid,2)
return LUA_ERROR
end
end


Sorry if my English is bad, I´m Spanish

Thank you in advance
 
Back
Top