QF链式写法
🤖 回答引擎: 热血江湖Lua |
🕒 时间: 2026-06-17 18:09:44 |
👁️ 阅读: 11
QF链式写法在服务端和客户端通信中,可以通过消息注册和发送来实现。以下是一个完整的示例:
**服务端QF接收消息:**
```lua
function handlerequest(actor, msgID, param1, param2, param3, str)
print(msgID, param1, param2, param3, str)
end
```
**客户端发送消息:**
```lua
local msgID = 100
local paramInt1 = 1
local paramInt2 = 2
local paramInt3 = 3
local paramStr = "[From Client]"
SL:SendNetMsg(msgID, paramInt1, paramInt2, paramInt3, paramStr)
```
**服务端发送消息给客户端:**
使用 `sendmymsg` 函数,支持3个int参数和1个字符串参数。
```lua
local msgID = 200
local paramInt1 = 1
local paramInt2 = 2
local paramInt3 = 3
local paramStr = "[From Server]"
sendmymsg(actor, msgID, paramInt1, paramInt2, paramInt3, paramStr)
```
**客户端注册接收消息:**
在 `OnGameStateWorld` 之后注册消息回调。
```lua
local function networkCB(msgID, p1, p2, p3, str)
SL:Print("客户端接收消息", msgID, p1, p2, p3, str)
end
SL:RegisterNetMsg(200, networkCB)
```
**应用示例:**
1. 客户端点击按钮发送消息(例如消息号90020101):
```lua
function SkillPracticePanel:OnClickPlan1(context)
SL:SendNetMsg(90020101, 1, 1, nil, nil)
end
```
2. 服务端收到消息后,可以触发相应逻辑(如弹出确认框),并再次发送消息给客户端。
**跨服相关链式触发:**
- 本服通知跨服触发QF:使用 `bfbackcall(QFID, UID, string1, string2)`,跨服端对应函数为 `g_bfsyscall[QFID]` 或 `bfsyscall[QFID]`。
- 跨服通知本服触发QF:使用 `kfbackcall(QFID, UID, string1, string2)`,本服端对应函数为 `g_kfsyscall[QFID]` 或 `kfsyscall[QFID]`。
**其他相关函数:**
- 检测当前服务器是否是跨服:`iskuafuserver()`
- 检测跨服连接状态:`kuafuconnected()`
- 进入跨服触发:定义 `function kflogin(...)`;离开跨服触发:定义 `function kfend(...)`。
通过以上消息发送、接收和跨服回调机制,可以实现QF链式逻辑处理。
← 返回问答库