工程参考/副本一览
副本不是一张表配出来的,而是场景模板 + 一段 Lua 脚本 + 一个任务号三件套。玩家找 NPC 接任务,脚本校验队伍后动态创建一个副本实例,把人传进去,实例里跑自己的心跳和关卡逻辑,打完结算、销毁。
本页分两块:先讲 11 个有脚本实现的副本怎么玩,再列全部副本场景清单。
副本是怎么跑起来的
11 个副本脚本用的是同一套模板,从接任务到销毁的链条是固定的:
- 玩家与副本 NPC 对话,`OnEnumerate` 列出可接的任务,`CheckAccept` 校验条件:必须有队伍、必须是队长、附近队友人数够、队友都没接过。
- 通过后 `OnAccept` 发任务,任务号写死在脚本里(珍珑 1053、木人巷 1054、水牢 1055)。
- 玩家点进入,`MakeCopyScene` 用 `LuaFnSetSceneLoad_Map` 指定地图文件,把副本参数写进实例的 0 到 10 号槽,再调 `LuaFnCreateCopyScene` 创建实例。
- 创建成功后人被传进去,副本按 `TickTime` 秒一次回调 `OnCopySceneTimer`;怪物死亡触发 `OnKillObject`,玩家进区域触发 `OnEnterZone`,死亡触发 `OnHumanDie`。
- 打完 `OnSubmit` 结算。实例在没人时按 `NoUserTime` 保留一段时间后回收,或走 `CloseTick` 次关闭倒计时销毁。
副本实例有数量上限,创建失败时脚本提示「副本数量已达上限,请稍候再试!」。
副本类型用一组编号区分,定义在 `Public/Data/Script/ScriptGlobal.lua`:`FUBEN_EXAMPLE` 999、`FUBEN_MURENXIANG` 996、`FUBEN_SHUILAO` 995、`FUBEN_ZHENGLONG` 994、`FUBEN_WEDDING` 等,传进副本 0 号槽供运行时判断。
三个环式副本:珍珑棋局、木人巷、水牢
这三个是同一套模板的三份实例:接任务、进副本、清怪、推进一环、清完所有环结算。差别只在环数、奖励和难度分档。
| 项目 | 珍珑棋局 | 木人巷 | 水牢 |
|---|---|---|---|
| 脚本号 | 401000
|
401010
|
401020
|
| 任务号 | 1053 | 1054 | 1055 |
| NPC | 珍珑 | 木人 | 水牢 |
| 地图 | zhenlong.nav
|
xingxiu.nav
|
shuilao.nav
|
| 环数 | 13 环 | 9 环 | 7 环 |
| 每环金钱 | 7777 | 8888 | 9999 |
| 最少人数 | 1 人 | 3 人(硬编码) | 1 人 |
| 存活时限 | 30 分钟(360 次心跳 × 5 秒) | 同左 | 同左 |
| 任务目标 | 杀死全部怪物 | 杀死全部怪物 | 杀死全部怪物 |
木人巷的地图文件是 xingxiu.nav(星宿海),不是按副本名命名的,改地图时别想当然。
珍珑棋局的等级分档
`MakeCopyScene` 先算队伍平均等级(附近队友等级求和除以人数),再按档位决定这局刷哪一组怪:
| 队伍平均等级 | 怪物组 |
|---|---|
| ≤ 10 | 第 1 组 |
| ≤ 15 | 第 2 组 |
| ≤ 20 | 第 3 组 |
| ≤ 25 | 第 4 组 |
| ≤ 30 | 第 5 组 |
| ≤ 35 | 第 6 组 |
| ≤ 40 | 第 7 组 |
| ≤ 45 | 第 8 组 |
| ≤ 50 | 第 9 组 |
| > 50 | 不刷怪(脚本没有对应档) |
同一段逻辑还做三件事:从棋谱池随机挑一局(`mListCount` 当前配的是 1,也就是只有一种棋谱)、记录已经下了多少步、把队伍号存进副本数据供后续校验。
副本的公共参数槽
副本实例带一组数据槽,脚本靠它在心跳之间传状态:
| 槽号 | 存什么 |
|---|---|
| 0 | 副本类型编号(`FUBEN_*`) |
| 1 | 副本事件脚本号 |
| 2 | 定时器已调用次数 |
| 3 | 副本入口场景号 |
| 4 | 副本关闭标志,0 开放、1 关闭 |
| 5 | 离开倒计时次数 |
| 6 | 队伍号 |
| 7 | 已杀怪数量 |
| 8 | 选用的棋谱编号 |
| 9 | 已经下了的步数 |
| 10 | 当前怪物组编号 |
任务侧另有 6 个槽记录进度:0 号已完成环数、1 号当前环是否完成、2 号副本场景号、3 号接任务时的队伍号、4 号杀死任务怪数量、5 号完成用时(秒)。
另外八个副本
| 脚本号 | 名称 | 地图 | 特点 |
|---|---|---|---|
401001
|
珍珑棋局(活动版) | zhenlong.nav
|
分两个时段开放:11:30 到 14:30、20:30 到 22:00;带新手棋局模式 |
401030
|
婚庆典礼 | wedding_1/2/3.nav
|
心跳 5 秒一次、上限 500 次(约 41 分钟);三张礼堂图对应普通、高级、豪华 |
402030
|
镜湖水寨(剿匪) | jiaofei.nav
|
NPC 齐煞云;帮派福利性质的效率副本,进副本会扣数值、死亡在入口复活 |
402040
|
牡丹碗(蹴鞠) | cuju.nav
|
949 行,是四个蹴鞠脚本(`cuju_1/2/4`)的主入口 |
402046
|
飘渺 | — | 只有 76 行,靠区域触发:矩形范围 x 123 到 127、y 170 到 173 |
402047
|
涿鹿古战场(帮战) | zhuluKVK.nav
|
NPC 周然,任务名「前往涿鹿古战场」;1877 行,是最大的副本脚本,存活只给 60 次心跳、无人保留 10 秒 |
402102
|
拯救灵兽(野猪 protect) | petisland_2.nav
|
进副本保护灵兽,与 402105 共用一套流程 |
402105
|
野猪岔路(野猪 catch) | zhenshoulan.nav
|
捕获向玩法,与 402102 配对 |
全部副本场景(72 种)
`SceneInfo.ini` 里 `type=1` 的场景共 583 个,去重后 72 种。同名多份的是不同难度或不同层数的模板,比如光明洞、桃花阵、塔林各 3 份。
| 副本 | 场景号 | 份数 | 地图文件 |
|---|---|---|---|
| 聚贤庄 | 36、68 | 2 | juxian.scn、juxian_1.scn |
| 燕子坞 | 37、69、190 | 3 | yanzi.scn、yanzi_1.scn… |
| 一品堂 | 38、70 | 2 | yipin.scn、yipin_1.scn |
| 叛军营地 | 42 | 1 | _pingpan_1.scn |
| 木人巷 | 43 | 1 | murenxiang.scn |
| 珍珑棋局 | 44 | 1 | zhenlong.scn |
| 水牢 | 45 | 1 | shuilao.scn |
| 沙漠要塞 | 46 | 1 | shamo.scn |
| 宋辽边境 | 47 | 1 | songliao.scn |
| 野外匪寨 | 48 | 1 | yewai.scn |
| 竹林 | 49 | 1 | zhulin.scn |
| 光明洞 | 51、90、99 | 3 | guangmingdong.scn、guangmingdong_1.scn… |
| 逍遥谷底 | 52、91、100 | 3 | gudi.scn、gudi_1.scn… |
| 灵性峰 | 53、92、101 | 3 | lingxingfeng.scn、lingxingfeng_1.scn… |
| 丐帮酒窖 | 54、93、102 | 3 | jiujiao.scn、jiujiao_1.scn… |
| 桃花阵 | 55、94、103 | 3 | taohuazhen.scn、taohuazhen_1.scn… |
| 塔林 | 56、95、104 | 3 | tongrenxiang.scn、tongrenxiang_1.scn… |
| 五神洞 | 57、96、105 | 3 | wushendong.scn、wushendong_1.scn… |
| 墓穴 | 58 | 1 | muxue.scn |
| 塔底 | 59、98、107 | 3 | tadi.scn、tadi_1.scn… |
| 折梅峰 | 60、97、106 | 3 | zhemeifeng.scn、zhemeifeng_1.scn… |
| 集市 | 63 | 1 | jishi.scn |
| 矿场 | 64 | 1 | kuangchang.scn |
| 牧场 | 65 | 1 | muchang.scn |
| 书阁 | 66 | 1 | shuge.scn |
| 市集 | 67、108、109 | 3 | shiji.scn、shiji_1.scn… |
| 擂鼓山 | 78、85 | 2 | leigu.scn、leigu_1.scn |
| 万劫谷 | 79、84 | 2 | wanjie.scn、wanjie_1.scn |
| 苍茫山 | 80、83 | 2 | cangmang.scn、cangmang_1.scn |
| 工地 | 110 | 1 | gongdi.scn |
| 校场 | 111 | 1 | jiaochang.scn |
| 衙门 | 112 | 1 | yamen.scn |
| 三春幻境 | 113 | 1 | huanjing_1.scn |
| 三夏幻境 | 114 | 1 | huanjing_2.scn |
| 三秋幻境 | 115 | 1 | huanjing_3.scn |
| 三冬幻境 | 116 | 1 | huanjing_4.scn |
| 边关阵地山头 | 117、118、119… | 4 | bianguan_1.scn、bianguan_2.scn… |
| 考场 | 124 | 1 | kaochang.scn |
| 贼寇营地 | 127 | 1 | zeiying.scn |
| 少林寺 | 130 | 1 | shaolin_1.scn |
| 丐帮总舵 | 131 | 1 | gaibang_1.scn |
| 光明殿 | 132 | 1 | mingjiao_1.scn |
| 武当山 | 133 | 1 | wudang_1.scn |
| 天龙寺 | 134 | 1 | tianlong_1.scn |
| 凌波洞 | 135 | 1 | xiaoyao_1.scn |
| 峨嵋山 | 136 | 1 | emei_1.scn |
| 星宿海 | 137 | 1 | xingxiu_1.scn |
| 天山 | 138 | 1 | tianshan_1.scn |
| 比武会场 | 152 | 1 | dataosha.scn |
| 普通礼堂 | 153 | 1 | wedding_1.scn |
| 高级礼堂 | 154 | 1 | wedding_2.scn |
| 豪华礼堂 | 155 | 1 | wedding_3.scn |
| 擂台 | 184、187、191… | 482 | leitai_2.scn、leitai_1.scn |
| 镜湖匪寨 | 189 | 1 | jiaofei.scn |
| 玄雷坡 | 403 | 1 | xuanmuchang.scn |
| 毒障泽地 | 404 | 1 | dumuchang.scn |
| 熔岩之地 | 405 | 1 | huomuchang.scn |
| 玄武岛 | 406 | 1 | petisland_3.scn |
| 楼兰藏宝洞 | 407 | 1 | loulanxunbao.scn |
| 逐鹿 | 408 | 1 | zhuluKVK.scn |
| 生死擂台 | 410 | 1 | shengsileitai.scn |
| 缥缈峰 | 416 | 1 | piaomiao.scn |
| 帮会驻地 | 417 | 1 | protectguild.scn |
| 足球场 | 428 | 1 | zuqiuchang.scn |
| 篮球场 | 429 | 1 | lanqiuchang.scn |
| 排球场 | 430 | 1 | paiqiuchang.scn |
| 野猪农场 | 514 | 1 | zhenshoulan.scn |
| 圣兽山 | 515 | 1 | petisland_2.scn |
| 牡丹碗 | 516 | 1 | cuju.scn |
| 藏经阁 | 923 | 1 | cangjingge.scn |
| 皓月洲 | 1024 | 1 | mantuofb.scn |
| 曼陀山庄 | 1026 | 1 | mantuoshanzhuang_1.scn |
想改一个副本
| 改什么 | 动哪里 |
|---|---|
| 改环数、奖励、NPC 名字 | 脚本头部的 `g_MissionRound`、`g_MoneyBonus`、`g_Name` |
| 改地图 | `LuaFnSetSceneLoad_Map` 的参数,地图必须在 `SceneInfo.ini` 里配过 |
| 改等级分档 | `MakeCopyScene` 里那段 `if mylevel<=N` 的链 |
| 改进入条件 | `CheckAccept`,常见的是队伍人数 `g_LimitMembers` 与队长校验 |
| 改无人回收时间 | `g_NoUserTime`(秒)、`g_CloseTick`(心跳次数) |
| 改任务文案 | 脚本头部的 `g_MissionInfo`、`g_MissionTarget`、`g_ContinueInfo`、`g_MissionComplete` |
副本脚本都在 `Public/Data/Script/event/fuben/`,配套 NPC 脚本在 `obj/fuben/`(96 行左右的标准模板,只管对话与事件列表)。改完重新加载脚本即可,但已经开着的副本实例不会跟着变。