anotapreta
New Member
- Joined
- Mar 12, 2010
- Messages
- 104
- Reaction score
- 0
Maximum time to complete the game.
Maximum time to complete the game.
ORIGINAL
MY FAIL
Configurable time, if time end you lose too.
Maximum time to complete the game.
ORIGINAL
Lua:
CurrentSteps = {}
CurrentSequence = {}
PuzzleGeniusConfig = {
centerPlayerPos = {x=988,y=985,z=7},
effectsid = {
[9562] = {1, 0},
[9563] = {0, 1},
[9564] = {-1, 0},
[9565] = {0, -1}
},
appearInterval = 1,
disapear = 0.6,
backPos = {x=987,y=982,z=7},
rewardPos = {x=995,y=988,z=6},
roundTimes = 100,
}
CurrentSequence = {}
PuzzleGenius = {}
function randomIndexFromTable(tab)
local tb = {}
for i,x in pairs(tab) do
table.insert(tb, i)
end
return tb[math.random(1, #tb)]
end
function tileEffect(tileid, pos, int)
local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=0})
doItemSetAttribute(tile.uid, "aid", 6661)
local a = doCreateItem(tileid, pos)
addEvent(function() local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tile, 1) end, int*1000)
end
function PuzzleGenius:ExecuteSequence(cid)
if #CurrentSequence >= PuzzleGeniusConfig.roundTimes then
doTeleportThing(cid, PuzzleGeniusConfig.rewardPos)
doPlayerSetNoMove(cid, false)
CurrentSteps = {}
CurrentSequence = {}
return true
end
table.insert(CurrentSequence, randomIndexFromTable(PuzzleGeniusConfig.effectsid))
for i,x in ipairs(CurrentSequence) do
addEvent(tileEffect, PuzzleGeniusConfig.appearInterval*i*1000, x, {x=PuzzleGeniusConfig.centerPlayerPos.x+PuzzleGeniusConfig.effectsid[x][1], y=PuzzleGeniusConfig.centerPlayerPos.y+PuzzleGeniusConfig.effectsid[x][2], z=PuzzleGeniusConfig.centerPlayerPos.z},PuzzleGeniusConfig.disapear)
end
addEvent(doPlayerSetNoMove, (PuzzleGeniusConfig.appearInterval*#CurrentSequence+PuzzleGeniusConfig.disapear)*1000, cid, false)
end
function PuzzleGenius:Check(cid, currentSteps)
if currentSteps[#currentSteps] == CurrentSequence[#currentSteps] then
return true
end
return false
end
function onStepIn(cid, item, pos, fromPos)
if pos.x == PuzzleGeniusConfig.centerPlayerPos.x and pos.y == PuzzleGeniusConfig.centerPlayerPos.y then
if #CurrentSequence < 1 then
doPlayerSetNoMove(cid, true)
return PuzzleGenius:ExecuteSequence(cid)
else
return false
end
end
local coordinates = {pos.x-fromPos.x, pos.y-fromPos.y}
for i,x in pairs(PuzzleGeniusConfig.effectsid) do
if x[1] == coordinates[1] and x[2] == coordinates[2] then
table.insert(CurrentSteps, i)
if PuzzleGenius:Check(cid, CurrentSteps) then
doCreateItem(i, {x=PuzzleGeniusConfig.centerPlayerPos.x+coordinates[1], y=PuzzleGeniusConfig.centerPlayerPos.y+coordinates[2], z=PuzzleGeniusConfig.centerPlayerPos.z})
end
end
end
if PuzzleGenius:Check(cid, CurrentSteps) then
doTeleportThing(cid, fromPos, true)
if #CurrentSteps == #CurrentSequence then
doPlayerSetNoMove(cid, true)
CurrentSteps = {}
addEvent(function() PuzzleGenius:ExecuteSequence(cid) end, 500)
end
else
doTeleportThing(cid, PuzzleGeniusConfig.backPos)
CurrentSteps = {}
CurrentSequence = {}
end
return TRUE
end
function onStepOut(cid, item, pos, fromPos)
local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1})
for i,x in pairs(PuzzleGeniusConfig.effectsid) do
if i == tile.itemid then
addEvent(function() local tilee = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tilee, 1) end, 100)
break
end
end
return TRUE
end
MY FAIL
Lua:
CurrentSteps = {}
CurrentSequence = {}
Config = {
centerPlayerPos = {x=10096,y=10121,z=7},
effectsid = {
[9562] = {1, 0},
[9563] = {0, 1},
[9564] = {-1, 0},
[9565] = {0, -1}
},
appearInterval = 1,
disapear = 0.6,
losetime = 2,
rewardPos = {x=10098,y=10119,z=7},
backPos = {x=10094,y=10119,z=7},
roundTimes = 8,
}
CurrentSequence = {}
PuzzleGenius = {}
function randomIndexFromTable(tab)
local tb = {}
for i,x in pairs(tab) do
table.insert(tb, i)
end
return tb[math.random(1, #tb)]
end
function tileEffect(tileid, pos, int)
local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=0})
doItemSetAttribute(tile.uid, "aid", 6661)
local a = doCreateItem(tileid, pos)
addEvent(function() local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tile, 1) end, int*1000)
end
function deleteTp(cid, item, pos, fromPos)
doTeleportThing(cid, Config.backPos)
stopEvent(perder)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Genius System: You lose! Need be fast!")
CurrentSteps = {}
CurrentSequence = {}
end
function PuzzleGenius:ExecuteSequence(cid)
local perdxx = Config.roundTimes-1
local perdx = Config.roundTimes - (#CurrentSequence+perdxx)
if perdx == 0 then
stopEvent(perder)
local perder = addEvent(deleteTp, Config.losetime*60*1000,cid)
else
stopEvent(perder)
end
if #CurrentSequence >= Config.roundTimes then
doTeleportThing(cid, Config.rewardPos)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Genius System: You Win!")
stopEvent(perder)
doPlayerSetNoMove(cid, false)
CurrentSteps = {}
CurrentSequence = {}
return true
end
table.insert(CurrentSequence, randomIndexFromTable(Config.effectsid))
for i,x in ipairs(CurrentSequence) do
addEvent(tileEffect, Config.appearInterval*i*1000, x, {x=Config.centerPlayerPos.x+Config.effectsid[x][1], y=Config.centerPlayerPos.y+Config.effectsid[x][2], z=Config.centerPlayerPos.z},Config.disapear)
end
addEvent(doPlayerSetNoMove, (Config.appearInterval*#CurrentSequence+Config.disapear)*1000, cid, false)
end
function PuzzleGenius:Check(cid, currentSteps)
if currentSteps[#currentSteps] == CurrentSequence[#currentSteps] then
return true
end
return false
end
function onStepIn(cid, item, pos, fromPos)
stopEvent(perder)
if pos.x == Config.centerPlayerPos.x and pos.y == Config.centerPlayerPos.y then
if #CurrentSequence < 1 then
doPlayerSetNoMove(cid, true)
return PuzzleGenius:ExecuteSequence(cid)
else
stopEvent(perder)
return false
end
end
local coordinates = {pos.x-fromPos.x, pos.y-fromPos.y}
for i,x in pairs(Config.effectsid) do
if x[1] == coordinates[1] and x[2] == coordinates[2] then
table.insert(CurrentSteps, i)
if PuzzleGenius:Check(cid, CurrentSteps) then
doCreateItem(i, {x=Config.centerPlayerPos.x+coordinates[1], y=Config.centerPlayerPos.y+coordinates[2], z=Config.centerPlayerPos.z})
end
end
end
if PuzzleGenius:Check(cid, CurrentSteps) then
doTeleportThing(cid, fromPos, true)
if #CurrentSteps == #CurrentSequence then
doPlayerSetNoMove(cid, true)
CurrentSteps = {}
addEvent(function() PuzzleGenius:ExecuteSequence(cid) end, 500)
end
else
doTeleportThing(cid, Config.backPos)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Genius System: You lose!")
stopEvent(perder)
CurrentSteps = {}
CurrentSequence = {}
end
return TRUE
end
function onStepOut(cid, item, pos, fromPos)
local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1})
for i,x in pairs(Config.effectsid) do
if i == tile.itemid then
addEvent(function() local tilee = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tilee, 1) end, 100)
break
end
end
return TRUE
end
Configurable time, if time end you lose too.
Last edited: