Ir para conteúdo
  • Cadastre-se

[SPELL] Magia De Trap em Area


Posts Recomendados

Eu queria uma magia q trapasse em área exatamente igual a essa imagem:

FjEAE3b.png

 

 

 

Bom e que em area pz, paredes etc ela não atravessasse.

MgzaTMt.png

 

 

Aqui vai uma base de uma magia de trap no target que eu quero q seja exatamente igual o script só que em a trap em área exatamente como mostra a imagem.

 

 

No script tem 30% de chance de dar Fail e se der fail abaixa o cooldown da spell para 10 se a magia funcionar perfeitamente o cooldown é 20 segundos, e após 5 segundos todas as barreiras que foram criadas desaparecerão , então é isso ai vai o script base da trap em target.

 

local remove_time = 5 -- tempo em segundos para remover as magic wall
local item_id = 1480 -- id da magic wall

function onCastSpell(cid, var)

if math.random(0, 100) <= 30 then
if (getPlayerStorageValue(cid, 2343) - os.time()) < 0 then 
setPlayerStorageValue(cid, 2343, (os.time() + 10))
addEvent(doSendAnimatedText, 1, getCreaturePosition(cid), "FAIL", 180) 
end
doPlayerSendCancel(cid, "You are exhausted in Doton Doryu Heki for: "..(getPlayerStorageValue(cid, 2343) - os.time() ).." seconds.")
return false
end


if (getPlayerStorageValue(cid, 2343) - os.time()) > 0 then 
doPlayerSendCancel(cid, "You are exhausted in Doton Doryu Heki for: "..(getPlayerStorageValue(cid, 2343) - os.time() ).." seconds.")
return false
end
 

setPlayerStorageValue(cid, 2343, (os.time() + 20))

local pos = getThingPosition(getCreatureTarget(cid))
posTile1 = {x=pos.x+1,y=pos.y+1,z=pos.z,stackpos=1}
posTile2 = {x=pos.x+1,y=pos.y,z=pos.z,stackpos=1}
posTile3 = {x=pos.x+1,y=pos.y-1,z=pos.z,stackpos=1}
posTile4 = {x=pos.x,y=pos.y-1,z=pos.z,stackpos=1}
posTile5 = {x=pos.x-1,y=pos.y-1,z=pos.z,stackpos=1}
posTile6 = {x=pos.x-1,y=pos.y,z=pos.z,stackpos=1}
posTile7 = {x=pos.x-1,y=pos.y+1,z=pos.z,stackpos=1}
posTile8 = {x=pos.x,y=pos.y+1,z=pos.z,stackpos=1}
posAll = {posTile1,posTile2,posTile3,posTile4,posTile5,posTile6,posTile7,posTile8}
addEvent(doSendMagicEffect, 100, {x = pos.x+1, y = pos.y+1, z = pos.z}, 111)
addEvent(doSendMagicEffect, 100, {x = pos.x+1, y = pos.y, z = pos.z}, 111)
addEvent(doSendMagicEffect, 100, {x = pos.x+1, y = pos.y-1, z = pos.z}, 111)
addEvent(doSendMagicEffect, 100, {x = pos.x, y = pos.y-1, z = pos.z}, 111)
addEvent(doSendMagicEffect, 100, {x = pos.x-1, y = pos.y-1, z = pos.z}, 111)
addEvent(doSendMagicEffect, 100, {x = pos.x-1, y = pos.y, z = pos.z}, 111)
addEvent(doSendMagicEffect, 100, {x = pos.x-1, y = pos.y+1, z = pos.z}, 111)
addEvent(doSendMagicEffect, 100, {x = pos.x, y = pos.y+1, z = pos.z}, 111)

for i=1, #posAll do
	if isWalkable(posAll[i]) then
		doCreateItem(item_id, 1, posAll[i])
	end
end 
addEvent(removeItem, remove_time*1000, posAll)

return true
end

function isWalkable(pos, creature, pz, proj)
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
	local creature = getTopCreature(pos)
    if creature.type > 0 then	return false end
	if getTilePzInfo(pos) and not pz then return false end
	local n = not proj and 3 or 2
	for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
	end
return true
end

function removeItem(posAll)
	for i=1, #posAll do
		for j=0, 255 do
			pos_stack = {x=posAll[i].x,y=posAll[i].y,z=posAll[i].z,stackpos=j}
			removeTile = getThingfromPos(pos_stack)
			if removeTile.itemid == item_id then
				doRemoveItem(removeTile.uid)
			end
		end
	end
end

 

 

 

Sera que alguém pode me ajudar ? obrigado e abraços.

Link para o post
Compartilhar em outros sites

Funcionou perfeitamente tem como pra adicionar um dosendmagiceffect nos mesmos sqms das walls?

 

e quando a magia estiver em cooldown não ficar spamando o feitiço.

Link para o post
Compartilhar em outros sites

Spamando que eu digo é a magia aparecer mesmo se estiver em cooldown:

 

ameyoxf.png

 

Só quero q apareça o nome da spell após ela ter funcionado.

 

 

O SendMagicEffect funfou certinho.

Editado por leonardobo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 3 years later...

Tenho duas duvidas com relação a essa magia, a primeira é:
Como eu faço pra ela aparecer embaixo do player, prendendo ele? Porque quando uso e a parede está no msm sqm de outro creature ou player, ela não aparece naquele sqm,

a segunda e, como troco a sprite da parede? No id não tá indo, coloquei o da magic wall e continua a mesma parede da imagem

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo