Beispiel #1
0
 public function remove($penguin)
 {
     Logger::Debug("Removing penguino");
     foreach ($this->penguinsByDatabases as $databaseIndex => $penguinArray) {
         if (($penguinIndex = array_search($penguin, $penguinArray)) !== false) {
             Logger::Debug("Penguino found! Removing");
             unset($this->penguinsByDatabases[$databaseIndex][$penguinIndex]);
             if (count($this->penguinsByDatabases[$databaseIndex]) == 0) {
                 Logger::Info("Removing empty database object");
                 unset($this->penguinsByDatabases[$databaseIndex]);
                 unset($this->databaseConnections[$databaseIndex]);
             }
             return true;
         } else {
             Logger::Debug("Sorry, penguino not found. :-( {$penguinIndex}");
         }
     }
 }
Beispiel #2
0
 protected function handleDisconnect($socket)
 {
     $penguin = $this->penguins[$socket];
     $this->removePenguin($penguin);
     Logger::Info("Player disconnected");
 }
Beispiel #3
0
 public function loadPlugins($pluginsDirectory)
 {
     if (!is_dir($pluginsDirectory)) {
         Logger::Error("Plugins directory ({$pluginsDirectory}) does not exist!");
     } else {
         $pluginFolders = scandir($pluginsDirectory);
         $pluginFolders = array_splice($pluginFolders, 2);
         $pluginFolders = array_filter($pluginFolders, function ($pluginFolder) {
             if ($pluginFolder != "Base") {
                 return true;
             }
         });
         foreach ($pluginFolders as $pluginFolder) {
             $folderPath = sprintf("%s%s", $pluginsDirectory, $pluginFolder);
             $this->loadPluginFolder($folderPath);
         }
         // Check dependencies
         $this->checkPluginDependencies();
         $pluginCount = sizeof($this->loadedPlugins);
         if ($pluginCount != 0) {
             Logger::Info(sprintf("Loaded %d plugin(s): %s", $pluginCount, implode(', ', array_keys($this->loadedPlugins))));
         } else {
             Logger::Info("No plugins loaded");
         }
     }
 }
Beispiel #4
0
 protected function handleModeratorBan($socket)
 {
     $penguin = $this->penguins[$socket];
     $player = Packet::$Data[2];
     $banType = Packet::$Data[3];
     $banReason = Packet::$Data[4];
     $banDuration = Packet::$Data[5];
     $penguinName = Packet::$Data[6];
     $banNotes = Packet::$Data[7];
     if ($penguin->moderator) {
         if (is_numeric($player)) {
             $targetPlayer = $this->getPlayerById($player);
             if ($targetPlayer !== null) {
                 if ($banDuration !== 0) {
                     $targetPlayer->database->updateColumnById($targetPlayer->id, "Banned", strtotime("+" . $banDuration . " hours"));
                 } else {
                     $targetPlayer->database->updateColumnById($targetPlayer->id, "Banned", "perm");
                 }
                 $penguin->database->addBan($player, $penguin->username, $banNotes, $banDuration, $banType);
                 $targetPlayer->send("%xt%ban%-1%{$banType}%{$banReason}%{$banDuration}%{$banNotes}%");
                 $this->removePenguin($targetPlayer);
                 Logger::Info("{$penguin->username} has banned {$targetPlayer->username} for {$banDuration} hours");
             }
         }
     }
 }