传奇服务端脚本命令是控制游戏逻辑、NPC行为、任务流程的核心工具,通过脚本实现装备发放、怪物刷新、地图传送、条件判断等功能。脚本文件位于Mir200\Envir目录,包括Market_def、QuestDiary、Robot_def等文件夹,不同文件承担不同功能。
一、脚本基础结构与执行原理
脚本执行遵循“检测-执行”逻辑框架,以#IF条件判断开始,#ACT执行动作结束。基础结构包含段落标签、条件语句、执行命令三部分。段落标签以[@标签名]格式定义,作为脚本入口点。条件语句检测玩家状态,执行命令实现具体功能。
脚本文件存储位置决定其作用范围。Market_def文件夹存放商人NPC脚本,控制物品买卖与对话。QuestDiary存放任务脚本,管理任务接取与完成流程。Robot_def存放机器人脚本,实现自动巡逻与行为控制。MapQuest_def存放地图触发脚本,响应特定地图事件。
脚本加载顺序影响功能生效。服务端启动时按固定顺序加载脚本文件,先加载系统脚本后加载自定义脚本。修改脚本后需使用@reloadnpc命令重新加载,或重启服务端使更改生效。脚本错误会导致NPC功能异常或服务端报错,需检查语法与逻辑。
二、核心命令分类与功能详解
条件检测命令用于判断玩家状态。 CHECKLEVEL检测玩家等级,格式CHECKLEVEL 数值,数值为要求的最低等级。CHECKITEM检测背包物品数量,格式CHECKITEM 物品名 数量,支持同时检测多个物品。CHECKGOLD检测金币数量,格式CHECKGOLD 数值,数值为要求的最低金币数。CHECKPKPOINT检测PK值,格式CHECKPKPOINT 数值,用于红名判断。
物品操作命令管理玩家背包。 GIVE给予物品,格式GIVE 物品名 数量,可给予装备、道具、金币。TAKE收回物品,格式TAKE 物品名 数量,从玩家背包移除指定物品。TAKEW从身上移除装备,格式TAKEW 物品名,直接卸下穿戴的装备。CHECKBAGSIZE检测背包空格,格式CHECKBAGSIZE 数量,判断背包剩余空间是否足够。
地图传送命令控制玩家位置。 MAP移动到随机坐标,格式MAP 地图编号,将玩家传送到指定地图的随机位置。MAPMOVE移动到指定坐标,格式MAPMOVE 地图编号 X坐标 Y坐标,精确传送至目标点。MAPMOVE支持范围参数,格式MAPMOVE 地图编号 X坐标 Y坐标 范围,在指定坐标周围随机传送。
怪物控制命令管理游戏生物。 MONGEN刷新怪物,格式MONGEN 怪物名 数量 刷新时间,在当前位置生成怪物。MONGENEX在指定坐标刷新,格式MONGENEX 怪物名 数量 X坐标 Y坐标 范围 刷新时间。MONCLEAR清除怪物,格式MONCLEAR 地图编号,移除指定地图所有怪物。MONCLEAR支持怪物名参数,格式MONCLEAR 地图编号 怪物名,只清除特定怪物。
玩家属性命令修改角色状态。 CHANGELEVEL调整等级,格式CHANGELEVEL +-数值,正数升级负数降级。CHANGEEXP调整经验,格式CHANGEEXP +-数值,直接修改经验值。CHANGEMAKEPOINT调整声望,格式CHANGEMAKEPOINT +-数值。CHANGEPKPOINT调整PK值,格式CHANGEPKPOINT +-数值,用于清除红名。
三、变量系统与数据存储
私人变量存储角色临时数据。 P0-P9变量在对话期间有效,关闭NPC窗口后重置为零。D0-D9变量在角色在线期间有效,小退后清零。M0-M9变量在角色在线期间有效,切换地图后清零。N0-N9变量在角色在线期间有效,小退后清零。S0-S9为字符型变量,存储字符串信息。
全局变量存储服务器数据。 G0-G499为数字型全局变量,保存在Mir200\GlobalVal.ini文件中,服务器重启后保留。A0-A499为字符型全局变量,同样保存在GlobalVal.ini中。I0-I99为临时全局变量,服务器重启后清零。全局变量所有玩家共享,用于记录全服事件进度。
持久变量存储角色永久数据。 U0-U99为数字型私人变量,保存在人物数据库Mir.db中,下线不丢失。T0-T99为字符型私人变量,同样保存在人物数据库中。这些变量适合存储任务进度、个人成就等需要永久保存的数据。
变量操作命令实现数据处理。 MOV给变量赋值,格式MOV 变量名 数值,如MOV P0 100。INC变量增加,格式INC 变量名 数值,如INC P0 10使P0增加10。DEC变量减少,格式DEC 变量名 数值。SMALL检测小于,格式SMALL 变量名 数值,变量小于数值返回真。LARGE检测大于,格式LARGE 变量名 数值。EQUAL检测等于,格式EQUAL 变量名 数值。
四、NPC脚本编写实战
基础NPC对话脚本结构。 以[@main]段落开始,包含#IF条件判断、#ACT执行命令、#SAY显示对话。示例:[@main] #IF CHECKLEVEL 35 #ACT GIVE 屠龙 1 #SAY 恭喜达到35级,获得屠龙刀! #ELSESAY 等级不足35级,无法领取奖励。
商人NPC脚本配置。 开头使用%100表示正常价格,%200表示双倍价格。+5代表武器购买,+6代表武器出售,+43代表武器修理。+15头盔,+10衣服购买,+11衣服修理。+26手镯类,+0药水购买,+42药水出售。+30蜡烛,+25特殊药水。+3卷轴书籍购买,+4卷轴书籍出售。
任务NPC脚本实现。 使用QUEST_ACCEPT接取任务,QUEST_PROGRESS检测任务进度,QUEST_FINISH完成任务。示例:[@接受任务] #IF CHECKLEVEL 20 #ACT QUEST_ACCEPT 1001 收集鹿肉 #SAY 请收集10个鹿肉。 [@提交任务] #IF CHECKITEM 鹿肉 10 #ACT TAKE 鹿肉 10 GIVE 金币 5000 QUEST_FINISH 1001 #SAY 任务完成,获得5000金币。
多功能NPC脚本设计。 使用MENU创建选项菜单,每个选项对应不同功能段落。示例:[@main] #SAY 请选择功能:\ <领取奖励/@奖励>\ <传送地图/@传送>\ <兑换物品/@兑换> [@奖励] #IF CHECKLEVEL 30 #ACT GIVE 经验卷 5 #SAY 获得5个经验卷。
五、地图触发与事件脚本
地图进入触发脚本。 在MapQuest.txt中配置,格式:地图编号 触发标识 怪物名 触发脚本。示例:3 [@进入地图] 白野猪 @BOSS刷新,玩家进入地图3时触发@BOSS刷新段落。触发脚本写在QuestDiary对应文件中。
怪物死亡触发脚本。 使用OnKillMob标签,在QFunction-0.txt中定义。示例:[@OnKillMob] #IF CheckKillMonName 白野猪 #ACT GIVE 沃玛号角 1 SENDMSG 0 玩家<$USERNAME>击杀了白野猪,获得沃玛号角!
定时触发脚本。 使用Robot_def文件夹中的机器人脚本,配置执行时间与触发段落。示例:在RobotManage.txt中添加#AutoRun NPC MIN 1 @每分钟触发,每分钟执行一次@每分钟触发段落。用于定时活动、自动公告等功能。
攻击触发脚本。 在QFunction-0.txt中使用[@Attack]标签,玩家攻击时触发。示例:[@Attack] #IF Random 100 #ACT SENDMSG 0 玩家<$USERNAME>发动攻击!几率触发提示信息。
六、装备与属性操作命令
装备给予命令扩展格式。 GIVE支持极品属性参数,格式GIVE 物品名 数量 属性1属性2 ... 属性13。属性位置对应:1攻击、2魔法、3道术、4幸运、5诅咒、6准确、7敏捷、8强度、9体力、10魔力、11防御、12魔防、13重量。示例:GIVE 屠龙 1 5 0 0 3 0 0 0 0 0 0 0 0
0 给予幸运+3的屠龙刀。
装备升级命令。 UPGRADEITEMEX升级装备指定属性,格式UPGRADEITEMEX 装备位置 属性位置 升级点数。装备位置:0衣服、1武器、2蜡烛、3项链、4头盔、5左手镯、6右手镯、7左戒指、8右戒指、9符、10腰带、11鞋子、12宝石。属性位置与GIVE命令相同。
装备检测命令。 CHECKITEMW检测身上装备,格式CHECKITEMW 物品名,判断是否穿戴指定装备。CHECKITEMID检测物品ID,格式CHECKITEMID 物品ID,精确检测特定ID物品。CHECKDURAEVA检测物品品质,格式CHECKDURAEVA 物品名 数值,用于检测矿石等物品纯度。
属性修改命令。 HUMAN调整人物属性,格式HUMAN 属性类型 +-数值。属性类型:HP生命、MP魔法、AC防御、MAC魔防、DC攻击、MC魔法、SC道术、SPEED速度、HIT准确、DODGE敏捷。示例:HUMAN HP +100 增加100点生命值。
七、系统控制与消息命令
全服公告命令。 SENDMSG发送消息,格式SENDMSG 颜色 内容。颜色代码:0白色、1绿色、2蓝色、3黄色、4红色、5紫色、6粉色、7灰色、8黑色。示例:SENDMSG 0 服务器将于10分钟后重启,请及时下线!发送白色全服公告。
个人消息命令。 MESSAGE发送私人消息,格式MESSAGE 内容,仅当前玩家可见。SENDMSG支持私人消息格式,SENDMSG 6 <$USERNAME>获得屠龙刀!发送粉色私人提示。
时间控制命令。 TIMERECALL设置地图停留时间,格式TIMERECALL 分钟数,限制玩家在特定地图的停留时间。BREAKTIMERECALL取消时间限制。CHECKDAYTIME检测游戏内时间,格式CHECKDAYTIME,判断是否为白天。
天气控制命令。 WEATHER控制天气效果,格式WEATHER 天气类型 强度。天气类型:1下雨、2下雪、3雾、4沙暴。强度范围1-10,数值越大效果越强。示例:WEATHER 1 5 设置中等强度下雨。
八、脚本调试与错误处理
语法错误排查。 脚本文件必须使用ANSI编码保存,UTF-8编码会导致乱码。段落标签必须唯一,重复标签会导致执行混乱。命令参数数量必须正确,缺少参数会导致执行失败。变量使用前必须初始化,未初始化变量值为0。
逻辑错误调试。 使用SENDMSG输出调试信息,查看变量值与执行流程。示例:#ACT MOV P0 100 SENDMSG 6 当前P0值为:<$STR(P0)>。分段测试脚本功能,先测试条件判断,再测试执行命令。
性能优化建议。 避免在频繁触发的脚本中使用复杂计算,减少服务器负担。使用局部变量代替全局变量,减少数据读写次数。合理使用BREAK命令结束脚本执行,避免多余判断。批量操作使用循环结构,减少代码重复。
兼容性注意事项。 不同引擎命令存在差异,GOM引擎与BLUE引擎命令不完全相同。变量范围不同引擎有区别,GOM支持P0-P999,BLUE仅支持P0-P9。新功能命令需确认引擎支持情况,避免使用未实现命令。
九、高级脚本技巧应用
随机事件实现。 使用RANDOM命令生成随机数,格式RANDOM 数值,生成0到数值-1的随机整数。示例:#IF RANDOM 10 #ACT GIVE 金币 1000,10%几率获得1000金币。配合多个#IF实现多选一随机事件。
循环结构实现。 使用GOTO与变量实现循环,示例:[@循环开始] #IF SMALL P0 10 #ACT INC P0 1 GIVE 金币 100 GOTO @循环开始,循环10次每次给予100金币。注意设置循环退出条件,避免无限循环。
数组模拟实现。 使用多个变量模拟数组,P0-P9作为数组元素。示例:MOV P0 100 MOV P1 200 MOV P2 300,使用循环读取数组值。配合INC实现数组遍历。
文件操作实现。 使用ADDNAMELIST添加名单到文件,格式ADDNAMELIST 文件名。CHECKNAMELIST检测名单,格式CHECKNAMELIST 文件名。DELNAMELIST删除名单,格式DELNAMELIST 文件名。用于记录任务完成状态、活动参与名单等。
多条件判断实现。 使用AND连接多个条件,所有条件满足才执行。示例:#IF CHECKLEVEL 35 AND CHECKITEM 屠龙 1 #ACT GIVE 经验卷 10。使用OR连接多个条件,任一条件满足即执行。示例:#IF CHECKLEVEL 35 OR CHECKITEM 屠龙 1 #ACT GIVE 经验卷 5。
十、实用脚本示例集合
每日签到脚本。 使用U变量记录签到日期,检测是否已签到。示例:[@签到] #IF EQUAL U0 <DAY> #SAY 今日已签到 #ACT MOV U0 <DAY> GIVE 金币 5000 SENDMSG 0 玩家<USERNAME>完成每日签到!使用<DAY>系统变量获取当前日期。
等级奖励脚本。 检测玩家等级给予对应奖励,使用多个条件判断。示例:[@等级奖励] #IF EQUAL U1 0 #ACT [@35级] #IF CHECKLEVEL 35 #ACT GIVE 屠龙 1 MOV U1 1 #SAY 获得35级奖励屠龙刀!使用U1记录是否已领取35级奖励。
抽奖脚本实现。 使用RANDOM实现随机抽奖,不同几率获得不同奖励。示例:[@抽奖] #IF CHECKGOLD 1000 #ACT TAKE 金币 1000 #IF RANDOM 100 #ACT [@一等奖] GIVE 屠龙 1 #IF RANDOM 20 #ACT [@二等奖] GIVE 圣战戒指 1 #IF RANDOM 5 #ACT [@三等奖] GIVE 金币 10000 #ELSESAY 很遗憾,未中奖。
自动回收脚本。 检测背包物品自动回收兑换金币。示例:[@自动回收] #IF CHECKITEM 战神盔甲 1 #ACT TAKE 战神盔甲 1 GAMEGOLD + 100 #IF CHECKITEM 圣战戒指 1 #ACT TAKE 圣战戒指 1 GAMEGOLD + 50 使用GAMEGOLD增加元宝。
活动时间限制脚本。 检测系统时间限制活动参与。示例:[@参与活动] #IF LARGE <HOUR> 18 AND SMALL <HOUR> 22 #ACT GOTO @活动进行中 #ELSESAY 活动时间未到,请在18-22点参与。使用<$HOUR>获取当前小时。
十一、脚本命令速查参考
条件检测类: CHECKLEVEL检测等级、CHECKITEM检测物品、CHECKGOLD检测金币、CHECKPKPOINT检测PK值、CHECKBAGSIZE检测背包空间、CHECKHORSE检测坐骑、CHECKMAGIC检测技能。
物品操作类: GIVE给予物品、TAKE收回物品、TAKEW卸下装备、GAMEGOLD调整元宝、GAMEPOINT调整游戏点、CREDITPOINT调整声望。
地图传送类: MAP随机传送、MAPMOVE定点传送、RECALL召唤玩家、GROUPRECALL召唤队伍、MAPMOVERANGE范围传送。
怪物控制类: MONGEN刷新怪物、MONCLEAR清除怪物、MONGENEX坐标刷新、RECALLMOB召唤为宝宝、RESTMOB重置怪物。
属性调整类: CHANGELEVEL调整等级、CHANGEEXP调整经验、CHANGEMAKEPOINT调整声望、CHANGEPKPOINT调整PK值、HUMAN调整属性。
变量操作类: MOV赋值、INC增加、DEC减少、MUL乘法、DIV除法、SMALL小于、LARGE大于、EQUAL等于。
消息发送类: SENDMSG全服公告、MESSAGE私人消息、SENDMSG 6粉色提示、SENDMSG 4红色警告、SENDMSG 1绿色系统。
时间控制类: TIMERECALL时间限制、BREAKTIMERECALL取消限制、CHECKDAYTIME检测白天、CHECKDATETIME检测日期时间。
文件操作类: ADDNAMELIST添加名单、CHECKNAMELIST检测名单、DELNAMELIST删除名单、CLEARNAMELIST清空名单。
系统功能类: KICK踢出玩家、KILL杀死玩家、RELOADNPC重载NPC、RELOADITEMDB重载物品数据库、RELOADMONSTERDB重载怪物数据库。
十二、总结归纳
传奇服务端脚本命令体系完整,涵盖游戏运营各个方面。掌握基础命令语法是脚本编写前提,理解变量系统实现复杂逻辑。实际应用需结合具体需求,从简单功能开始逐步深入。
脚本编写注重逻辑严谨,条件判断与执行命令必须匹配。变量使用区分作用范围,私人变量用于临时数据,全局变量用于全服状态。性能优化避免复杂计算,减少服务器负担。
调试过程逐步验证,使用消息输出辅助排查。兼容性注意引擎差异,参考对应引擎说明书。实战积累经验,从模仿现有脚本开始,逐步实现自定义功能。
脚本命令是传奇服务端核心控制工具,通过组合不同命令实现丰富游戏内容。系统学习命令分类与用法,结合实际需求灵活应用,可打造独特游戏体验,满足各种运营需求。

