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

血玉养纹:血玉插进它身上,血养玉长大

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

【游戏功能】

先抛一个坑:血玉插进怪的身子之后怪的血会一滴一滴养大这块玉——玉长大了拔出来能干嘛?这篇把血玉养纹整套写法拆开:插玉、血养玉、拔玉结账、玉碎重插,一段一段照抄能跑。

一、效果演示

演示场的血玉矿洞里怪立着。点「插玉!」:血玉插进怪肩膀——每秒变大一圈颜色越深。拔出按大小结账小玉四大玉二十。八秒不拔自动碎裂。七秒一插。

mermaid
flowchart TD
A[插玉] --> B[怪血养玉]
B --> C[玉每秒变大]
C --> D{拔出来了吗}
D -- 拔了 --> E[按大小结账]
D -- 没拔八秒 --> F[玉碎什么没]
E --> G[七秒后再插]
F --> G
demo
 fx-crest-bloodjade

二、底层原理

血玉的机关是"血养玉大"——玉插进怪的身子里怪流出的血一点一点把玉养大。八秒不拔玉自动碎裂——碎了的玉什么都没有这是贪的罚。幂尔框架这边玉的大小收在每拍推进的计时器里。

这套玩法的代码量不到八十行,难的不是养玉而是碎裂的罚——不贪的机制没有张力贪过头的机制劝退玩家。

血玉的碎裂给了"留多久"这个问题一个尖锐的边界——八秒是玉的命留到第七秒一拔一大笔留到第八秒血本无归。

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

lua
-- @file CrestBloodJade.lua
-- 血玉养纹

local M = {}
local CONST = { GROW_PER = 1, MAX_TIME = 8, SMALL_DMG = 4, BIG_DMG = 20, JADE_CD = 7, AUTOINC_BASE = 1208300 }
local _embedded = false
local _t = 0
local _cd = 0
local _autoInc = 0
local function ShowTip(msg) if msg and msg ~= "" then SL:ShowSystemTips(msg) end end
local function GenID() _autoInc = _autoInc + 1 return CONST.AUTOINC_BASE + _autoInc end
function M.Time() return _t end
function M.IsEmbedded() return _embedded end

四、核心代码:完整模块(下·推进与卸载)

lua
-- 插玉/拔玉/碎裂
function M.Pull()
    if not _embedded then ShowTip("没插玉——拔什么") return 0 end
    _embedded = false
    local dmg = math.min(CONST.BIG_DMG, CONST.SMALL_DMG + _t)
    ShowTip("拔玉!" .. dmg .. "点")
    _t = 0
    return dmg
end

if not _ticker then
    _ticker = SL:Schedule(function(dt)
        if _cd > 0 then _cd = _cd - dt end
        if not _embedded then return end
        _t = _t + dt
        if _t >= CONST.MAX_TIME then
            _embedded = false
            _t = 0
            ShowTip("玉碎了——血本无归!")
        end
    end, 0.05)
end

SL:ScheduleOnce(function()
    SL:BindDebugButton("插玉!", function()
        if _embedded then ShowTip("玉已经插着了") return end
        if _cd > 0 then ShowTip("再等" .. math.ceil(_cd) .. "秒") return end
        _cd = CONST.JADE_CD
        _embedded = true
        _t = 0
        ShowTip("血玉插入——血养玉长大")
    end)
    ShowTip("技能已加载: 血玉养纹")
end, 1.0)

function M.Unload()
    if _ticker then SL:Unschedule(_ticker) end
    _embedded = false
end

return M

五、机制问答

问:玉碎了什么都没有罚太狠了吗?
答:清零比扣血更有戏剧性——眼睁睁看着养大的玉碎了才记住八秒的线。

问:玉的大小怎么算?
答:一秒一圈——时间越长截面越大。

问:七秒冷却比八秒短一秒图什么?
答:留出完整决策——拔了等一秒就能插下一块。

问:插玉位子挑哪里?
答:肩膀——血流丰富养得快。

问:玉碎演出做了什么?
答:玉片四溅加一声脆响——疼就要疼在眼前。

六、调参与实战怎么用

参数三个量——生长速度、最长留玉、大小结账范围。八秒配清零罚是"贪有风险"的甜点位。常见坑:碎裂不演出玩家不知为什么亏了;结账不按比例跳档感重。

补充一个设计层面的思考——束缚、裂地、寄生、养成、步法、锁链——六种到达方式六种战斗哲学。每种到达方式自带一门战斗课玩家学会的就是那门课的考试。

补充一个维护层面的思考——锁链要断、虫要散、菇要化、玉要碎、风灵要封顶、裂缝要合拢——每一种机制都要有它的收势写在卸载口里。收势不是装饰是账本闭环的最后一笔。

