Ir para conteúdo

Featured Replies

Postado

-- Edit --
Editei o script aqui no tópico com a solução, para quem quiser usar :) 

-- Solucionado --
Bom guys, estou precisando de ajuda para colocar um efeito e fazer uma verificação (vou explicar melhor abaixo) no script a seguir .
Imagens para melhor entendimento no final do tópico. 

Script (Movements/Step-in)

Spoiler

local config = {

pos1 = {x=424, y=1753, z=7}, -- Posição aonde sera criado o item
pos2 = {x=407, y=1759, z=7}, -- Posição aonde sera criado o item
pos3 = {x=391, y=1751, z=7}, -- Posição aonde sera criado o item
pos4 = {x=404, y=1766, z=7}, -- Posição aonde sera criado o item

item = 3537, -- id do item
step = 25, -- efeito ao passar pelo teleport

time = 5 -- tempo que o item vai sumir em segundos
}

function DelTp()
local t1 = getTileItemById(config.pos1, config.item)
local t2 = getTileItemById(config.pos2, config.item)
local t3 = getTileItemById(config.pos3, config.item)
local t4 = getTileItemById(config.pos4, config.item)
if t1.uid ~= 0 then
doRemoveItem(t1.uid, 1)
doSendMagicEffect(config.pos1, 25)
elseif t2.uid ~= 0 then
doRemoveItem(t2.uid, 1)
doSendMagicEffect(config.pos2, 25)
elseif t3.uid ~= 0 then
doRemoveItem(t3.uid, 1)
doSendMagicEffect(config.pos3, 25)
elseif t4.uid ~= 0 then
doRemoveItem(t4.uid, 1)
doSendMagicEffect(config.pos41, 25)
end
end

function onStepIn(cid, item, position, fromPosition)
local teleport = math.random(1, 4)
local p1 = {x=424, y=1754, z=7}
local p2 = {x=407, y=1760, z=7}
local p3 = {x=391, y=1752, z=7}
local p4 = {x=404, y=1767, z=7}

if teleport == 1 then
doTeleportThing(cid, p1)
doCreateItem(config.item, 1, config.pos1)
end
if teleport == 2 then
doTeleportThing(cid, p2)
doCreateItem(config.item, 1, config.pos2)
end
if teleport == 3 then
doTeleportThing(cid, p3)
doCreateItem(config.item, 1, config.pos3)
end
if teleport == 4 then
doTeleportThing(cid, p4)
doCreateItem(config.item, 1, config.pos4)
end
addEvent(DelTp, config.time*1000)
addEvent(function()
    if isCreature(cid) then
    doSendMagicEffect(getThingPos(cid), config.step)				
    end
end, 200)
return true
end

 


Significados para melhor entendimento:
posição final = posição para onde o jogador vai ao ser teleportado.
p1 ao p4 no script = posições para onde o jogador poderá ser teleportado ao entrar no tp.

pos1 ao pos4 no script = posições onde serão criados os itens (nesse caso uma porta) 1 sqm acima da posição final.

O que esse script faz? 
1 - Ao passar por um teleport o jogador será teleportado para uma das 4 posições pré-definidas (por chance no math.random).
2 - Ao mesmo tempo que o jogar é teleportado ao passar pelo TP será criado um item (no caso dos testes, uma porta) 1 sqm a cima do jogador em uma das 4 posições finais. (de acordo com a posição que ele foi parar, ou seja, se ele foi pra posição 1 não irá criar o item nas outras
3 - 5 segundos depois de passar pelo tp, criar o item (no caso uma porta), o item será removido.

A ajuda que necessito:
Da forma que está ele funciona 100%, mas retorna erro porque o script tenta remover as "portas" (os itens) das 4 posições diferentes. 

Spoiler

erro.thumb.png.1ae1657013924115c18d38f6abdc984b.png


1 - Eu não sei como verificar se já existe o item naquela posição para depois remover, para assim, só remover se o script confirmar que existe a "porta" (o item) naquela posição.
2 - Eu queria saber também como eu coloco para quando remover as "portas" (os itens) aparecer um efeito onde eles foram removidos (no caso efeito número 35).

Vídeo do script funcionando:

Spoiler


Se alguém puder me ajudar nesses dois quesitos ficarei agradecido.
Qualquer dúvida é só dizer que eu tento explicar. (Minhas explicações sempre confundem ao invés de ajudarem rs)
Agradeço desde já.

 

Editado por Yamili (veja o histórico de edições)

Resolvido por MaTTch

Ir para solução
Postado
  • Solução

É porque a função getTileItemById não esta sendo usada corretamente nessa parte:

if t1 and t2 and t3 and t4 then

 

Você precisa verificar se existe algum item checando se id ou o unique id é diferente de 0.

Tipo assim:

if t1.uid ~= 0 then
	doRemoveItem(t1.uid, 1)
end

 

Você precisa fazer isso pra cada posição que quiser remover o item, e se quiser adicionar o efeito basta colocar junto a função doSendMagicEffect:

if t1.uid ~= 0 then
	doRemoveItem(t1.uid, 1)
	doSendMagicEffect(config.pos1, 0000)
end

 

 

Postado
  • Autor
42 minutos atrás, MaTTch disse:

É porque a função getTileItemById não esta sendo usada corretamente nessa parte:



if t1 and t2 and t3 and t4 then

 

Você precisa verificar se existe algum item checando se id ou o unique id é diferente de 0.

Tipo assim:



if t1.uid ~= 0 then
	doRemoveItem(t1.uid, 1)
end

 

Você precisa fazer isso pra cada posição que quiser remover o item, e se quiser adicionar o efeito basta colocar junto a função doSendMagicEffect:



if t1.uid ~= 0 then
	doRemoveItem(t1.uid, 1)
	doSendMagicEffect(config.pos1, 0000)
end

 

 

Fiz seguindo o que você disse e funcionou.
Mudei a parte do DelTp pra seguinte:
 

Spoiler

function DelTp()
local t1 = getTileItemById(config.pos1, config.item)
local t2 = getTileItemById(config.pos2, config.item)
local t3 = getTileItemById(config.pos3, config.item)
local t4 = getTileItemById(config.pos4, config.item)
if t1.uid ~= 0 then
doRemoveItem(t1.uid, 1)
doSendMagicEffect(config.pos1, 25)
elseif t2.uid ~= 0 then
doRemoveItem(t2.uid, 1)
doSendMagicEffect(config.pos2, 25)
elseif t3.uid ~= 0 then
doRemoveItem(t3.uid, 1)
doSendMagicEffect(config.pos3, 25)
elseif t4.uid ~= 0 then
doRemoveItem(t4.uid, 1)
doSendMagicEffect(config.pos4, 25)
end
end

 

Eu não sei muito sobre scripts, então fiz desse jeito aí.
Se tiver problema em colocar assim ou tiver alguma forma melhor de fazer isso me diga.
No mais, dúdiva solucionada ^^ rep ++ <3 


 

Editado por Yamili (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo