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

Not working Script.

Apoccalypse

New Member
Joined
Apr 15, 2017
Messages
114
Solutions
2
Reaction score
4
Hello,
I have a problem with my manarune script .


local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)


function onGetFormulaValues(cid, level, maglevel)
min = (level * 2 + maglevel * 5) * 1.6 - 25
max = (level * 2 + maglevel * 5) * 2

if max < 250 then
min = 250
end

return min, max
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
if item.itemid == 2283 then
doSendMagicEffect(playerposition(cid),12)
doSendAnimatedText(getPlayerPosition(cid),"+++Mana Power+++", TEXTCOLOR_LIGHTBLUE)
end
return TRUE
end


setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

Specifically with this part:

function onUse(cid, item, fromPosition, itemEx, toPosition)
if item.itemid == 2283 then
doSendMagicEffect(getPlayerPosition(cid),12)
doSendAnimatedText(getPlayerPosition(cid), "+++Mana Power+++" , TEXTCOLOR_LIGHTBLUE)
end
return TRUE
end

After using manarune a player gets mana but there is no text and magic effect at the position of the player who is using this rune.
I totally do not understand it.
I declared a function onUse to make the effects happen after I use something
item.itemid == 2283 ----->it should tell the game which item is used

and then the following effects should be acomphlised.

If anyone good person could tell me why is it not working?
 
Solution
O have another problem:

I have two scripts for Mana rune:
local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 12)


function onCastSpell(cid, var)
doCombat(cid, combat, var)
ml = getPlayerMagLevel(cid)
lvl = getPlayerLevel(cid)


if isSorcerer(cid) or isDruid(cid) then
local mana = ((lvl*3+ml*1.5)*4)
doPlayerAddMana(cid, mana)
doSendAnimatedText(getPlayerPosition(cid), mana, 23)

elseif isPaladin(cid) then
local mana = ((lvl*2+ml*1.5)*4)
doPlayerAddMana(cid, mana)
doSendAnimatedText(getPlayerPosition(cid), mana, 23)

elseif isKnight(cid) then
local mana = ((lvl*0.8+ml*1.5)*4)
doPlayerAddMana(cid, mana)...
that's not how it works
you can't throw an onUse function inside the spell interface, they don't mix together like that
you have to use a manarune in the onUse completely
LUA:
function onUse(cid, item, fromPosition, itemEx, toPosition)
    if item.itemid == 2283 then
        local min, max = (level * 2 + maglevel * 5) * 1.6 - 25, (level * 2 + maglevel * 5) * 2
        if max < 250 then
            min = 250
        end
        doSendAnimatedText(getCreaturePosition(cid), "+Mana Power+", TEXTCOLOR_LIGHTBLUE)
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_ENERGYHIT)
        doCreatureAddMana(cid, math.random(min, max))
    end
    return true
end
the mana power will probably cut off because there's a limit to how many characters you can send for animated text
although checking if itemid is 2283 is completely unnecessary because for the script to execute it has to be registered to 2283 in the actions.xml anyways
 
or u can use this in spells

Code:
local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 12)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)


function onGetFormulaValues(cid, level, maglevel)
min = (level * 2 + maglevel * 5) * 1.6 - 25
max = (level * 2 + maglevel * 5) * 2

if max < 250 then
min = 250
end

return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
doSendAnimatedText(getPlayerPosition(cid),"+++Mana Power+++", TEXTCOLOR_LIGHTBLUE)
return doCombat(cid, combat, var)
end
 
O have another problem:

I have two scripts for Mana rune:
local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 12)


function onCastSpell(cid, var)
doCombat(cid, combat, var)
ml = getPlayerMagLevel(cid)
lvl = getPlayerLevel(cid)


if isSorcerer(cid) or isDruid(cid) then
local mana = ((lvl*3+ml*1.5)*4)
doPlayerAddMana(cid, mana)
doSendAnimatedText(getPlayerPosition(cid), mana, 23)

elseif isPaladin(cid) then
local mana = ((lvl*2+ml*1.5)*4)
doPlayerAddMana(cid, mana)
doSendAnimatedText(getPlayerPosition(cid), mana, 23)

