内容管理系统CONTENT PLATFORM

完美世界 180 端副本单人化的教程

完美世界 180 端副本单人化教程

一、先确定目标模式

模式 A:允许单人进入,同时保留组队进入

这是最常用、风险最低的方案。

需要修改:

  • tasks.data 中的入口任务。
  • 如果入口不是任务,则检查 NPC 传送服务。
  • 一般不修改 gs.conf

模式 B:每个玩家创建独立副本

需要修改:

  • tasks.data,解除组队要求。
  • gs.conf,设置 owner_mode=single
  • 可以保留多人容量,但进入者不会共享同一个队伍副本。

模式 C:强制严格单人副本

需要修改:

  • tasks.data,解除组队要求并要求玩家不在队伍。
  • gs.conf,设置单人所有权和最大一人。
  • 必要时修改 NPC 入口服务。

推荐先实现模式 A,确认副本可以单人进入后,再决定是否改成模式 B 或 C。


二、查找副本编号

先确定副本对应的实例别名,例如:

Code
is05
is38
is61
is93

可以在以下位置查询:

  • NPC 编辑器中的地图列表。
  • 任务编辑器中的完成方式、传送目标或 WorldTag。
  • instance_cn.txt 地图中文对照表。
  • 服务端 /PWServer/gamed/gs.conf
  • 当前项目的地图与副本目录文档。

在服务器中查找:

Code
grep -n '^\[Instance_isXX\]' /PWServer/gamed/gs.conf

isXX 换成真实副本编号。

如果找到多个同名配置段,暂时不要直接修改,要先确认实际生效段,避免只修改了重复配置中的一处。


三、备份文件

在服务器执行:

Code
mkdir -p /PWServer/backups/solo-instance
cp -a /PWServer/gamed/gs.conf \
  /PWServer/backups/solo-instance/gs.conf.before-solo

cp -a /PWServer/gamed/config/tasks.data \
  /PWServer/backups/solo-instance/tasks.data.before-solo

如果还要修改 elements.data

Code
cp -a /PWServer/gamed/config/elements.data \
  /PWServer/backups/solo-instance/elements.data.before-solo

客户端同样备份:

Code
KHD_3840\element\data\tasks.data
KHD_3840\element\data\elements.data

四、修改入口任务

使用当前项目中的任务编辑器打开:

Code
/PWServer/gamed/config/tasks.data

实际操作时先把文件下载到 Windows 本地,不要直接远程编辑二进制文件。

1. 定位入口任务

可以通过以下方式寻找:

  • 搜索副本名称。
  • 搜索 NPC 对话中显示的任务名称。
  • 搜索副本入口任务 ID。
  • 在 EL 编辑器的 NPC_TASK_IN_SERVICE 中查看入口 NPC 关联的任务 ID。
  • 根据完成方式中的传送地图或 WorldTag 定位。

找到后同时检查父任务和子任务,因为组队条件可能设置在父节点。

2. 设置为“允许单人,也允许组队”

在任务编辑器的“队伍与共享”区域设置:

Code
要求组队:关闭
全队成功:关闭
队伍成员条件:全部清空
成员距离:0
要求不在队伍中:关闭

对应底层字段:

Code
m_bTeamwork = false
m_bAllSucc = false
m_TeamMemsWanted = 空
m_ulTeamMemsWanted = 0
m_bPremNotInTeam = false

这样单人可以接取任务,组队玩家通常也可以进入。

3. 设置为“强制玩家单独进入”

在上面设置的基础上启用:

Code
要求不在队伍中:开启

对应:

Code
m_bPremNotInTeam = true

m_bShowByNotInTeam 主要控制限制提示的显示,不是核心校验字段。

4. 保存并校验

保存后必须确认:

  • 文件仍为当前 180 端的任务版本 198。
  • 任务数量没有异常变化。
  • 队伍成员条件计数为 0。
  • 没有出现截断、字段错位或任务树断链。
  • 保存后的文件可以重新打开。

五、修改 gs.conf

只有需要“独立副本”或“严格一人”时才修改。

找到对应配置:

Code
[Instance_isXX]
index = ...
tag = ...
base_path = aXX/

1. 每个玩家独立副本

加入或修改:

