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

xp spell

foxkbt

Member
Joined
Sep 29, 2009
Messages
290
Reaction score
7
Location
Salvador
i have a problem wif one spell

i try to do one spell make add 1.5 exp for player but dosent work
PHP:
function onStopXP(parameters)
    return isPlayer(parameters.cid) == TRUE and doPlayerSetExperienceRate(parameters.cid, 1)
end
function onAddXP(cid, var)
	if isPlayer(cid) then
		doPlayerSetExperienceRate(cid, getExperienceStage(getPlayerLevel(cid)) * 1.5)
		addEvent(onStopXP, 10000, parameters)
	end
end

function onTargetTile(cid, pos)
	if onAddXP(cid, var) then
		doSendAnimatedText(cid, "XP 1.5", math.random(1,255))
	end
end

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_PURPLE)
setCombatParam(combat1, COMBAT_PARAM_AGGRESSIVE, FALSE)
setCombatCallback(combat1, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

arr1 = {
{0, 1, 1, 1, 0},
{1, 1, 1, 1, 1},
{1, 1, 2, 1, 1},
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0}

setCombatArea(combat1, createCombatArea(arr1))

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

plx help
 
Last edited:
Fixed + shortened:
PHP:
function onStopXP(cid)
    return isPlayer(cid) == TRUE and doPlayerSetExperienceRate(cid, 1) or false
end
function onAddXP(cid)
	return isPlayer(cid) and (doPlayerSetExperienceRate(cid, 1.5) and addEvent(onStopXP, 5000, cid)) or false
end

function onTargetTile(cid, pos)
	return onAddXP(cid) and doSendAnimatedText(getPlayerPosition(cid), "XP 1.5x", COLOR_PURPLE) or false
end

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_PURPLE)
setCombatParam(combat1, COMBAT_PARAM_AGGRESSIVE, FALSE)
setCombatCallback(combat1, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

arr1 = {
{0, 1, 1, 1, 0},
{1, 1, 1, 1, 1},
{1, 1, 2, 1, 1},
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0}}

setCombatArea(combat1, createCombatArea(arr1))

function onCastSpell(cid, var)
    return doCombat(cid, combat1, var)
end
 
Ah I found my mistake. It only worked for caster..

Try this;
PHP:
function onStopXP(cid)
    return isPlayer(cid) == TRUE and doPlayerSetExperienceRate(cid, 1) or false
end
function onAddXP(cid)
    return doPlayerSetExperienceRate(cid, 1.5) and addEvent(onStopXP, 5000, cid)
end

function onTargetTile(cid, pos)
	pos.stackpos = 253
	local p = getThingFromPos(pos)
	if isPlayer(p.uid) then
		return onAddXP(p.uid) and doSendAnimatedText(getPlayerPosition(p.uid), "XP 1.5x", COLOR_PURPLE) or false
	else
		return true
	end
end

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_PURPLE)
setCombatParam(combat1, COMBAT_PARAM_AGGRESSIVE, FALSE)
setCombatCallback(combat1, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

arr1 = {
{0, 1, 1, 1, 0},
{1, 1, 1, 1, 1},
{1, 1, 2, 1, 1},
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0}}

setCombatArea(combat1, createCombatArea(arr1))

function onCastSpell(cid, var)
    return doCombat(cid, combat1, var)
end
 
Back
Top