Portal Depois Da Luta...

Fillzy
Por Fillzy
em Scripts

Fillzy

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/11/08Posts: 8

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?

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

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

 

Fillzy

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/11/08Posts: 8

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...

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

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")

JuAnXtIbIa

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/09/12Posts: 32Char no Tibia: [ADM] JuAn

soque isso e um pedido nao duvida.

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

soque isso e um pedido nao duvida.

 

se não for ajuda não comenta nada, rep- pela infração, criança.

bossisg.png

JuAnXtIbIa

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/09/12Posts: 32Char no Tibia: [ADM] JuAn

não me chama de criança seu bosta

Fillzy

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/11/08Posts: 8

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..

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

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.

Fillzy

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/11/08Posts: 8

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 [

1579091

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 06/11/11Posts: 1088Char no Tibia: Stroked

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

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

 

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.

Fillzy

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/11/08Posts: 8

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.