【游戏功能】
为什么有些玩家越打越软?前二十刀刀刀十点,二十刀之后刀刀四点——装备没变,变的是气。匀气把这件事做成了明账:五口气,刀刀吃一口,气见底的刀软成四点;歇上两秒不动手回一口,气匀满了刀才回魂。这篇把整套模块拆开:配置表、气息表、屏息入口、定时器、调试按钮,一段一段照抄能跑。
一、效果演示:刀刀吃气,气尽刀软
演示场玩家头顶五枚青色的气珠,满的。开打:每一刀灭一颗——五刀打完,气珠全空,第六刀软绵的四点灰字蹦出来,跳得比平砍还矮。停手两秒:气珠一颗颗亮回来,第五颗亮的瞬间刀找回十点的准头。点「屏息!」:五秒里气息不耗,刀刀足两——屏息是这场架里唯一的回魂药,掐着用。演示里试两种节奏:匀着打两刀歇一拍,和一口气抡完五刀再歇——同样一分钟,匀气的人刀刀足两,抡完就软的人一半时间在喘。匀气玩的是呼吸法:快,是匀出来的快。
fx-breathmeter
二、底层原理:一张气息表加一段回气规则
模块的机关是一对搭档。气息表:五口气的存量,每一刀出膛扣一口——扣气认的是出刀不认命中,劈空的刀一样喘,这是气息账的铁面。回气规则:出刀后的两秒算喘息期,喘息期每一点五秒回一口——回气认的是"收手"不是"站桩",边走边歇照样回。和怒气那类打人涨气的分野在"方向":怒气越打越满,气息越打越空——一个是进攻的燃料,一个是体力的存款,同样挂在出手上,账本的方向完全相反。
气尽为什么只软不减段?气尽的刀如果连出手资格都没了,玩家会被迫纯站桩,游戏变成呼吸练习器;软成四点保住出手权,挨打还能还手,只是还的是软刀——代价明确,资格不没收。
三、核心代码:完整模块(上·骨架)
-- @file BreathMeter.lua
-- 匀气 —— 刀刀要吃气,歇两口气才回满
local BreathMeter = {}
local CONST = {
BREATH_MAX = 5,
REGEN_IDLE = 2.0,
REGEN_GAP = 1.5,
TIRED_DMG = 4,
BASE_DMG = 10,
COLOR_BREATH = "#78b8a0",
COLOR_DEEP = "#1e4a3e",
COLOR_GHOST = "#c8ece0",
ZORDER_BREATH = 133,
ZORDER_FX = 135,
AUTOINC_BASE = 1022000,
}
local _breath = CONST.BREATH_MAX
local _idleT = 0
local _regenT = 0
local _scheduler = nil
local _autoInc = 0
local function GenID(prefix)
_autoInc = _autoInc + 1
return string.format("%s_%d", prefix or "BRT",
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 ShowTip(msg)
if msg and msg ~= "" then SL:ShowSystemTips(msg) end
end
local function SpendBreath()
if _breath >= 1 then
_breath = _breath - 1
_idleT = 0
return CONST.BASE_DMG
end
_idleT = 0
return CONST.TIRED_DMG
end
function BreathMeter.Hold()
if not _on then
_on = true
_holdT = 5.0
SL:PlayHoldBreathFx(SL:GetValue("USER_ID"))
SL:TipAboveMe("屏息")
ShowTip("屏息五秒——气息不耗,刀刀足两")
else
_on = false
ShowTip("屏息结束——正常呼吸")
end
end
四、核心代码:完整模块(下·定时器与软刀结算)
-- 出刀出口:扣气定刀
SL:RegisterLUAEvent(LUA_EVENT_MELEE_HIT, "BRT_Out", function(tid)
local out = SpendBreath()
if out < CONST.BASE_DMG then
SL:TipAboveMe("气尽")
end
return out - (SL:GetValue("HIT_DAMAGE", tid) or CONST.BASE_DMG)
end)
-- 定时器:喘息回气与屏息倒计时
if not _scheduler then
_scheduler = SL:Schedule(function(dt)
if _on then
_holdT = _holdT - dt
if _holdT <= 0 then
_on = false
ShowTip("屏息结束——正常呼吸")
end
return
end
if _breath < CONST.BREATH_MAX then
_idleT = _idleT + dt
if _idleT >= CONST.REGEN_IDLE then
_regenT = _regenT + dt
if _regenT >= CONST.REGEN_GAP then
_regenT = 0
_breath = _breath + 1
SL:PlayRegenFx(SL:GetValue("USER_ID"))
if _breath >= CONST.BREATH_MAX then
ShowTip("气匀满了——下一刀足两")
end
end
end
end
end, 0.02)
end
SL:ScheduleOnce(function()
SL:BindDebugButton("屏息", function()
BreathMeter.Hold()
end)
ShowTip("技能已加载: 匀气 (调试按钮触发)")
end, 1.0)
function BreathMeter.Unload()
if _scheduler then SL:Unschedule(_scheduler) end
SL:UnregisterLUAEvent(LUA_EVENT_MELEE_HIT, "BRT_Out")
_breath = CONST.BREATH_MAX
_on = false
end
return BreathMeter
五、机制问答
问:劈空的刀也吃气吗?
答:吃——气息认出刀不认命中,空刀一样喘,这是气息账的铁面,也是逼玩家练准头的鞭子。
问:屏息期能无限打吗?
答:屏息只保五秒——五秒里不耗气,五秒外照常扣,屏息是缓一口气不是免死金牌。
问:挨打会乱气吗?
答:会——被打断出刀节奏,喘息期重计,气的回法跟着乱,控制系克匀气的根子就在这。
问:气尽的四点能暴击吗?
答:能——软刀走正常结算,暴击的四点软刀翻八点,软是基础弱,不是封了上限。
问:回气期出手会打断回气吗?
答:出刀当场扣气重计——回气和扣气不能同时进行,一出手喘息期推倒重来,这条是匀气节奏的锚。
问:匀气和摘珠能同开吗?
答:能——气管自己的刀,珠管它的奶,两套机制一根线都不搭,同开的时候先数自己的气再数它的珠。
六、调参指南与商业服怎么用
第四笔是回息的松紧:两秒喘息期加一点五秒一口是"五口全空要九秒半回满"的节奏——回太快气息形同虚设,太慢玩家全程在喘,游戏变成憋气大赛。第三笔是软刀的底线:四点是"还得了手、占不了便宜"的保底——软到一的版本气尽期纯坐牢,软到八的版本气不看也罢,四点刚好卡在"心疼但不绝望"。第二笔是屏息的价值:五秒免耗是唯一回魂的窗口——屏息冷却八秒对五秒的时长有三秒真空,真空期里气息的账照旧。第一笔是气珠的呼吸感:满气的珠微微起伏、空气的珠瘪着——气珠的形态就是体力的表情,玩家瞥一眼就知道自己还能抡几刀。常见坑三个:劈空刀不吃气,空刀白打无限连;回气期出刀只扣气不清喘息期,回气越打越快;屏息的免耗漏了软刀判定,气尽加屏息出负数。
商业服里匀气是"内家流派"的入门功:别人练刀他练喘——商城里气珠的样式做成品级,青珠、玉珠、金丹,头顶五枚起伏的气珠就是内家玩家的戒尺。运营落地还有两笔:一段是呼吸教学——教学关第一课不教打,教"会歇的人才有连招",一句话立住流派的门规;一段是长明榜——按全程气不尽的最长战斗排名,一口好气值一场架。变体做成吐纳:气满时再歇两秒攒出半口气——五口半的气打出六口的刀,会调息的人永远比说明书多一口气。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。
匀气的口诀也只有八个字:出手有度,收手有息。
写完留一句给做资源系的同学:匀气卖的是"快是匀出来的"——那五枚一格格灭掉的青珠,是把莽劲折成节奏、把节奏折成刀锋的算术。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 新刷出来的怪身上为什么有金印?胎记给的答案是:每一只新生的怪都带着一枚三秒的金印胎记——三秒里打它,刀刀二十;…
【游戏功能】 prayT = 2.0 —— 念经的两秒,就是超度的全部门槛:对着一具尸体念满两秒,灰烬升起,血回二十,下一刀…
【游戏功能】 认领 = true —— 就这一行,把"打谁"变成了"认谁":第一刀落在谁身上,一封朱印就贴在谁的头顶——认过…
【游戏功能】 怪倒下的地方为什么值得多站一会儿?遗泽给了个温柔的说法:它倒下的那一片地会留下十二秒的泽环——站在环里满三秒,…
【游戏功能】 打死它为什么它又站起来了?截魂揭开底牌:这怪死后魂不散——一缕魂从尸体里飘出来,两秒半飞回右侧的石像,魂到石像…
【游戏功能】 新刷出来的怪为什么头三刀不掉血?蜕壳给了答案:它出生时带着三页硬壳,壳页一页页替它挨刀——三刀破壳,壳破的那一…