elseif isKnight(cid) then
local mana = ((lvl*0.8+ml*1.5)*4)
doPlayerAddMana(cid, mana)
doSendAnimatedText(getPlayerPosition(cid), mana, 23)
end
return True


end

and

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 12)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 1.3, -30, 1.7, 0)


function onGetFormulaValues(cid, level, maglevel)
min = (level * 0.8 + maglevel * 15) * 2.0
max = (level * 0.8 + maglevel * 15) * 1.6

if max < 250 then
min = 250
end

return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
doSendAnimatedText(getPlayerPosition(cid),"++Mana++", TEXTCOLOR_LIGHTBLUE)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
return doCombat(cid, combat, var)
end

There is a problem:
Script One is almost perfect because every vocations have own formula for a power of magic rune but the value of the mana which is gained is const. (for example 2300,2300,2300 itd.)
From turn Script Two gets diffrent mana value (thanks to max, min) but it is independent of vocations what is huge downside.

Is there any posibility to make Script One dependent of vocations,because
I think that it is rather impossible to make Script Two dependent of vocations?
 
O have another problem:

I have two scripts for Mana rune:
local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 12)


function onCastSpell(cid, var)
doCombat(cid, combat, var)
ml = getPlayerMagLevel(cid)
lvl = getPlayerLevel(cid)


if isSorcerer(cid) or isDruid(cid) then
local mana = ((lvl*3+ml*1.5)*4)
doPlayerAddMana(cid, mana)
doSendAnimatedText(getPlayerPosition(cid), mana, 23)

elseif isPaladin(cid) then
local mana = ((lvl*2+ml*1.5)*4)
doPlayerAddMana(cid, mana)
doSendAnimatedText(getPlayerPosition(cid), mana, 23)

elseif isKnight(cid) then
local mana = ((lvl*0.8+ml*1.5)*4)
doPlayerAddMana(cid, mana)
doSendAnimatedText(getPlayerPosition(cid), mana, 23)
end
return True


end

and

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 12)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 1.3, -30, 1.7, 0)


function onGetFormulaValues(cid, level, maglevel)
min = (level * 0.8 + maglevel * 15) * 2.0
max = (level * 0.8 + maglevel * 15) * 1.6

if max < 250 then
min = 250
end

return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
doSendAnimatedText(getPlayerPosition(cid),"++Mana++", TEXTCOLOR_LIGHTBLUE)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
return doCombat(cid, combat, var)
end

There is a problem:
Script One is almost perfect because every vocations have own formula for a power of magic rune but the value of the mana which is gained is const. (for example 2300,2300,2300 itd.)
From turn Script Two gets diffrent mana value (thanks to max, min) but it is independent of vocations what is huge downside.

Is there any posibility to make Script One dependent of vocations,because
I think that it is rather impossible to make Script Two dependent of vocations?
Of course, your first script only have one valor and u have to add a min valor and max valor of your formula than player will add of mana look the exemple on sorcerer/druid fórmula.

Code:
local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 12)


function onCastSpell(cid, var)
doCombat(cid, combat, var)
ml = getPlayerMagLevel(cid)
lvl = getPlayerLevel(cid)


if isSorcerer(cid) or isDruid(cid) then
local minmana = ((lvl*3+ml*1.5)*4) --- Min of mana can heal
local maxmana = ((lvl*5+ml*2)*4) ---- Max of mana can heal
local random = math.random(minmana, maxmana)
doPlayerAddMana(cid, random)
doSendAnimatedText(getPlayerPosition(cid), mana, 23)

elseif isPaladin(cid) then
local mana = ((lvl*2+ml*1.5)*4)
doPlayerAddMana(cid, mana) 
doSendAnimatedText(getPlayerPosition(cid), mana, 23)

elseif isKnight(cid) then
local mana = ((lvl*0.8+ml*1.5)*4)
doPlayerAddMana(cid, mana) 
doSendAnimatedText(getPlayerPosition(cid), mana, 23)
end
return True


end
 
Solution
Back
Top