maniaControl = $maniaControl; $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERJOINED, $this, 'changePointlimit'); $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERDISCONNECTED, $this, 'changePointlimit'); $this->maniaControl->settingManager->initSetting($this, self::DYNPNT_MULTIPLIER, 10); $this->maniaControl->settingManager->initSetting($this, self::DYNPNT_OFFSET, 0); $this->maniaControl->settingManager->initSetting($this, self::DYNPNT_MIN, 30); $this->maniaControl->settingManager->initSetting($this, self::DYNPNT_MAX, 200); if($this->maniaControl->server->titleId != 'SMStormRoyal@nadeolabs') { $error = 'This plugin only supports Royal!'; throw new Exception($error); } } /** * Unload the plugin and its resources */ public function unload() { $this->maniaControl->manialinkManager->unregisterManialinkPageAnswerListener($this); $this->maniaControl->callbackManager->unregisterCallbackListener($this); $this->maniaControl = null; } /** * Get plugin id * * @return int */ public static function getId() { return self::ID; } /** * Get Plugin Name * * @return string */ public static function getName() { return 'Dynamic Pointlimit Plugin'; } /** * Get Plugin Version * * @return float */ public static function getVersion() { return self::VERSION; } /** * Get Plugin Author * * @return string */ public static function getAuthor() { return 'TheM'; } /** * Get Plugin Description * * @return string */ public static function getDescription() { return 'Plugin offers a dynamic pointlimit according to the amount of players on the server.'; } /** * Function called on player connect and disconnect, changing the pointlimit. * * @param array $callback */ public function changePointlimit(array $callback) { $numberOfPlayers = 0; $numberOfSpectators = 0; /** @var Player $player */ foreach($this->maniaControl->playerManager->getPlayers() as $player) { if($player->isSpectator) { $numberOfSpectators++; } else { $numberOfPlayers++; } } $pointlimit = ($numberOfPlayers * $this->maniaControl->settingManager->getSetting($this, self::DYNPNT_MULTIPLIER)) + $this->maniaControl->settingManager->getSetting($this, self::DYNPNT_OFFSET); $min_value = $this->maniaControl->settingManager->getSetting($this, self::DYNPNT_MIN); $max_value = $this->maniaControl->settingManager->getSetting($this, self::DYNPNT_MAX); if($pointlimit < $min_value) $pointlimit = $min_value; if($pointlimit > $max_value) $pointlimit = $max_value; $this->maniaControl->client->setModeScriptSettings(array('S_MapPointsLimit' => $pointlimit)); } }