红名玩家潜入城里搅局,赏金猎人需要一份实时通缉名单。通缉系统按红名值排序生成通缉榜,悬赏金随红名值水涨船高,击杀通缉犯的猎人直接领取赏金,城里的正义明码标价。
按PK值降序生成前五通缉榜,悬赏金按红名值阶梯计算。actor是字符串,转对象后读红名状态。
local function buildWanted()
local list = {}
for _, name in ipairs(rednameList()) do
local a = getplayerbyname(name)
if a ~= nil and isplayer(a) then
local pk = tonumber(getplayvar(a, 2, "PKVAL") or "0")
if pk >= 200 then
list[#list + 1] = { name = name, pk = pk }
end
end
end
table.sort(list, function(a, b) return a.pk > b.pk end)
return list
end
local function bountyOf(pk)
return math.min(50000, pk * 100)
end
猎人击杀通缉犯时按名单赏金结算,赏金从系统基金支出,通缉榜实时刷新。actor是字符串,转对象后领赏。
function onWantedKill(actor, victimName)
local player = class(actor)
for _, w in ipairs(buildWanted()) do
if w.name == victimName then
local gold = bountyOf(w.pk)
giveitem(actor, "金币", gold)
sendcentermsg(player:GetName() .. " 完成通缉,领取赏金" .. gold .. "金币!")
return
end
end
end
红名边界、赏金封顶五万、非红名不计入三条路径验证;击杀结算与名单一致性核对。上线后看赏金猎人活跃度与红名玩家的行为变化,赏金过热会让红名玩家沦为刷金工具。
rednameList的来源要与红名判定同源,双口径会出现榜上有人却打不出赏金的尴尬。bountyOf的阶梯封顶五万防巨恶大盗变成移动金库,赏金通胀会吸引职业猎人蹲红名。onWantedKill要与杀人涨PK的触发区分先后:先结算赏金再涨猎人的PK值(击杀红名不涨PK),顺序错了一夜之间猎人全红。通缉榜的刷新频率600秒一次足够,实时刷榜只增加负载不增加正义。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…
实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…
实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…
实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…
实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…
实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…