节日活动的气氛担当是烟花:土城放一支烟花筒,全屏绽放、全服播报、周边玩家共享增益——烟花的道具化让庆祝变成玩家的主动行为。烟花的实现要点是燃放的特效分发、庆祝的增益半径与道具的经济节奏。
---烟花筒的使用:燃放与庆祝增益
function Firework.lit(actor)
local player = class(actor)
if not player then return false end
if not checkitemw(actor, "烟花筒", 1) then
sendmsg(actor, 1, "需要 1 支烟花筒")
return false
end
takeitem(actor, "烟花筒", 1, 0, "燃放烟花")
-- 周围 10 格玩家获得 30 分钟的庆祝增益
for _, watcher in pairs(View.of(actor)) do
addbuff(watcher, 23001, 1800, 1, actor, { [1] = 30 })
playsound(watcher, 2050)
end
sendmsg(nil, 1, actor .. " 在" ..
Map.nameOf(actor.mapId) .. "燃放了节日烟花!")
return true
end
燃放的结算三段:道具的扣除、增益的半径发放(10 格内的玩家获得 30 分钟的攻击加 30 点)、全服的播报宣告。playsound 对视野内的玩家同步音效,庆祝的声光由视野内的每一个人共享——烟花的社交属性在于分享,增益给的是半径内的路人而不是独自的施放者。
---节日期间的掉落加成:与烟花联动
setontimerex(108, 60)
function Firework.festival()
local count = Firework.litToday()
-- 全服燃放满 100 支触发 2 倍掉落 1 小时
if count >= 100 and not Firework.boostOn then
Firework.boostOn = true
setsysvar("FestivalDrop", 2)
sendmsg(nil, 1, "全服燃放满 100 支,掉落翻倍 1 小时!")
Firework.expireAt = os.time() + 3600
end
end
节日的节奏靠全服的目标聚合:燃放满 100 支触发全服的掉落翻倍 1 小时——个人的庆祝汇聚成全服的福利,烟花的消耗与收益在节日的框架里互相成全。setsysvar 的全局变量承载掉落的倍率,掉落结算读全局的倍率值,活动结束的变量复位由 expires 时刻的检查兜底。烟花筒的获取走节日任务与商城双渠道,节日的参与感与节日的消费并行。
烟花筒的消耗量按日统计与节日的在线峰值对照,燃放的增益发放数与道具数的一致性核对;全服目标的触发次数监控,同一时段重复触发的重置逻辑检验。
增益的发放曾经给全服而不是半径,一次燃放全服 30 点攻击的通胀惊人,半径的过滤补上。翻倍的触发曾经可叠加,两波 100 支把掉率推到 4 倍,触发期的互斥标记修复。播报曾经带玩家的坐标,全服的公告泄露了打宝的位置,坐标从文案里移除。
烟花筒的投放随节日日历排期,平日不投放保持稀缺。增益的数值与节日的档期匹配:春节的力度大于元宵。燃放的特效按地图的负载降级,千人同屏的特效减半保证帧率。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士的烈火剑法一击熄火后要等八秒冷却,连招断档感强烈。疾风烈火斩在烈火剑法命中后给一次连击窗口:三秒内再…
实战应用:用在哪里 阵营对抗打到中期容易疲软:打赢没有额外好处,输掉也没有代价。阵营声望体系给阵营战装上荣誉刻度:个人与阵营…
实战应用:用在哪里 拿下沙巴克之后呢?城主除了名字挂在城墙上,对城市毫无影响。城主施政玩法让占领变成治理:城主每周获得市政令…
实战应用:用在哪里 主线路光缆被挖断的深夜,全服掉线 20 分钟,玩家以为游戏倒闭。备用线路方案给接入层配第二条出口:主线路…
实战应用:用在哪里 行会官员由帮主任命的老模式弊端明显:任人唯亲、能上不能下。行会选举接口把官员换届做成投票制:每两个月一次…
实战应用:用在哪里 烈火剑法的伤害加成、冷却时间、下一级提升,全靠玩家记忆或去官网查。技能说明悬浮卡片在鼠标悬停技能图标零点…