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

超度:尸体上念两秒,回二十下一刀双倍

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

【游戏功能】

prayT = 2.0 —— 念经的两秒,就是超度的全部门槛:对着一具尸体念满两秒,灰烬升起,血回二十,下一刀双倍。挨一下打,念断重来。这篇把整套模块拆开:配置表、超度构件、念诵结算、定时器、调试按钮,一段一段照抄能跑。

一、效果演示:对尸体念两秒,回二十下一刀双倍

演示场一只小的带一只大的。先撂倒小的:尸体趴在地上,头顶挂着八秒的"尸"字存续。点「超度!」:玩家合掌念诵,身前转起一圈青白的念环——两秒里怪的刀要是拍过来,念环当场砸碎,"念断了"重新来。念满两秒:尸体化作青光散去,"回二十"的绿字爬回血条,"受超度·下一刀双倍"的金字挂起——下一刀二十点。演示里试两种时机:安全期念,和刀口下硬念——念断重来的代价不是两秒,是节奏。超度玩的是险中求稳:尸体的价值要跪着念出来。

demo
 fx-salvagepray

二、底层原理:一段念诵引导加一次超度回执

模块的机关是一对搭档。念诵引导:对尸体起念挂两秒的引导——引导认尸体不认距离,念的是最近的一具,挨打即断、断了重来,引导的每一天都在考验站位。超度回执:念满的瞬间尸体化光、回二十、挂"下一刀双倍"的福报——福报认一刀不认时限,用了就散、不用一直在。和吸血那类自动回复的分野在"超度要跪着念":吸血是打出来的被动,超度是念出来的主动——两秒的引导就是这门手艺的手工费。

尸体为什么八秒过期?过期的尸体逼玩家在"打完马上念"和"留着回头念"之间做选择——永不腐烂的尸体把超度变成开局蓄力,八秒的账期让每一具尸体都是限时的功德。

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

lua
-- @file SalvagePray.lua
-- 超度 —— 尸体上念两秒,回二十下一刀双倍

local SalvagePray = {}

local CONST = {
    PRAY_TIME     = 2.0,
    CORPSE_LIFE   = 8.0,
    PRAY_HEAL     = 20,
    PRAY_CD       = 5.0,

    COLOR_PRAY    = "#a0b8e8",
    COLOR_DEEP    = "#283a5e",
    COLOR_GHOST   = "#d8e4fa",

    ZORDER_PRAY   = 133,
    ZORDER_FX     = 135,
    AUTOINC_BASE  = 1032000,
}

local _corpses   = {}
local _prayT     = 0
local _prayOn    = false
local _blessed   = false
local _cdLeft    = 0
local _scheduler = nil
local _autoInc   = 0

