多周期声望(每个赛季独立声望加一个总声望)的累计计数,学员只维护赛季声望忘了同步更新总声望——赛季清零后总声望也跟着丢了。总声望是永久累计的计数器,赛季声望的任何变动都要同步更新它。错误场景:
setplayvar(actor, "HUMAN", "SeasonRep", seasonRep, 1)
只写了赛季声望,没有同步增加总声望。
赛季声望变动时同步累加总声望,两者永远保持一致。规范写法。示例代码如下:
local function addRep(actor, delta)
actor = getplayerbyname(actor)
local season = tonumber(getplayvar(actor, "HUMAN", "SeasonRep")) or 0
local total = tonumber(getplayvar(actor, "HUMAN", "TotalRep")) or 0
setplayvar(actor, "HUMAN", "SeasonRep", season + delta, 1)
setplayvar(actor, "HUMAN", "TotalRep", total + delta, 1)
end
addRep 同时更新赛季声望与总声望,赛季清零只清 SeasonRep 不动 TotalRep。示例代码如下:
addRep(actor, 100)
加 100 声望后两个变量同步增加 100。
三步验证:addRep(100) 后 SeasonRep 与 TotalRep 各增加 100;赛季清零后 TotalRep 不变;多次 addRep 后 TotalRep 等于所有增量之和。
多周期声望的读取函数根据用途选择变量:赛季排行榜读 SeasonRep,跨服身份解锁读 TotalRep——两个变量服务不同场景。示例代码如下:
local function getRepFor(actor, purpose)
local actor = getplayerbyname(actor)
if purpose == "season" then
return getplayvar(actor, "HUMAN", "SeasonRep")
end
return getplayvar(actor, "HUMAN", "TotalRep")
end
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景:if dist 20 then rate = 0.5 end —— 距离折损的全部骨架。组队打宝有人…
【游戏】 一、业务场景:STOCK = STOCK - 1 —— 全服限量抢购的核心一行。限量 1000 件的活动因不验余量…
【语法】 一、抛坑提问:按"金币除以等级"的复合值排序,比较函数里每次都现算除法,n log n 次重复计算——装饰排序先把…
【语法】 一、抛坑提问:背包格子列表整体后移 2 格,末尾 2 件绕回头部,逐个搬移要写嵌套循环——三步反转法三次交换完成,…
【游戏】 一、业务场景:PROGRESS = 0 —— 任务重接的全部规则。讨伐祖玛教主 30 只的任务卡在 29 只想换路…
【语法】 一、隐蔽陷阱:嵌套盒子求总金币用递归,盒子层数不可控时调用栈随之失控;把递归改成显式栈循环,层数与内存占用从失控变…