O problema provavelmente é porque não está passando o local em que será reproduzido o efeito mágico.
No caso tem que ser assim: doSendMagicEffect(positions[i].pos, CONST_ME_POFF)
O parâmetro que coloquei "positions[i].pos" retorna a posição criada dentro da variável positions, e como o efeito foi colocado dentro de uma estrutura de repetição, servirá para qualquer outra posição que adicionar após o primeiro índice.
-- EditeD by: Yuri
-- Passagem Secreta BOSS: Sunfyre the Golden
local positions = {
[1] = { pos = { x = 33295, y = 32779, z = 7 }, id = 419, toid = 411 }
}
local tempo = 15
function onUse(cid, item, frompos, item2, topos)
if getTileItemById(positions[1].pos, positions[1].id).uid < 100 then
doPlayerSendTextMessage(cid, 19, "Is already open.")
return true
end
doPlayerSendTextMessage(cid, 19, "The passage will close in " .. tempo .. " seconds.")
function criar_paredes(buff)
for i = 1, #positions do
if i <= (#positions / 2) then
doCreateItem(positions[i].id, 1, positions[i].pos)
doRemoveItem(obst, 1)
elseif i > (#positions / 2) then
local obst = getTileItemById(positions[i].pos, positions[i].toid).uid
doTransformItem(obst, positions[i].id)
end
end
return true
end
for i = 1, #positions do
local obst = getTileItemById(positions[i].pos, positions[i].id).uid
if i <= (#positions / 2) and obst ~= 0 then
doRemoveItem(obst, 1)
doSendMagicEffect(positions[i].pos, CONST_ME_POFF)
elseif i > (#positions / 2) and obst ~= 0 then
doTransformItem(obst, positions[i].toid)
end
end
addEvent(criar_paredes, tempo * 1000)
return true
end
Eu alterei o script que o @Aragllov passou, por tanto, o efeito só vai aparecer quando a pedra for removida.
Eu deixei o script um pouco menor, porque vi muitas coisas desnecessárias:
local position = { x = 33295, y = 32779, z = 7 }
local ladder_id = 419
function onUse(cid, item, fromPosition, itemEx, toPosition)
local ladderItem = getTileItemById(position, ladder_id)
if ladderItem then
doRemoveItem(ladderItem.uid, 1)
doSendMagicEffect(position, CONST_ME_POFF)
else
doCreateItem(ladder_id, 1, position)
doSendMagicEffect(position, CONST_ME_MAGIC_BLUE)
addEvent(function()
local ladderItem = getTileItemById(position, ladder_id)
if ladderItem then
doRemoveItem(ladderItem.uid, 1)
doSendMagicEffect(position, CONST_ME_POFF)
end
end, 15000)
end
return true
end