补充一个工程层面的思考——蛛网的扇面、裂缝的坐标、菇伞的节拍、血玉的计时器、风灵的层数、锁链的双向——每种机制的核心状态只读一个源头。一个状态一个源头谁也不许从别处抄第二份。补充一个到达层面的思考——这六式招式各有一套到达的写法:蛛网是扇面罩过去、裂缝是地上追过去、菇伞是一张一合泵过去、血玉是插进去养出来、风灵是闪步攒出来、雷光是锁链连过去——到达方式就是招式的身份,改伤害容易改到达难,到达一改就成了另一个招。调招先调到达的节奏,数值放到最后一步。布置的落点也是到达的一部分——网吐在怪要走的道上、裂缝从近处往远处追、菇种落在怪脚下、血玉插在肩膀血流丰富、风灵攒在身侧跟着走、锁链连在攻击路线上,位子对了伤害才生效,位置差了伤害调得再大也是白搭。布置的位置还讲究落子的次序——先埋伏后引怪是算计,先引怪后埋伏是救场,同一颗雷两种次序两种戏。补充一个反馈层面的思考——状态类机制的反馈要分成挂上时的那一下和挂着时的每一拍两层:挂上时给一个大响让玩家知道起效了,挂着时给一个持续的小指示让玩家知道还在。只有挂上那一下没有持续指示的机制,玩家到了中段就开始怀疑它还在不在;只有持续指示没有挂上大响的机制,玩家根本不知道它什么时候开始起效。两层反馈齐了,玩家才对状态有完整的感知。反馈的演出也要有品质:蛛网的化雾、裂缝的合拢、菇的化粉、玉的碎裂、风灵的光、锁链的电——每种消退都该有自己独特的告别仪式,消退不是消失是演完整场戏的最后一段。补充一个实战层面的思考——这类机制在实战里的出场时机比出场频率重要:蛛网要在怪扑过来的路上吐、裂缝要在怪站定的时候锤、菇要在怪的必经之路上种、血玉要在怪刚进场的时候插、风灵要在怪的攻击间隙闪、锁链要在怪最凶的时候连——时机的算计比使用的频率更能区分高低手。设计的重心应该放在让时机可读而不是让使用变容易——时机可读的机制教玩家读战场,时机不可读的机制教玩家按快补充一个数值层面的思考——状态类机制的数值要分挂上时的那个大数和挂着期间的那些小数:挂上时给一个大数字让玩家有获得感,挂着期间给小数字让玩家持续感知。大数和小数的比例要在三比一到五比一之间——大太多了变成一次性的爆发,小太多了变成温水煮青蛙什么感觉都没有。数值的节奏和机制的节奏要配:连发型的机制数值碎、蓄力型的机制数值厚、触发型的机制数值尖。

写完留一句给做养成系的同学:玩家养的是玉也是一份耐心和胆量——留到第七秒是勇气留到第八秒是贪贪的代价是血本无归。

作者履历与出处

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

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

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

LATEST ARTICLES

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

进阶实战游戏功能

幻影分纹:幻影一出,影子里全是刀

【游戏功能】 先抛一个坑:幻影分身和你长得一模一样——怪分不清哪个是真的你怎么办?这篇把幻影分纹整套写法拆开:出影、影动、影…

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

骨刺迸纹:骨刺一迸,迸到就扎

【游戏功能】 隐蔽报错引入:一个很隐蔽的报错——骨刺明明迸了五根,怪的身上只扎到了三根。这篇把骨刺迸纹整套写法拆开:标记、迸…

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

冰霜路纹:冰路一铺,踩上滑三步

【游戏功能】 单行代码拆解:先看一行代码: 冰路一铺,踩上滑三步 ——冰霜路的全部机关就这一行。这篇把冰霜路纹整套写法拆开:…

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

蜂群召纹:蜂群一放,蛰一口疼一口

【游戏功能】 先抛一个坑:蜂群放出去,怎么让它们只咬怪不咬自己?这篇把蜂群召纹整套写法拆开:放蜂、追身、蛰刺、蜂散,一段一段…

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

铁壁弹纹:铁壁一立,弹它一刀不亏

【游戏功能】 隐蔽报错引入:一个很隐蔽的报错——铁壁明明立了,怪的爪子还是穿过来了。这篇把铁壁弹纹整套写法重写成篇:立壁、弹…

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

血泉涌纹:地底血泉一涌,涌一拍疼一拍

【游戏功能】 线上事故引入:早上温泉的血泉出了怪相——血泉涌的节奏快过了怪的出爪节奏。这篇把血泉涌纹整套写法重写成篇:引泉、…

2026-10-02 16:22 996 技术组