Code
owner_mode = single

这会让副本实例按角色而不是按队伍分配。

2. 严格限制每个实例一人

再修改:

Code
player_per_instance = 1

完整示例:

Code
[Instance_isXX]
index = 78
tag = 138
base_path = a38/
owner_mode = single
player_per_instance = 1
instance_capacity = 300
player_capacity = 3000
npc_count = 131072
matter_count = 131072
pool_threshold_low = 10
pool_threshold_high = 20
cid = 0,2,13
idle_time = 300

不要随意修改:

Code
index
tag
base_path
cid
instance_capacity
listen_addr
save_point

其中 player_per_instance=1 只控制容量,不能解除任务中的“必须组队”条件。

当前项目中的 is38is93 已经采用:

Code
owner_mode=single
player_per_instance=1

可以作为参考。


六、检查 NPC 或传送服务

如果任务中已经关闭“要求组队”,游戏仍提示必须组队,说明入口可能不是普通任务控制。

使用 EL 编辑器检查入口 NPC,重点关注:

Code
NPC_TASK_IN_SERVICE
NPC_TASK_OUT_SERVICE
NPC_TRANSMIT_SERVICE

需要确认:

  • 入口服务关联的任务 ID。
  • 目标地图 Tag。
  • 目标坐标。
  • 等级、转生、境界和物品要求。
  • 是否存在其他入口任务。
  • 是否由活动控制器或 Lua 脚本控制。

如果入口是点击传送石直接进入,通常更应该检查传送服务,而不是只改任务。

不要直接删除 faction_team_instance 等世界限制。该参数用于特殊帮派或团队副本,盲目删除可能破坏副本匹配、重进和实例 Key。


七、同步客户端和服务端

只修改了 gs.conf

只上传服务端:

Code
/PWServer/gamed/gs.conf

修改了 tasks.data

必须同步:

Code
服务端:
/PWServer/gamed/config/tasks.data

客户端:
KHD_3840\element\data\tasks.data

修改了 elements.data

同样必须同步:

Code
服务端:
/PWServer/gamed/config/elements.data

客户端:
KHD_3840\element\data\elements.data

客户端和服务端数据不一致可能出现:

  • 入口显示与服务端校验不一致。
  • 任务无法接取。
  • 进入后立即断开。
  • 客户端显示任务但服务端拒绝。
  • GS 启动失败。

八、重启与验证

修改 tasks.dataelements.datags.conf 后,建议完整重启:

Code
pw restart

查看状态:

Code
pw status

如果目标副本不是默认常驻地图,需要启动对应实例:

Code
pw instance-start isXX

查看副本日志:

Code
tail -n 200 /PWServer/logs/gs-isXX.log

重点检查:

Code
initialization failed
key mismatch
player count exceed
invalid instance
task error
world tag error

九、测试清单

修改完成后至少验证:

  1. 玩家不组队时可以进入。
  2. 入口任务可以正常接取和完成。
  3. 进入后不会立即被踢出。
  4. 死亡后复活点正常。
  5. 退出副本后返回坐标正常。
  6. 副本重置正常。
  7. 第二名玩家进入时:
  • 模式 A:可以进入或组队进入。
  • 模式 B:进入自己的独立实例。
  • 模式 C:被限制,不能进入同一实例。
  1. 重新登录后可以正常重进或退出。
  2. GS 日志中没有实例 Key 不匹配。
  3. 客户端任务显示与服务端一致。

十、回滚方法

如果出现异常:

Code
cp -a /PWServer/backups/solo-instance/gs.conf.before-solo \
  /PWServer/gamed/gs.conf

cp -a /PWServer/backups/solo-instance/tasks.data.before-solo \
  /PWServer/gamed/config/tasks.data

pw restart

同时恢复客户端原来的 tasks.dataelements.data


最终建议

如果只是希望老副本可以一个人刷,优先只修改入口任务:

Code
关闭“要求组队”
清空队伍成员条件
不启用“要求不在队伍中”

只有希望每名玩家拥有完全独立的副本空间时,再增加:

Code
owner_mode=single

只有希望副本内绝对不能出现第二名玩家时,才增加:

Code
player_per_instance=1

© 2026 Content Platform. All rights reserved.