Ir para conteúdo

[Movements] Quebra-Cabeça


lucasatak

Posts Recomendados

Retirado do Otfans !

 

O script funciona assim:

Walk on telhas para empurrar as almofadas.

Cria um teleport quando o quebra-cabeça é finalizado.

Puzzle irá redefinir quando você entra em um teleport, eo teletransporte será removido.

 

Como lidar com as configurações / config:

 

 

local verticalTiles = 5400

 

Este é o actionID de todas as telhas na vertical (Quando tiver maped a área que você vai entender),não se esqueça de adicionar este actionID para as telhas o script não trabalho (corretamente).

 

local horizontalTiles = 5401

 

Este é o actionID de todas as peças horizontais (Quando tiver maped a área que você vai entender), não se esqueça de adicionar este actionID para as telhas! Sem o actionids sobre as telhas correto, o script não trabalho (corretamente).

 

local ground = {normal = 426, used = 425}

 

"normal" é o itemid do azulejo chão quando não é utilizado, o que significa que quando você não ficar nele.O outro, "usado", é o itemid da terra quando você usá-lo, o que significa que quando você está de pé sobre ele. Estes são os azulejos que tem o actionID mencionado em "verticalTiles" e "horizontalTiles"!

 

local teleport = {itemid = 1387, actionid = 5408}

 

"ItemID" é o itemid e "actionID" é o actionID do teletransporte que aparece quando você tem finalizado o quebra-cabeça.

 

teleportPosition local = (x = 584, y = 371, z = 7)

 

Esta é a posição onde o teletransporte será gerado.

 

 

local newPosition = { x = 595 , y = 381 , z = 7 }

 

