本文档旨在为天龙八部服务端管理者提供 NPC 添加的详细操作指南,以大理场景为例,从核心文件定位、基础信息配置、脚本关联到最终测试验证,逐步拆解操作流程,适用于新增道具商人、任务 NPC、功能型 NPC(如元宝领取 NPC)等场景,帮助使用者快速掌握自定义 NPC 添加方法。
添加 NPC 需重点关注两个关键文件目录,所有配置与脚本均围绕其展开,具体如下:
- NPC 基础配置文件
- 路径:服务端
Public\Scene
文件夹
- 说明:以场景名命名的
.ini
文件,如大理场景对应dali_monster.ini
,苏州场景对应suzhou_monster.ini
。文件内记录场景内所有 NPC 的基础信息,包括名称、坐标、模型编号等核心参数。
- 脚本接口总文件
- 路径:服务端
Public\Data
文件夹下的Script.dat
文件
- 说明:作为脚本与 NPC 的关联桥梁,每个 NPC 的
script_id
(脚本 ID)需在此文件中对应具体的 Lua 脚本路径,确保 NPC 能触发预设功能(如对话、道具领取)。
- 用写字板或记事本打开
Public\Scene\dali_monster.ini
文件;
- 找到
[info]
模块下的monstercount
参数,该参数代表大理场景当前 NPC 总数;
- 若原配置为
monstercount=160
(现有 160 个 NPC),新增 1 个 NPC 需将数值改为161
,确保服务端识别新增配置。
在dali_monster.ini
文件末尾,按现有 NPC 格式新增[monsterX]
配置段(X 为 “总数 – 1”,如总数 161 时,X=160),各参数含义及填写规则如下表:
“元宝小富翁” 完整配置段示例:
[monster160]
guid=3897821
type=189
name=元宝小富翁
title=元宝领取
pos_x=162.0
pos_z=164.0
dir=27
script_id=2093
respawn_time=1000
group_id=-1
team_id=-1
base_ai=3
ai_file=0
patrol_id=-1
shop0=-1
shop1=-1
shop2=-1
shop3=-1
ReputationID=-1
level=5
基础配置完成后,NPC 仅能在场景中显示,需通过Script.dat
关联 Lua 脚本,才能实现具体功能(如对话、道具领取)。
- 用 16 进制文件编辑器(如 UltraEdit,简称 UE)打开
Public\Data\Script.dat
文件(不可用普通记事本,避免破坏格式);
- 找到大理 NPC 对应的脚本配置段(通常以
;大理NPC
为注释开头,脚本 ID 从002000
开始);
- 查看当前最后一个大理 NPC 的脚本配置,例如原最后一条为
002092=\obj\dali\odali_liuzhongfu.lua
;
- 在下方新增一行,格式为 “
脚本ID(4位补零)=脚本路径
”,以 “元宝小富翁” 的script_id=2093
为例,配置如下:
002093=\obj\dali\odali_yuanbaoxiaofuweng.lua
(脚本名建议与 NPC 功能关联,方便后续管理,如 “odali_yuanbaoxiaofuweng” 对应 “大理 – 元宝小富翁”
- 按
Script.dat
中配置的路径,在服务端Public\Data\Script\obj\dali
文件夹下,新建odali_yuanbaoxiaofuweng.lua
文件;
- 编写功能代码,以 “领取元宝” 为例,核心逻辑如下(需替换实际参数):
function OnDialog()
ShowDialog("欢迎来到元宝领取处!", "领取100元宝", "取消")
end
function OnSelect(index)
if index == 1 then
AddItem(玩家ID, 元宝道具ID, 100)
ShowMessage("恭喜!成功领取100元宝,请注意查收背包~")
else
ShowMessage("期待您下次光临!")
end
end
注:“玩家 ID”“元宝道具 ID” 需在服务端道具配置文件中查询,确保数值准
- 保存文件:确认
dali_monster.ini
、Script.dat
及 Lua 脚本均已保存,无格式错误;
- 重启服务端:只有重启天龙八部服务端,新增的配置与脚本才能被加载;
- 游戏内验证:登录游戏后前往大理场景,在
pos_x=162.0
、pos_z=164.0
坐标处,检查是否显示 “元宝小富翁” NPC,点击测试功能是否正常(如能否领取元宝)。
- NPC 不显示
- 检查
monstercount
数值是否比新增前多 1;
- 确认
guid
与现有 NPC 不重复;
- 核实坐标是否在场景合理范围内(避免超出地图边界)。
- 点击 NPC 无反应
- 检查
script_id
与Script.dat
中的配置是否完全一致(注意 4 位补零,如 2093 需写为 002093);
- 确认 Lua 脚本路径与
Script.dat
中的配置匹配。
- 脚本功能失效
- 检查 Lua 脚本语法(如括号、引号是否闭合);
- 核实 “玩家 ID”“道具 ID” 等参数是否填写正确。
暂无评论内容