[ 01 // 本系列实战研学导读 ]
OVERVIEW
幂尔战术框架系统学习,从Lua语法速成到前后端框架结构
授课讲师浮生梦老师
实录课时8 节
总研习时长11 小时 21 分
[ 02 // 逐节攻关大纲及实录 · 共 8 节 ]
点击「立即上课」可直接调起飞书高清原画回放
#01
幂尔框架 前端顶部按钮
高级
【本节攻关核心】 以"前端顶部按钮"功能为载体,串讲幂尔前端框架的加载注入机制(GG 库 / UI 库 / 常用函数),从配置表批量创建按钮、封装 GUI 文字/按钮创建与删除接口,到点击按钮向后端发协议、后端接收并分发打开对应功能的完整链路;过程中大量演示 ID 重复、缓存残留等真实报错的定位方法,并展示了用 AI 生成收缩展开动画。
✓ 已申请
立即上课
▶
讲解要点与技能清单 共 18 项 · 点击展开
讲解要点与指令拆解
- 框架注入机制:所有框架结构集中在固定目录,框架允许把自己的封装(GG 或自命名 CC)注入进去共存,为后续 AI 按框架接口写代码铺路。
- GUI 库采用二级 table 封装(如 GG.GUI.TEXT.CREATE),避免外人误当官方接口;封装唯一规则是让 AI 只认框架里的接口。
- 前端入口:人物属性加载完成的"注册事件/回调"触发加载;回调参数做 pcall 安全校验后装载进组件库;空格键触发热更重载并向后端发 999 号协议。
- 封装创建文字组件 GG.UI.TEXT.CREATE(传父节点挂载对象、唯一 ID、文字、字号等,返回 TEXT 对象);同类封装图片按钮 GG.BUTTON.CREATE(用 data 表传 ID/X/Y/图片路径)。
- 常用子节点操作三封装:删除父节点下全部子节点、把组件从父节点移除以便换挂点、按名字删除子节点(创建前调用避免重复创建报"ID 重复")。
- 用 GG.UI:getWH() 取屏幕宽高,按钮位置用"宽 × 配置比例"自适应排布,两排按 X=0.7/0.6…递减、Y 区分上下排,调整 X/Y 配置即可微调。
- 用 ipairs 迭代配置表 topList 批量创建按钮,ID 用 "top.Button."..k 保证唯一;ipairs 快于 pairs。
- 点击回调写法:GG.BUTTON.CLICK(btn, function) 内 GG.SERVER:SEND(message);message 支持"表(协议号+回调)"或"function"两种类型,代码按 type 分流执行(表则发协议,function 则直接执行)。
- 后端接收:在网络协议触发处建立"顶部按钮"入口并写对应模型方法;模型方法接 P2(按钮序号)后分发,如模拟点击 NPC 打开"转盘抽奖"界面。
- 用 NPCList 配置表(1 转盘抽奖 / 2 VIP 等级 / 3 总排行榜 / 4 拍卖行 / 5 天天省钱 / 6 跨服 / 7 客服)取代一长串 if=1/2/3 判断。
- 收缩按钮:封装 get/set 角度(旋转容器弧度),点击时角度 0→180 翻转切换显示;封装 topUI.CREATE(show) 与 isShow 参数控制创建/回收,并演示让 AI 生成淡入淡出、依次入场、抖动动画。
- 版本细节:开区天数判断(工具服天数为大值,开区前 6 天逻辑先屏蔽);排错套路=报错从自己代码首个报错行查起、加打印、注意缓存需小退/清缓存。
学完学员应掌握技能
- 能用"配置表 + 迭代"的方式批量创建并自适应摆放前端顶部按钮,并逐一绑定点击事件。
- 能独立封装 GUI 组件(文字、图片按钮)的创建/删除/父子操作工具函数并复用。
- 掌握"前端按钮点击 → 发协议 → 后端接收分发"的完整写法,并用 NPC 功能配置表做点击分发。
- 会看报错定位自己的代码(从首条报错查起),理解缓存导致的"旧代码仍在跑"并会用清缓存/小退解决。
- 能实现收缩/展开按钮与基础的组件旋转角度控制。
- ---
#02
幂尔框架 前端顶部按钮 二
专家级
【本节攻关核心】 承接第一课:先修复顶部按钮报错并把图标 A1-A8 与功能一一对应,纯前端功能(拍卖行、天天省钱、盒子等)直接对接界面接口;重点完成 VIP 等级面板(积分进度条、当前/下一级福利),再用 debug 调用栈定位并修复 1v1 金币模式获胜多发 25 元宝的 bug,最后处理行会传送令需同队伍、约战房间有人才变色等改版本杂项。
✓ 已申请
立即上课
▶
讲解要点与技能清单 共 17 项 · 点击展开
讲解要点与指令拆解
- 顶部按钮报错统一解法:创建前用 GG.UI:DL(挂载点/ID) 先删后建,规避"ID 重复";图标 A1-A8 与功能逐一对应,客服与省钱互换位置。
- 功能分类对接:拍卖行/天天省钱/盒子属纯前端打开,直接调用其打开界面前端接口即可;VIP/跨服等才需要发协议走后端。
- 新建前端脚本做 VIP 面板:进度条 + 背景 + 文本(VIP 等级、当前积分、下一级所需积分、当前/下一级福利文本)。
- 后端 VIP 数据链路:登录与充值两处推送,只下发"充值积分"一个值,前端用全局变量/变量接口读取,避免两端算错。
- 前端按配置表 ARR 定位当前 VIP 等级、取下一级门槛,进度条值=(当前积分−本级门槛)/(下一级门槛−本级门槛);福利文本逐项拼接写入。
- 荣誉值物品改造:物品表用索引归类,脚本内用物品名 + string.format("%d",name) + tonumber 取出编号,避免逐物品 if;加 stop 防止直接吃掉。
- 竞技场地图限制:创建地图/使用物品时判断地图名含"竞技场"则禁止回城、随机、使用物品与回收,堵住 1v1 玩法漏洞。
- 用 debug 打印调用栈(封装成常用函数便于复用)定位"获胜多给 25 元宝":来自狂暴之力的玩家死亡事件重复给货币,加"对方非玩家则删除"判断修复。
- v1 约战房间匹配:迭代房间数据设置按钮颜色,用 #data.i>0 判断房间是否有人,双方都有人才变黄;逻辑抽成 checkRoom 函数供加载与点击两处复用。
- 行会传送令增加队伍检测:不在自己队伍(行会)内禁止传送,只有同行会同队伍才生效。
- 杂项小修:自动喝药物品 ID 在配置处改、杂货铺商店复制条目配置价格、特效传送点位置微调;涉及玩家行为的功能用前端直接触发会漏审核,需注意。
学完学员应掌握技能
- 具备真实项目"改版本"的排错能力:报错从自身代码首行查起,用 debug 调用栈定位"谁在调用某函数"。
- 学会给功能分类:纯前端打开 vs 需走后端协议,并能分别对接实现。
- 会做带进度条的 VIP/积分面板,掌握后端下发原始值、前端计算展示、变量读写与文本更新。
- 掌握货币/物品类接口封装与"物品名解析编号"技巧,能在地图/物品使用环节加"禁止"规则。
- 理解竞技场等复杂玩法脚本的计费与触发关系,避免重复给奖的隐蔽 bug。
- ---
#03
幂尔框架 玩家行为日志分析 php + post
专家级
【本节攻关核心】 实现"玩家行为日志实时上报系统":由前端用 post 接口把玩家行为数据直发服务器 PHP 接口入库,避免占用游戏服务端资源;配套编写 PHP 接收接口(含 key 密钥拼接与校验),并让 AI 生成中文数据监控网页——可配置节点字段、自动刷新、一键生成前端 Lua 上报代码。
✓ 已申请
立即上课
▶
讲解要点与技能清单 共 15 项 · 点击展开
讲解要点与指令拆解
- 总体方案:前端发 post → 服务器 PHP 接收 → 存库 → 网页展示;刻意不走后端,几百人同时上报也不消耗游戏服务端资源。
- 前端发送接口:新建日志系统协议,用 HTTP post 类接口(含 URL、key、拼接参数、回调),回调返回 200 即成功。
- key 鉴权:API key 与各值拼成字符串随请求携带,后端校验;加密原理=只在己方知晓的字符位插入识别串,不符合直接拒绝。
- PHP 侧:新增接收接口须放在"未登录拦截"之前,由首页接收 + 加 API 参数;把接口需求发给 AI 重写 PHP 接收与页面。
- 上报数据清单:服务器 ID、账号/角色 ID、设备识别码、APK 版本、网络类型、游戏帧数、登录来源、地图名、是否安全区、客户端载体等,逐项在新三端接口里取适配值。
- 监控网页:左侧玩家列表实时显示信息;一级菜单做总体统计;每约 5 秒定时器轮询,新数据自动刷新并带插入提示效果。
- 自定义配置:网页可注册自己的"节点"、自由添加字段,字段必须先配置才能写入,保存后"生成 Lua 接口代码"一键复制到前端即可上报。
- 前端只发已配置字段、未配置不写;断开连接等状态用对应 class 调整样式。
- 触发方式:可做后端触发(如跑步 → 发前端 → 前端上报),也可按事件随时补发(击杀/死亡/消费等行为)。
- 该日志系统计划纳入框架,学员可换成自己申请的 API 节点;FPS/设备等数据可辅助 GM 与客服定位问题、间接判断玩家消费水平。
学完学员应掌握技能
- 掌握"前端 post → PHP 接口 → 入库 → 网页展示"的跨端日志采集全流程与 key 鉴权思路。
- 能把接口需求交给 AI 快速生成/修改 PHP 接收页与监控网页,并能自己调整样式。
- 会注册配置节点/字段并"一键生成前端 Lua 上报代码",实现改配置即改上报内容。
- 理解用前端而非后端上报以节省服务器资源,并了解基本加密防伪原理。
- ---
#04
幂尔框架 第一节 引言 lua语法速成
入门级
【本节攻关核心】 系列正课第一课,先用较长篇幅讲"为什么要学框架、为何不必迷信 996 官方接口"的行业认知,再带学员在新三端里跑通 Lua 速成:打印、注释、标识符/关键字、全局与局部变量、数据类型、if 流程控制、函数与返回值,一直到表、迭代器、require 模块,并强调防卫语句与三元运算让后端代码干净。
✓ 已申请
立即上课
▶
讲解要点与技能清单 共 18 项 · 点击展开
讲解要点与指令拆解
- 学习观与认知:框架=把繁琐功能封装成统一调用、可持续迭代;官方引擎接口也是人写的公共框架,要建立自己的框架体系才能跳出内卷。
- 环境:编辑器装 Lua 与 Lua debug 两个插件;后端用 trae(GB2312)、前端用 VS Code(UTF-8);课程以新三端 3.7.5 为准。
- 打印:后端 print 打终端,平台可见用 release 系列接口(封装成短函数 P 调用);打印用于查看变量当前状态、调试程序。
- 注释:-- 行注释、--[[ ]] 多行注释、编辑器批量注释;标识符不能以数字/特殊符号开头、大小写敏感,关键字不能作变量/函数名。
- 全局 vs 局部变量:全局变量在服务器不重启前处处有效但易命名污染;局部变量仅存活于所在函数、放栈上更快——故几乎都加 local。
- 数据类型与 type():nil(空值,清变量直接 x=nil)、boolean、number、string、table、function;注意 996 接口偶有反人类返回(如绑定返回字符串"0")。
- 比较陷阱:数字与字符串不能直接比较,字符串之间比较走 ASCII 码——易踩坑;字符串拼接用 ..
- 接口用法:getBaseInfo 等由 C++ 编译好的接口,参数从说明书查;TXT 老玩家需把所有接口过一遍。
- 流程控制:少写多层 if 嵌套,用"防卫语句"(前置 return 拦截不满足条件);善用一行三元运算 cond and A or B 简化分支。
- 函数:TXT 的"标签"对应 Lua 函数,支持参数与 return 返回值。
- 表 table:Lua 主角(相当于 TXT 的 CSV),可存任意类型甚至嵌套表,分数组型与字典型;取值用主键,遍历数组用 ipairs、字典用 pairs。
- require 模块:把目标文件加载进内存形成表结构,挂 local 变量后即可调其字段与方法,如同 TXT 的 call;强调 Lua 单线程、但速度约是 TXT 的 5-10 倍、计算能力强。
学完学员应掌握技能
- 搭建前后端 Lua 开发环境,在新三端里跑通基础语法,能区分编译期报错与运行期报错。
- 分清全局/局部作用域与六大数据类型,熟练 type() 判断,避开字符串/数字比较的坑。
- 会写函数、传参、接收返回值,用 table 组织数据并用 ipairs/pairs 迭代。
- 会用防卫语句 + 三元运算把嵌套 if 改整洁,用 require 做模块化加载。
- 会用 996 接口(如 getBaseInfo)读玩家信息并借助说明书查参数。
- ---
#05
幂尔框架 第二节 后端幂尔框架结构 详解
入门级
【本节攻关核心】 从零搭建"学习端"后端框架:先讲清耦合/松散/抽象三个概念,再从 QF 入口开始复刻幂尔后端框架——QF 只做一句话 require 分流(全局版本名切换),启动初始化里按顺序加载常用函数、事件推送、常量、玩家核心四大模块;核心是"获取目录下所有文件列表 → 遍历 → require 加载"的模块化加载器,实现框架代码与版本代码物理分离。
✓ 已申请
立即上课
▶
讲解要点与技能清单 共 15 项 · 点击展开
讲解要点与指令拆解
- 概念:耦合=两处代码黏连、牵一发动全身;框架追求低耦合(松散、互不依赖);抽象=只暴露结果/配置不暴露过程。
- 环境搭建:Hammer 创建服务端/客户端并连数据库、下载工具服登录器覆盖客户端、服务端 trae + 前端 VS Code(GB2312 vs UTF-8)。
- QF 入口极简:QF 实际只有一句 require 调用,其余是版本切换判断(改数字切版本)与全局变量定义版本名。
- 启动链路:服务端启动触发 boot → 下随机种子 → require 启动初始化;报错多为加载顺序/文件缺失,需注意清缓存(已加载的文件不再重载)。
- 启动初始化加载四大模块:①常用必备函数(dump 迭代打印、P 短打印等)②事件推送(触发事件统一走 push)③常量(协议/全局变量/配置表)④玩家核心(面向对象)。
- 核心加载器:取"文件夹下全部文件列表"→ pairs 遍历 → 只取 .lua → 过滤掉自身启动文件(防死循环)→ 框架目录与版本目录分别收集 → require 加载。
- 目录两分:幂尔框架(通用底层)与学习端(版本脚本)分开存放,QF 保持干净;改底层逻辑进框架层、改玩法进版本层。
- 加载顺序即优先级:先常用函数后事件/模块,故在常用函数里定义的 P/ADD 等函数可被后续任意文件全局调用。
- 概念补充:懒加载(需要时才加载)vs 一次性加载;内存(堆)与缓存(栈)差异;商业服优化方向=缓存/防刷/统计/对象池/拓展等。
- 事件推送器与玩家对象后续逐个加入启动器,学习端按课打包发放,后续课程全部围绕该学习端开展。
学完学员应掌握技能
- 理解后端框架为什么把 QF 写成一两句"渡船"代码,以及模块化加载的顺序与优先级。
- 看懂并会搭"取目录文件列表 → 遍历 → require"的自动加载器,区分框架目录与版本目录。
- 会排查加载类报错:清缓存、核对 require 路径、确认文件确实在目标目录下。
- 能判断自己的代码该放框架层(通用)还是版本层(玩法),理解耦合/松散/抽象三个概念。
- ---
#06
幂尔框架 第三节 后端玩家面向对象
入门级
【本节攻关核心】 讲通后端为什么用面向对象,并指出"类本质就是 table":逐个拆解类/对象/封装/继承/多态/元表/__index/self/构造函数等术语;随后实操演示如何把 getBaseInfo 取名取地图等过程式调用封装成玩家表函数,再进化成带 setmetatable 的构造函数,最终抽成独立"玩家构造器.lua"模块,并展示类内静态成员(职业/货币等映射表)与二级模块化的设计动机。
✓ 已申请
立即上课
▶
讲解要点与技能清单 共 15 项 · 点击展开
讲解要点与指令拆解
- OOP 术语:类=模型/图纸(实际就是一个 table);对象=按图纸造出的实例;封装=把复杂过程以简单接口暴露;继承=子表借父表数据;多态=同名方法不同表现;元表=给能力不足的 table 赋能;__index 索引=查不到时顺钩子去另一表找(OOP 灵魂);self=谁调用我就是谁。
- Lua 本质是过程式语言,但提供 table + 元表机制可自行实现 OOP;后端用 OOP 是为 AI 友好、低耦合、可长期迭代。
- 起步封装:把"取名字、取地图名"写成表函数(Player.name、Player.map),一次封装免去死记 getBaseInfo 的索引号。
- 进化到构造函数:Player.new(actr) 内 o={actr=actr}、setmetatable(o, Player)、Player.__index=Player、return o——四句标准写法。
- 重要辨析:996 接口返回的"人物对象 actr"只是玩家唯一 ID(身份证),与 OOP 对象是两个概念。
- 抽模块:玩家构造器放"玩家内核/玩家构造器.lua"并 return Player;使用端 require 后 Player:new(actr) 即得对象。
- 类内优化:把全局函数局部化约提速 30%;写映射表把职业(0 战士 1 法师 2 道士)、方向、货币等数字映射成可读名。
- 统一给发接口思路:检测物品名是否命中货币映射表——是则按货币编号走货币增减,否则按物品 ID 走给/减物品,一套接口两类处理。
- 缓存处理与动态属性读取全部收敛在类内,外部只需 player.xxx 取值。
- 注意事项:类内方法必须写 self.actr;新三端已删除部分老接口,报错即删;学习端核心结构三个月内不建议改动。
学完学员应掌握技能
- 说清类/对象/封装/继承/self/构造函数含义,看懂幂尔玩家类的组织方式。
- 会写 Player.new + setmetatable + __index 标准构造四句,把 996 过程式调用封装成对象方法。
- 会把公共方法抽成独立构造器模块并用 require 引用,实现"玩家.xxx"式链式调用。
- 理解职业/货币/方向等映射表及"货币与物品统一给发"的接口设计思路。
- ---
#07
幂尔框架 第四节 后端面向对象封装和后端推送事件
专家级
【本节攻关核心】 上半节继续后端 OOP:先把玩家类挂进学习端启动器,示范"二级子系统"——在玩家构造器 new 里再 require/构造 item、map、var 等子模块并挂成 player.item / player.map / player.var,现场封装"给物品自动随机 1-5 星(屠龙)"与玩家变量读写(奔跑 +1 并即时推前端);下半节讲后端事件推送器:本质是一张存监听函数的表,add=把名字+回调塞进二级表、push=遍历执行、rm=删除,并示范用事件统一处理成就类跨系统需求。
✓ 已申请
立即上课
▶
讲解要点与技能清单 共 16 项 · 点击展开
讲解要点与指令拆解
- 为什么后端用 OOP(再答):过程式会让函数堆成山、版本之间改不动;OOP 讲规则、职责分开,适合多人协作与长期迭代;性能损耗在微秒级可忽略。
- __index 固定套路:局部 M={} → M.__index=M → function M:add 写方法 → setmetatable(A, M) 挂表,A:add() 即命中;搞不懂就练 50 遍。
- 学习方法论:先会用再挖原理;事件代码里大量防御逻辑先扫一眼即可,逐行硬啃会卡死进度。
- 玩家常量调用:构造器常量里把 getBaseInfo 等封装成 player.name / player.level,直接打印即出。
- 二级模块挂接:在玩家构造器 new 中执行 obj.item = 道具模块.new(obj)——把整个 player 表传入子模块构造器,子模块再 new 出新表返回挂到二级,于是能写 player.item.getWeapon 等链式调用。
- 子模块内写接口必须用 self.actr 取玩家;现场演示给物品接口 + setStar 设星级,再封装高层接口"给屠龙自动随机 1-5 星"。
- 变量模块:player.var:setInt/getInt 读写后端变量;变量系统内置"push 即时推前端"。
- 事件推送本质:一个表 + 三个操作——add(名字,回调)、push(名字,...)用 pairs 遍历执行该名字下全部回调、rm(名字)即置 nil;其余全为参数校验/缓存等防御。
- 典型场景:成就系统(死亡 10 次/击杀 10 次/击杀怪 200 只)无需在死亡/击杀处各写记录,只需各触发点 event:push("成就", actr, ...),集中到监听处统一处理。
- 事件可跨文件、跨界面取数;一个触发点可多处 add、多触发点可一处 add;事件 ID 重复时只执行首个——使用事件后无需 require 即解耦。
- 事件对象在初始化中 new 为全局(每处加载会 push 多次,故需去重)。
学完学员应掌握技能
- 会搭"玩家 → 二级子系统"结构,把 item/map/var 等模块 new 进玩家对象,实现链式模块调用。
- 能在子模块中用 self.actr 编写自己的接口(给物品/加星级/读写变量),并封装高层业务函数。
- 掌握事件推送器 add/push/rm 三操作的本质(表的增删与遍历),并用于后端事件驱动开发。
- 体会事件解耦价值:触发点只管 push,处理逻辑集中在监听处,代码整洁、职责分明。
- ---
#08
幂尔框架 第六节 前端的框架结构 和 前端起手动作规范
高级
【本节攻关核心】 讲解前端目录结构与正确学习姿势:缓存目录里藏着"隐藏大佬"——全部 996/Cocos 底层命令;官方开源脚本可从 3.7.5 Dev 包获取;明确 SL 库(万能工具箱)与 GUI 库(Cocos 引擎封装)的分工及 Cocos 引擎背景;随后实操把前端框架放入 Layout 并搭建"空格热更"(重载前端 + 发 999 协议让后端重载),再走通"建 NPC → 后端脚本接收 → 点击 → export 打开 UI → 界面按钮发协议"的完整前后端流程,反复强调"前端是骗子、行为须后端审核"。
✓ 已申请
立即上课
▶
讲解要点与技能清单 共 17 项 · 点击展开
讲解要点与指令拆解
- 前端目录职责:config、export(UI 骨骼页面)、layout(处理展示逻辑,日后最常用)、RES(图片)、Sprites(前端配置表转 Lua 调用);缓存加载规则=存在同名自定义文件时优先执行自定义文件。
- 隐藏底层:缓存目录存有全部前端引擎命令(二进制加密、带不规则 key 可解密);Cocos 无真正加密(读手机内存即可全解)。
- Cocos 背景:前端引擎即 Cocos(源于 Cocos2d),当前使用版本 3.15;996 不自研引擎因其量级远大于服务端引擎。
- 两大库分工:SL 库=万能库/工具箱(打印、消息、定时器、音效、坐标弧度、特效);GUI 库=Cocos 引擎的封装接口(调试/网络/定时/UI 组件),做版本开发学透两库即可。
- 前端学习路径:基础+系统函数打牢;实战课抄完关掉重写;报错是成长阶梯要学会读解;接口说明书约一两千个至少要过一遍。
- 前端入口:官方脚本本质开源、可在 3.7.5 Dev 下载;GUI init(进入游戏加载)/销毁(离开注销)两条主线,util 由初始化加载,可当注入式入口文件使用。
- 起手规范:Layout 中框架入口在"人物属性加载完毕"回调启动;空格监听 → reload:清掉已加载的含框架路径的缓存 → require 重载(大写 R 参数 true 表示每次自动重载)→ 发 999 号协议让后端热更。
- 接口四分类:自定义函数、996 API(带括号、查说明书)、底层接口(直接写名字不带括号)、匿名函数;看到无括号长命令即可识别底层接口。
- 前后端热更闭环:后端网络协议触发处收 999 → 执行 GM 重载 QF/QM/数据库,实现空格一下前后端同时热更。
- NPC 两种打开模式:①后端打开(点击 NPC 触发后端再要求前端开界面,有一层审核,安全)②纯前端打开(前端 NPC 对话直接开界面,无后端审核,仅适合无风险提示场景);原则="前端是骗子,后端必须验证每一句"。
- 标准链路示例:建测试 NPC → 后端脚本 → 前后端通讯模型配协议 ID → 点击 NPC → export 调用 UI 文件 → GUI 工具编辑界面加按钮 → GG.BUTTON:ONCLICK 内 GG.SERVER:SEND → 后端收到并打印。
- 前瞻预告:UI 名字即组件唯一 ID;框架 base 父类把组件设置写成链式;组件两种创建方式下一课细讲。
学完学员应掌握技能
- 熟悉前端目录各文件夹职责与缓存加载优先级,知道"底层接口藏在缓存、官方开源可下载"。
- 分清 SL 库与 GUI 库分工,明确"先打基础 → 抄实战 → 关掉重写"的前端学习路径。
- 会配置空格热更:清前端缓存 + require(true) 重载 + 发 999 协议驱动后端热更。
- 掌握"建 NPC → 后端脚本 → 点击 → export 开 UI → 按钮发协议"的标准前后端链路,理解两种 NPC 打开模式的安全取舍。
- 树立"前端是骗子、后端必须验证"的版本安全底线。