【游戏功能】
上一版留了条只在连打两场时冒头的隐蔽报错:秋后纹第二次开的清算比第一次翻倍——头一场十二笔账清完没清零,第二场接着记,收摊时两场的账并成一笔大清算。查出来是清算结算只放了钱没撕账本,笔数的旧账跨场结转。修完把撕账写进收摊那一拍,顺手把这套机制的正经写法整理成篇。秋后纹的账:每一刀记一笔,纹期里光记账不出头,收摊那一拍,所有账并成一笔清算砸下去。这篇把整套模块拆开:配置表、记账账本、清算结算、撕账时机、定时器、调试按钮,一段一段照抄能跑。
一、效果演示:笔笔记着,收摊一笔清算
演示场点「记账!」:一圈赭色的纹张开——十二秒记账期。这十二秒里你的每一刀照常掉血之外,怪头顶多一笔记号——一笔、两笔、八笔,账本肉眼可见地厚起来。第十二秒收摊:八笔账并成一笔——"清算-32"的赭金大字轰然砸下,屏幕一震,账本当场撕掉。演示里试两笔账:十二刀不记账是刀刀十二的匀速,记账是前十一刀匀速加收摊一记三十二的重锤——同样的刀数,后者多砸出一整段爆发。秋后纹教的是憋账:不是不报,时候未到。
fx-reckon
二、底层原理:一本流水账加一次总清算
模块的机关是一对搭档。流水账:纹成期的每一刀入一笔——刀照砍、血照掉,账本上只是多一道记号,记号的个数就是清算的本钱。总清算:收摊那一拍笔数乘单价一次付清——四点一笔、八笔三十二,清算走独立的重击通道,砸完当场撕账。和存刀纹那种"只存最大"的分野在"秋后记的是流水不是峰值":存刀挑最重的一刀反复回放,秋后是每一刀哪怕最轻的都算数——细水长流的打法在这里能攒出最大的清算。
清算为什么在收摊而不是随时可取?随时可取的版本账本变成了活期存款,玩家砍三笔就取一次,清算退化成每四刀多的那一下;锁死在收摊才有"憋到最后一拍"的戏剧性——清算的大小和你的耐心成正比,纹期越长憋得越足。
三、核心代码:完整模块(上·骨架)
-- @file Reckon.lua
-- 秋后纹 —— 笔笔记着,收摊一笔清算
local Reckon = {}
local CONST = {
CREST_LIFE = 12.0,
CREST_CD = 5.0,
PRICE_PER = 4,
COLOR_RECKON = "#a86848",
COLOR_DEEP = "#482418",
COLOR_GHOST = "#f0c8a8",
ZORDER_RECKON = 133,
ZORDER_FX = 135,
AUTOINC_BASE = 1099000,
}
local _crestT = 0
local _cdLeft = 0
local _ticks = 0
local _crestFx = nil
local _scheduler = nil
local _autoInc = 0
local function GenID(prefix)
_autoInc = _autoInc + 1
return string.format("%s_%d", prefix or "RCN",
CONST.AUTOINC_BASE + _autoInc)
end
local function GetActorPos(id)
if not id then return nil end
local x = SL:GetValue("ACTOR_POSITION_X", id)
local y = SL:GetValue("ACTOR_POSITION_Y", id)
if not x or not y then return nil end
return { x = x, y = y }
end
local function SafeRemove(node)
if node and not GUI:Widget_IsNull(node) then
GUI:removeFromParent(node)
end
end
local function ShowTip(msg)
if msg and msg ~= "" then SL:ShowSystemTips(msg) end
end
function Reckon.Ticks()
return _ticks
end
四、核心代码:完整模块(下·入账与清算)
-- 入账:纹成期的每一刀多记一笔
SL:RegisterLUAEvent(LUA_EVENT_MELEE_HIT, "RCN_Log", function(tid)
if _crestT <= 0 or not tid then return 0 end
_ticks = _ticks + 1
SL:TipAbove(tid, "记一笔")
return 0
end)
-- 收摊清算:笔数乘单价一次付清,付完当场撕账
local function Settle()
local fin = _ticks * CONST.PRICE_PER
local tid = SL:GetValue("MARK_TARGET_ID")
if fin > 0 and tid then
SL:ActorHurt(tid, fin)
SL:TipAbove(tid, "清算-" .. fin)
SL:PlaySettleFx(tid)
end
_ticks = 0
SafeRemove(_crestFx)
_crestFx = nil
if fin > 0 then
ShowTip("收摊了——账并成一笔清算")
else
ShowTip("账本空着收摊了")
end
return fin
end
function Reckon.Cast()
if _cdLeft > 0 or _crestT > 0 then return end
local myID = SL:GetValue("USER_ID")
_cdLeft = CONST.CREST_CD
_crestT = CONST.CREST_LIFE
_ticks = 0
SafeRemove(_crestFx)
_crestFx = GUI:Layout_Create(GUI:Attach_SceneF(),
GenID("Book"), 0, 0, 0, 0, false)
GUI:setLocalZOrder(_crestFx, CONST.ZORDER_RECKON)
SL:PlayBookUpFx(myID)
ShowTip("账本开了——每一刀记一笔,收摊一起算")
end
-- 定时器:纹成倒计时驱动收摊
if not _scheduler then
_scheduler = SL:Schedule(function(dt)
_cdLeft = math.max(0, _cdLeft - dt)
if _crestT > 0 then
_crestT = _crestT - dt
local myID = SL:GetValue("USER_ID")
local mp = GetActorPos(myID)
if _crestFx and mp then
GUI:setPosition(_crestFx, mp.x, mp.y - 62)
end
if _crestT <= 0 then
_crestT = 0
Settle()
end
end
end, 0.02)
end
SL:ScheduleOnce(function()
SL:BindDebugButton("记账", function()
Reckon.Cast()
end)
ShowTip("技能已加载: 秋后纹 (调试按钮触发)")
end, 1.0)
function Reckon.Unload()
if _scheduler then SL:Unschedule(_scheduler) end
SL:UnregisterLUAEvent(LUA_EVENT_MELEE_HIT, "RCN_Log")
SafeRemove(_crestFx)
_crestT = 0
_ticks = 0
end
return Reckon
五、机制问答
问:清算的那一刀能暴击吗?
答:能——清算走独立的重击通道,暴击照掷,八笔账叠暴击的收摊是这套纹的年关。
问:怪在收摊前死了账怎么办?
答:账随尸灭——宿主一倒账本作废,清算没有尸体可砸,这也是秋后纹要掐着血线下账的原因。
问:记的账和掉的血是两笔吗?
答:是——每刀的掉血照常结算,记号只是额外的账,账本不影响平常的输出,只在收摊时兑现。
问:中途换怪账跟人走吗?
答:不跟——账本认场不认怪,换怪后新怪的刀接着记在同一本账上,收摊砸的是现任目标。
问:清算被闪避了怎么办?
答:照砸——清算认收摊不认命中掷骰,这一拍是结账不是打架,闪避格挡都拦不住。
六、调参指南与商业服怎么用
第四笔是每笔的单价:四点一笔对八笔的常态是三十二的总清算——单价太低憋一整场不如多砍一刀,太高清算成了终结技,四点是"值得等但不值得赌命"的位置。第三笔是账本的容量:十二秒约八笔是清算的深度——账本太厚清算爆表破坏难度曲线,太薄收摊那一拍没分量,八笔上下刚好是"憋得住也看得见"。第二笔是撕账的时机:付清当场撕是铁律——那场跨场翻倍的报错就是没撕账,账本的生命周期必须和纹期严格等长。第一笔是记号的演出:怪头顶的笔画一道道多起来——账本的厚度就是期待的厚度,看不见记号的清算没有年味。常见坑三个:跨场结转的旧账报错;清算砸空后账本没撕下一场双倍;记号在怪被击退后飘到了半空没跟着走。
商业服里秋后纹是"账房派"的年关:别人争朝夕,他憋年关——商城里记号的样式做成品级,粉笔记号、朱笔记号、金算筹,那一道道画在怪头顶的笔画就是账房派的账本。运营落地还有两笔:一段是憋账教学——教一句"纹期里别收,收摊那一拍才是正菜",流派第一课是耐性;一段是年关榜——按单次清算的最高值排名,憋得最狠的人有碑。变体做成利滚利:账本每五笔利息加一笔——从死账到活息,账房派的算盘越打越响。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。
写完留一句给做结算系的同学:秋后纹卖的是"账留着年关一起算"——那一张画满笔画的账本和收摊时砸下的大字,是把输出曲线从匀速改成压轴的第一笔年终奖。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
接手二开的兄弟几乎都撞过同一堵墙:玩家嫌走路"一格一格像机器人",老板拍板要"丝滑移动",改服务端速度?不对。改客户端动画帧…
【游戏功能】 先看一个熟场面:法师的火球特效挂在怪的脚后跟上,明明技能说明写着"焚烧其面",火星子却在地上打滚。群里有位策划…
【游戏功能】 上周有个开服的老板在群里发了一段录屏:他的战士明明刀刀都砍中了,观众却一片"这刀挥空了吧"。他原话是"判定日志…
【游戏功能】 先说结论放在开头:怪的皮一会儿绿一会儿红,不是美术换了几套贴图,是染色系统在怪身上盖了一层"色镜"。开服群里有…
前两天群里有个架设的朋友问了个需求:中毒的人要变绿、每两秒掉一次血、毒还能叠五层,问是不是要在服务端把整套状态机重写。我说你…
【游戏功能】 先抛一个坑:五口钟一模一样大,为什么一口比一口疼?先后次序动不得吗?倒过来敲会怎样?这篇把编钟纹整套写法拆开:…