dsg / squad-rcon-php
Squad服务器RCon库
Requires
- ext-json: *
- dsg/php-source-query-class: 1.1.0
- spatie/data-transfer-object: ^3.8
Requires (Dev)
- phpunit/phpunit: ~5.0||~6.0||~7.0||~8.0
- dev-master
- 4.0.0
- 3.3.0
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.0
- 2.0.1
- 2.0.0
- 1.0.0
- 0.3.0
- 0.2.0
- 0.2.0-alpha11
- 0.2.0-alpha10
- 0.2.0-alpha9
- 0.2.0-alpha8
- 0.2.0-alpha7
- 0.2.0-alpha6
- 0.2.0-alpha5
- 0.2.0-alpha4
- 0.2.0-alpha3
- 0.2.0-alpha2
- 0.2.0-alpha1
- 0.1.2
- 0.1.1
- 0.1
- dev-dependabot/github_actions/actions/checkout-4
- dev-dependabot/composer/phpunit/phpunit-approx-5.0or-approx-6.0or-approx-7.0or-approx-8.0or-approx-9.0
- dev-patch-2.12
- dev-fix-squad-creator-integration
- dev-rework-squad-leader
- dev-squad-leader
- dev-brozowski
- dev-disconnect
- dev-actions
This package is auto-updated.
Last update: 2024-09-05 12:48:51 UTC
README
Squad RCON PHP
Squad服务器管理的RCON PHP包装器
加入Squad RCON社区
如果您有任何问题或需要帮助在OWI游戏中开始使用RCON,请确保加入Discord上的Squad RCON社区。
安装
您可以通过Composer和以下命令安装此包
composer require dsg/squad-rcon-php
然后代码将在DSG\SquadRCON
命名空间下可用。
命令
- ListPlayers
- ListSquads
- AdminListDisconnectedPlayers
- ShowCurrentMap
- ShowNextMap
- AdminKick "<NameOrSteamId>" <KickReason>
- AdminKickById <PlayerId> <KickReason>
- AdminBan "<NameOrSteamId>" "<BanLength>" <BanReason>
- AdminBanById <PlayerId> "<BanLength>" <BanReason>
- AdminBroadcast <Message>
- AdminRestartMatch
- AdminEndMatch
- AdminChangeLevel <LevelName>
- AdminSetNextLevel <LevelName>
- AdminChangeLayer <LayerName>
- AdminSetNextLayer <LayerName>
- 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>
- AdminVoteLevel <Choices, concatenated by +>
- AdminVoteLayer <Choices, concatenated by +>
- AdminVoteNextLevel <Choices, concatenated by +>
- AdminVoteNextLayer <Choices, concatenated by +>
- AdminVote <Vote name> <Choices, concatenated by +>
用法
创建实例
实例化SquadServer类以打开新的RCON连接。如果无法建立连接,则会抛出异常。
use DSG\SquadRCON\SquadServer; ... /** @var SquadServer */ $server = new SquadServer(new ServerConnectionInfo( host: '127.0.0.1', port: 21114, password: 'YourRconPassword' ));
获取当前服务器人口(队伍、小队、玩家)
获取当前人口。这确实使用ListPlayers & ListSquads来获取正确排序的队伍、小队和玩家。
/** @var Population */ $population = $server->serverPopulation(); /** @var Team[] */ $teams = $population->getTeams(); foreach ($teams as $team) { $name = $team->getName(); foreach ($team->getSquads() as $squad) { $creatorName = $squad->getCreatorName(); $creatorSteamId = $squad->getCreatorSteamId(); foreach ($squad->getPlayers() as $player) { $name = $player->getName(); $steamId = $player->getSteamId(); } } foreach ($team->getPlayers() as $unassigned) { $name = $player->getName(); $steamId = $player->getSteamId(); } } // 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 array */ $map = $server->showCurrentMap(); echo $map['level']; echo $map['layer'];
获取下一个地图
使用ShowNextMap命令获取下一个地图
/** @var array */ $map = $server->showNextMap(); echo $map['level']; echo $map['layer'];
AdminRestartMatch
重启当前比赛
/** @var bool */ $success = $server->adminRestartMatch();
AdminEndMatch
结束当前比赛
/** @var bool */ $success = $server->adminEndMatch();
AdminBroadcast
向服务器上的所有玩家广播消息
/** @var bool */ $success = $server->adminBroadcast('Hello from the other side');
AdminChangeLevel
更改级别(并在其上选择一个随机层)并立即前往该层
/** @var bool */ $success = $server->adminChangeLevel('Sumari');
AdminSetNextLevel
设置下一个级别(并在其上选择一个随机层)在比赛结束后前往
/** @var bool */ $success = $server->adminSetNextLevel('Sumari');
AdminChangeLayer
更改层并立即前往该层
/** @var bool */ $success = $server->adminChangeLayer('Sumari AAS v1');
AdminSetNextLayer
设置比赛结束后要前往的下一个层
/** @var bool */ $success = $server->adminSetNextLayer('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的优秀资源)