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

Party Heal

Justin123456

New Member
Joined
Mar 24, 2011
Messages
177
Reaction score
4
Can anyone help me make a spell that only druids can use that will heal only members in the party and itself? I searched and searched but couldn't find anything, all I could find was a healer summon but did what I wanted except it was a spell! :(

If anyone could help it'd be greatly appreciated! :)
 
Try this:

Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)

function onCastSpell(cid, var)
	if isInParty(cid) then
		local lid = getPartyLeader(cid)
		local pm = getPartyMembers(lid)
		local lvl = getPlayerLevel(cid)
		local mlvl = getPlayerMagLevel(cid)
		local min = 50 + lvl * 1.0 + mlvl * 1.0
		local max = 100 + lvl * 1.0 + mlvl * 1.0
		for i = 1,#pm do
			doCreatureAddHealth(pm[i],math.random(min,max)
		end
	else
		return false,doPlayerSendCancel(cid, "You need to be in a party to cast this spell!")
	end
	return doCombat(cid, combat, var)
end

You only need to add your xml line in spells.xml
 
Damn, thanks that was fast! But I got an error
[15/03/2012 15:25:00] [Error - LuaScriptInterface::loadFile] data/spells/scripts/healing/heal party.lua:17: ')' expected (to close '(' at line 16) near 'end'
[15/03/2012 15:25:00] [Warning - Event::loadScript] Cannot load script (data/spells/scripts/healing/heal party.lua)
[15/03/2012 15:25:00] data/spells/scripts/healing/heal party.lua:17: ')' expected (to close '(' at line 16) near 'end'
 
The error MSG is pretty clear. It is missing a close bracket for the doCreatureAddHealth() function. Really easy to do when you use math.random() inside of it so just put a ) at the end of that line
 
Thanks I got it :D But it only does the "Blue Shimmer" effect on only the caster. Is there any way to make it happen to everyone that is healed?
 
Try this:
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
 
function onCastSpell(cid, var)
	if isInParty(cid) then
		local lid = getPartyLeader(cid)
		local pm = getPartyMembers(lid)
		local lvl = getPlayerLevel(cid)
		local mlvl = getPlayerMagLevel(cid)
		local min = 50 + lvl * 1.0 + mlvl * 1.0
		local max = 100 + lvl * 1.0 + mlvl * 1.0
		for i = 1,#pm do
			doCreatureAddHealth(pm[i],math.random(min,max))
                        doCombat(pm[i], combat, var)
		end
	else
		return false,doPlayerSendCancel(cid, "You need to be in a party to cast this spell!")
	end
	return doCombat(cid, combat, var)
end
 
any chance to make it send distance effect on party members?

Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
 
function onCastSpell(cid, var)
	if isInParty(cid) then
		local lid = getPartyLeader(cid)
		local pm = getPartyMembers(lid)
		local lvl = getPlayerLevel(cid)
		local mlvl = getPlayerMagLevel(cid)
		local min = 50 + lvl * 1.0 + mlvl * 1.0
		local max = 100 + lvl * 1.0 + mlvl * 1.0
		for i = 1,#pm do
			doCreatureAddHealth(pm[i],math.random(min,max))
            doCombat(pm[i], combat, var)
			doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(pm[i]), CONST_ANI_HOLY)
			doSendMagicEffect(getCreaturePosition(pm[i]), CONST_ME_HOLYAREA)
		end
	else
		return false,doPlayerSendCancel(cid, "You need to be in a party to cast this spell!")
	end
	return doCombat(cid, combat, var)
end
 
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
 
function onCastSpell(cid, var)
	if isInParty(cid) then
		local lid = getPartyLeader(cid)
		local pm = getPartyMembers(lid)
		local lvl = getPlayerLevel(cid)
		local mlvl = getPlayerMagLevel(cid)
		local min = 50 + lvl * 1.0 + mlvl * 1.0
		local max = 100 + lvl * 1.0 + mlvl * 1.0
		for i = 1,#pm do
			doCreatureAddHealth(pm[i],math.random(min,max))
            doCombat(pm[i], combat, var)
			doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(pm[i]), CONST_ANI_HOLY)
			doSendMagicEffect(getCreaturePosition(pm[i]), CONST_ME_HOLYAREA)
		end
	else
		return false,doPlayerSendCancel(cid, "You need to be in a party to cast this spell!")
	end
	return doCombat(cid, combat, var)
end

thank you, works like a charm :)
 
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
 
function onCastSpell(cid, var)
	if isInParty(cid) then
		local lid = getPartyLeader(cid)
		local pm = getPartyMembers(lid)
		local lvl = getPlayerLevel(cid)
		local mlvl = getPlayerMagLevel(cid)
		local min = 50 + lvl * 1.0 + mlvl * 1.0
		local max = 100 + lvl * 1.0 + mlvl * 1.0
		for i = 1,#pm do
			doCreatureAddHealth(pm[i],math.random(min,max))
            doCombat(pm[i], combat, var)
			doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(pm[i]), CONST_ANI_HOLY)
			doSendMagicEffect(getCreaturePosition(pm[i]), CONST_ME_HOLYAREA)
		end
	else
		return false,doPlayerSendCancel(cid, "You need to be in a party to cast this spell!")
	end
	return doCombat(cid, combat, var)
end

I've added a check to make sure the players are in fact within the same party, a message should display they're not. Not tested! ;)

Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
 
function onCastSpell(cid, var)
	for _, pid in ipairs(getPlayersOnline()) do
		if(isInParty(cid) and isInParty(pid)) then
			if(getPlayerParty(cid) == getPlayerParty(pid)) then
				local members, expLevel, magicLevel = getPartyMembers(cid), getPlayerLevel(cid), getPlayerMagLevel(cid)
				local min = 50 + expLevel * 1.0 + magicLevel * 1.0
				local max = 100 + expLevel * 1.0 + magicLevel * 1.0
				for i = 1, #members do
					doCombat(members[i], combat, var)
					doCreatureAddHealth(members[i], math.random(min, max))
					doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(members[i]), CONST_ANI_HOLY)
					doSendMagicEffect(getCreaturePosition(members[i]), CONST_ME_HOLYAREA)
				end
			else
				doPlayerSendCancel(cid, "You must be in the same party.")
				return false
			end
		else
			doPlayerSendCancel(cid, "You must be in a party to cast this spell.")
			return false
		end
	end
	return doCombat(cid, combat, var)
end
 
Last edited:
Back
Top