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

茧缚:茧缚困住它,阻止治疗和加速

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

【游戏功能】

茧缚把它裹起来,十秒不能被治疗——茧缚的全部机关就这一条:困住它,同时封掉它的奶路。被打的伤好不了,增益也挂不上——茧缚期的怪就是一个只能挨打不能回血的活靶子。这篇把整套模块拆开:配置表、茧缚构件、反疗结算、定时器、调试按钮,一段一段照抄能跑。

一、效果演示:茧缚困住它,阻止治疗和加速

演示场点「茧缚!」:一层半透明的茧壳把怪整个裹住——茧壳里的怪照常走动照常出招,但头顶多了一个"禁疗"的标记。这十秒里任何治疗术打在它身上都被茧壳弹开——奶妈的圣光、药瓶的回复全部无效。茧壳碎裂的瞬间,怪重获自由但也挨了你的全套输出。演示里试两种用法:对血厚的怪用茧缚防它回血,和对有增益的怪用茧缚防它加速——茧缚的价值在于选对目标。

demo
 fx-cocoonbind

二、底层原理:一面茧缚构件加一次反疗判定

模块的机关是一对搭档。茧缚构件:按钮落术的那一帧在怪身上裹一层半透明的茧壳——茧壳里的一切治疗被归零,一切增益被阻止挂上。反疗判定:茧缚期的怪的受治疗量强制归零——恢复术、药瓶、生命恢复全部无效,但茧壳不管攻击——你的刀照砍照打。和沉默那些封技能的分野在"茧缚封奶不封攻击":沉默让它打不出技能,茧缚让它回不了血——一个封输出一个封续航,两套控制管两条不同的线。茧壳的透明度也有一讲——壳刚织上时最厚,十秒里一格格变薄,薄到见光就是茧要碎的时刻,玩家不用数秒就知道封锁还剩多久。

茧缚为什么持续十秒而不是五秒?十秒足够把一只带治疗的怪磨到死——茧缚的定位是"杀奶流"的核心技,五秒的版本不够磨完一只中血怪。

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

lua
-- @file CocoonBind.lua
-- 茧缚 —— 茧缚困住它,阻止治疗和加速

local CocoonBind = {}

local CONST = {
    BIND_LIFE     = 10.0,
    BIND_CD       = 5.0,

    COLOR_BIND    = "#c8b868",
    COLOR_DEEP    = "#50440e",
    COLOR_GHOST   = "#f4e8b0",

    ZORDER_BIND   = 131,
    ZORDER_FX     = 135,
    AUTOINC_BASE  = 1075000,
}

local _bindT     = 0
local _bindID    = 0
local _cdLeft    = 0
local _bindFx    = nil
local _scheduler = nil
local _autoInc   = 0

