101 lines
2.8 KiB
PHP
101 lines
2.8 KiB
PHP
<?
|
|
|
|
//-----------------------------------------------------------------------
|
|
// LegacyWorlds Beta 5
|
|
// Game actions
|
|
//
|
|
// beta5/actions/banTrustingAlly.inc
|
|
//
|
|
// This action removes a player from other players' trusted allies
|
|
// lists.
|
|
//
|
|
// Parameters:
|
|
// $player The player to remove from others' lists.
|
|
// $removeList An array of the player IDs from whose lists
|
|
// the player must be removed
|
|
//
|
|
// Possible return values:
|
|
// an array The trusted allies data for the player; see
|
|
// documentation for getTrustedAllies
|
|
// an integer Error; check the error codes.
|
|
//
|
|
// Copyright(C) 2004-2008, DeepClone Development
|
|
//-----------------------------------------------------------------------
|
|
|
|
|
|
class beta5_banTrustingAlly
|
|
extends game_action {
|
|
|
|
/* ERROR CODES */
|
|
const playerNotFound = 0; // Player not found
|
|
const playerOnVacation = 1; // Player is on vacation
|
|
const emptyName = 2; // The name of the player to ban is empty
|
|
const invalidName = 3; // The name of the player to ban is invalid
|
|
const targetNotFound = 4; // The player to ban could not be found
|
|
const targetIsPlayer = 5; // The player is trying to ban himself
|
|
const alreadyBanned = 6; // This player has already been banned
|
|
/***************/
|
|
|
|
public function __construct($game) {
|
|
parent::__construct($game, array(
|
|
"players" => "beta5/player"
|
|
));
|
|
}
|
|
|
|
public function run($player, $name) {
|
|
// Check if the player ID is not null
|
|
if (is_null($player)) {
|
|
return self::playerNotFound;
|
|
}
|
|
$player = (int) $player;
|
|
|
|
// Check if the player is valid
|
|
$playerRecord = $this->players->call('get', $player);
|
|
if (is_null($playerRecord)) {
|
|
return self::playerNotFound;
|
|
}
|
|
|
|
if ($this->players->call('isOnVacation', $player)) {
|
|
return self::playerOnVacation;
|
|
}
|
|
|
|
// Check the name of the player to ban
|
|
$name = preg_replace('/\s+/', ' ', trim($name));
|
|
if ($name == "") {
|
|
return self::emptyName;
|
|
} elseif (strlen($name) > 15) {
|
|
return self::invalidName;
|
|
}
|
|
|
|
// Examine the player to ban
|
|
$toBan = $this->players->call("getPlayerId", $name);
|
|
if (is_null($toBan)) {
|
|
return self::targetNotFound;
|
|
} elseif ($toBan == $player) {
|
|
return self::targetIsPlayer;
|
|
}
|
|
|
|
// Check if the target player is already banned
|
|
if ($this->players->call('checkTAListBan', $toBan, $player)) {
|
|
return self::alreadyBanned;
|
|
}
|
|
|
|
// Remove the current player from the banned player's TA list
|
|
$reverseList = $this->players->call('isAllyOf', $player);
|
|
foreach ($reverseList as $id => $data) {
|
|
if ($id == $toBan) {
|
|
$this->players->call('removeAlly', $toBan, $reverseList[$toBan]['level']);
|
|
$this->players->call('reorderAllies', $toBan);
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Add the ban
|
|
$this->players->call('addTAListBan', $player, $toBan);
|
|
|
|
return $this->game->action("getTrustedAllies", $player);
|
|
}
|
|
|
|
}
|
|
|
|
?>
|