Esta é a posição que o teleport vai enviar você (aquele que gera.

 

 

local position = { x = 587 , y = 374 , z = 7 }

 

 

Esta deve ser a noroeste (superior esquerdo) a posição da zona de quebra-cabeças. Dê uma olhada na imagem, se você não entender isso.

 

local magicEffect = 12

 

Este não é tão importante, que irá emitir apenas um efeito sobre o jogador quando ele / ela finalizar, o quebra-cabeça. Para excluí-lo, por favor escreva MagicEffect "local = nil" em vez disso, porque você pode mudar sua mente um dia.

 

 

Por favor, salve essa imagem, você pode se esquecer de como usar esse script mais tarde!

 

pillowpuzzleal9.png

 

Observe o retângulo azul brilhante.Essa posição é a posição que você está indo para escrever na posição de "variável",digamos que por exemplo no seu mapa que a posição é: x = 200 e y = 350 e Z = 7, então ficaria assim no script:

 

 

local position = { x = 200 , y = 350 , z = 7 }

 

Agora, para o script.

 

data/movements/scripts dados / movimentos / scripts

- Puzzle.lua

 

-- >>CREDITS<< ---- Script 100% by COLANDUS-- Functions 100% by COLANDUS-- OPENLUA.COM ---- >>CREDITS<< ---- >>INFO<< ---- Don't forget: Place 9 pillows of each color in different order in the mapeditor!-- Do you use a lever to teleport you to this room? Then you could make it randomize the puzzle when you press it!-- If you do that, you could remove the randomize part, so it doesn't randomize in this script, make it randomize only when you pull the lever.-- Your own choise, just giving you ideas!-- Pilow order to complete:-- BLUE, GREEN-- RED, YELLOW-- >>INFO<< ---- >>CONFIG<< --local verticalTiles = 5400 -- Action id of the vertical tiles.local horizontalTiles = 5401 -- Action id of the horizontal tiles.local ground = {normal = 426, used = 425} -- Itemid of the ground tile when it is normal or used (when you stand on it)local teleport = {itemid = 1387, actionid = 5408} -- Enter the itemid and the actionid of the teleport.local teleportPosition = {x = 584, y = 371, z = 7} -- Where should the teleport be spawned when you finnish the puzzle?local newPosition = {x = 595, y = 381, z = 7} -- Where should you get teleported when you enter the teleport?local position = {x = 587, y = 374, z = 7} -- Position of the north west (top left) side of the puzzle area.local magicEffect = 12 -- What effect will appear when you finnish the puzzle? Leave blank or write "nil" if you don't want any.-- >>CONFIG<< --function onStepIn(cid, item, pos) teleportPosition.stackpos = 1 local getTeleport = getThingfromPos(teleportPosition) if getTeleport.itemid == teleport.itemid and getTeleport.actionid == teleport.actionid then doRemoveItem(getTeleport.uid, 1) end local getPillow = {} if item.actionid == verticalTiles then for i = 0, 5 do getPillow[i + 1] = getThingfromPos({x = position.x + i, y = getPlayerPosition(cid).y, z = position.z, stackpos = 1}) end elseif item.actionid == horizontalTiles then for i = 0, 5 do getPillow[i + 1] = getThingfromPos({x = getPlayerPosition(cid).x, y = position.y + i, z = position.z, stackpos = 1}) end end doTransformItem(getPillow[1].uid, getPillow[6].itemid) for i = 1, 5 do doTransformItem(getPillow[i + 1].uid, getPillow.itemid) end if checkPillows(position.x, position.y, 1686) == 1 and checkPillows(position.x + 3, position.y, 1688) == 1 and checkPillows(position.x, position.y + 3, 1687) == 1 and checkPillows(position.x + 3, position.y + 3, 1689) == 1 then local newTeleport = doCreateTeleport(teleport.itemid, newPosition, teleportPosition) doSetItemActionId(newTeleport, teleport.actionid) if magicEffect ~= nil then doSendMagicEffect(pos, magicEffect) end end doTransformItem(item.uid, ground.used) return 1endfunction onStepOut(cid, item, pos) pos.stackpos = 1 local getPos = getThingfromPos(pos) teleportPosition.stackpos = 1 local getTeleport = getThingfromPos(teleportPosition) if comparePos(pos, teleportPosition) and getPos.itemid == getTeleport.itemid and getPos.actionid == getTeleport.actionid then teleportPosition.stackpos = 1 doRemoveItem(getTeleport.uid, 1) resetPuzzle() return 1 else doTransformItem(item.uid, ground.normal) return 1 endendfunction checkPillows(posx, posy, item) local returnValue = 1 for gx = posx, posx + 2 do for gy = posy, posy + 2 do if getThingfromPos({x = gx, y = gy, z = position.z, stackpos = 1}).itemid ~= item then returnValue = 0 break end end end return returnValueendfunction resetPuzzle() local availablePillows = {} for i = 0, 3 do local pillowId = 1686 + i for i = 1, 9 do table.insert(availablePillows, pillowId) end end availablePillows = shuffleTable(availablePillows) for gx = position.x, position.x + 5 do for gy = position.y, position.y + 5 do local pillow = math.random(1, #availablePillows) getItem = getThingfromPos({x = gx, y = gy, z = position.z, stackpos = 1}) doTransformItem(getItem.uid, availablePillows[pillow]) table.remove(availablePillows, pillow) end endend function shuffleTable(t) local newTable = {} for i = 1, #t do randomId = math.random(1, #t) table.insert(newTable, t[randomId]) table.remove(t, randomId) end return newTableend

 

dados / movimentos

- movements.xml - Movements.xml

 

evento <movevent = "StepIn" actionID = "5400" script "pillow = puzzle.lua" />
evento <movevent = "StepOut" actionID = "5400" script "pillow = puzzle.lua" />
evento <movevent = "StepIn" actionID = "5401" script "pillow = puzzle.lua" />
evento <movevent = "StepOut" actionID = "5401" script "pillow = puzzle.lua" />
evento <movevent = "StepOut" actionID = "5408" script "pillow = puzzle.lua" />

 

Tudo que você tem que fazer no MapEditor é tornar a área travesseiro, colocando os travesseiros em uma ordem aleatória (não como uma concluída), estabelecendo um actionID (que você escolher, escrever no "config" que aquela que você escolheu), para cada tile vertical, e outra para as telhas actionID horizontal, e claro que você deve mudar isso no config "" também. "Você pode usar o actionids que já estão escritas no "config" já que é "5400" para as peças verticais e "5401" para as peças horizontais.

 

Além disso, verifique a sua global.lua na pasta de dados, se esta função é encontrado:

 

function comparePos(pos1, pos2)    return (pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z)end

 

Se ele não for encontrado, basta adicioná-lo =)

 

CREDITOS PARA Colandus(OTFANS)

 

TA MAU TRADUZIDO,MAIS É ISSO AI,

 

ABÇS !

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

Parece ser uma ótima script porém está em inglês e mal traduzido mesmo, podia

da uma traduzida melhor ai, esses textos da imagem por exemplo, muito boa a script.

 

 

Abraços

Link para o comentário
Compartilhar em outros sites

Legal, ja tinha visto isto na OTfans msm...

Mas cara, que relaxo hein...

só abriu o google pois la e traduziu...

 

Traduçao ta pessima... 'pise nas telhas' telhas ? não seria SQMs ??

Traduz melhor isso aí, tem partes que nem da pra intender...

 

Fora isso, o script é bom sim, eu ja tenho no meu ATS x]

Link para o comentário
Compartilhar em outros sites

legal

eu ja tinha feito esse a um ano

Porém como não terminei a dream challenge inteira nunca postei...

Só seria bom você reorganizar o topico

 

Principalmente o script

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
×
×
  • Criar Novo...