Ir para conteúdo
  • 0

Portal Depois Da Luta...


Fillzy

Pergunta

Gostaria de saber como fazer um teleport (portal) aparecer quando um player matasse um monstro em um quarto fechado, ou remover uma parece para q ele possa sair da sala tbm.

Alguem tem como me ajudar nisso?

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Tenho esse script aqui:

 

creaturescripts.xml:

 

<event type="death" name="MonsterTeleport" script="monsterteleport.lua"/>

 

monsterteleport.lua:

 

local tpId = 1387

local tps = {

["Monster"] = {pos = {x=16260, y=256, z=7}, toPos = {x = 16396, y = 223, z = 7}, time = 30},

}

 

function removeTp(tp)

local t = getTileItemById(tp.pos, tpId)

if t then

doRemoveItem(t.uid, 1)

doSendMagicEffect(tp.pos, CONST_ME_POFF)

end

end

 

function onDeath(cid)

local tp = tps[getCreatureName(cid)]

if tp then

doCreateTeleport(tpId, tp.toPos, tp.pos)

doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)

addEvent(removeTp, tp.time*1000, tp)

end

return TRUE

end

 

 

No monstro, adicione isso antes de </monster>:

 

<script>
<event name="MonsterTeleport"/>
</script>

 

Configs:

 

Vermelho: Nome do Monstro

Verde: Posição onde o teleport aparecerá

Amarelo: Posição de onde o teleport levará o player

Azul: Tempo até o teleport sumir

 

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

  • 0

Eu testei aqui cara, não deu certo não, eu mato o monster e não acontece nada...

brigado pela ajuda, mas tem alguma solução pra isso? tentei outros scripts tbm mas nada ta fucionando...

Link para o comentário
Compartilhar em outros sites

  • 0

Não parei pra analisar o script do @LuckOake, mais usei como base.

Créditos pra ele então.

 

Vai em data/creaturescripts/scripts duplica um arquivo e nomeia para "tpKill" sem as aspas e nele cole:

local tpId = 1387
local tps = {
   ["Demon"] = {pos = {x=16260, y=256, z=7}, toPos = {x = 16396, y = 223, z = 7}, time = 30}
}

function onKill(cid, target, lastHit)
local monster = getCreatureName(target)
if tps[monster] then
   doCreateTeleport(tpId, tps[monster].toPos, tps[monster].pos)
   doCreatureSay(cid, "O teleport irá sumir em ".. tps[monster].time .." segundos.", TALKTYPE_ORANGE_1)
   addEvent(removeTp, tps[monster].time*1000, tps[monster].pos)
end
return true
end

function removeTp(pos)
local position = {x=pos.x,y=pos.y,z=pos.z,stackpos=0}
for i=1, 255 do
   position.stackpos = i
   local tile = getTileThingByPos(pos)
   if tile.itemid == tpId then
       doRemoveItem(tile.uid)
   end
end
return true
end

 

Agora em creaturescripts.xml cole a tag:

<event type="kill" name="TpKill" event="script" value="tpKill.lua"/>

 

E no arquivo creaturescripts/scripts/login.lua antes do último return true cole a tag:

registerCreatureEvent(cid, "TpKill")

Link para o comentário
Compartilhar em outros sites

  • 0

Não parei pra analisar o script do @LuckOake, mais usei como base.

Créditos pra ele então.

 

Vai em data/creaturescripts/scripts duplica um arquivo e nomeia para "tpKill" sem as aspas e nele cole:

local tpId = 1387
local tps = {
["Demon"] = {pos = {x=16260, y=256, z=7}, toPos = {x = 16396, y = 223, z = 7}, time = 30}
}

function onKill(cid, target, lastHit)
local monster = getCreatureName(target)
if tps[monster] then
doCreateTeleport(tpId, tps[monster].toPos, tps[monster].pos)
doCreatureSay(cid, "O teleport irá sumir em ".. tps[monster].time .." segundos.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tps[monster].time*1000, tps[monster].pos)
end
return true
end

function removeTp(pos)
local position = {x=pos.x,y=pos.y,z=pos.z,stackpos=0}
for i=1, 255 do
position.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid == tpId then
	doRemoveItem(tile.uid)
end
end
return true
end

 

Agora em creaturescripts.xml cole a tag:

<event type="kill" name="TpKill" event="script" value="tpKill.lua"/>

 

E no arquivo creaturescripts/scripts/login.lua antes do último return true cole a tag:

registerCreatureEvent(cid, "TpKill")

 

 

Po cara, brigadão, finalmente fucionou...queria te da um +rep, mas não sei como, to procurando aki kkkkkk

Valeu ae cara :)

 

