dsg / beyondthewire-rcon-php
小队服务器RCon库
Requires
- ext-json: *
- dsg/php-source-query-class: 1.1.0
Requires (Dev)
- phpunit/phpunit: ~5.0||~6.0||~7.0||~8.0
This package is auto-updated.
Last update: 2024-09-20 07:49:56 UTC
README
Beyond the Wire RCON PHP
为Beyond the Wire服务器管理提供的RCON PHP包装器
加入小队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的优秀资源)