解决传奇GEE服务器NPC重载后消失问题:修复CreateNPC命令与脚本整合

来源: 作者: 点击:

在运行传奇GEE服务器时,有时会遇到使用CreateNPC命令创建的NPC在服务器重启后消失的问题。这通常是由于脚本配置、坐标处理或文件路径设置不正确导致的。本文将详细介绍如何修复这个问题,以及如何扩展CreateNPC命令以实现更灵活的NPC创建。

问题概述
当你使用CreateNPC命令创建NPC,如:

CreateNPC NPC名字 地图ID 坐标X 坐标Y 外观ID 脚本文件 脚本类型标记
Copy
并在服务器重启后,原本通过脚本创建的NPC不再显示,这可能是由于脚本文件路径问题或者脚本的依赖性没有正确处理。

解决方案
修复CreateNPC命令参数:

确保坐标参数(-1表示随机)在服务器重启后仍能正确应用。如果使用随机坐标,需要在脚本中处理并保存NPC的初始位置。
扩展CreateNPC命令:

修改CreateNPC命令,使其接受一个参数来决定脚本文件是否需要包含地图名称。例如:
CreateNPC NPC名字 地图ID 坐标X 坐标Y 外观ID 脚本文件 [地图名称标记]
Copy
如果地图名称标记为0,脚本文件名应为“NPC名字-地图ID.txt”;如果为1,脚本文件名仅需“NPC名字.txt”。

脚本文件管理:

将所有NPC相关的脚本文件(如“测试-3.txt”)放置在Market_Def目录下,确保脚本文件结构清晰,便于管理。
脚本文件内容:

使用脚本文件如#IF和#ACT来设置NPC的创建行为,确保在服务器启动时能正确执行创建操作。
保存脚本状态:

如果脚本需要处理服务器重启后的状态,考虑在脚本中添加保存和恢复NPC状态的逻辑。
示例脚本
#IF
#ACT
if IsServer() then
if FileExists("NPC名字-3.txt") then
CreateNPC "测试NPC" 3 -1 -1 8 "NPC名字-3" 0
else
CreateNPC "测试NPC" 3 330 330 8 "NPC名字-3" 0
end
end
#SAY
Copy
这个脚本在服务器启动时检查脚本文件是否存在,根据存在与否动态设置坐标。这样,即使服务器重启,NPC也能根据脚本恢复。 

修复CreateNPC命令创建的NPC重新加载后所有创建的NPC消失的问题 修正上版扩展CreateNPC 参数后固定坐标无效问题 扩展CreateNPC命令(详见文档) 通过脚本命令建立一个NPC,服务器重启后消失.

格式: CreateNPC NPC名字 地图 坐标X(-1时随机坐标) 坐标Y(-1时随机坐标) 外观 脚本文件 脚本文件是否要加上地图名称(例如.设置为0时脚本文件必须带“-3”如:“传送员-3.txt” 设置为1时脚本文件不需要带“-3”如:“传送员.txt”这样的好处就是,你可以在任意地图地图创建NPC,只要一个脚本“传送员.txt”而不需要“传送员-0.txt、传送员-3.txt”等等好多NPC脚本)
注意: 脚本文件必须在Market_Def目录中.

例如:首先在Market_Def中建立一个叫测试-3.txt的脚本文件.
#IF
#ACT
CreateNPC 测试 3 330 330 8 测试-3 0
#SAY
通过脚本建立了一个NPC.

#IF
#ACT
CreateNPC 测试NPC 3 -1 -1 8 测试NPC 1
#SAY
通过脚本建立了一个NPC 随机坐标