hum, tentei multiplicar esse script (pra criar o mesmo tipo de ação, mas em outro lugar)..porém não deu certo..

Link para o comentário
Compartilhar em outros sites

  • 0

Não precisa multiplicar o script, basta adicionar novas pos no msm script desse modo:

 

local tps = {
   ["Demon"] = {pos = {x=16260, y=256, z=7}, toPos = {x = 16396, y = 223, z = 7}, time = 30},
   ["Dragon"] = {pos = {x=16260, y=256, z=7}, toPos = {x = 16396, y = 223, z = 7}, time = 30},
   ["Rat"] = {pos = {x=16260, y=256, z=7}, toPos = {x = 16396, y = 223, z = 7}, time = 30}
}

 

Como no exemplo, se adiciona virgulas no final de cada tag para poder colocar outra em baixo.

 

E o rep é só clicar na "setinha verde" abaixo de um post de alguém que você queira reputar.

Link para o comentário
Compartilhar em outros sites

  • 0

local tpId = 1387
local tps = {
["Demon"] = {pos = {x=880, y=1313, z=7}, toPos = {x = 872, y = 1316, z = 7}, time = 60}
["Cyclops"] = {pos = {x=695, y=1209, z=7}, toPos = {x = 673, y = 1219 , z = 7}, time = 60}
}
function onKill(cid, target, lastHit)
local monster = getCreatureName(target)
if tps[monster] then
   doCreateTeleport(tpId, tps[monster].toPos, tps[monster].pos)
   doCreatureSay(cid, "Good job, leave this area in ".. tps[monster].time .." seconds.", TALKTYPE_ORANGE_1)
   addEvent(removeTp, tps[monster].time*1000, tps[monster].pos)
end
return true
end
function removeTp(pos)
local position = {x=pos.x,y=pos.y,z=pos.z,stackpos=0}
for i=1, 255 do
   position.stackpos = i
   local tile = getTileThingByPos(pos)
   if tile.itemid == tpId then
    doRemoveItem(tile.uid)
   end
end
return true
end

 

 

Fiz assim, mas esse erro ta aparecendo:

 

cannot open ...Tpkill...

} expected <to close { at line 2) near [

 

achei muito estranho pq na segunda linha não tem nenhum [

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, começa a usar a barrinha search.... Tem uma ótima funçao hehe...

Aki o do Vodkart:

Aí ele manda os scripts de matar monstros abrir tp / Remover parede / ganhar storage..

 

http://www.xtibia.com/forum/topic/134875-matar-monstro-abrir-tp-remover-parede-ganhar-storage/page__st__20

Link para o comentário
Compartilhar em outros sites

  • 0

 

local tpId = 1387

local tps = {

["Demon"] = {pos = {x=880, y=1313, z=7}, toPos = {x = 872, y = 1316, z = 7}, time = 60},

["Cyclops"] = {pos = {x=695, y=1209, z=7}, toPos = {x = 673, y = 1219 , z = 7}, time = 60}

}

function onKill(cid, target, lastHit)

local monster = getCreatureName(target)

if tps[monster] then

doCreateTeleport(tpId, tps[monster].toPos, tps[monster].pos)

doCreatureSay(cid, "Good job, leave this area in ".. tps[monster].time .." seconds.", TALKTYPE_ORANGE_1)

addEvent(removeTp, tps[monster].time*1000, tps[monster].pos)

end

return true

end

function removeTp(pos)

local position = {x=pos.x,y=pos.y,z=pos.z,stackpos=0}

for i=1, 255 do

position.stackpos = i

local tile = getTileThingByPos(pos)

if tile.itemid == tpId then

doRemoveItem(tile.uid)

end

end

return true

end

 

 

Faltou uma vírgula.

 

Toda vez que você adicionar um novo monstro na tabela, coloque uma vírgula no final.

Link para o comentário
Compartilhar em outros sites

  • 0

muito estranho, agora não ta dando nenhum erro, mas só ta fucionando com o demon, o cyclops morre e não acontece nada, ja vi as coordenadas e estavam corretas, vi os scripts tbm, parecem estar corretos... alguem sabe o porque disso?

 

Consegui resolver um problema... era bobo (como eu imaginava)...Faltava uma letra maiuscula no nome do monster na data..

Brigadão ai a todos que me ajudaram.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...