diff --git a/core/Script/ModeScriptEventManager.php b/core/Script/ModeScriptEventManager.php index 1304a122..bda4fe66 100644 --- a/core/Script/ModeScriptEventManager.php +++ b/core/Script/ModeScriptEventManager.php @@ -23,7 +23,7 @@ use Maniaplanet\DedicatedServer\Xmlrpc\GameModeException; class ModeScriptEventManager implements UsageInformationAble { use UsageInformationTrait; - const API_VERSION = "2.0.0"; + const API_VERSION = "2.1.0"; /** @var ManiaControl $maniaControl */ private $maniaControl; diff --git a/core/Server/Commands.php b/core/Server/Commands.php index 60b1e4b2..083c23e1 100644 --- a/core/Server/Commands.php +++ b/core/Server/Commands.php @@ -40,7 +40,6 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer const SETTING_PERMISSION_SHOW_SYSTEMINFO = 'Show SystemInfo'; const SETTING_PERMISSION_SHUTDOWN_SERVER = 'Shutdown Server'; const SETTING_PERMISSION_CHANGE_SERVERSETTINGS = 'Change ServerSettings'; - const SETTING_PERMISSION_END_ROUND = 'Force end of current Trackmania Round'; /* * Private properties @@ -103,11 +102,6 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer $this->updateCancelVoteMenuItem(); $this->updateWarmUpMenuItems(); - - if ($this->maniaControl->getMapManager()->getCurrentMap()->getGame() === 'tm') { - $this->maniaControl->getAuthenticationManager()->definePermissionLevel(self::SETTING_PERMISSION_END_ROUND, AuthenticationManager::AUTH_LEVEL_MODERATOR); - $this->maniaControl->getCommandManager()->registerCommandListener(array('endround', 'end'), $this, 'commandTrackManiaEndRound', true, 'Ends the Current Round.'); - } } /** @@ -459,20 +453,4 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer $this->maniaControl->getClient()->setMaxSpectators($amount); $this->maniaControl->getChat()->sendSuccess("Changed max spectators to: {$amount}", $player); } - - /** - * Handle //endround command - * - * @param array $chatCallback - * @param \ManiaControl\Players\Player $player - */ - public function commandTrackManiaEndRound(array $chatCallback, Player $player) { - if (!$this->maniaControl->getAuthenticationManager()->checkPermission($player, self::SETTING_PERMISSION_END_ROUND)) { - $this->maniaControl->getAuthenticationManager()->sendNotAllowed($player); - return; - } - - $this->maniaControl->getModeScriptEventManager()->forceTrackmaniaRoundEnd(); - $this->maniaControl->getChat()->sendSuccess($player->getEscapedNickname() . ' forced end of the Round!'); - } } diff --git a/plugins/MCTeam/TrackmaniaRoundsPlugin.php b/plugins/MCTeam/TrackmaniaRoundsPlugin.php index b3f753fa..df8b317e 100644 --- a/plugins/MCTeam/TrackmaniaRoundsPlugin.php +++ b/plugins/MCTeam/TrackmaniaRoundsPlugin.php @@ -10,7 +10,7 @@ use ManiaControl\Players\Player; use ManiaControl\Plugins\Plugin; /** - * ManiaControl ServerRanking Plugin + * ManiaControl Trackmania Rounds Plugin * * @author ManiaControl Team * @copyright 2014-2017 ManiaControl Team @@ -27,7 +27,8 @@ class TrackmaniaRoundsPlugin implements Plugin, CommandListener { const MAX_POINT_DISTRIBUTIONS = 8; - const SETTING_PERMISSION_TM_HANDLE_POINTS_REPARTITION = 'Handle Points Distribution Settings'; + const SETTING_PERMISSION_TM_HANDLE_POINTS_REPARTITION = 'Permission handle Points Distribution Settings'; + const SETTING_PERMISSION_END_ROUND = 'Permission Force end of current Trackmania Round'; const SETTING_POINT_DISTRIBUTION_NAME = 'Server Distribution Name '; const SETTING_POINT_DISTRIBUTION_VALUE = 'Server Distribution Value '; @@ -52,6 +53,7 @@ class TrackmaniaRoundsPlugin implements Plugin, CommandListener { //Authentication Permission Level $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PERMISSION_TM_HANDLE_POINTS_REPARTITION, AuthenticationManager::getPermissionLevelNameArray(AuthenticationManager::AUTH_LEVEL_ADMIN)); + $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PERMISSION_END_ROUND, AuthenticationManager::getPermissionLevelNameArray(AuthenticationManager::AUTH_LEVEL_MODERATOR)); //Settings $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_POINT_DISTRIBUTION_NAME . 1, "motogp"); @@ -62,11 +64,14 @@ class TrackmaniaRoundsPlugin implements Plugin, CommandListener { $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_POINT_DISTRIBUTION_VALUE . $i, ""); } + // Commands $this->maniaControl->getCommandManager()->registerCommandListener(array('setrpoints', 'setpointsdistribution'), $this, 'commandSetPointsRepartition', true, 'Sets the Rounds Point Repartition.'); $this->maniaControl->getCommandManager()->registerCommandListener(array('getrpoints', 'getpointsdistribution'), $this, 'commandGetPointsRepartition', true, 'Gets the Rounds Point Repartition.'); + $this->maniaControl->getCommandManager()->registerCommandListener(array('endround', 'end'), $this, 'commandTrackManiaEndRound', true, 'Ends the Current Round.'); + } /** @@ -133,6 +138,23 @@ class TrackmaniaRoundsPlugin implements Plugin, CommandListener { }); } + /** + * Handle //endround command + * + * @param array $chatCallback + * @param \ManiaControl\Players\Player $player + */ + public function commandTrackManiaEndRound(array $chatCallback, Player $player) { + $permission = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_PERMISSION_END_ROUND); + if (!AuthenticationManager::checkRight($player, $permission)) { + $this->maniaControl->getAuthenticationManager()->sendNotAllowed($player); + return; + } + + $this->maniaControl->getModeScriptEventManager()->forceTrackmaniaRoundEnd(); + $this->maniaControl->getChat()->sendSuccess($player->getEscapedNickname() . ' forced end of the Round!'); + } + /** * @see \ManiaControl\Plugins\Plugin::getId() */