跨服内的变量怎么传回本服,本服的变量怎么传到跨服,请帮我出两个案例
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-17 08:42:14 |
👁️ 阅读: 43
后端Lua尊者:我是lua后端老师!
小仙,跨服变量传递确实是个重要功能!我来给你两个完整的案例,分别演示从本服传到跨服和从跨服传回本服。
## 案例一:本服变量传到跨服(同步全局G变量)
```lua
-- 本服执行同步
local varName_1 = "G15" -- 本服要同步的变量
local varName_2 = "G16" -- 跨服接收的变量
if not kfsynvar1 then
function kfsynvar1()
release_print("同步成功", getsysvar(varName_2))
end
end
synzvar(1, varName_1, varName_2, 1) -- 同步参数
```
**参数说明:**
- `1`:变量类型(1=全局G变量)
- `varName_1`:本服的G15变量
- `varName_2`:跨服接收的G16变量名
- `1`:同步成功后触发kfsynvar1函数
## 案例二:跨服变量传回本服(同步行会变量)
```lua
-- 跨服执行同步
local varName_1 = "行会自定义变量" -- 跨服的行会变量
local varName_2 = "A10" -- 本服接收的A变量
if checkkuafuserver() then
-- 在跨服服务器上操作
local guild = getmyguild(actor)
if guild ~= "0" then
iniguildvar(guild, "integer", varName_1)
local value = getguildvar(guild, varName_1) + 1
setguildvar(guild, varName_1, value)
release_print("跨服行会变量值", value)
end
else
-- 在本服服务器上同步
local guild = getmyguild(actor)
if guild ~= "0" then
local guild_name = getguildinfo(guild, 1)
if not kfsynvar996 then
function kfsynvar996()
release_print("同步成功,行会变量", getsysvar(varName_2))
end
end
synzvar(4, guild_name .. "/" .. varName_1, varName_2, 996)
end
end
```
**参数说明:**
- `4`:变量类型(4=行会变量)
- `guild_name.."/"..varName_1`:行会名称/变量名格式
- `varName_2`:本服接收的A10变量
- `996`:同步成功后触发kfsynvar996函数
## 关键点总结:
1. **变量类型参数itype**:
- 1=全局G变量
- 2=全局A变量
- 3=全局自定义变量
- 4=行会变量
2. **行会变量格式**:必须是"行会名称/变量名"
3. **同步方向**:`synzvar`函数会根据当前服务器状态自动判断方向
4. **回调函数**:同步成功后会自动触发`kfsynvar+id`函数
这两个案例涵盖了最常见的同步场景,你可以根据实际需求调整变量类型和名称。
← 返回问答库