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

Old script [need fixing]

Evan

A splendid one to behold
Senator
Premium User
Joined
May 6, 2009
Messages
7,018
Solutions
1
Reaction score
1,040
Location
United States
I have an old script, NOT too old though, but old, and it has an error.

[13:25:36.958] [Error - Action Interface]
[13:25:36.959] data/actions/scripts/crossbow power 5.lua:onUse
[13:25:36.960] Description:
[13:25:36.961] (luaAddEvent) Callback parameter should be a function.

LUA:
local exhaust = createConditionObject(CONDITION_EXHAUST) 
setConditionParam(exhaust, CONDITION_PARAM_TICKS, 10000) 

local combatpara = createCombatObject()
setCombatParam(combatpara, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combatpara, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)

local conditionpara = createConditionObject(CONDITION_PARALYZE)
setConditionParam(conditionpara, CONDITION_PARAM_TICKS, 3000)
setConditionFormula(conditionpara, -0.9, 0, -0.9, 0)
setCombatCondition(combatpara, conditionpara)

local combat = createCombatObject() 
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) 
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true) 
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_INFERNALBOLT) 
function onGetFormulaValues(cid, level, skill, attack, factor) 
	return -(((skill + 100) / 3) + (level / 5)), -((skill + 100) + (level / 5)) 
end 
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerMana(cid) >= 20 then 
		if not hasCondition(cid, CONDITION_EXHAUST) then 
			if getCreatureTarget(cid) > 0 then 
				if getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid == 2543 then 
					for i = 1, 2 do
						addEvent(doAddCondition(cid, exhaust), 0, cid)
						addEvent(doRemoveItem(getPlayerSlotItem(cid, CONST_SLOT_AMMO).uid, 2), 0, cid)
						addEvent(doPlayerAddSkillTry(cid, SKILL_DISTANCE, 10) , 0, cid)
						addEvent(doCreatureAddMana(cid, -20), 0, cid)
						addEvent(doCombat, 100, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 100, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						addEvent(doCombat, 200, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 200, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						addEvent(doCombat, 300, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 300, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						addEvent(doCombat, 400, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 400, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						addEvent(doCombat, 500, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 500, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						addEvent(doCombat, 600, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 600, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						addEvent(doCombat, 700, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 700, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						addEvent(doCombat, 800, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 800, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						addEvent(doCombat, 900, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 900, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						addEvent(doCombat, 1000, cid, combat, numberToVariant(getCreatureTarget(cid)))
						addEvent(doSendMagicEffect, 1000, getThingPos(getCreatureTarget(cid)), CONST_ME_MORTAREA)
						break
					end
					return true
				else 
					return doPlayerSendCancel(cid, 'You don\'t have any ammunition.') 
				end 
			else 
				return doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUCANONLYUSEITONCREATURES) 
			end 
		else 
			return doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) 
		end 
	else 
		return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA) 
	end 
end

I really don't know what's wrong with it. It's an action script.
 
LUA:
local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, 10000)

local combatpara = createCombatObject()
setCombatParam(combatpara, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combatpara, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)

local conditionpara = createConditionObject(CONDITION_PARALYZE)
setConditionParam(conditionpara, CONDITION_PARAM_TICKS, 3000)
setConditionFormula(conditionpara, -0.9, 0, -0.9, 0)
setCombatCondition(combatpara, conditionpara)

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_INFERNALBOLT)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)

function onGetFormulaValues(cid, level, skill, attack, factor)
	return -(((skill + 100) / 3) + (level / 5))*2, -((skill + 100) + (level / 5))*2
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

local function cast(cid, combat, var, n)
	if isPlayer(cid) then
		doCombat(cid, combat, var)
		n = n - 1
		if n > 0 then
			addEvent(cast, 100, cid, combat, var, n)
		end
	end
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerMana(cid) >= 20 then 
		if not hasCondition(cid, CONDITION_EXHAUST) then 
			local target = getCreatureTarget(cid)
			if target ~= 0 then
				local ammo = getPlayerSlotItem(cid, CONST_SLOT_AMMO)
				if ammo.itemid == 2543 and ammo.type >= 2 then
					doAddCondition(cid, exhaust)
					doRemoveItem(ammo.uid, 2)
					doPlayerAddSkillTry(cid, SKILL_DISTANCE, 10)
					doCreatureAddMana(cid, -20, false)
					doPlayerAddSpentMana(cid, 20)
					cast(cid, combat, numberToVariant(target), 10)	
				else
					doPlayerSendCancel(cid, 'You need to have 2 bolts in your ammo slot.')
				end
			else
				doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUCANONLYUSEITONCREATURES)
			end
		else
			doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
		end
	else
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
	end
	return true
end
 

Similar threads

Back
Top