Skip to content

远程变量

概述

远程变量系统用于从服务器获取动态数据,如游戏偏移量、武器列表等。与远程配置不同,远程变量通常是较大的 JSON 数据,且按需获取。

与远程配置的区别

特性远程配置远程变量
数据类型简单类型(int/float/bool/string)JSON 字符串
获取方式一次获取全部按变量名单独获取
阻塞方式阻塞非阻塞
典型用途功能开关、参数配置游戏数据、偏移量

函数

txnet_set_variable_callback

cpp
void txnet_set_variable_callback(txnet_variable_callback cb);

设置远程变量接收回调函数。

txnet_get_variable

cpp
void txnet_get_variable(const char* var_name, char* data_ptr, int max_len);

请求获取指定的远程变量。此函数是非阻塞的,结果通过回调返回。

参数类型说明
var_nameconst char*变量名
data_ptrchar*可选,接收数据的字符数组指针
max_lenintdata_ptr 的最大长度

提示

如果不需要自动填充,可以传 NULL, 0,仅通过回调获取数据。

回调函数

txnet_variable_callback

cpp
typedef void (*txnet_variable_callback)(const char* var_name, const char* data);
参数类型说明
var_nameconst char*变量名
dataconst char*变量数据(JSON 字符串)

示例

基础用法

cpp
#include "txnet.h"

static char g_offsetData[8192] = "";

void onVariable(const char* name, const char* data) {
    printf("[变量] 收到 %s,长度: %zu\n", name, strlen(data));
}

int main() {
    txnet_init(&config);
    txnet_connect();
    txnet_login();
    
    txnet_set_variable_callback(onVariable);
    txnet_get_variable("offsets_v1.0", g_offsetData, sizeof(g_offsetData));
    
    // 继续执行,数据会通过回调返回
    
    return 0;
}

多变量获取

cpp
static char g_offsets[8192] = "";
static char g_weapons[4096] = "";
static char g_vehicles[2048] = "";

void onVariable(const char* name, const char* data) {
    printf("[变量] %s 已更新\n", name);
    
    if (strcmp(name, "offsets") == 0) {
        parseOffsets(data);
    } else if (strcmp(name, "weapons") == 0) {
        parseWeapons(data);
    }
}

void loadGameData() {
    txnet_set_variable_callback(onVariable);
    
    txnet_get_variable("offsets", g_offsets, sizeof(g_offsets));
    txnet_get_variable("weapons", g_weapons, sizeof(g_weapons));
    txnet_get_variable("vehicles", g_vehicles, sizeof(g_vehicles));
    
    // 等待数据加载完成
    while (strlen(g_offsets) == 0 || strlen(g_weapons) == 0) {
        usleep(100000);
    }
}

TxNet 网络通信库文档