__maze = { storage = 12345, pointsStorage = 666, startTime = 0.1, reqNum = 1, reqLvl = 150, positions = { {Position(1, 1, 1), Position(1, 1, 1)}, Position(1, 1, 1) } } __maze.startEvent = function() local competitors = {getPlayersInRange(__maze.positions[1][1], __maze.positions[1][2]), {}} for _, v in pairs(competitors[1]) do if getPlayerLevel(v) > __maze.reqLvl and getPlayerAccess(v) < 3 then table.insert(competitors[2], v) end end if #competitors[2] < __maze.reqNum then return __maze.cancel() end for _, v in pairs(competitors[2]) do doPlayerSendTextMessage(v, MESSAGE_INFO_DESCR, 'Escape the maze.') doTeleportThing(v, __maze.positions[2]) doCreatureSetStorage(v, __maze.storage, 1) end end __maze.cancel = function() for _, v in pairs(getPlayersInRange(__maze.positions[1][1], __maze.positions[1][2])) do doTeleportThing(v, getTownTemplePosition(getPlayerTown(v))) end doEraseStorage(__maze.storage) doBroadcastMessage('Maze event has been canceled due to a lack of participants.') end __maze.finishEvent = function(winner) local n = math.max(0, getCreatureStorage(winner, __maze.pointsStorage)) + 1 doCreatureSetStorage(winner, n) doPlayerSendTextMessage(winner, MESSAGE_INFO_DESCR, 'You\'ve just won the event. You obtain one event point. Now you have ' .. n .. ' event points. To learn more about events and event points, visit our website.') for _, v in pairs(getCreaturesInRange(__maze.positions[3][1], __maze.positions[3][2])) do if isMonster(v) then doRemoveCreature(v) elseif isPlayer(v) then doRemoveConditions(v, true) doCreatureAddHealth(v, getCreatureMaxHealth(v), COLOR_GREEN, CONST_ME_MAGIC_BLUE, true) doTeleportThing(v, getTownTemplePosition(getPlayerTown(v))) doCreatureSetStorage(v, __maze.storage, nil) if v ~= winner then doPlayerSendTextMessage(v, MESSAGE_INFO_DESCR, 'You lost.') end end end end