Eu fiz esse script para meu servidor, mas como foi especifico para mim ele não tem o algorítimo para embaralhar as almofadas.
esse código é referente somente ao jogo das cores.
PS. lembre-se de fazer as devidas alterações no script para suas exigências.
function onStepIn(cid, item, pos, fPos)
local tabela = {}
if(item.actionid == 6301)then -- tiles do oeste
-- carrega os dados do jogo
pos.x = pos.x+1
for x = 1,6 do
local piece = getThingFromPos({x=pos.x+x,y=pos.y,z=pos.z,stackpos=1})
if(piece and piece.uid > 0)then
tabela[x] = piece.itemid
doRemoveItem(piece.uid,1)
end
end
-- modifica as posições
local piece = tabela[6]
table.remove(tabela,6)
table.insert(tabela,1,piece)
-- atualiza in-game os dados
for _,piece in ipairs(tabela) do
pos.x = pos.x+1
doCreateItem(piece, 1, pos)
end
elseif(item.actionid == 6302)then -- tiles do norte
-- carrega os dados do jogo
pos.y = pos.y+1
for y = 1,6 do
local piece = getThingFromPos({x=pos.x,y=pos.y+y,z=pos.z,stackpos=1})
if(piece and piece.uid > 0)then
tabela[y] = piece.itemid
doRemoveItem(piece.uid,1)
end
end
-- modifica as posições
local piece = tabela[6]
table.remove(tabela,6)
table.insert(tabela,1,piece)
-- atualiza in-game os dados
for _,piece in ipairs(tabela) do
pos.y = pos.y+1
doCreateItem(piece, 1, pos)
end
end
return false
end
Esse código se refere ao porta, mas ele não tem o algoritmo para embaralhar as cores.
PS. não adicione ao teleporte pelo mapa editor uma posição para teleportar o player, o script faz isso. Lembre-se de fazer as devidas alterações no script para suas exigências.
local items,pass = {1686,1687,1688,1689},true
for X = 1,6 do
for Y = 1,6 do
local item = 0
if(X < 4 and Y < 4)then
item = items[1]
elseif(X < 4 and Y > 3)then
item = items[2]
elseif(X > 3 and Y < 4)then
item = items[3]
elseif(X > 3 and Y > 3)then
item = items[4]
end
local piece = getTileItemById({x=32817+X,y=32333+Y,z=9},item)
if not(piece.itemid == 0)then pass = false end
end
end
if(pass)then doTeleportThing(cid,{x=32750,y=32345,z=14}) end