【游戏功能】
新刷出来的怪身上为什么有金印?胎记给的答案是:每一只新生的怪都带着一枚三秒的金印胎记——三秒里打它,刀刀二十;三秒一过,金印淡去,刀回十点的平常价。这篇把整套模块拆开:配置表、胎记构件、金印判定、定时器、调试按钮,一段一段照抄能跑。
一、效果演示:出生带金印三秒,三秒里刀刀二十
演示场怪一落地,胸口就顶着一枚金色的圆印——"胎记 三秒"的读秒挂在旁边。这三秒里每一刀都是二十点的金字——双倍的刀落在双倍的印上。读秒归零,金印淡去,刀回十点的灰字——这只怪从此变回平常价。打死它,一秒后新的一只落地,金印重新亮起——三秒的双倍窗口跟着每一次新生循环。点「催生!」:等不及的玩家可以直接催生下一只。演示里算一笔账:掐着胎记打的玩家三刀六十点,错过的玩家三刀三十点——同三刀,差一倍,差的全在开局那三秒。胎记教的是开局的果断:金印只在出生时亮,犹豫的人永远打在灰字里。
fx-birthmark
二、底层原理:一段金印计时加一份新生判定
模块的机关是一对搭档。金印计时:怪出生挂三秒的金印——金印是出生自带的,不认伤害不认时间外的任何东西,三秒一过自动淡去。新生判定:每一次新生(包括击杀后的刷新)都重新发印——胎记跟着"出生"这个事件走,打了多少胎就发多少印。和罩门那类游走弱点的分野在"胎记认出生不认游走":罩门三秒一挪在怪身上转,胎记只在出生的头三秒定定地亮——一个是永远在挪的考试,一个是开局一次的开卷题。
金印为什么只挂在出生?出生的窗口奖励的是"第一时间的反应"——挂中途的版本金印变成刷怪节奏的抽奖,出生定印的版本,手快的玩家每一只怪都吃满。
三、核心代码:完整模块(上·骨架)
-- @file BirthMark.lua
-- 胎记 —— 出生带金印三秒,三秒里刀刀二十
local BirthMark = {}
local CONST = {
MARK_LIFE = 3.0,
MARK_AMP = 2.0,
BASE_DMG = 10,
COLOR_MARK = "#d8b040",
COLOR_DEEP = "#584410",
COLOR_GHOST = "#f4e0a0",
ZORDER_MARK = 134,
ZORDER_FX = 135,
AUTOINC_BASE = 1033000,
}
local _markT = 0
local _markID = 0
local _markFx = nil
local _scheduler = nil
local _autoInc = 0
local function GenID(prefix)
_autoInc = _autoInc + 1
return string.format("%s_%d", prefix or "BHM",
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 StampMark(tid)
_markT = CONST.MARK_LIFE
_markID = tid
SafeRemove(_markFx)
local tp = GetActorPos(tid)
if tp then
_markFx = GUI:Layout_Create(GUI:Attach_SceneF(),
GenID("Mark"), tp.x, tp.y - 78, 0, 0, false)
GUI:setLocalZOrder(_markFx, CONST.ZORDER_MARK)
end
SL:PlayBirthMarkFx(tid)
SL:TipAbove(tid, "带胎记出生")
end
四、核心代码:完整模块(下·定时器与金印判定)
-- 金印判定:印亮时刀翻倍
SL:RegisterLUAEvent(LUA_EVENT_BEFORE_HURT, "BHM_Amp", function(tid, dmg)
if _markT > 0 and tid == _markID then
return math.floor(dmg * CONST.MARK_AMP)
end
return dmg
end)
-- 出生钩子:新生即发印
SL:RegisterLUAEvent(LUA_EVENT_ACTOR_SPAWN, "BHM_Born", function(tid)
StampMark(tid)
end)
-- 定时器:金印倒计时与印的跟脚
if not _scheduler then
_scheduler = SL:Schedule(function(dt)
if _markT <= 0 then return end
_markT = _markT - dt
local mp = GetActorPos(_markID)
if _markFx and mp then
GUI:setPosition(_markFx, mp.x, mp.y - 78)
end
if _markT <= 0 or not mp
or SL:GetValue("ACTOR_DEAD", _markID) then
_markT = 0
SafeRemove(_markFx)
ShowTip("胎记淡了——恢复平常刀,下一只再打点")
end
end, 0.02)
end
SL:ScheduleOnce(function()
SL:BindDebugButton("催生", function()
local tid = SL:GetValue("MARK_TARGET_ID")
if tid then StampMark(tid) end
end)
ShowTip("技能已加载: 胎记 (调试按钮触发)")
end, 1.0)
function BirthMark.Unload()
if _scheduler then SL:Unschedule(_scheduler) end
SL:UnregisterLUAEvent(LUA_EVENT_BEFORE_HURT, "BHM_Amp")
SL:UnregisterLUAEvent(LUA_EVENT_ACTOR_SPAWN, "BHM_Born")
SafeRemove(_markFx)
_markT = 0
end
return BirthMark
五、机制问答
问:胎记的金印打一下就掉吗?
答:不掉——金印认时不认刀数,三秒里随便打,印到点自己淡,这是胎记和罩门最大的分别。
问:催生的新怪胎记更肥吗?
答:同印同期——催生只是把刷新提前,金印三秒双倍的规格天下统一,催生催的是机会不是特权。
问:胎记期被控了算白给吗?
答:算——金印照烧不认控,晕住的三秒胎记白白淡去,下印之前先看自己的手稳不稳。
问:双倍和暴击叠加吗?
答:叠——胎记乘在基础伤上,暴击倍率再乘,胎记期暴击是这套机制的天花板一击。
问:胎记怪死亡刷新的下一只必带吗?
答:必带——新生即发印是铁律,胎记是这一族怪的出生证明,谁出生谁带。
问:胎记期能上破势吗?
答:能——胎记乘基础伤,破势加结算层,双印叠上的刀是双重喜庆。
六、调参指南与商业服怎么用
第四笔是窗口的宽度:三秒对一点三秒的刀速是两刀的窗口——窗口太宽双倍像常驻,太窄玩家刚起手就淡,三秒刚好是"两刀的果断"。第三笔是倍率的分量:双倍对十点平砍是二十的起手——倍率抬到三倍,胎记期成了处刑期;压到一点五,掐三秒的价值不够一杯茶。第二笔是刷新的间隔:一秒的刷新空档是"打完立刻备战下一只"的节奏——空档太长胎记玩法断档,没有空档的版本场上永远有印可打。第一笔是金印的亮度:金印随读秒收暗——印的亮度就是机会的存量,看印下刀是这套机制教给玩家的第一课。常见坑三个:出生钩子把玩家复活也发印,玩家头顶挂金印变活靶;金印的加成写进怪的免伤面板,破甲和胎记互相顶;读秒的显示漏了,玩家对着没印的怪猛敲双倍的空想。
商业服里胎记是"接生婆流派"的贺礼:新生的每一只都自带一封三秒的红包——商城里金印的样式做成品级,金印、朱印、祥云印,落地那枚亮起的金印就是接生婆的开门彩。运营落地还有两笔:一段是抢印教学——教一句"刷出来就打,三秒定输赢",流派的手速课从第一只怪开始;一段是抢印榜——按胎记期打出的总伤排名,手最快的接生婆有碑。变体做成对印:两只怪同时出生各带金印,同时打点双倍翻四倍——双印的开局是手速玩家的年关。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。
接生婆的口诀就一句:印亮三秒,手别抖。
写完留一句给做出生系的同学:胎记卖的是"出生的三秒最金贵"——那枚一格格暗下去的金印,是把新生变成限时拍卖的开场锣。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 火气 = 火气 + 1 —— 每撩一下涨一格的火,三格烧满它就上头:一头冲过来,收不住脚,穿过你的位置一头扎进…
【游戏功能】 它接招的那一秒,就是你的那一秒。抛砖把这句拳谚做成了机制:一块砖头砸过去,它本能抬手格挡——格挡的一秒二里,招…
【游戏功能】 为什么偷袭总被提前发现?因为它的瞭望灯亮着——二百二十步的警戒圈画在暗处,你一踏进去它就开始上弦。瞭望换个思路…
【游戏功能】 桶存活着 = 否 —— 一箭点掉一只桶,爆的却是怪的血条:油桶就摆在它脚边,三十点的爆炸不分敌我地溅——溅不溅…
【游戏功能】 交班计时 = 1.0 —— 交班的那一秒,两个岗哨都在行礼:手离开刀,眼离开敌,全身的门都开着。交班把这一秒做…
【游戏功能】 巡逻道 = { 左桩, 右桩 } —— 巡逻道就是这两根桩之间的一条线:桩在哪,道就在哪;道在哪,它就一辈子走…