function onLoad() { //Check if the plugin is not connected on the lobby server if ($this->isPluginLoaded('\\ManiaLivePlugins\\MatchMakingLobby\\Lobby\\Plugin')) { throw new Exception('Lobby and match cannot be one the same server.'); } //Set the maxPlayer number to 0 to avoid unwanted connection $this->connection->cleanGuestList(); $this->connection->addGuest('-_-'); $this->connection->setHideServer(1); $this->connection->setMaxPlayers(0); $this->connection->setMaxSpectators(0); $this->connection->removeGuest('-_-'); $this->nextTick = new \DateTime(); $ratios = array(new Structures\VoteRatio('SetModeScriptSettingsAndCommands', -1.0), new Structures\VoteRatio('Kick', 0.7), new Structures\VoteRatio('Ban', -1.0), new Structures\VoteRatio('AutoTeamBalance', -1.0), new Structures\VoteRatio('RestartMap', -1.0)); $this->connection->setCallVoteRatiosEx(false, $ratios); $this->connection->setCallVoteTimeOut(15000); $this->state = self::SLEEPING; $this->enableTickerEvent(); //Set needed rules to run the lobny $matchSettingsClass = $this->config->getMatchSettingsClassName($this->scriptName); /* @var $matchSettings \ManiaLivePlugins\MatchMakingLobby\MatchSettings\MatchSettings */ if (!class_exists($matchSettingsClass)) { throw new \Exception(sprintf("Can't find class %s. You should set up the config : ManiaLivePlugins\\MatchMakingLobby\\Config.matchSettingsClassName", $matchSettingsClass)); } $matchSettings = new $matchSettingsClass(); $settings = $matchSettings->getMatchScriptSettings(); $this->connection->setModeScriptSettings($settings); $this->lobby = $this->matchMakingService->getLobby($this->config->lobbyLogin); if (!$this->lobby) { throw new \Exception('The lobby can\'t be found in the database. Are you sure that lobby and match server are sharing the same database?'); } $this->connection->setServerTag('nl.lobbylogin', $this->config->lobbyLogin); $this->connection->customizeQuitDialog($this->gui->getCustomizedQuitDialogManiaLink(), '#qjoin=' . $this->lobby->backLink, false, 10000); //Check if a match existed before to cancel it $match = $this->matchMakingService->getServerCurrentMatch($this->storage->serverLogin, $this->scriptName, $this->titleIdString); if ($match) { $this->matchMakingService->updateMatchState($match->id, Services\Match::FINISHED); $this->matchMakingService->updateServerCurrentMatchId(null, $this->storage->serverLogin, $this->scriptName, $this->titleIdString); } //Restart map to initialize script $this->connection->executeMulticall(); // Flush calls $this->connection->restartMap(); }