传奇服务端脚本命令是控制游戏功能、NPC交互、任务触发、活动运行的核心,所有游戏内的操作的逻辑,均通过脚本命令实现。以下整理所有主流传奇引擎(GOM、GEE、BLUE、996等)通用的脚本命令,按功能分类详解,每个命令均附带正确格式、具体实例,全程无多余修饰,直奔主题,新手可直接复制使用,同时标注常见错误及注意事项,避免踩坑。
先明确核心:传奇服务端脚本命令需在指定脚本文件(QFunction-0.txt、QManage.txt、NPC脚本等)中编写,所有命令、符号必须使用英文半角,中文全角符号会导致脚本报错,无法执行;脚本命令区分大小写(部分引擎不区分,但建议统一规范),触发标识、变量名需与相关配置一致,否则无法触发脚本。
一、基础变量操作命令(最常用,所有脚本必用)
变量是脚本中存储数据的核心,基础变量操作命令用于赋值、累加、清零,适配所有脚本场景,新手需优先掌握,避免因变量错误导致脚本报错。
1. MOV 命令(赋值命令)
作用:给指定变量赋值,可赋值数值、字符串,是脚本中最基础、最常用的命令,几乎所有脚本都会用到。
正确格式:
格式1(数值赋值):MOV 变量名 数值 (适用于数值型变量,用于存储数字,可后续用于累加、判断)
格式2(字符串赋值):MOV 变量名 "字符串" (适用于字符型变量,用于存储文字,字符串必须用英文半角双引号括起来)
实例1(数值赋值):MOV G507 0 (给变量G507赋值0,用于后续INC命令累加)
实例2(字符串赋值):MOV A551 "法师" (给变量A551赋值“法师”,用于存储玩家职业信息)
常见错误:赋值字符串时未加英文半角双引号(如MOV A551 法师),会导致脚本报错;变量名包含特殊符号(如MOV G#507 0),引擎无法识别。
2. INC 命令(累加命令)
作用:给数值型变量累加指定数值,仅适用于数值型变量,无法用于字符型变量,使用前需给变量赋初始值(用MOV命令)。
正确格式:INC 变量名 累加数值 (累加数值可正可负,正数累加,负数递减)
实例1(累加):INC G507 2 (给变量G507的当前值加2,前提是已用MOV G507 0赋值)
实例2(递减):INC G507 -1 (给变量G507的当前值减1,实现数值递减)
常见错误:未给变量赋初始值直接使用INC命令;用INC命令操作字符型变量(如INC A551 2),会导致脚本报错。
3. CLR 命令(清零命令)
作用:将指定数值型变量清零,用于重置变量值,常见于任务重置、活动重置场景。
正确格式:CLR 变量名
实例:CLR G507 (将变量G507的值重置为0,无论之前值为多少,清零后均为0)
注意:CLR命令仅适用于数值型变量,无法清零字符型变量,字符型变量需用MOV命令重新赋值(如MOV A551 "")。
4. CMP 命令(比较命令)
作用:比较两个变量或一个变量与一个数值的大小,用于脚本判断(配合#IF命令使用),核心用于触发条件判断。
正确格式:
格式1:CMP 变量名 数值 (比较变量与数值的大小)
格式2:CMP 变量名1 变量名2 (比较两个变量的大小)
实例1:CMP G507 10 (比较变量G507的值是否等于10,配合#IF命令判断是否触发后续操作)
实例2:CMP G507 G508 (比较变量G507和G508的值,用于判断两个数值的大小关系)
注意:CMP命令仅适用于数值型变量,无法比较字符型变量,字符型变量需用其他判断命令。
二、NPC交互命令(NPC脚本核心,控制NPC对话、触发操作)
NPC脚本是传奇服务端最常用的脚本类型,所有NPC的对话、功能触发(如传送、领奖、任务接取),均通过以下命令实现,结合实例可直接复制到NPC脚本文件中使用。
1. @XXX 命令(触发标识命令)
作用:定义NPC的触发标识,点击NPC时,通过触发标识执行对应脚本,是NPC脚本的核心入口,所有NPC功能均需先定义触发标识。
正确格式:(@触发标识) (触发标识可自定义,建议与功能一致,便于后续修改)
实例:(@竞价地图触发) (定义“竞价地图”NPC的触发标识,点击NPC后执行该标识下的脚本)
注意:触发标识后面的括号必须是英文半角,不能遗漏;多个NPC的触发标识不能重复,否则会导致脚本冲突,无法正常触发。
2. #SAY 命令(对话命令)
作用:控制NPC的对话内容,显示在玩家聊天窗口,可添加颜色、换行,用于引导玩家操作,是NPC交互的基础命令。
正确格式:#SAY 对话内容 (换行用\n,颜色用COLOR=颜色代码,如COLOR=clFuchsia为紫色)
实例:#SAY COLOR=clAqua 欢迎来到竞价地图!\n点击进入免费泡点--每秒12000经验/@免费泡点 COLOR=clFuchsia 限制48级! (NPC显示紫色对话,引导玩家点击触发泡点功能)
补充:常见颜色代码(通用):clAqua(青色)、clFuchsia(紫色)、clRed(红色)、clYellow(黄色),可根据需求调整对话颜色,增强视觉效果。
3. #ACT 命令(执行命令)
作用:执行具体的操作(如传送、赋值、给物品),通常配合#IF命令使用,满足判断条件后,执行#ACT后的命令,是NPC脚本的核心执行命令。
正确格式:#ACT 命令1 命令2 (多个命令可分行编写,按顺序执行)
实例:#ACT MOV A551 "法师" MOV G507 0 INC G507 2 (满足判断条件后,执行赋值、累加操作)
注意:#ACT命令需跟在#IF命令之后,不能单独使用;#ACT后每个命令需单独一行,避免多个命令写在一行导致执行失败。
4. #IF 命令(判断命令)
作用:判断条件是否成立,成立则执行#ACT后的命令,不成立则执行#ELSEACT后的命令(可选),是脚本逻辑判断的核心命令。
正确格式:
#IF 判断条件
#ACT 成立执行的命令
#ELSEACT 不成立执行的命令(可选)
实例:#IF CHECKLEVELEX < 48 (判断玩家等级是否低于48级) #ACT mapmove mfjqpd (成立则传送至免费泡点地图) #ELSEACT SENDMSG 5 你已经超过48级,无法进入免费泡点! (不成立则提示玩家)
常见判断条件:CHECKLEVELEX < 数值(玩家等级低于指定数值)、CHECKLEVELEX > 数值(玩家等级高于指定数值)、CHECKGAMEGOLD > 数值(玩家元宝大于指定数值)。
5. mapmove 命令(传送命令)
作用:将玩家传送到指定地图、指定坐标,是NPC脚本中最常用的命令之一,适用于传送、泡点、副本等场景。
正确格式:
格式1:mapmove 地图代码 坐标X 坐标Y (传送到指定地图的指定坐标)
格式2:mapmove 地图名称 (传送到指定地图的默认坐标)
实例1:mapmove 3 330 321 (将玩家传送到地图3(比奇城)的330:321坐标)
实例2:mapmove mfjqpd (将玩家传送到免费泡点地图,地图名称需与服务端地图配置一致)
常见错误:地图代码或地图名称错误,导致玩家无法传送;坐标超出地图范围,导致传送后闪退或卡在地图外。
三、玩家相关命令(控制玩家属性、物品、经验)
此类命令用于控制玩家的等级、经验、元宝、物品等属性,是任务奖励、活动福利、NPC功能的核心命令,每个命令均附带实例,可直接复制使用。
1. ChangeExp 命令(经验修改命令)
作用:给玩家增加或减少经验,用于任务奖励、泡点、活动等场景,是最常用的玩家属性修改命令。
正确格式:ChangeExp +数值(增加经验) / ChangeExp -数值(减少经验)
实例1:ChangeExp +12000 (给玩家增加12000经验,适用于免费泡点场景)
实例2:ChangeExp +100000 (给玩家增加100000经验,适用于收费泡点场景)
注意:数值不能为负数(减少经验需用-数值);经验值不能超过服务端设置的等级上限,否则无法正常增加。
2. GAMEGOLD 命令(元宝修改命令)
作用:给玩家增加或减少元宝,用于收费泡点、物品购买、任务奖励等场景,适配所有主流引擎。
正确格式:GAMEGOLD +数值(增加元宝) / GAMEGOLD -数值(减少元宝)
实例1:GAMEGOLD -10 (给玩家减少10元宝,适用于每秒收费10元宝的泡点场景)
实例2:GAMEGOLD +100 (给玩家增加100元宝,适用于任务奖励场景)
常见错误:减少元宝时,玩家当前元宝不足,会导致脚本报错;数值包含特殊符号,引擎无法识别。
3. Give 命令(物品给予命令)
作用:给玩家发放指定物品,可指定物品数量、持久度,用于任务奖励、活动发放、NPC兑换等场景。
正确格式:Give 物品名称 数量 (持久度可选,默认满持久)
实例1:Give 裁决之杖 1 (给玩家发放1把裁决之杖,满持久)
实例2:Give 强效太阳水 10 (给玩家发放10瓶强效太阳水)
注意:物品名称必须与服务端数据库(StdItems.DB)中的物品名称一致,大小写敏感;数量不能为0或负数,否则无法发放。
4. Take 命令(物品扣除命令)
作用:扣除玩家身上的指定物品及数量,用于物品兑换、任务提交、副本进入等场景,与Give命令配套使用。
正确格式:Take 物品名称 数量
实例:Take 金币 1000 (扣除玩家身上1000金币,用于NPC兑换物品)
常见错误:玩家身上无对应物品或数量不足,会导致脚本报错;物品名称错误,引擎无法识别。
5. ChangeLevel 命令(等级修改命令)
作用:修改玩家等级,可直接提升或降低玩家等级,用于活动奖励、GM操作等场景。
正确格式:ChangeLevel +等级(提升等级) / ChangeLevel -等级(降低等级)
实例:ChangeLevel +5 (给玩家提升5级等级)
注意:等级不能超过服务端设置的等级上限,也不能低于1级,否则无法修改;修改等级后,玩家经验会同步调整,避免等级与经验不匹配。
四、定时器相关命令(控制脚本定时执行,适用于泡点、活动)
定时器命令用于控制脚本定时执行操作(如每秒增加经验、每秒扣除元宝),是泡点、定时活动、自动任务的核心命令,结合实例可直接应用于脚本。
1. SetScTimer 命令(设置定时器命令)
作用:设置定时器,指定时间间隔执行对应脚本,定时器编号可自定义,用于区分不同的定时任务。
正确格式:SetScTimer 定时器编号 时间间隔(秒)
实例1:SetScTimer 3 1 (设置定时器3,每1秒执行一次对应脚本,适用于免费泡点)
实例2:SetScTimer 5 1 (设置定时器5,每1秒执行一次对应脚本,适用于收费泡点)
注意:定时器编号需唯一,不能重复;时间间隔最小为1秒,不能为0或负数;设置定时器后,需定义对应定时器的执行脚本(@OnTimer+编号)。
2. KillScTimer 命令(关闭定时器命令)
作用:关闭指定定时器,停止定时执行操作,适用于玩家离开泡点、任务结束等场景,避免定时器持续执行。
正确格式:KillScTimer 定时器编号
实例:KillScTimer 3 (关闭定时器3,停止每秒增加经验的操作)
注意:关闭定时器时,编号需与SetScTimer命令的编号一致,否则无法关闭;玩家离线后,定时器会自动关闭,无需手动操作。
3. @OnTimer 命令(定时器执行命令)
作用:定义定时器的执行脚本,定时器到时间后,自动执行该命令下的操作,与SetScTimer命令配套使用。
正确格式:(@OnTimer+定时器编号) (编号与SetScTimer命令的编号一致)
实例:(@OnTimer3) #IF CHECKLEVELEX < 48 isonmap mfjqpd #ACT ChangeExp +12000 #ELSEACT mapmove 3 333 333 SENDMSG 5 你已经超过48级,无法继续泡点! KillScTimer 3 (定时器3每1秒执行一次,判断玩家等级和所在地图,符合条件则增加经验,不符合则传送并关闭定时器)
五、公告与提示命令(向玩家发送信息,引导玩家操作)
此类命令用于向玩家发送公告、提示信息,可指定发送范围、颜色,适用于活动通知、操作提示、错误提示等场景,格式简单,易于使用。
1. SENDMSG 命令(提示信息命令)
作用:向玩家发送提示信息,显示在聊天窗口,可指定信息颜色、发送范围,是最常用的提示命令。
正确格式:SENDMSG 发送范围 提示内容 (发送范围1为全服,5为个人,颜色代码可选)
实例1:SENDMSG 1 玩家:%s,已经进入免费泡点!开启人生的旅程!! 250 249 (向全服发送提示,显示指定颜色)
实例2:SENDMSG 5 你的元宝不足10元宝,无法进入收费泡点! (向当前玩家发送个人提示)
补充:发送范围说明:1=全服公告,2=组队成员,3=行会成员,5=个人提示;颜色代码可省略,默认白色,添加颜色代码可增强提示效果。
2.公告命令(全服公告命令)
作用:向全服玩家发送公告,显示在屏幕中央或聊天窗口顶部,用于重要活动、系统通知等场景。
正确格式:公告 公告内容 (部分引擎格式为BroadCast 公告内容)
实例:公告 全服通知:收费泡点活动开启,每秒可获得10W经验,只需10元宝/秒! (向全服发送活动公告)
注意:公告内容不能过长,避免超出显示范围;部分引擎支持公告颜色设置,格式为公告 公告内容 颜色代码。
六、脚本常用判断命令(配合#IF使用,完善脚本逻辑)
判断命令用于完善脚本逻辑,判断玩家状态、物品、地图、会员身份等,配合#IF命令使用,让脚本更灵活,以下是最常用的判断命令,均附带实例。
1. CHECKLEVELEX 命令(等级判断命令)
作用:判断玩家等级,支持大于、小于、等于判断,是最常用的判断命令之一。
正确格式:CHECKLEVELEX 比较符号 数值 (比较符号:<小于、>大于、=等于)
实例:CHECKLEVELEX < 48 (判断玩家等级是否低于48级,用于免费泡点限制)
2. CHECKGAMEGOLD 命令(元宝判断命令)
作用:判断玩家当前元宝数量,支持大于、小于、等于判断,适用于收费场景。
正确格式:CHECKGAMEGOLD 比较符号 数值
实例:CHECKGAMEGOLD > 9 (判断玩家元宝是否大于9,用于收费泡点(10元宝/秒)的判断)
3. isonmap 命令(地图判断命令)
作用:判断玩家是否在指定地图,适用于泡点、副本、活动等场景,确保玩家在指定地图才能执行操作。
正确格式:isonmap 地图名称/地图代码
实例:isonmap mfjqpd (判断玩家是否在免费泡点地图,用于泡点经验发放的判断)
4. checknamelist 命令(会员判断命令)
作用:判断玩家是否在指定会员名单中,适用于会员专属功能、会员福利等场景。
正确格式:checknamelist 会员名单路径
实例:checknamelist ..\QuestDiary\会员名单\会员名单.txt (判断玩家是否在会员名单中,用于会员专属泡点判断)
注意:会员名单路径需正确,若路径错误,会导致判断失败;会员名单文件需为txt格式,每行一个会员名称。
七、脚本命令常见错误及排查方法(新手必看)
新手编写脚本时,常因格式、命令、变量等问题导致脚本报错,以下整理最常见的错误及排查方法,无需专业技术,逐一排查即可解决。
1. 脚本报错“unknown command”(未知命令)
原因:命令拼写错误(如将MOV写成MOVV)、命令与引擎不兼容、命令格式错误;解决方法:核对命令拼写,确保与本文一致;确认命令适配当前引擎;检查命令格式是否正确(如字符串是否加双引号)。
2. 脚本报错“变量未定义”
原因:使用INC、CMP等命令时,未用MOV命令给变量赋初始值;变量名拼写错误;解决方法:在使用变量前,用MOV命令给变量赋值(如MOV G507 0);核对变量名拼写,确保无错误。
3. 脚本无报错,但无法触发
原因:触发标识(@XXX)与NPC配置不一致;脚本存放路径错误;判断条件未满足;解决方法:核对NPC文件中的触发标识,确保与脚本中的一致;确认脚本存放于对应文件夹(如NPC脚本放QFunction-0.txt);检查判断条件,确保玩家满足触发条件(如等级、元宝达标)。
4. 脚本执行异常(如无法传送、无法发放物品)
原因:地图代码、物品名称错误;坐标超出地图范围;玩家身上物品/元宝不足;解决方法:核对地图代码、物品名称,确保与服务端配置一致;检查坐标是否在地图范围内;确保玩家身上有足够的物品/元宝(扣除类命令)。
5. 定时器无法正常执行
原因:定时器编号重复;未定义@OnTimer脚本;时间间隔设置错误;解决方法:确保定时器编号唯一;定义对应@OnTimer脚本(如定时器3对应@OnTimer3);将时间间隔设置为1秒及以上。
八、脚本命令使用注意事项(所有场景通用)
1. 所有脚本命令、符号(括号、双引号、逗号等)必须使用英文半角,中文全角符号会导致脚本报错,无法执行。
2. 脚本命令区分大小写(部分引擎不区分),建议统一规范写法(如MOV、INC全部大写),避免拼写错误。
3. 变量名可自定义,建议以A、G、M开头,长度3-5个字符,不包含特殊符号、空格,避免与其他脚本变量重复。
4. 脚本存放路径需正确,NPC脚本放Envir\Market_Def\QFunction-0.txt或Envir\MapQuest_def\QManage.txt,地图脚本放Envir\MapQuest_def,放错路径会导致脚本无法加载。
5. 编写脚本前,建议备份对应脚本文件,避免修改错误导致脚本失效,无法恢复。
6. 不同引擎的脚本命令基本通用,部分引擎有专属命令,若本文命令无法使用,可查看服务端自带的引擎说明文档,查找对应命令。
总结:传奇服务端脚本命令核心分为变量操作、NPC交互、玩家相关、定时器、公告提示五大类,新手只需掌握常用命令的格式和实例,即可编写基础脚本,无需专业编程基础。本文所有命令均适配主流引擎,可直接复制使用,同时标注了常见错误和排查方法,避免新手踩坑。编写脚本时,只需遵循“格式规范、命令正确、变量唯一”的原则,就能确保脚本正常执行,实现游戏内的各类功能需求。