local function GenID(prefix)
    _autoInc = _autoInc + 1
    return string.format("%s_%d", prefix or "CBB",
        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 CocoonBind.Cast()
    if _cdLeft > 0 or _bindT > 0 then return end
    local tid = SL:GetValue("MARK_TARGET_ID")
    if not tid then return end
    _cdLeft = CONST.BIND_CD
    _bindT = CONST.BIND_LIFE
    _bindID = tid
    SafeRemove(_bindFx)
    _bindFx = GUI:Layout_Create(GUI:Attach_SceneF(),
        GenID("Bind"), 0, 0, 0, 0, false)
    GUI:setLocalZOrder(_bindFx, CONST.ZORDER_BIND)
    SL:PlayCocoonUpFx(tid)
    SL:TipAbove(tid, "茧缚!")
    ShowTip("茧缚织上了——十秒阻止治疗和加速")
end

四、核心代码:完整模块(下·定时器与反疗判定)

lua
-- 反疗判定:茧缚期一切治疗归零
SL:RegisterLUAEvent(LUA_EVENT_HEAL_RECEIVED, "CBB_Block", function(tid, heal)
    if _bindT > 0 and tid == _bindID then
        SL:TipAbove(tid, "禁疗")
        return 0
    end
    return heal
end)

-- 定时器:茧缚倒计时与茧壳跟脚
if not _scheduler then
    _scheduler = SL:Schedule(function(dt)
        _cdLeft = math.max(0, _cdLeft - dt)
        if _bindT > 0 then
            _bindT = _bindT - dt
            local tp = GetActorPos(_bindID)
            if _bindFx and tp then
                GUI:setPosition(_bindFx, tp.x, tp.y - 70)
            end
            if _bindT <= 0 or not tp
                or SL:GetValue("ACTOR_DEAD", _bindID) then
                _bindT = 0
                SafeRemove(_bindFx)
                ShowTip("茧散了——它又能治疗了")
            end
        end
    end, 0.02)
end

SL:ScheduleOnce(function()
    SL:BindDebugButton("茧缚", function()
        CocoonBind.Cast()
    end)
    ShowTip("技能已加载: 茧缚 (调试按钮触发)")
end, 1.0)

function CocoonBind.Unload()
    if _scheduler then SL:Unschedule(_scheduler) end
    SL:UnregisterLUAEvent(LUA_EVENT_HEAL_RECEIVED, "CBB_Block")
    SafeRemove(_bindFx)
    _bindT = 0
end

return CocoonBind

五、机制问答

问:茧缚能封装备的回复效果吗?
答:能——茧缚封的是一切治疗来源,装备回复、药瓶回复、技能治疗全被弹开,茧壳里就是一个治疗真空。

问:茧缚期的怪能上增益吗?
答:不能——茧缚阻止一切增益挂上,攻击增益、防御增益、加速增益全部弹开,茧壳里就是增益的禁区。

问:茧缚期的怪能被控制吗?
答:能——茧缚不管控制链,眩晕定身照上,茧缚和控制是互补的封锁线不是重复的控制。

问:茧缚被驱散后治疗效果恢复吗?
答:恢复——驱散清茧缚,治疗链当场恢复畅通,这也是驱散怪是茧缚克星的原因。

问:茧缚和毒能叠加吗?
答:能——茧缚封治疗不封持续伤害,毒在茧壳里照跳,两套叠加就是"掉血加回不了血"的双重消耗。

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

第四笔是茧缚的时长:十秒对一场四十秒的架是四分之一的时间被封锁——时长太短茧缚沦为点缀,太长变成永久禁疗,十秒刚好是"一只奶妈怪被彻底废掉"的时间。第三笔是茧壳的层数:一层茧壳是"单封锁"的设计——多层茧壳同时封治疗和增益和移动的话控制维度太多反而复杂。第二笔是冷却的松紧:五秒冷却对十秒时长是"无缝循环"——冷却太短茧缚变成永动封锁,太长有空窗期让怪的奶妈缓过来。第一笔是茧壳的可读:茧壳的透明度随剩余时间变薄——壳越薄剩余时间越少,玩家不用看倒计时就知道什么时候茧要碎。常见坑三个:茧缚的禁疗没有覆盖生命恢复百分比效果,按百分比回血的装备绕过了封锁;茧壳跟脚在怪被击退后飘到了半空;茧缚的图标和减速的图标混在一起,玩家分不清哪个是茧缚哪个是减速。

商业服里茧缚是"织网师流派"的封锁网:别人封技能他封治疗——商城里茧壳的材质做成品级,丝茧、银茧、龙茧,那层裹在怪身上的半透明茧壳就是织网师的封锁网。运营落地还有两笔:一段是选怪教学——教一句"先茧奶妈再杀输出",流派第一课是选对封锁目标;一段是茧缚榜——按茧缚期阻止的回血总量排名,封锁最久的织网师有碑。变体做成茧爆:茧缚到期时茧壳爆炸对周围怪造成伤害——从纯封锁变成封锁加爆发,织网师的茧也能当炸弹。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。

写完留一句给做封锁系的同学:茧缚卖的是"你的奶进不来"——那层裹在怪身上的半透明茧壳和"禁疗"两个字的提示,是把治疗这个概念从战场上暂时删除的封锁宣告。

作者履历与出处

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

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

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

LATEST ARTICLES

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

进阶实战游戏功能

走一格为什么是半秒?拆开996引擎走路状态机

接手二开的兄弟几乎都撞过同一堵墙:玩家嫌走路"一格一格像机器人",老板拍板要"丝滑移动",改服务端速度?不对。改客户端动画帧…

2026-10-03 05:31 996 技术组
进阶实战游戏功能

特效总挂在脚后跟上?挂点表选对一行顶十行

【游戏功能】 先看一个熟场面:法师的火球特效挂在怪的脚后跟上,明明技能说明写着"焚烧其面",火星子却在地上打滚。群里有位策划…

2026-10-03 05:30 996 技术组
进阶实战游戏功能

刀刀都判命中,玩家为什么喊挥空?命中表现差的那一拍

【游戏功能】 上周有个开服的老板在群里发了一段录屏:他的战士明明刀刀都砍中了,观众却一片"这刀挥空了吧"。他原话是"判定日志…

2026-10-03 05:30 996 技术组
进阶实战游戏功能

怪的皮一会儿绿一会儿红?状态染色的色号表就三列

【游戏功能】 先说结论放在开头:怪的皮一会儿绿一会儿红,不是美术换了几套贴图,是染色系统在怪身上盖了一层"色镜"。开服群里有…

2026-10-03 05:30 996 技术组
进阶实战游戏功能

996引擎Buff系统解剖:中毒变绿、冰冻发白是怎么挂上去的

前两天群里有个架设的朋友问了个需求:中毒的人要变绿、每两秒掉一次血、毒还能叠五层,问是不是要在服务端把整套状态机重写。我说你…

2026-10-03 05:25 996 技术组
进阶实战游戏功能

编钟纹:五口钟排着敲,一口更比一口疼

【游戏功能】 先抛一个坑:五口钟一模一样大,为什么一口比一口疼?先后次序动不得吗?倒过来敲会怎样?这篇把编钟纹整套写法拆开:…

2026-10-03 05:01 996 技术组