rminks/rcon

用于 Laravel 的 RCON 协议源库

v1.0.0 2024-04-21 07:45 UTC

This package is auto-updated.

Last update: 2024-09-21 08:52:00 UTC


README

所有功劳归 AnvilM (https://github.com/AnvilM/PHP_RCON/tree/main),我根据自己的需求、偏好和需求上传了自己的版本。

用于 Laravel 的 RCON 协议源库

安装

您可以使用 composer 获取此包

composer require rminks/rcon

配置

在 valve games (Engine Source) 中的设置

默认情况下,SRCDS 监听 TCP 端口 27015 的 RCON 连接。如果使用 -port 选项更改服务器的端口号,RCON 端口也会更改。SRCDS 将始终拒绝来自其黑名单上 IP 的任何 RCON 连接尝试。如果出于任何原因写入了 rcon_password cvar,则服务器将立即关闭所有已验证的 RCON 连接。即使新值与旧值相同,也是如此。这些连接需要重新打开和重新验证才能发出任何其他命令。尚未验证的连接不会断开。如果密码在远程更改,则服务器不会响应导致密码更改的命令。如果未设置 rcon_password,游戏服务器将拒绝所有连接

在 Minecraft 中的设置

要在您的服务器上使用 RCON,您需要在 Minecraft 服务器设置中启用并配置它。

在文件 server.properties 中

rcon.port=25575
enable-rcon=true
rcon.password=123

入门指南

创建连接

要创建到 Minecraft 服务器 RCON 连接,您需要创建 RCON 类的对象。

use RMinks\RCON\RCON;

$Ip = '127.0.0.1'; //Server IP
$Port = 25575; //RCON port
$Password = '123'; //RCON password
$Timeout = 30; //Timeout in ms 

$RCON = new RCON($Ip, $Port, $Password, $Timeout);

发送命令

要向服务器发送命令,请使用 RСON 类的此方法。此方法将返回服务器的响应。

use RMinks\RCON\RCON;

...

$RCON->sendCommand('map de_dust2');//Example for CS:S
$RCON->sendCommand('time set day');//Example for Minecraft

服务器响应

所有响应

要获取服务器上的所有响应,请使用以下方法

use RMinks\RCON\RCON;

...

$Response = $RCON->ResponseService->getAllResponses();

最后响应

要获取服务器的最后响应,请使用以下方法

use RMinks\RCON\RCON;

...

$Response = $RCON->ResponseService->getLastResponse();

按 ID 响应

如果您有该响应的 ID,您可以从列表中获取特定的服务器响应。

use RMinks\RCON\RCON;

...

$Response = $RCON->ResponseService->getResponse(3);

示例

namespace App\Http\Controllers;

use RMinks\RCON\RCON;

class RCONController extends Controller
{
    public function setDay()
    {
        $Ip = '127.0.0.1'; //Server IP
        $Port = 25575; //RCON port
        $Password = '123'; //RCON password
        $Timeout = 30; //Timeout in ms 

        $RCON = new RCON($Ip, $Port, $Password, $Timeout); //Create connection

        $RCON->sendCommand('time set day'); //Send command

        $Response = $RCON->ResponseService->getLastResponse(); //Get last response

        echo $Response;
    }
}

执行此代码后,您应该得到以下结果

    Set the time to 1000

示例 2

namespace App\Http\Controllers;

use RMinks\RCON\RCON;

class RCONController extends Controller
{
    public function changeMap()
    {
        $Ip = '192.168.1.39'; //Server IP
        $Port = 27015; //RCON port
        $Password = '12345'; //RCON password
        $Timeout = 30; //Timeout in ms 

        $RCON = new RCON($Ip, $Port, $Password, $Timeout); //Create connection

        $RCON->sendCommand('map de_dust2'); //Send command

        $Response = $RCON->ResponseService->getLastResponse(); //Get last response

        echo $Response;
        dd($Response);//For debug
    }
}

执行此代码后,您应该得到以下结果

    rcon from "x.x.x.x:xxxx": command "map de_dust2"

    L dd/mm/yyyy - hr:m:s: -------- Mapchange to de_dust2 --------