local function GenID(prefix)
    _autoInc = _autoInc + 1
    return string.format("%s_%d", prefix or "SGP",
        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 NearestCorpse()
    local myID = SL:GetValue("USER_ID")
    local mp = GetActorPos(myID)
    if not mp then return nil end
    local best, bd = nil, 999
    for i, c in ipairs(_corpses) do
        local d = math.abs(c.x - mp.x)
        if d < bd then bd = d; best = i end
    end
    return best
end

function SalvagePray.Begin()
    if _prayOn then
        ShowTip("正念着——别断")
        return
    end
    if _cdLeft > 0 then
        ShowTip("经在冷却——" .. string.format("%.1f", _cdLeft) .. "秒")
        return
    end
    if not NearestCorpse() then
        ShowTip("没尸体可超度——先放倒一只小的")
        return
    end
    _prayOn = true
    _prayT = CONST.PRAY_TIME
    SL:PlayPrayUpFx(SL:GetValue("USER_ID"))
    ShowTip("开始超度——两秒,别让它打断")
end

四、核心代码:完整模块(下·定时器与念断结算)

lua
-- 念断判定:引导期挨打即断
SL:RegisterLUAEvent(LUA_EVENT_BEFORE_HURT, "SGP_Break", function(tid, dmg)
    if _prayOn and tid == SL:GetValue("USER_ID") and dmg > 0 then
        _prayOn = false
        _prayT = 0
        SL:TipAboveMe("念断了")
        ShowTip("挨了一刀——超度断了,重新念")
    end
    return dmg
end)

-- 福报出口:下一刀双倍
SL:RegisterLUAEvent(LUA_EVENT_MELEE_HIT, "SGP_Bless", function(tid)
    if not _blessed then return 0 end
    _blessed = false
    return (SL:GetValue("HIT_DAMAGE", tid) or 10)
end)

-- 定时器:念诵推进与尸体腐烂
if not _scheduler then
    _scheduler = SL:Schedule(function(dt)
        _cdLeft = math.max(0, _cdLeft - dt)
        for i = #_corpses, 1, -1 do
            _corpses[i].t = _corpses[i].t - dt
            if _corpses[i].t <= 0 then table.remove(_corpses, i) end
        end
        if not _prayOn then return end
        _prayT = _prayT - dt
        if _prayT <= 0 then
            _prayOn = false
            _cdLeft = CONST.PRAY_CD
            local bi = NearestCorpse()
            if bi then table.remove(_corpses, bi) end
            SL:RestoreActorHp(SL:GetValue("USER_ID"), CONST.PRAY_HEAL)
            SL:PlayPrayDoneFx(SL:GetValue("USER_ID"))
            _blessed = true
            SL:TipAboveMe("回20")
            ShowTip("超度圆满——回二十,下一刀双倍")
        end
    end, 0.02)
end

SL:ScheduleOnce(function()
    SL:BindDebugButton("超度", function()
        SalvagePray.Begin()
    end)
    ShowTip("技能已加载: 超度 (调试按钮触发)")
end, 1.0)

function SalvagePray.Unload()
    if _scheduler then SL:Unschedule(_scheduler) end
    SL:UnregisterLUAEvent(LUA_EVENT_BEFORE_HURT, "SGP_Break")
    SL:UnregisterLUAEvent(LUA_EVENT_MELEE_HIT, "SGP_Bless")
    _corpses = {}
    _prayOn = false
end

return SalvagePray

五、机制问答

问:超度大的尸体回报更多吗?
答:是——大体型的尸体念完回四十,小尸体二十,念经的工钱按尸头的分量结。

问:念诵期自己能走吗?
答:不能——念经要立定,挪半步念就断,这也是超度全部的风险:两秒的定点。

问:福报能囤两份吗?
答:不能——佛只认最新的一念,念满新一份旧的消散,福报是使用权不是存款。

问:尸体腐烂了能念吗?
答:不能——八秒外的尸是土不是功德,对着空气念经账房不认。

问:超度算击杀吗?
答:不算——超度接的是死后的账,击杀早在他倒下时就记完了,超度只是给这段死亡一个体面的收尾。

问:超度能对头目的尸体念吗?

答:能——头目的尸念完回四十,按分量结账的规矩对谁都一样。

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

第四笔是引导的长度:两秒对怪两点六秒的出手是"一拍之内见分晓"的念期——念太短超度没有紧张感,太长站桩站成活靶。第三笔是尸体的账期:八秒对一场四十秒的架是"每场限量的功德"——账期无限尸体变成常态补给站,太短玩家还没腾出手尸体就化了。第二笔是回血的斤两:二十点对三百血条是半成的安稳——回得太厚超度成了第二口药,太薄没人愿意跪两秒。第一笔是念环的可读:念环转满半圈、半圈、四分之三圈——读环就知道还差几拍,打断的损失看得见才叫风险。常见坑三个:念断的判定漏了持续伤害,毒跳把两秒的念跳成碎片;福报的翻倍写进基础面板,下一刀的双倍和装备暴击乘出四倍;超度的尸体被别的机制清走,念到一半尸体没了。

商业服里超度是"经师流派"的手艺:别人打完就走,他跪下来给每一场死亡收尾——商城里念环的样式做成品级,青环、金环、往生环,那圈围着尸体转的青白念光就是经师的功课。运营落地还有两笔:一段是站位教学——教一句"念之前先看怪的刀表",流派第一课是找安全的两秒;一段是经文榜——按超度切断的总回血与总伤排名,最虔诚的经师有碑。变体做成往生咒:超度大尸体时全场小尸一起化光——一咒超度一片,功德论打赏。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。

经师的老话留一句:两秒的经,念的是站位。

再补一笔超度的细账:两秒的经文要挑怪的换箭期念,念在它抬不起手的时候,这两秒的安稳才是真的安稳。

经师还有半句压箱的:超度超的是尸,练的是自己那两秒不慌的手。

香灰落地时,经才算念完。

写完留一句给做引导系的同学:超度卖的是"跪着念出来的安稳"——那圈围着尸体转满两秒的念环,是把每一具尸体都变成功德和回血的两秒仪式。

作者履历与出处

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

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

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

LATEST ARTICLES

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

进阶实战游戏功能

撩拨:撩它三下它就上头,一头撞进坑里

【游戏功能】 火气 = 火气 + 1 —— 每撩一下涨一格的火,三格烧满它就上头:一头冲过来,收不住脚,穿过你的位置一头扎进…

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

抛砖:一块砖砸出个破绽,接住就是双倍

【游戏功能】 它接招的那一秒,就是你的那一秒。抛砖把这句拳谚做成了机制:一块砖头砸过去,它本能抬手格挡——格挡的一秒二里,招…

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

瞭望:扑了它的灯,警戒圈缩一半

【游戏功能】 为什么偷袭总被提前发现?因为它的瞭望灯亮着——二百二十步的警戒圈画在暗处,你一踏进去它就开始上弦。瞭望换个思路…

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

爆桶:油桶就在它脚边,一箭的事

【游戏功能】 桶存活着 = 否 —— 一箭点掉一只桶,爆的却是怪的血条:油桶就摆在它脚边,三十点的爆炸不分敌我地溅——溅不溅…

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

交班:双岗交班那一秒,谁都不设防

【游戏功能】 交班计时 = 1.0 —— 交班的那一秒,两个岗哨都在行礼:手离开刀,眼离开敌,全身的门都开着。交班把这一秒做…

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

挪桩:挪一根路标,把它遛进你算好的道

【游戏功能】 巡逻道 = { 左桩, 右桩 } —— 巡逻道就是这两根桩之间的一条线:桩在哪,道就在哪;道在哪,它就一辈子走…

2026-10-01 15:00 996 技术组