Ir para conteúdo
  • 0

[Pedido] Modificação Undead Legion


Vorkhon

Pergunta

Eu quero modificar o script do Undead Legion para pegar somente no square da frente e de um corpo de monstro específico.

 

function onTargetTile(cid, pos)
	local getPos = pos
	getPos.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

	local corpse = getThingFromPos(getPos)
	if(corpse.uid > 0 and isCorpse(corpse.uid) and isMoveable(corpse.uid) and getCreatureSkullType(cid) ~= SKULL_BLACK) then
		doRemoveItem(corpse.uid)
		doConvinceCreature(cid, doCreateMonster("Skeleton", pos))

		doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
		return true
	end

	return false
end

local area, combat = createCombatArea(AREA_CIRCLE3X3), createCombatObject()
setCombatArea(combat, area)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

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

 

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
function onTargetTile(cid, pos)
	local getPos = pos
	getPos.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

	local corpse,corpoid = getThingFromPos(getPos),0000 -- id do corpo
	if(corpse.uid > 0 and corpse.itemid == corpoid  and getCreatureSkullType(cid) ~= SKULL_BLACK) then
		doRemoveItem(corpse.uid)
		doConvinceCreature(cid, doCreateMonster("Skeleton", pos))

		doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
		return true
	end

	return false
end

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

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

 

Link para o comentário
Compartilhar em outros sites

  • 0
9 horas atrás, Poccnn disse:

 

Consegui aqui irmão! Muito obrigado!

Poccn, eu to tentando adicionar um efeito queria saber se voce consegue me ajudar. E outra tem como fazer a spell funcionar só se tem um corpo na frente e respeitar o limite de summon? Eu nao queria que pudessem ficar usando ela a toa só se tiver corpo. 

 

O que estou tentando fazer é o seguinte. Vai vir esses efeitos no sqm na frente do personagem, e depois que acabar o efeito ai faz a função da spell de criar um monstro. O script ta assim:

 

function onTargetTile(cid, pos)
	local getPos = pos
	getPos.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

	local corpse,corpoid = getThingFromPos(getPos),3104 -- id do corpo
	if(corpse.uid > 0 and corpse.itemid == corpoid  and getCreatureSkullType(cid) ~= SKULL_BLACK) then
		doRemoveItem(corpse.uid)
		doConvinceCreature(cid, doCreateMonster("Undead Dragon", pos))

		doSendMagicEffect(pos, CONST_ME_MORTAREA)
		return true
	end

	return false
end

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

function onCastSpell(cid, var)
local teibou = {[1] = 31, [2] = 10}

for i = 1, 40 do

  addEvent(doSendDistanceShoot, i*15, {x = getCreaturePosition(cid).x + math.random(-5, 5), y = getCreaturePosition(cid).y + math.random(-4, 4), z = getCreaturePosition(cid).z}, getCreaturePosition(cid), teibou[math.random(1,2)])

end
	return doCombat(cid, combat, var)
end

 

Editado por Vorkhon
Link para o comentário
Compartilhar em outros sites

  • 0
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)

function onCastSpell(cid, var)	
	local getPos = getPlayerLookDir(cid) -- pega a posição onde o player está focado.
	getPos.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
	local corpse = getTileItemById(getPos,3104) -- id do corpo
	
	if(corpse and corpse.uid > 0 and getCreatureSkullType(cid) ~= SKULL_BLACK) then
	local teibou = {[1] = 31, [2] = 10}
		doRemoveItem(corpse.uid)
		doConvinceCreature(cid, doCreateMonster("Undead Dragon", getPos))
		-- não fiz mudança nessa parte devido a não saber se está ou não correto.
		for i = 1, 40 do
			addEvent(doSendDistanceShoot, i*15, {x = getCreaturePosition(cid).x + math.random(-5, 5), y = getCreaturePosition(cid).y + math.random(-4, 4), z = getCreaturePosition(cid).z}, getCreaturePosition(cid), teibou[math.random(1,2)])
		end
	else
		return false
	end
	return doCombat(cid, combat, var)
end

acho que seja isso. 

Link para o comentário
Compartilhar em outros sites

  • 0
16 horas atrás, Poccnn disse:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)

function onCastSpell(cid, var)	
	local getPos = getPlayerLookDir(cid) -- pega a posição onde o player está focado.
	getPos.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
	local corpse = getTileItemById(getPos,3104) -- id do corpo
	
	if(corpse and corpse.uid > 0 and getCreatureSkullType(cid) ~= SKULL_BLACK) then
	local teibou = {[1] = 31, [2] = 10}
		doRemoveItem(corpse.uid)
		doConvinceCreature(cid, doCreateMonster("Undead Dragon", getPos))
		-- não fiz mudança nessa parte devido a não saber se está ou não correto.
		for i = 1, 40 do
			addEvent(doSendDistanceShoot, i*15, {x = getCreaturePosition(cid).x + math.random(-5, 5), y = getCreaturePosition(cid).y + math.random(-4, 4), z = getCreaturePosition(cid).z}, getCreaturePosition(cid), teibou[math.random(1,2)])
		end
	else
		return false
	end
	return doCombat(cid, combat, var)
end

acho que seja isso. 

Deu esse erro:

 

[7/9/2020 17:7:43] [Error - Spell Interface] 
[7/9/2020 17:7:43] data/spells/scripts/necromancy.lua:onCastSpell
[7/9/2020 17:7:43] Description: 
[7/9/2020 17:7:43] data/spells/scripts/necromancy.lua:6: attempt to index local 'getPos' (a number value)

Link para o comentário
Compartilhar em outros sites

  • 0
7 horas atrás, Vorkhon disse:

Deu esse erro:

 

[7/9/2020 17:7:43] [Error - Spell Interface] 
[7/9/2020 17:7:43] data/spells/scripts/necromancy.lua:onCastSpell
[7/9/2020 17:7:43] Description: 
[7/9/2020 17:7:43] data/spells/scripts/necromancy.lua:6: attempt to index local 'getPos' (a number value)

substitua essa parte:

7 horas atrás, Vorkhon disse:

getPlayerLookDir(cid)

por esta:

getPlayerLookPos(cid)

 

Link para o comentário
Compartilhar em outros sites

  • 0

Excelente! Funcionando perfeito agora. Mudei o codigo do efeito também por essa troca que voce sugeriu e ta 100%. Como que da REP para vc?

Editado por Vorkhon
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...