行会篝火是行会的每日社交活动:帮主在行会地图点燃篝火,成员围坐篝火 4 格内持续获得经验加成,篝火燃烧 30 分钟。围炉而坐的经验圈是行会凝聚力的日常仪式,篝火的实现是区域 buff 的经典案例。
function QF.LightCampfire(plr)
local guild = GuildMgr.get(plr.guildId)
if not guild or guild.leader ~= plr.id then
return false, "仅帮主可点燃篝火"
end
local key = "campfire_" .. guild.id .. "_" .. os.date("%Y%m%d")
if QF_HasFlag(key) then return false, "今日篝火已点燃" end
QF_SetFlag(key)
local fire = QF_AddGroundZone({
kind = "campfire", map = "guild_map",
x = plr.x, y = plr.y, radius = 4,
owner = guild.id, expireAt = os.time() + 1800,
expBonus = 1.5,
})
QF_BroadcastGuild(guild.id, "篝火已点燃,围坐获得 1.5 倍经验!")
return fire
end
篝火每日一次由帮主点燃,地面区域 4 格半径持续 30 分钟,圈内成员经验加成 1.5 倍。区域 buff 的判定按成员与篝火的实时距离动态计算:走进圈生效,走出圈失效,围坐的仪式感要求玩家真的围坐。
function Campfire.tick(fire)
for _, plr in ipairs(QF_PlayersInArea(fire.map, fire.x, fire.y, fire.radius)) do
if plr.guildId == fire.owner then
plr:AddState("campfire_buff", 5000, { expMul = fire.expBonus })
end
end
end
篝火的 tick 每 5 秒给圈内本会成员刷新 buff,buff 持续 5 秒的短周期设计让离开圈的 buff 断供及时。篝火经验对打怪经验生效,圈内挂机打怪的效率提升是成员参与的实际收益,围坐聊天与练级收益两不误。篝火的火光特效随燃烧时间渐弱,视觉上的余烬暗示活动接近尾声,成员的离场节奏与篝火同步。
篝火期的圈内人数与经验加成的发放总量统计,篝火参与率是行会活跃度的微观指标。
圈外的成员曾经通过登录刷新蹭到 buff 窗口,buff 的发放绑定圈内 tick 的实时校验后失效。帮主不在时的篝火真空期被成员抱怨,长老级可代点的权限下放解决了帮主缺勤的仪式断档。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 三个月的主线剧情跨度太长,老玩家回坑记不住剧情走向。回顾手册把每个章节的关键节点做成时间线卡片:章节名、…
实战应用:用在哪里 每次全量更新包两百兆,玩家在流量下望而却步。差分分发只下发新旧版本的差异块:一兆的全量更新压成八十兆差分…
实战应用:用在哪里 新玩法灰度上线后“观察一下”是最模糊的指令。观察指标清单把观察期变成可执行的检查表:参与率、异常率、资源…
实战应用:用在哪里 行会义卖活动把流拍装备低价义卖,宣称收益全捐新手基金,活动结束后玩家质疑“钱去哪了”。复盘把公益金流向做…
实战应用:用在哪里 技能升级要消耗技能书与金币,升完才发现收益不如预期是常见的挫败。试算面板在升级前模拟展示升级后的属性变化…
实战应用:用在哪里 道士的群体治疗一次奶全队,无衰减的群体治疗会让治疗量溢出成无敌盾。治疗量衰减机制:每多一名目标,单体治疗…