CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战游戏功能996引擎

灼心:点燃它的心,出招即自损

2026-10-01 10:48 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战游戏功能996引擎

【游戏功能】

灼烧为什么总烧在皮肤上?灼心偏要烧进心里:心被灼了六秒——六秒里怪每出一招就自损八,出得越多损得越多。这篇的核心代码照引擎技能脚本的全规格写:配置表、灼心构件、出招自损回执、定时器、调试按钮。

一、效果演示:心被灼了,招变成刀

演示场点「灼心!」:怪的胸口亮起一圈红紫色的灼心环——头顶挂出"灼心 六秒"。六秒里怪每出一招,招的结算出口顺手给它自己扣八:金字"腑损-8"跟着招的落地一起蹦——招打你了也打它了。六秒灼心散了再打就是灰色的普攻十——时机不对一劲只值一次普攻。演示里先空地打一羽看灰字的落差,再掐着出招打一羽看六秒的腑账——同一下劲两种身价。

demo
 fx-burnheart

二、底层原理:一个出招时机判定加一份自损回执

模块的机关是一对搭档。时机判定:怪的出招态是劲的"入心窗口"——劲落在出招里才挂灼心,落在空地只算普攻。自损回执:灼心存的不是伤害是"反射率"——怪每出一招,招的结算出口顺手给它自己扣八。和打断的分野:打断让招消失,灼心让招变账——怪的大招还是能拍你十二,可它每拍一次自己也掉八。

出招时机的判定窗口值得细说:怪的出招态从抬手到落地有一段前摇——前摇里点燃的灼心挂在怪的出招结算出口上,落地那一下自损八跟着招一起结;如果等招落地才点燃,这一招已经结完了,自损要等下一招——掐前摇和掐落地的差距就是一招的账,高玩和萌新的灼心输出差三成全在这零点几秒里。所以灼心的技能说明栏里最值钱的一句话是"等它抬手再点",时机教学做进文案,比做进数值便宜得多。

三、核心代码:完整模块(上·骨架)

lua
-- @file BurnHeart.lua
-- 灼心 —— 点燃它的心,疼的时候也伤自己

local BurnHeart = {}

local CONST = {
    HEART_LIFE    = 6.0,
    HEART_CD      = 6.0,
    SELF_DMG      = 8,

    COLOR_HEART   = "#e8608a",
    COLOR_DEEP    = "#6b1a3a",
    COLOR_GHOST   = "#ffc0d0",

    ZORDER_HEART  = 131,
    ZORDER_FX     = 135,
    AUTOINC_BASE  = 984000,
}

local _heartT    = 0
local _hexTick   = 0
local _cdLeft    = 0
local _scheduler = nil
local _autoInc   = 0

