gotolabel 是 NPC 脚本的段落跳转接口:玩家点击对话选项后,跳到脚本文件的指定标签段执行。传送、商店、任务对话的菜单跳转全靠它,它是脚本体系里组织流程的骨架接口。
---跳转脚本标签 actor:玩家 type:脚本类型 label:标签段
function gotolabel(actor, type, label, range) end
-- 传送员的选项跳转到比奇传送段
function clicknpc(actor, npcIdx)
if getnpcname(npcIdx) == "盟重传送员" then
say(actor, "要去哪里?\\<比奇城@去比奇>\\<沙巴克@去沙巴克>")
end
end
对话文本里的 \<显示文字@标签> 是选项链接,玩家点击后引擎按标签名跳到对应段落执行。标签段里写传送的逻辑:校验金币、扣费、mapmove 三步,段落的边界清晰让每段逻辑独立可测。
-- [@去比奇] 段落示例
-- #IF
-- CHECKGOLD 1000
-- #ACT
-- TAKEGOLD 1000
-- MAPMOVE 0 330 330
-- SENDMSG 5 已送达比奇城
传奇脚本的 #IF 与 #ACT 结构在标签段内完整可用,条件不满足时的失败提示写在 #ELSE 分支。跳转的层数控制:段落内再跳转最多两层,超过两层的流程拆成独立脚本文件。脚本段落的调试技巧:在段落首行插入 say 输出标签名,跑一遍流程就能确认跳转的路径。
跳转目标的 existence 校验进脚本装载检查,悬空的标签引用在装载期报错。
标签名的中文与英文混用时大小写敏感问题让跳转失效,标签命名统一小写加下划线。跳转链的死循环(A 段跳 B 段、B 段跳回 A)曾经让 NPC 无限对话,跳转层数的计数器是防死循环的安全阀。
脚本段落的跳转关系图定期梳理,调用树的可视化让脚本的可维护性可持续。段落的功能单一化:一个段落只做一件事,复合流程用多次跳转编排,段落的复用率是脚本质量的指标。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 沙巴克开战前600秒,行会会长一键集结,全会在线成员无论在哪张图都收到带坐标的集结消息,点击直达集合点。…
实战应用:用在哪里 远征副本上线前夜,压测编排把“上线会不会崩”变成一场有脚本的预演:模拟满员远征、三选一齐选、奖励齐领三个…
实战应用:用在哪里 结义合击玩法上线三天,客服收到“攻击加成叠了三层”的报告:同一次合击,三个入口各挂了一次加成Buff。复…
实战应用:用在哪里 “强化石×3”值不值得跑一趟毒蛇山谷,玩家心里没数。任务接取页的奖励预览把物品换算成战力参考值:每件物品…
实战应用:用在哪里 “转生怎么升”“红名怎么洗”这类问题八成答案都在帮助中心,玩家却习惯直接问客服。自助查询把帮助条目做成关…
实战应用:用在哪里 烈火剑法的打击节奏由前摇与后摇决定:前摇太长玩家觉得迟钝,后摇太短连招没有张力。节奏调优把前后摇参数化:…