Assim vai funcionar pra 2, 3, 4, 5, 800 portas, só q sugiro vc mudar o delay pra ser a quantidade de tempo q vc quer q demore dividido pelo numero de ids q vai trocar, assim independente de ser 3 ou 500 o tempo pra abrir fechar será o mesmo.
script:
-- Do not remove the credits --
-- [MOVEMENT] Porta que abre automáticamente --
-- Developed by Rigby (João Vitor) --
-- Xtibia.com --
local porta = {13680, 13679, ID DA POUCO ABERTA, 13677} -- porta fechada, porta pouco aberta, porta meio aberta, porta aberta
local pos = {x = 1056, y = 1054, z = 7} -- local onde vai fica a porta
local delay = 150 -- ela vai demorar 0.1 segundos para fica totalmente aberta ou totalmente fechada
local action = 2701 -- action que ta no .xml, se muda la vai ter que muda aqui também
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
if getTileItemById(pos, porta[1]).uid > 0 then
for i = 1, (#porta - 1) do
addEvent(function()
doTransformItem(getTileItemById(pos, porta[i]).uid, porta[i + 1])
end, i * delay)
end
end
return true
end
function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)
local tab = {}
for _, pid in ipairs(getPlayersOnline()) do
if getTileInfo(getCreaturePosition(pid)).actionid == action then
table.insert(tab, pid)
end
end
if #tab == 0 then
if getTileItemById(pos, porta[#porta]).uid > 0 then
for i = 1, (#porta - 1) do
addEvent(function()
doTransformItem(getTileItemById(pos, porta[(#porta - i) + 1]).uid, porta[(#porta - i)])
end, i * delay)
end
end
end
return true
end
dava pra fazer mais simples mas não quis mudar os fors pra vc não perder a lógica e aquele action ali era desnecessário já que vc podia usar item.actionid pra pegar o actionid do movements.xml








info
Grupo: Conde
Registrado: 12/04/15
Posts: 655
Reputação: +65
Gênero: Masculino
Char no Tibia: Developer Berg
Olá gente, queria a ajuda de vcs para alterar uma script, a script é uma de porta automática.
ela é dividida em 3 partes de transformações de id com os respectivos ids., " fechada, metade aberta, toda aberta "
queria alterar para 4 partes " fechada, metade aberta, um pouquinho aberta, toda aberta "
parte que estou falando
local porta = {13680, 13679, 13677} -- porta fechada, porta meio aberta, porta abertascript da porta.
-- Do not remove the credits -- -- [MOVEMENT] Porta que abre automáticamente -- -- Developed by Rigby (João Vitor) -- -- Xtibia.com -- local porta = {13680, 13679, 13677} -- porta fechada, porta meio aberta, porta aberta local pos = {x = 1056, y = 1054, z = 7} -- local onde vai fica a porta local delay = 150 -- ela vai demorar 0.1 segundos para fica totalmente aberta ou totalmente fechada local action = 2701 -- action que ta no .xml, se muda la vai ter que muda aqui também function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if getTileItemById(pos, porta[1]).uid > 0 then for i = 1, 2 do addEvent(function() doTransformItem(getTileItemById(pos, i == 1 and porta[1] or porta[2]).uid, porta[i + 1]) end, i * delay) end end return true end function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) local tab = {} for _, pid in ipairs(getPlayersOnline()) do if getTileInfo(getCreaturePosition(pid)).actionid == action then table.insert(tab, pid) end end if #tab == 0 then if getTileItemById(pos, porta[3]).uid > 0 then for i = 1, 2 do addEvent(function() doTransformItem(getTileItemById(pos, i == 1 and porta[3] or porta[2]).uid, porta[i == 1 and 2 or 1]) end, i * delay) end end end return true end