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

Lua Spell that adds storage value

luigilc

Lua Learner
Joined
Mar 24, 2010
Messages
863
Reaction score
37
Location
A music box
I want to know how can I make when you cast a spell like "utito tempo" you get a storage value and then you can cast another spell like "exori gran san" only if you have casted the utito tempo one before.
It would look something like this?
LUA:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 10000)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEEPERCENT, 135)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, -100)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	setPlayerStorageValue(cid, 9000)
	return doCombat(cid, combat, var)
end
And then the exori gran san would look like:
LUA:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

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

function onGetFormulaValues(cid, level, skill, attack, factor)
	min = (level / 2 + skill / 2 + attack) * 2.6
	max = (level / 2 + skill / 2 + attack) * 3.2
	return -min, -max
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if(getPlayerStorageValue(cid, 9000) then
		doPlayerSendCancel(cid, "You can't use this spell.")
		doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
		return false
	end
	return doCombat(cid, combat, var)
end
Is this right or I need something else?
 
First:
LUA:
local storage = 9000
function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, storage) < 0 then
		setPlayerStorageValue(cid, 9000, 1)
	end
	
	doCombat(cid, combat, var)
	return true
end

Second:
LUA:
local storage = 9000
function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 9000) > 0 then
		doPlayerSendCancel(cid, "You cannot use this spell.")
		doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
	else
		return doCombat(cid, combat, var)
	end
	
	return false
end

Replace the onCastSpell parts, good luck!
 
Last edited:
LUA:
function onCastSpell(cid, var)
	doCreatureSetStorage(cid, 9000, 1)
	return doCombat(cid, combat, var)
end
LUA:
function onCastSpell(cid, var)
	if getCreatureStorage(cid, 9000) == 1 then
		return doCombat(cid, combat, var)
	end
	doPlayerSendCancel(cid, "You can't use this spell.")
	doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end
 
storages are obsolete then
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
 
local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 10000)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEEPERCENT, 135)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, -100)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
[B][COLOR="#FF0000"]setConditionParam(condition, CONDITION_PARAM_SUBID, 4)[/COLOR][/B]
setCombatCondition(combat, condition)
 
function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)
 
local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)
 
function onGetFormulaValues(cid, level, skill, attack, factor)
	min = (level / 2 + skill / 2 + attack) * 2.6
	max = (level / 2 + skill / 2 + attack) * 3.2
	return -min, -max
end
 
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
 
function onCastSpell(cid, var)
	if [B][COLOR="#FF0000"]hasCondition(cid, CONDITION_ATTRIBUTES, 4)[/COLOR][/B] then
		return doCombat(cid, combat, var)
	end
	doPlayerSendCancel(cid, "You can't use this spell.")
	doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end
 
Back
Top