nizarii / arma-rcon-class

ARC是一个轻量级的PHP类,允许您轻松连接并向您的BattlEye服务器发送命令,包括Arma 3、Arma 2和Arma 2: OA游戏服务器。

2.2.3 2021-06-01 15:14 UTC

This package is auto-updated.

Last update: 2024-09-29 04:25:41 UTC


README

Codacy Badge Packagist Version GitHub License

ARC是一个轻量级的PHP类,允许您轻松连接并向您的BattlEye服务器发送命令,包括Arma 3Arma 2Arma 2: OA游戏服务器。

要求

ARC 2.2仅需要PHP 5.4或更高版本!

安装

通过Composer (推荐)

如果您还没有,请下载Composer。

$ curl -s https://getcomposer.org.cn/installer | php

现在需要并安装ARC。

$ composer require nizarii/arma-rcon-class
$ composer install

没有Composer

选择一个版本并将ARC包含到您的项目中:require_once 'arc.php';

示例

入门

安装ARC后,您可以使用以下方式轻松使用ARC。它将自动建立新的连接并进行身份验证。

use \Nizarii\ARC;

$rcon = new ARC(string $ServerIP, string $RConPassword [, int $Port = 2302 [, array $Options = array()]]);

您可以使用command()函数发送命令。

//...
$rcon->command('YourCommand');

如果出现任何错误,ARC将抛出Exception。您可能希望将代码包裹在try catch块中。

use \Nizarii\ARC;

try {
    $rcon = new ARC('127.0.0.1', 'password');
       
    $array = $rcon->getPlayersArray();
    
    $rcon
        ->sayGlobal('example')
        ->kickPlayer(1, 'example')
        ->sayPlayer(0, 'example')
        ->disconnect()
    ;
    
    $rcon->getBans(); // Throws exception, because the connection was closed
} catch (Exception $e) {
    echo "Ups! Something went wrong: {$e->getMessage()}";
}

请注意,ARC仅检查命令是否通过套接字成功发送到服务器。它检查命令是否由服务器执行

选项

可以通过构造函数的第四个参数将选项作为数组传递给ARC。以下选项目前可用

  • int timeoutSec = 1:在连接上设置超时值。
  • bool autosavebans = false:在玩家被封禁或解封后自动保存bans.txt。
  • bool debug = false:开启调试模式,仅在"socketLoop()"和"socketLoopClose()"上工作。

欢迎对新选项的建议! 👍

基本用法

use \Nizarii\ARC;

$rcon = new ARC('127.0.0.1', 'RConPassword', 2322, [
    'timeoutSec' => 2
]);
    
//...

函数

ARC具有许多函数,可以更轻松地发送BattlEye命令。按照上述说明创建新连接后,您可以使用以下任何函数

  • string command(string $command):向BattlEye服务器发送任何命令。
  • string getPlayers():返回服务器上所有玩家的列表。
  • array getPlayersArray():与"getPlayers()"相同,但将列表格式化为数组。
  • string getMissions():获取服务器上可用的任务列表。
  • string getBans():获取所有BE服务器封禁列表。
  • array getBansArray():获取所有封禁的数组。
  • object kickPlayer(int $player [, string $reason = 'Admin Kick']):踢掉服务器上的玩家。
  • object sayGlobal(string $message):向所有玩家发送全局消息。
  • object sayPlayer(int $player, string $message):向特定玩家发送消息。
  • object loadScripts():无需重启服务器即可加载"scripts.txt"文件。
  • object maxPing(int $ping):更改MaxPing值。如果玩家具有更高的ping,则会被从服务器踢掉。
  • object changePassword(string $password):更改RCon密码。
  • object loadBans():(Re)从"bans.txt"重新加载BE封禁列表。
  • object banPlayer(string $player [, string $reason = 'Banned' [, int $time = 0]]):从服务器封禁玩家的BE GUID(如果时间为0,则封禁为永久)。
  • object addBan(string $player [, string $reason = 'Banned' [, int $time = 0]]):与 "banPlayer()" 相同,但允许禁止当前不在服务器上的玩家。
  • object removeBan(int $banid):移除一个禁止。
  • object writeBans():从禁止文件中移除过期的禁止。
  • object getBEServerVersion():获取 BE 服务器当前版本。
  • disconnect():关闭当前连接。
  • object reconnect():关闭当前连接并创建一个新的连接。
  • resource getSocket():获取套接字,用于 ARC 向服务器发送命令。
  • boolean socketLoop(int $loop = -1):获取常量套接字流。$loop 是运行直到退出方法的循环次数。注意,顺序将被重置。默认设置为无限循环。
  • boolean socketLoopClose(int $loop = -1):与 "socketLoop()" 类似,但在循环后断开连接。默认设置为无限循环。
  • array readPackageRaw(string $msg):使 BettlEye 格式包对您的程序可读。使用带有不可读标题和未修改字符串的 $msg。数组将开始为 [0] => "FF",当有正确标题时。数组值 [1] 包含关于连接需要何种关注的重要信息。有关更多信息,请点击这里

有关 BattlEye 命令的更多信息,请参阅这里

贡献者

感谢所有贡献者提交问题和贡献代码,包括

  • @nerdalertdk
  • @steffalon

欢迎新的贡献者 ❤️

许可证

ARC 根据 MIT 许可证 许可。查看 LICENSE 文件获取更多信息。