dsg / beyondthewire-rcon-php

dev-master 2020-12-19 22:47 UTC

This package is auto-updated.

Last update: 2024-09-20 07:49:56 UTC


README

Beyond the Wire RCON PHP Logo

Beyond the Wire RCON PHP

为Beyond the Wire服务器管理提供的RCON PHP包装器

Deutsche Squad Gemeinschaft Deutsche Squad Gemeinschaft Total Downloads Latest Stable Version Latest Unstable Version License
Deutsche Squad Gemeinschaft Discord

加入小队RCON社区

如果您有任何问题或需要帮助开始OWI游戏中的RCON,请确保加入Discord上的小队RCON社区

安装

您可以使用Composer和以下命令安装此软件包

composer require dsg/beyondthewire-rcon-php

然后代码将在DSG\BeyondTheWireRCON命名空间下可用。

命令

  • ListPlayers
  • ListSquads
  • AdminListDisconnectedPlayers
  • ShowNextMap
  • AdminKick "<NameOrSteamId>" <KickReason>
  • AdminKickById <PlayerId> <KickReason>
  • AdminBan "<NameOrSteamId>" "<BanLength>" <BanReason>
  • AdminBanById <PlayerId> "<BanLength>" <BanReason>
  • AdminBroadcast <Message>
  • AdminRestartMatch
  • AdminEndMatch
  • AdminChangeMap <MapName>
  • AdminSetNextMap <MapName>
  • AdminSetMaxNumPlayers <NumPlayers>
  • AdminSetServerPassword <Password>
  • AdminSlomo <TimeDilation>
  • AdminForceTeamChange <NameOrSteamId>
  • AdminForceTeamChangeById <PlayerId>
  • AdminDemoteCommander <PlayerName>
  • AdminDemoteCommanderById <PlayerId>
  • AdminDisbandSquad <TeamId> <SquadId>
  • AdminRemovePlayerFromSquad <PlayerName>
  • AdminRemovePlayerFromSquadById <PlayerId>
  • AdminWarn "<NameOrSteamId>" <WarnReason>
  • AdminWarnById <PlayerId> <WarnReason>

用法

创建实例

实例化BeyondTheWireServer类以打开新的RCON连接。如果无法建立连接,将抛出异常。

use DSG\BeyondTheWireRCON\BeyondTheWireServer;

...

/** @var BeyondTheWireServer */
$server = new BeyondTheWireServer(new ServerConnectionInfo('127.0.0.1', 21114, 'YourRconPassword'));

获取当前服务器人口(团队、小队、玩家)

获取当前人口。这使用ListPlayers & ListSquads来正确排序团队、小队和玩家。

/** @var Population */
$population = $server->serverPopulation();

/** @var Team[] */
$teams = $population->getTeams();

// or

/** @var Player[] */
$players = $population->getPlayers();

// or

/** @var Player|null */
$player = $population->getPlayerBySteamId('76561197960287930');

ListPlayers

使用ListPlayers命令获取当前玩家列表。这不包括已断开连接的玩家。

/** @var Player[] */
$players = $server->listPlayers();

获取已断开连接的玩家

使用ListPlayers命令获取已断开连接的玩家。

/** @var Player[] */
$players = $server->listDisconnectedPlayers();

ListSquads

获取当前活跃的小队(和团队)

/** @var Team[] */
$teams = $server->listSquads();

AdminKick

通过名称、SteamId或游戏内ID踢出玩家。

/** @var bool */
$success = $server->adminKick('76561197960287930', 'Reason');

// or

/** @var bool */
$success = $server->adminKickById($player->getId(), 'Reason');

AdminBan

通过名称、SteamId或游戏内ID封禁玩家。

/** @var bool */
$success = $server->adminBan('76561197960287930', '1h', 'Reason');

// or

/** @var bool */
$success = $server->adminBanById($player->getId(), '1h', 'Reason');

获取当前地图

使用ShowNextMap命令获取当前地图

/** @var string */
$map = $server->currentMap();

获取下一个地图

使用ShowNextMap命令获取下一个地图

/** @var string */
$map = $server->nextMap();

AdminRestartMatch

重启当前比赛

/** @var bool */
$success = $server->adminRestartMatch();

AdminEndMatch

结束当前比赛

/** @var bool */
$success = $server->adminEndMatch();

AdminBroadcast

向服务器上的所有玩家广播消息

/** @var bool */
$success = $server->adminBroadcast('Hello from the other side');

AdminChangeMap

设置下一个地图并立即结束当前游戏。

/** @var bool */
$success = $server->adminChangeMap('Sumari AAS v1');

AdminSetNextMap

设置下一个地图

/** @var bool */
$success = $server->adminSetNextMap('Sumari AAS v1');

AdminSetMaxNumPlayers

设置玩家/槽位数上限

/** @var bool */
$success = $server->adminSetMaxNumPlayers(80);

AdminSetServerPassword

设置服务器密码

/** @var bool */
$success = $server->adminSetServerPassword('secret');

AdminSlomo

使用AdminSlomo设置游戏速度。默认为1.0

/** @var bool */
$success = $server->adminSlomo(1.5);

AdminForceTeamChange

通过提供名称或SteamId强制玩家加入对方团队。

/** @var bool */
$success = $server->adminForceTeamChange('Name or SteamId');

AdminForceTeamChangeById

通过提供游戏内玩家ID强制玩家加入对方团队。

/** @var bool */
$success = $server->adminForceTeamChangeById($player->getId());

AdminDisbandSquad命令。

通过提供团队ID/索引和小组ID/索引解散小组。

/** @var bool */
$success = $server->adminDisbandSquad($team->getId(), $squad->getId());

AdminRemovePlayerFromSquad

通过提供玩家名称从玩家的小组中删除玩家。

/** @var bool */
$success = $server->adminRemovePlayerFromSquad('Name');

AdminRemovePlayerFromSquadById

通过提供游戏内玩家ID从玩家的小组中删除玩家。

/** @var bool */
$success = $server->adminRemovePlayerFromSquadById($player->getId());

AdminWarn

通过提供玩家名称/steamid和消息来警告玩家。

/** @var bool */
$success = $server->adminWarn('Name or SteamId', 'Warn Reason');

AdminWarnById

通过id警告玩家。

/** @var bool */
$success = $server->adminWarnById($player->getId(), 'Warn Reason');

重要提示

请确保始终手动关闭连接或通过销毁对象触发断开连接,以防止因耗尽可用连接而阻塞RCON服务器。

$server->disconnect();
// Or
unset($server);

特别感谢

  • SquadSlovenia(初始创建者)
  • Brozowski(主要贡献者)
  • [ToG] subtlerod(对使用的SquadRcon实现做出了重大贡献)
  • Thomas Smyth(SquadJS的创建者,Squad RCON的优秀资源)