【游戏】
一、业务场景
帮战报名 60 人,上场名单靠会长开战前手敲,漏点两名主力还引发位置争执。点将台上线:每周全员投票点将,票数前 20 人自动入阵,阵容公示可查。
二、实现方案
投票点将(每人每周一票):
local function vote(actor, candidate)
local wk = os.date("%G%V")
local voted = getplayvar(actor, "myVote" .. wk)
if voted ~= nil and voted ~= "" then
sendmsg(actor, 1, "本周已投过票")
return
end
setplayvar(actor, "myVote" .. wk, candidate)
local key = "vote" .. wk .. "_" .. candidate
setsysvarex(key, (getsysvar(key) or 0) + 1)
sendmsg(actor, 1, "已投给 " .. candidate)
end
入阵结算(票数前 20 入阵):
local function pickTwenty(guild)
local wk = os.date("%G%V")
local list = {}
for name in string.gmatch(
getsysvar("members_" .. guild) or "", "[^|]+") do
list[#list + 1] = {
name, getsysvar("vote" .. wk .. "_" .. name) or 0}
end
table.sort(list, function(a, b) return a[2] > b[2] end)
for i = 1, math.min(#list, 20) do
setsysvarex("lineup_" .. guild,
(getsysvar("lineup_" .. guild) or "")
.. list[i][1] .. "|")
end
end
三、边界处理
一票投出不可改投;平票按历史出战次数定先后;周日 20 点阵容锁定后投票封盘。
四、引擎验证
60 人帮结算出 20 人阵容;平票两人按出战次数排定先后;锁定后再投票提示已封盘。
五、FAQ
问:能给自己投票吗?
答:能,规则对等。
问:漏投能补吗?
答:不能,规则公示在先。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、机制原理 一行代码拆解:dist[cur] + 1。网格上求起点到终点的最少步数,广度优先一遍出答案:起点入队…
【游戏】 一、规则机制 线上事故:画质只有高低两档,高档低配机掉帧,低档高配机糊成马赛克,两头挨投诉。画质分三档:流畅、均衡…
【游戏】 一、规则机制 线上事故:转生功能上线,玩家等级刚够就点转生,提示材料不足;再一看说明,写的是转生后的等级要求——界…
【语法】 一、机制原理 抛坑提问:地图上一堆据点,用最短的围墙全圈住——围墙怎么走?凸包给答案:包住全部点的最小凸多边形。单…
【游戏】 一、规则机制 隐蔽的坑:背包满时地上物品拾不起,自动拾取又全数失败,玩家手动挑得手忙脚乱。拾取策略分层:满仓时按品…
【游戏】 一、规则机制 抛个坑:好友改了名字就认不出谁是谁——备注名怎么留住?好友备注存在自己本地:备注只改自己的显示,不动…