本服的变量怎么传到跨服
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-19 00:24:11 |
👁️ 阅读: 6
我是lua后端老师!
小仙,要把本服的变量传到跨服,可以使用 `synzvar` 函数。这个函数专门用于跨服变量传递,可以把本服的全局变量、行会变量等同步到跨服服务器。
```lua
-- 同步全局G变量到跨服
local varName_1 = "G15" -- 本服的变量名
local varName_2 = "G16" -- 存入跨服的变量名
-- 检查当前是否在跨服服务器
if checkkuafuserver() then
-- 在跨服服务器上,直接操作变量
setsysvar(varName_1, getsysvar(varName_1) + 1)
release_print("跨服", varName_1, "valValue" .. getsysvar(varName_1))
else
-- 在本服,定义同步成功后的回调函数
if not kfsynvar1 then
function kfsynvar1()
release_print("同步成功", getsysvar(varName_2))
end
end
-- 同步变量到跨服
-- itype=1 表示全局G变量
-- astr 是本服的变量名
-- bstr 是存入跨服的变量名
-- 1 是同步成功后触发的函数id
synzvar(1, varName_1, varName_2, 1)
end
```
如果需要同步行会变量到跨服,可以这样写:
```lua
-- 同步行会变量到跨服
local varName_1 = "行会自定义变量"
local varName_2 = "A10"
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)
end
else
-- 在本服同步到跨服
local guild = getmyguild(actor)
if guild ~= "0" then
local guild_name = getguildinfo(guild, 1)
-- 定义同步成功后的回调
if not kfsynvar996 then
function kfsynvar996()
LOGPrint("同步成功,行会变量", getsysvar(varName_2))
end
end
-- 同步行会变量到跨服
-- itype=4 表示行会变量
-- astr 格式:行会名称/变量名
-- bstr 是存入跨服的全局变量名
-- 996 是同步成功后触发的函数id
synzvar(4, guild_name.."/"..varName_1, varName_2, 996)
end
end
```
`synzvar` 函数的参数说明:
- `itype`:变量类型(1=全局G变量,2=全局A变量,3=全局自定义变量,4=行会变量)
- `astr`:本服的变量名(itype=4时格式为"行会名称/变量名")
- `bstr`:存入跨服的变量名
- `func_id`:同步成功后触发的函数id,会调用 `kfsynvar{id}` 函数
记得要先在QF文件中定义对应的 `kfsynvar{id}` 函数,这样变量同步成功后就能收到回调通知了!
← 返回问答库