local function GenID(prefix)
    _autoInc = _autoInc + 1
    return string.format("%s_%d", prefix or "BHN",
        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

local function CreateHeartFx()
    local node = GUI:Layout_Create(GUI:Attach_SceneF(),
        GenID("Hrt"), 0, 0, 0, 0, false)
    GUI:setLocalZOrder(node, CONST.ZORDER_HEART)
    for i = 1, 24 do
        local a1 = (i - 1) / 24 * 6.28
        local a2 = i / 24 * 6.28
        GUI:DrawLine_Create(node, string.format("h_%d", i), 0, 0, 2,
            m_cos(a1) * 30, m_sin(a1) * 52,
            m_cos(a2) * 30, m_sin(a2) * 52,
            CONST.COLOR_HEART, 200)
    end
    return node
end

四、核心代码:完整模块(下·定时器与出招自损)

lua
-- 灼心入口
function BurnHeart.Cast()
    if _cdLeft > 0 or _heartT > 0 then return end
    _cdLeft = CONST.HEART_CD
    _heartT = CONST.HEART_LIFE
    _hexTick = 0
    CreateHeartFx()
    ShowTip("心灼了——六秒里它一出手就自损八")
end

-- 出招自损回执
local function OnMonsterCast()
    if _heartT <= 0 then return end
    SL:ActorHurt(SL:GetValue("MARK_TARGET_ID"), CONST.SELF_DMG)
    SL:TipAbove(SL:GetValue("MARK_TARGET_ID"), "腑损-8")
end

-- 定时器:灼心余时与出招时机
if not _scheduler then
    _scheduler = SL:Schedule(function(dt)
        _cdLeft = math.max(0, _cdLeft - dt)
        if _heartT > 0 then
            _heartT = _heartT - dt
            if _heartT <= 0 then
                ShowTip("心灼散了——下一发跟上")
            end
        end
    end, 0.02)
end

SL:RegisterLUAEvent(LUA_EVENT_MONSTER_CAST, "BHN_Cast", function()
    if _heartT > 0 then
        OnMonsterCast()
    end
end)

SL:ScheduleOnce(function()
    ShowTip("技能已加载: 灼心 (调试按钮触发)")
end, 1.0)

return BurnHeart

五、机制问答:三个高频追问

问:灼心期怪被控制了还自损吗?

答:不自损——控制态的怪没有出招结算,自损跟着出招走,晕住的怪六秒白灼——灼心的窗口和控制的窗口天然互斥,控场流派要自己做取舍。

问:自损的八点能暴击吗?

答:不能——反射率是固定值,不参与暴击掷骰,账目干净玩家才算得清,算得清才愿意练。

问:怪的血条见底了灼心还挂吗?

答:不挂——灼心对残血怪自动失准,斩杀线以下它自己会倒,灼心不当补刀技,各司其职。

问:两个灼心能叠吗?

答:不能——同一个怪只挂一份灼心,重复点燃只刷新时长,叠层的版本六秒烧穿一切,单份的账才可控。

六、调参指南与商业服怎么用

调参三笔账。自损八对出招周期两点二秒是十秒四招三十二的反射产值——产值对玩家同期输出压在三成以内,灼心是惩罚的回执不是第二输出。灼心六秒对冷却六秒是无缝循环——无缝的版本灼心变成常驻,冷却八秒留两秒真空。出招周期两秒二对灼心六秒是三招的窗口——三招的自损够疼玩家才愿意主动引怪出招。常见坑三个:出招自损的判定没查灼心标记,灼心散了自损还在跳;灼心期的自损和普攻伤害混在一起算,分不清哪笔是灼心的;灼心的视觉只有头顶文字没有环,存在感稀。

第四笔是腑损数字的节流:每招最多蹦一个腑损数字——连招密集的怪一秒三招,三个数字叠着蹦反而看不清总账,一招一账就是可读性的底线。

商业服里灼心是"控场流派"的第二条命:引怪出招的打法第一次被自损奖励——控场玩家的操作从走位长到了引招。商城里灼心的颜色做成品级——红心、紫心、金心,灼心的环色就是控场流派的身份标。变体做成灼心传染:被灼心标记的怪死亡时把灼心传给旁边的怪——传染链的深度从灼羽长到了灼心。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。

运营落地还有两笔:一段是引招教学——灼心的正确用法要在技能说明里配一句"等它抬手再点",说明栏的一行字省掉客服的一半解释量;一段是灼心的战绩统计——面板上单开一栏"腑损总账",控场玩家看到自己一赛季烧掉的自损乘以几百招,续费的决定就做完了。

另外赛季任务里排一环引招五十次——逼着玩家亲手掐一次时机,掐过一次的留存就是控场流派的种子用户。

写完留一句给做灼心系的同学:灼心卖的是"招变成刀"——它出的每一招都是双刃剑,灼心只是把双刃剑的那个双字给了你。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

进阶实战游戏功能

逆时步:三秒前站在哪,一步回到哪

【游戏功能】 排查一个报错走到深夜:玩家申诉"人物瞬移",录像里人也确实是凭空跳了半张地图——坐标链上多出来一次没有来由的写…

2026-10-01 11:23 996 技术组
进阶实战游戏功能

蛮牛劲:一勾锁它拖下马,硬生生拽到跟前

【游戏功能】 后山出过一单笑话:一个远程怪卡在断桥那头射了全队十分钟,走不过去、勾不着、弹道够不到——最后是位玩钩子的老哥一…

2026-10-01 11:23 996 技术组
进阶实战游戏功能

迟滞咒:咒它出手慢一倍,节奏全乱招招落空

【游戏功能】 M.at = M.at 2 —— 就这一行,让一只盯了三天的速攻怪从"碰不得"变成"随便打"。怪的可怕从来不在…

2026-10-01 11:22 996 技术组
进阶实战游戏功能

叠劲:连打同门一刀重一刀,断了就得从头数

【游戏功能】 为什么连着打同一个怪,一刀会比一刀疼?叠劲的答案是:劲是攒出来的——起手八点,每接一刀加四点,叠到六层刀刀二十…

2026-10-01 11:22 996 技术组
进阶实战游戏功能

破势令:一处破绽挂六秒,谁打它都更疼

【游戏功能】 群里报过一个怪现象:同一位玩家打同一个怪,有时一刀十三有时一刀十,面板攻击力没变过——排查了半天才发现,十三的…

2026-10-01 11:22 996 技术组
进阶实战游戏功能

血债簿:五笔血账一次清算,欠下的刀刀要还

【游戏功能】 线上出过一单事故:同战力两个人对砍,先手的那位反而输了——事后翻账才发现,赢家的每一刀都比面板数值高出一截,高…

2026-10-01 11:22 996 技术组