Postado Março 22, 2023 2 anos 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 Editado Março 22, 2023 2 anos por Anderson Sacani (veja o histórico de edições)
Postado Março 22, 2023 2 anos Autor Em 22/03/2023 em 00:52, Anderson Sacani disse: 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 o primeiro script que você mandou não mudou nada, ele continua fazendo a mesma coisa, porém sem o efeito, já o segundo script que mandou ele dá o efeito porém o piso some ao invés de aparecer uma escada...
Postado Março 22, 2023 2 anos Em 19/03/2023 em 21:54, yuriowns disse: Salve rapazeada do TK, to precisano de ajuda nesse script, ele é de uma passagem secreta que quando clica em um item com o AID abre uma escada, porém eu queria que quando abrisse a escada desse o magic effect POFF e quando sumisse também, alguém consegue me ajudar? já tentei adicionar ali e não dá certo script: Mostrar conteúdo oculto Mostrar conteúdo oculto 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) elseif i > (#positions/2) and obst ~=0 then doTransformItem(obst, positions[i].toid) end end addEvent(criar_paredes, tempo*1000) return true end Mostrar conteúdo oculto local positions = { [1] = {pos = {x = 33295, y = 32779, z = 7}, id = 419, toid = 411} } local Efect = {x=33295, y=32779,z=7} -- Pos do efeito 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) doSendMagicEffect(Efect,2) -- Efeito CONST_ME_POFF 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(Efect,2) -- Efeito 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
Postado Março 22, 2023 2 anos Autor Em 22/03/2023 em 14:10, JulianoZN disse: Mostrar conteúdo oculto Mostrar conteúdo oculto local positions = { [1] = {pos = {x = 33295, y = 32779, z = 7}, id = 419, toid = 411} } local Efect = {x=33295, y=32779,z=7} -- Pos do efeito 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) doSendMagicEffect(Efect,2) -- Efeito CONST_ME_POFF 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(Efect,2) -- Efeito 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 o efeito não aparece, não sei o que há de errado com esse script
Postado Março 22, 2023 2 anos Em 22/03/2023 em 14:13, yuriowns disse: o efeito não aparece, não sei o que há de errado com esse script e via actionid isso ? qualquer coisa eu refaço aqui
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.