【游戏功能】
var ld2=Math.max(1,Math.round(d*0.25))——先拆这一行。连枝转移的账就在这一行里:同伴陪疼的份额取刀额的两成五,四舍五入之后用取大函数兜住一分的下限——十二点的刀同伴陪三点,一分都不许少。细账讲究的就是这一分——连枝的诚意全在这一个铜板的去处上。连枝纹的全部机关就这一行加一条虚线:两只怪的血连在一根枝上,打这头一刀,那头陪疼两成五。这篇把整套模块拆开:配置表、结枝窗口、陪疼结算、单程铁律、定时器、调试按钮,一段一段照抄能跑。
一、效果演示:打这一只,那一只陪着疼
演示场两只怪各五百血。点「连枝!」:一道紫色的虚线在两只怪之间连起来——十二秒的结枝期。你的刀落在左边那只头上:十二点入账之外,右边那只头上同时蹦出"连-3"的粉字——陪疼两成五,一分不少。反过来打右边,左边照陪。两根血条像跷跷板一样一起矮下去。演示里试两笔账:结枝期清两只和不结枝清两只——同样的刀数,连枝替你在另一只身上白打了四分之一的输出。连枝纹教的是株连:一只挨刀,满门陪绑。
fx-twinlink
二、底层原理:一道结枝窗口加一次陪疼结算
模块的机关是一对搭档。结枝窗口:开纹的那一拍起算十二秒——窗口里两根血条之间挂起一条虚线,虚线在、枝就在,打哪头都通着。陪疼结算:每一刀落账的同时按两成五划给另一头——陪疼走的是独立的小额通道,不改主刀的账,两边的仇恨和演出各归各位。和溅射类机制的分野在"连枝的陪疼是持续的株连":溅射是某一刀自带的边料,连枝是窗口期里每一刀都有的常账——只要虚线连着,你打任何一头都等于两头一起打。
陪疼为什么单程不互递?陪疼再触发陪疼就是递归套娃——十二点的刀两成五转三点、三点再转零点七五,账本滚成雪球;单程铁律砍断了第二条枝,每一刀只转一手,账干净得能对着灯看。
三、核心代码:完整模块(上·骨架)
-- @file TwinLink.lua
-- 连枝纹 —— 打这一只,那一只陪着疼
local TwinLink = {}
local CONST = {
CREST_LIFE = 12.0,
CREST_CD = 4.0,
SHARE_PCT = 0.25,
SHARE_MIN = 1,
SEARCH_RANGE = 300,
COLOR_LINK = "#a85888",
COLOR_DEEP = "#481838",
COLOR_GHOST = "#f0c0d8",
ZORDER_LINK = 133,
ZORDER_FX = 135,
AUTOINC_BASE = 1101000,
}
local _crestT = 0
local _cdLeft = 0
local _linkA = 0
local _linkB = 0
local _crestFx = nil
local _scheduler = nil
local _autoInc = 0
local function GenID(prefix)
_autoInc = _autoInc + 1
return string.format("%s_%d", prefix or "TWL",
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 TwinLink.PartnerOf(tid)
if tid == _linkA then return _linkB end
if tid == _linkB then return _linkA end
return nil
end
四、核心代码:完整模块(下·陪疼结算与虚线跟画)
-- 陪疼结算:主刀入账,另一头按份陪疼
SL:RegisterLUAEvent(LUA_EVENT_AFTER_HURT, "TWL_Share",
function(tid, dmg)
if _crestT <= 0 or not tid then return end
local other = TwinLink.PartnerOf(tid)
if not other then return end
local share = math.max(CONST.SHARE_MIN,
math.floor(dmg * CONST.SHARE_PCT))
SL:ActorHurt(other, share)
SL:TipAbove(other, "连-" .. share)
end)
function TwinLink.Cast()
if _cdLeft > 0 or _crestT > 0 then return end
local tid = SL:GetValue("MARK_TARGET_ID")
if not tid then return end
local other = SL:FindNearMonster(tid, CONST.SEARCH_RANGE)
if not other then
ShowTip("旁边没有第二只——枝没处结")
return
end
_cdLeft = CONST.CREST_CD
_crestT = CONST.CREST_LIFE
_linkA = tid
_linkB = other
SafeRemove(_crestFx)
_crestFx = GUI:Layout_Create(GUI:Attach_SceneF(),
GenID("Link"), 0, 0, 0, 0, false)
GUI:setLocalZOrder(_crestFx, CONST.ZORDER_LINK)
SL:PlayLinkUpFx(tid, other)
ShowTip("连枝结上了——打哪头,那头都陪疼")
end
-- 定时器:结枝倒计时与虚线跟画
if not _scheduler then
_scheduler = SL:Schedule(function(dt)
_cdLeft = math.max(0, _cdLeft - dt)
if _crestT > 0 then
_crestT = _crestT - dt
local a = GetActorPos(_linkA)
local b = GetActorPos(_linkB)
if _crestFx and a and b then
GUI:setPosition(_crestFx,
(a.x + b.x) / 2, (a.y + b.y) / 2 - 140)
end
if _crestT <= 0 then
SafeRemove(_crestFx)
ShowTip("枝散了——各疼各的了")
end
end
end, 0.02)
end
SL:ScheduleOnce(function()
SL:BindDebugButton("连枝", function()
TwinLink.Cast()
end)
ShowTip("技能已加载: 连枝纹 (调试按钮触发)")
end, 1.0)
function TwinLink.Unload()
if _scheduler then SL:Unschedule(_scheduler) end
SL:UnregisterLUAEvent(LUA_EVENT_AFTER_HURT, "TWL_Share")
SafeRemove(_crestFx)
_crestT = 0
_linkA = 0
_linkB = 0
end
return TwinLink
五、机制问答
问:陪疼能把另一头陪死吗?
答:能——陪疼走的是真伤通道,另一头血薄照样陪倒,连杀两只的账各归各主。
问:陪疼的份额会触发它的陪疼吗?
答:不会——单程铁律只转一手,陪疼的账不进陪疼通道,枝只连一根不连成网。
问:结枝后一只先死了枝还连着吗?
答:散了——枝两头缺一头当场断枝,剩下的窗口期空烧,这也是把薄血怪引开别跟肥怪站一起的道理。
问:主刀那一刀吃加成后陪疼按什么算?
答:按实伤算——陪疼的基数是落账后的刀额,加成越高陪得越多,堆攻击就是堆株连。
问:虚线两头站位拉远了会断吗?
答:不断——枝认窗口不认距离,拉得再开虚线照样连着,演出的线会拉长但账一分不少。
六、调参指南与商业服怎么用
第四笔是陪疼的份额:两成五是"打一送零点二五"的情分——份额太低结枝像没结,太高变成买一送一,两成五刚好是"值得引怪站位"的位置。第三笔是一分的下限:取大函数兜住一分是细账的体面——小额刀的陪疼四舍五入归零的话,连枝对快刀流等于白结,一分不多但一分是账本的底线。第二笔是结枝的门槛:两怪相邻才结得上枝——单怪的局纹按不下去,这也是连枝逼着玩家学引怪的第一课。第一笔是虚线的存在感:虚线连着就是账连着——线断了枝散了,玩家扫一眼线就知道还有几秒,演出就是倒计时。常见坑三个:陪疼递归触发第二根枝的雪球账;一头死亡后虚线还挂在尸体上空烧;陪疼的仇恨算在了玩家头上引来两头围攻。
商业服里连枝纹是"株连堂"的家法:别人打一只算一只,他打一只算一双——商城里虚线的样式做成品级,麻线、红线、连心金线,那道连在两根血条之间的紫线就是株连堂的家谱。运营落地还有两笔:一段是引怪教学——教一句"把两只引到一处再结枝,一刀当一刀半",流派第一课是扎堆;一段是连枝榜——按陪疼转移的总伤排名,株连得最广的人有碑。变体做成三连枝:三只怪围成一圈连成三角——从一线牵到一家亲,株连堂的家谱越续越长。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。
写完留一句给做联动系的同学:连枝纹卖的是"一只挨刀满门陪绑"——那道连着两根血条的虚线和"连"字头的小粉字,是把单体输出改写成家庭作业的第一张株连状。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
接手二开的兄弟几乎都撞过同一堵墙:玩家嫌走路"一格一格像机器人",老板拍板要"丝滑移动",改服务端速度?不对。改客户端动画帧…
【游戏功能】 先看一个熟场面:法师的火球特效挂在怪的脚后跟上,明明技能说明写着"焚烧其面",火星子却在地上打滚。群里有位策划…
【游戏功能】 上周有个开服的老板在群里发了一段录屏:他的战士明明刀刀都砍中了,观众却一片"这刀挥空了吧"。他原话是"判定日志…
【游戏功能】 先说结论放在开头:怪的皮一会儿绿一会儿红,不是美术换了几套贴图,是染色系统在怪身上盖了一层"色镜"。开服群里有…
前两天群里有个架设的朋友问了个需求:中毒的人要变绿、每两秒掉一次血、毒还能叠五层,问是不是要在服务端把整套状态机重写。我说你…
【游戏功能】 先抛一个坑:五口钟一模一样大,为什么一口比一口疼?先后次序动不得吗?倒过来敲会怎样?这篇把编钟纹整套写法拆开:…