public function onPlayerConnect($login, $isSpectator) { $menu = Menu::Create($login); $menu->setPosition(136, 45); $menu->setScale(0.8); $menu->clearItems(); foreach ($this->menu as $section) { switch (count($section['buttons'])) { case 0: break; case 1: if (!$section['buttons'][0]['admin'] || AdminGroup::contains($login)) { $menu->addFinalItem($section['name'], $section['icon'], $section['buttons'][0]['callback']); } break; default: $entry = $menu->addItem($section['name'], $section['icon']); foreach ($section['buttons'] as $button) { if (!$button['admin'] || AdminGroup::contains($login)) { $entry->addSubitem($button['name'], $button['callback']); } } } } $menu->show(); }
function onEndMap($rankings, $map, $wasWarmUp, $matchContinuesOnNextMap, $restartMap) { if ($wasWarmUp || $restartMap) { return; } $config = Config::getInstance(); $freePlaces = $this->storage->server->nextMaxPlayers - count($this->mapsPlayed); $nbToKick = max(0, min($config->lastToKick, count($this->queue)) - $this->outThisMatch - $freePlaces); while ($nbToKick > 0 && !empty($rankings)) { $ranking = array_pop($rankings); $login = $ranking['Login']; if (isset($this->mapsPlayed[$login]) && $this->mapsPlayed[$login] > 0 && !($config->ignoreAdmins && AdminGroup::contains($login))) { if ($config->queueInsteadOfKick) { $this->connection->forceSpectator($login, 1); $this->lastWorst[] = $login; } else { $this->connection->kick($login); } --$nbToKick; } } }
function onPlayerConnect($login, $isSpectator) { if (AdminGroup::contains($login) || in_array($login, $this->whiteList)) { return; } $blacks = $whites = 0; foreach ((array) Config::getInstance()->readFrom as $circle) { $karma = $this->wsClient->getKarma($circle, $login); $blacks += $karma->blacks; $whites += $karma->whites; } foreach ($this->preparedRules as $rule) { switch ($rule->check($blacks, $whites)) { case -2: $this->addToBlackList(null, $login); return; case -1: $this->connection->kick($login, 'You\'re not a trusted player'); case 1: return; case 2: $this->addToWhiteList(null, $login); return; } } }
function onPlayerDisconnect($login, $disconnectionReason) { if (AdminGroup::contains($login)) { unset($this->connectedAdmins[$login]); } }