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

Few things about summoned creatures...

lycefur

New Member
Joined
Jul 13, 2010
Messages
99
Reaction score
2
Hey. I have some problems I want to get solved, so scripters of otland, I beg you thee to help me, plz code + explanation [no client modification plz]! I gief rep fo sho.
I made creature A and creature B.

1. How can I make creature A to use spells on party of his master like heal party (utura mas sio) or enchant party (utori mas sio)? Spells of these summoned creatures does not have to be exactly the same, but I want these summoned creatures to support party with similar effects like adding mlvl or hp/mana regen boost.

2. How can I allow ONLY DRUIDS to summon creature A and ONLY SORCERERS to summon creature B?

Thats all. Ty for reading and for help.
 
Maybe it is possible to set healing party or the summoner in monstername.xml?

Code:
	<defenses armor="7" defense="15">
		<defense name="healing" interval="2000" chance="100" radius="1" [B]target="party"[/B] min="25" max="50" >
			<attribute key="areaEffect" value="bluebubble"/>
		</defense>
	</defenses>

The target part is simply not working, maybe its possible to do something with it here? Halp!
 
PHP:
    <defense name="exura mas sio" interval="2000" chance="100" min="25" max="50">
      <attribute key="areaEffect" value="blueshimmer"/>
    </defense>

exura mas sio.xml
PHP:
local combat = createCombatObject()
local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_TICKS, 2 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, 20)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 2000)

local baseMana = 120
function onCastSpell(cid, var)
	local pos = getCreaturePosition(cid)

	local membersList = getPartyMembers(cid)
	if(membersList == nil or type(membersList) ~= 'table' or table.maxn(membersList) <= 1) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	local affectedList = {}
	for _, pid in ipairs(membersList) do
		if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then
			table.insert(affectedList, pid)
		end
	end

	local tmp = table.maxn(affectedList)
	if(tmp <= 1) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	local mana = math.ceil((0.9 ^ (tmp - 1) * baseMana) * tmp)
	if(getCreatureMana(cid) < mana) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	if(not doCombat(cid, combat, var)) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	doCreatureAddMana(cid, -(mana - baseMana), false)
	doPlayerAddSpentMana(cid, (mana - baseMana))
	for _, pid in ipairs(affectedList) do
		doAddCondition(pid, condition)
	end

	return true
end
 
I did everything from @up and when my summon is about to cast that spell just a little poff apears on him and this happens in console:

Error - spell interface (oncastspell)

<luaDoSendDefaultCancel> Player not found

Halp!
 
b53a5f.jpg
 
Lua:
local combat = createCombatObject()
local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_TICKS, 2 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, 20)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 2000)

function onCastSpell(cid, var)
	local pos = getCreaturePosition(cid)

	local master = getCreatureMaster(cid)
	if not master or not isPlayer(master) then
		return false
	end

	local membersList = getPartyMembers(master)
	if not membersList or type(membersList) ~= 'table' or #membersList == 0 then
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	local affectedList = {}
	for _, pid in ipairs(membersList) do
		if getDistanceBetween(getCreaturePosition(pid), pos) <= 36 then
			table.insert(affectedList, pid)
		end
	end

	local tmp = #affectedList
	if tmp == 0 then
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	if not doCombat(cid, combat, var) then
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	for _, pid in ipairs(affectedList) do
		doAddCondition(pid, condition)
	end

	return true
end
 
Back
Top Bottom