接收后端推送变量
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-07-02 15:51:56 |
👁️ 阅读: 6
要接收后端推送的变量,可以使用服务端消息机制。根据浮生梦老师前端课程内容,以下是具体方法:
## 1. 注册服务端消息
首先需要注册消息ID,当服务端推送变量时会触发对应消息:
```lua
-- 注册服务端消息(示例中的RegisterNetMsg = 2)
-- 消息ID 996 对应 @gm_sendluamsg 命令
SL:RegisterNetMsg(996, function(param1, param2, param3, param4)
-- param1, param2, param3 为int类型参数
-- param4 为string类型参数
SL:Print("收到服务端推送的变量:")
SL:Print("参数1:", param1)
SL:Print("参数2:", param2)
SL:Print("参数3:", param3)
SL:Print("参数4:", param4)
end)
```
## 2. 服务端发送消息
服务端使用以下命令推送变量:
```lua
@gm_sendluamsg 消息id 参数1(int) 参数2(int) 参数3(int) 参数4(str)
```
示例:
```lua
@gm_sendluamsg 996 100 200 300 "这是字符串变量"
```
## 3. 获取系统变量
如果后端设置了系统变量,可以通过以下方式获取:
### 获取系统变量:
```lua
@gm_getsysvar 变量名
```
### 获取系统自定义变量:
```lua
@gm_getsysvarex 变量名
```
## 4. 前端获取变量值
前端可以通过以下函数获取服务端变量:
```lua
-- 获取服务端元数据值
local serverValue = SL:GetMetaValue("SERVER_VALUE", "变量名")
SL:Print("服务端变量值:", serverValue)
```
## 5. 完整示例
```lua
-- 注册消息接收
SL:RegisterNetMsg(996, function(p1, p2, p3, p4)
-- 处理服务端推送的变量
local myVar1 = p1 -- 第一个int参数
local myVar2 = p2 -- 第二个int参数
local myVar3 = p3 -- 第三个int参数
local myStrVar = p4 -- string参数
-- 更新UI显示
local textNode = GUI:getChildByName(parentNode, "Text_vars")
if not GUI:Win_IsNull(textNode) then
local displayText = string.format("变量1:%d 变量2:%d 变量3:%d 文本:%s",
myVar1, myVar2, myVar3, myStrVar)
GUI:Text_setString(textNode, displayText)
end
SL:Print("已更新变量显示")
end)
-- 请求服务端发送变量(如果需要)
local function requestServerVars()
-- 通过GM命令请求服务端发送消息
-- 具体实现取决于你的服务端逻辑
end
```
## 注意事项:
1. 消息ID需要前后端保持一致
2. 参数类型要匹配(int/string)
3. 注册消息通常在界面初始化时完成
4. 确保服务端有对应的消息发送逻辑
这样就能完整地接收和处理后端推送的变量了。
← 返回问答库