远程变量
概述
远程变量系统用于从服务器获取动态数据,如游戏偏移量、武器列表等。与远程配置不同,远程变量通常是较大的 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_name | const char* | 变量名 |
data_ptr | char* | 可选,接收数据的字符数组指针 |
max_len | int | data_ptr 的最大长度 |
提示
如果不需要自动填充,可以传 NULL, 0,仅通过回调获取数据。
回调函数
txnet_variable_callback
cpp
typedef void (*txnet_variable_callback)(const char* var_name, const char* data);| 参数 | 类型 | 说明 |
|---|---|---|
var_name | const char* | 变量名 |
data | const 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);
}
}