传奇服务端脚本命令是控制游戏玩法、NPC交互、任务执行、事件触发的核心工具,不同引擎(Blue、GOM、战神等)命令格式略有差异,但核心功能通用。以下按功能分类梳理常用脚本命令,包含命令格式、使用场景及示例,覆盖多数架设与修改需求。
一、基础交互类脚本命令(NPC对话、菜单触发)
1. 对话命令:SendMsg 格式:SendMsg 玩家ID 消息内容 颜色 换行符(可选) 功能:向指定玩家发送对话消息,用于NPC交互、系统提示。示例:SendMsg %USERID% 欢迎来到比奇城! 7 1(7为黄色,1代表换行)。
2. 菜单命令:MenuList 格式:MenuList 菜单标题|选项1|选项2|选项3|... 功能:创建NPC对话菜单,玩家点击选项触发后续脚本。示例:MenuList 新手引导|领取新手装备|传送至新手地图|退出对话,点击对应选项可关联其他命令执行。
3. 选择分支命令:Case 格式:Case 选项序号 功能:根据玩家选择的菜单选项,执行对应分支脚本。示例:Case 1(玩家选择第1个选项“领取新手装备”),后续衔接发放装备命令。
二、物品相关脚本命令(发放、回收、检测)
1. 发放物品命令:GiveItem 格式:GiveItem 玩家ID 物品ID 数量 持久度(可选) 功能:向指定玩家发放道具、装备或货币。示例:GiveItem %USERID% 1001 1 100(1001为木剑ID,发放1把持久100的木剑)。
2. 回收物品命令:TakeItem 格式:TakeItem 玩家ID 物品ID 数量 功能:从玩家背包中回收指定数量的物品,常用于任务提交。示例:TakeItem %USERID% 2001 5(回收玩家5个金疮药,2001为金疮药ID)。
3. 检测物品命令:CheckItem 格式:CheckItem 玩家ID 物品ID 数量 功能:检测玩家背包中是否存在指定数量的物品,返回1(存在)或0(不存在),用于条件判断。示例:CheckItem %USERID% 3001 1(检测玩家是否有1件裁决之杖,3001为裁决之杖ID)。
三、角色属性类脚本命令(等级、经验、属性修改)
1. 增加经验命令:AddExp 格式:AddExp 玩家ID 经验值 功能:为指定玩家增加经验,可用于任务奖励、活动加成。示例:AddExp %USERID% 10000(为玩家增加10000点经验)。
2. 调整等级命令:SetLevel 格式:SetLevel 玩家ID 目标等级 功能:直接设置玩家等级,超越正常升级流程。示例:SetLevel %USERID% 35(将玩家等级设置为35级)。
3. 修改属性命令:SetAttr 格式:SetAttr 玩家ID 属性类型 属性值 功能:修改玩家攻击、防御、魔法等基础属性。属性类型:1=攻击,2=魔法,3=道术,4=防御,5=魔御。示例:SetAttr %USERID% 1 50(将玩家攻击属性设置为50)。
四、传送类脚本命令(地图跳转、坐标移动)
1. 地图传送命令:MapMove 格式:MapMove 玩家ID 地图ID X坐标 Y坐标 功能:将玩家传送到指定地图的指定坐标。示例:MapMove %USERID% 3 320 280(将玩家传送到比奇城,地图ID3,坐标320,280)。
2. 随机传送命令:RandomMove 格式:RandomMove 玩家ID 地图ID 最小X 最大X 最小Y 最大Y 功能:在指定地图的坐标范围内随机传送玩家。示例:RandomMove %USERID% 3 300 350 250 300(在比奇城300-350X、250-300Y范围内随机传送)。
五、任务相关脚本命令(任务状态、奖励触发)
1. 设置任务状态命令:SetTaskStatus 格式:SetTaskStatus 玩家ID 任务ID 状态值 功能:修改玩家指定任务的进度状态,状态值0=未接,1=进行中,2=完成。示例:SetTaskStatus %USERID% 101 1(将101号任务设置为进行中状态)。
2. 检测任务状态命令:CheckTaskStatus 格式:CheckTaskStatus 玩家ID 任务ID 功能:检测玩家指定任务的当前状态,返回对应状态值,用于条件判断。示例:CheckTaskStatus %USERID% 101(检测玩家101号任务的状态)。
六、事件触发类脚本命令(怪物死亡、时间触发)
1. 怪物死亡触发命令:OnMonsterDie 格式:OnMonsterDie 怪物ID 脚本标识 功能:当指定ID的怪物死亡时,触发关联的脚本内容(如掉落特殊物品、发送全服公告)。示例:OnMonsterDie 100 1(100为沃玛教主ID,死亡时触发标识为1的脚本)。
2. 定时触发命令:Timer 格式:Timer 时间间隔(秒) 脚本标识 功能:按指定时间间隔循环触发脚本,用于定时活动、怪物刷新。示例:Timer 3600 2(每3600秒触发标识为2的脚本,如刷新世界BOSS)。
七、脚本控制类命令(条件判断、循环、结束)
1. 条件判断命令:If 格式:If 条件表达式 功能:判断条件是否成立,成立则执行后续脚本,不成立则跳过或执行Else分支。示例:If CheckItem %USERID% 2001 5(判断玩家是否有5个金疮药,成立则执行回收并奖励经验的脚本)。
2. 循环命令:Loop 格式:Loop 循环次数 脚本块 功能:重复执行指定次数的脚本内容。示例:Loop 3 GiveItem %USERID% 2001 1(循环3次,每次给玩家1个金疮药,共发放3个)。
3. 脚本结束命令:End 格式:End 功能:结束当前脚本的执行,避免后续无关脚本触发。示例:玩家完成任务领取奖励后,用End结束脚本,防止重复领取。
八、通用使用注意事项
1. 变量替换:脚本中%USERID%代表当前交互玩家的ID,%MAPID%代表当前地图ID,需根据场景正确使用变量,避免参数错误。
2. 引擎适配:不同引擎部分命令格式有差异(如GOM引擎的物品发放命令为GiveItemEx),使用前需确认当前引擎的命令手册,避免不兼容。
3. 脚本测试:修改或新增脚本后,需在单机测试环境中验证功能,确认无异常后再应用到正式服务端,避免引发游戏异常。
4. 文件路径:脚本文件默认存放于服务端“Script”或“QuestDiary”文件夹,需按引擎要求的路径存放,确保服务端能正常读取。

