传奇脚本语法全解析核心规则、命令格式及实操注意

来源: 作者: 点击:
一、传奇脚本语法核心定位及适用范围

传奇脚本语法是编写传奇各类脚本的基础规则集合,涵盖脚本结构、命令规范、变量使用、注释规则等核心内容,所有传奇脚本(包括功能脚本、封挂脚本、任务脚本等)均需遵循这套语法规则,确保脚本可被服务端引擎正常解析执行。

传奇脚本语法适配所有主流传奇引擎,包括GOM、GEE、Hero、旭玩等,不同引擎仅在扩展命令上存在细微差异,核心语法规则完全一致,无需因引擎不同单独学习不同语法,掌握核心规则即可编写所有类型传奇脚本。

传奇脚本语法无需专业编程基础,核心特点是简洁易懂、规则固定,所有脚本均以纯文本形式编写,通过记事本即可编辑,只要严格遵循语法规则,就能避免脚本报错、无效等问题,实现预设的游戏功能。

二、传奇脚本核心语法结构(必学基础)

所有传奇脚本的语法结构均遵循“三段式”核心框架,即检测段、执行段、否则段,部分简单脚本可省略否则段,但检测段和执行段是必备部分,三段式结构贯穿所有脚本编写,是传奇脚本语法的核心。

1.核心三段式结构详解

传奇脚本的三段式结构分工明确,检测段负责判断触发条件,执行段负责执行具体操作,否则段负责条件不满足时的备用操作,具体格式及说明如下:

#IF

//检测段(必备):用于设置脚本触发的条件,可设置单个条件或多个条件叠加,只有条件满足时,才会执行后续执行段的内容

#ACT

//执行段(必备):检测段条件满足后,执行的具体操作,可编写多条操作命令,按顺序依次执行

#ELSEACT

//否则段(可选):检测段条件不满足时,执行的备用操作,可省略,省略后条件不满足则脚本无任何反应

BREAK

//终止命令(必备):用于终止当前脚本段的执行,避免脚本重复触发、逻辑混乱,每个完整的三段式脚本末尾必须添加

2.结构使用示例(新手易懂)

结合简单的游戏场景,展示三段式结构的具体应用,直观理解语法结构的使用逻辑,可直接复制测试:

//示例:玩家等级≥30级,发放新手装备;否则提示等级不足

#IF

CheckLevel30//检测条件:玩家等级≥30级

#ACT

Give新手剑1//执行操作1:发放新手剑1把

Give新手甲1//执行操作2:发放新手甲1件

SendMsg5等级达标,已为您发放新手装备!;//执行操作3:弹出提示

#ELSEACT

SendMsg5等级不足30级,无法领取新手装备!;//条件不满足时的备用操作

BREAK//终止脚本执行

3.结构使用注意事项

①三段式结构的顺序不可颠倒,必须严格遵循“#IF→#ACT→#ELSEACT”的顺序,颠倒后引擎无法解析,脚本直接失效。

②检测段(#IF)可无具体条件,此时视为无条件触发,直接执行#ACT后的操作,常用于无需判断条件的脚本(如点击NPC直接传送)。

③每个完整的三段式脚本末尾必须添加BREAK命令,若遗漏,脚本会持续重复执行,导致服务端卡顿、报错。

④#ELSEACT段可省略,省略后,当#IF条件不满足时,脚本不执行任何操作,直接终止。

三、传奇脚本语法核心规则(重中之重)

传奇脚本语法有明确的固定规则,违反任何一条规则,都会导致脚本报错、无效或执行异常,以下规则适用于所有类型传奇脚本,必须严格遵循。

1.命令大小写规则

传奇脚本所有核心命令、关键字均严格区分大小写,这是最容易出错的语法规则,也是脚本无效的常见原因,具体要求如下:

①核心关键字(#IF、#ACT、#ELSEACT、BREAK)必须全部大写,不可小写或大小写混合,例如“#if”“#Act”“break”均会导致引擎无法识别。

②所有脚本命令(如CheckLevel、SendMsg、MapMove等)必须全部大写,命令中的字母不可有任何小写,例如“checklevel”“sendmsg”会被判定为未知命令。

③变量、物品名称、地图名称等可大小写混合,但建议统一大写,避免因大小写差异导致脚本识别错误(如“金币”和“金幣”视为两种不同物品)。

2.标点符号规则

传奇脚本仅支持英文标点符号,禁止使用中文标点,标点错误会直接导致脚本语法报错,具体要求如下:

①所有脚本命令结尾必须添加英文分号“;”,用于分隔不同命令,若遗漏分号,引擎会将相邻命令视为一条,导致语法错误。

②注释内容(//后面的文字)末尾无需添加标点,注释仅用于说明脚本功能,不参与引擎解析,可随意编写,但不可使用中文分号、句号等标点。

③脚本中不可出现中文标点(如,。?!:;),即使是提示内容中,也需使用英文标点,例如“检测到违规,即将处罚!;”需改为“检测到违规,即将处罚!;”。

3.换行与空格规则

脚本的换行和空格有明确要求,格式混乱会导致引擎无法正确解析脚本,具体规则如下:

①每行只能编写一条脚本命令,不可将多条命令写在同一行,即使是简短的命令,也需单独换行,例如不可写“Give金币1000;SendMsg5发放金币!;”。

②核心关键字(#IF、#ACT、#ELSEACT、BREAK)需单独占一行,不可与其他命令、注释写在同一行,例如不可写“#IFCheckLevel30”。

③脚本中可添加空行用于分隔不同脚本段,便于后续修改和查看,但不可在关键字、命令中间添加空行,否则会导致脚本断裂。

④命令与参数之间需添加一个空格,不可多空格或少空格,例如“CheckLevel30”“CheckLevel30”(两个空格)均会导致命令无效,正确写法为“CheckLevel30”。

4.注释规则

注释用于说明脚本功能、命令含义,方便后续修改和维护,注释不参与引擎解析,可随意编写,但需遵循以下语法规则:

①注释以双斜杠“//”开头,“//”后面的所有文字均视为注释,引擎会自动忽略。

②注释可单独占一行,也可写在命令后面(需与命令之间添加一个空格),例如“CheckLevel30//检测玩家等级是否≥30级”。

③注释不可嵌套,不可在注释中再添加“//”,例如“//检测等级//发放装备”会导致后面的“//发放装备”被视为命令的一部分,引发报错。

④注释建议简洁明了,重点说明脚本功能、命令作用或参数含义,避免冗长,便于后续快速理解脚本逻辑。

5.编码格式规则

脚本编码格式是脚本正常解析的基础,编码错误会导致脚本出现乱码、命令无法识别,具体要求如下:

①所有传奇脚本文件必须设置为ANSI编码,不可使用UTF-8、Unicode等其他编码格式,否则会出现中文乱码,引擎无法解析脚本。

②编码设置方法:右键点击脚本文件→选择“打开方式”→选择“记事本”→点击菜单栏“文件”→选择“另存为”→编码选择“ANSI”→保存覆盖原有文件。

③若脚本复制粘贴后出现乱码,需删除乱码内容,重新手动输入,或修改编码为ANSI后保存,避免复制粘贴导致的编码错乱。

四、传奇脚本变量语法(核心难点)

变量是传奇脚本中用于记录数据、存储状态的核心元素,常用于任务进度、违规次数、玩家状态等场景,变量语法规则复杂,需重点掌握,避免使用错误导致脚本逻辑异常。

1.变量分类及命名规则

传奇脚本变量分为系统自带变量和自定义变量,两类变量的命名规则不同,不可混淆使用,具体分类及规则如下:

(1)系统自带变量

系统自带变量是引擎预设的变量,无需定义即可直接使用,用于记录玩家基础信息、游戏状态等,常用自带变量及规则如下:

①私人变量:以P、D开头,用于记录单个玩家的私人数据,仅对当前玩家生效,例如P0、P1、D0、D1(0-99均可使用),不可自定义私人变量前缀。

②全局变量:以G、A开头,用于记录全服通用数据,对所有玩家生效,例如G0、G1、A0、A1(0-499均可使用),适用于全服活动、全服统计等场景。

③临时变量:以M、N、S、I开头,用于记录临时数据,脚本执行完毕后变量值自动清空,例如M0、N1、S2,适用于临时判断、临时计算等场景。

④系统变量:预设的固定变量,用于调用玩家、游戏的基础信息,例如<$USERNAME>(玩家名称)、<$LEVEL>(玩家等级)、<$TIME>(当前时间),使用时需用<$>包裹。

(2)自定义变量

自定义变量是玩家根据脚本需求自行定义的变量,用于记录特定数据,命名需遵循以下规则:

①自定义变量名称不可以P、D、M、N、S、I、G、A开头,避免与系统自带变量冲突。

②变量名称仅可包含字母(大写)、数字,不可包含中文、特殊符号(如@、#、$),例如“Task01”“FightCount”是合法变量,“任务01”“Fight#Count”是非法变量。

③自定义变量需先定义后使用,定义方法为“SetVar变量名初始值”,例如“SetVarTask010”,将自定义变量Task01的初始值设为0。

2.变量操作语法(常用命令)

变量的核心操作包括赋值、判断、增减,对应不同的脚本命令,所有命令需严格遵循语法规则,常用操作命令及用法如下:

①赋值命令:SetVar变量名数值,用于给变量设置具体数值,例如“SetVarP01”,将私人变量P0的值设为1;“SetVarTask015”,将自定义变量Task01的值设为5。

②判断命令:CheckVar变量名运算符数值,用于判断变量值是否满足条件,运算符包括=(等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于),例如“CheckVarP0=1”,判断P0的值是否等于1;“CheckVarTask01>3”,判断Task01的值是否大于3。

③增减命令:IncVar变量名数值(变量值增加)、DecVar变量名数值(变量值减少),数值可正可负,例如“IncVarP01”,将P0的值增加1;“DecVarTask012”,将Task01的值减少2。

④清空命令:ClearVar变量名,用于清空变量值,将变量值设为0,例如“ClearVarP0”,清空私人变量P0的值;“ClearVarG0”,清空全局变量G0的值。

3.变量使用注意事项

①变量使用时需全部大写,包括自定义变量,例如“setvartask010”“CheckVarp0=1”均会导致命令无效,正确写法为“SetVarTASK010”“CheckVarP0=1”。

②私人变量、临时变量仅对当前玩家、当前脚本生效,切换玩家或脚本执行完毕后,临时变量会自动清空,私人变量需手动清空。

③全局变量对全服玩家生效,修改后所有玩家均可读取,需谨慎操作,避免误改全局变量导致全服脚本异常。

④变量值仅可设置为数字,不可设置为中文、字母或特殊符号,例如“SetVarP0完成”是非法操作,会导致脚本报错。

五、传奇脚本常用命令语法(实操必备)

传奇脚本命令是实现游戏功能的核心,所有命令均需遵循固定语法格式,掌握常用命令的语法的格式,即可完成大部分基础脚本编写,以下按功能分类,详解常用命令的语法及用法。

1.检测类命令语法

检测类命令主要用于检测段(#IF),判断玩家状态、物品、地图等条件,语法格式固定,常用命令如下:

①等级检测:CheckLevel数值,语法格式“CheckLevelN”,N为具体等级,用于检测玩家等级是否≥N,例如“CheckLevel50”,检测玩家等级是否≥50级。

②物品检测:CheckItem物品名称数量,语法格式“CheckItem物品名数量”,用于检测玩家是否拥有指定数量的物品,数量可省略(默认检测1个),例如“CheckItem金币10000”,检测玩家是否拥有10万金币。

③地图检测:IsOnMap地图ID,语法格式“IsOnMap地图ID”,用于检测玩家是否在指定地图内,地图ID为数字,例如“IsOnMap5”,检测玩家是否在地图ID为5的副本内。

④无操作检测:CheckNoOperate数值,语法格式“CheckNoOperateN”,N为时间(单位:秒),用于检测玩家无操作时间是否超过N秒,例如“CheckNoOperate300”,检测玩家无操作时间是否超过300秒。

⑤变量检测:CheckVar变量名运算符数值,语法格式“CheckVar变量名运算符数值”,用于检测变量值是否满足条件,例如“CheckVarP0=2”,检测P0的值是否等于2。

2.执行类命令语法

执行类命令主要用于执行段(#ACT、#ELSEACT),执行具体的游戏操作,语法格式固定,常用命令如下:

①物品发放:Give物品名称数量,语法格式“Give物品名数量”,数量可省略(默认发放1个),命令结尾需加英文分号,例如“Give元宝10;”,发放10个元宝。

②物品扣除:Take物品名称数量,语法格式“Take物品名数量”,数量可省略(默认扣除1个),命令结尾需加英文分号,例如“Take金币50000;”,扣除5万金币。

③传送命令:MapMove地图ID坐标X坐标Y,语法格式“MapMove地图IDXY”,地图ID为数字,X、Y为坐标值,命令结尾需加英文分号,例如“MapMove3330330;”,将玩家传送到地图ID为3、坐标330330的位置。

④提示命令:SendMsg颜色代码提示内容,语法格式“SendMsg颜色值内容;”,颜色代码为1-255(5为红色、1为白色、255为金色),内容需用英文标点,例如“SendMsg5操作成功!;”。

⑤等级修改:ChangeLevel数值,语法格式“ChangeLevelN”,N为目标等级,可正数(升级)或负数(降级),命令结尾需加英文分号,例如“ChangeLevel1;”,将玩家等级降至1级。

⑥公告命令:SendBroad颜色代码公告内容,语法格式“SendBroad颜色值内容;”,全服发送公告,例如“SendBroad5全服活动开启!;”。

3.辅助类命令语法

辅助类命令用于辅助脚本执行,提升脚本逻辑完整性,常用命令及语法如下:

①脚本调用:#CALL脚本路径@脚本标识,语法格式“#CALL(脚本路径)@标识;”,用于调用其他脚本文件中的指定脚本段,例如“#CALL(\任务脚本\主线任务.txt)@主线1;”,调用主线任务脚本中的主线1脚本段。

②日志记录:WriteLog日志文件名日志内容,语法格式“WriteLog文件名内容;”,用于记录脚本执行日志,例如“WriteLog操作日志.txt玩家<$USERNAME>领取新手装备;”。

③客户端关闭:CloseClient;,语法格式“CloseClient;”,用于强制关闭玩家游戏客户端,无参数,命令结尾需加英文分号。

④登录禁止:BanLogin数值,语法格式“BanLoginN;”,N为禁止登录时间(单位:分钟),N=0为永久禁登,例如“BanLogin60;”,禁止玩家登录60分钟。

六、传奇脚本语法常见错误及排查(新手必看)

新手编写脚本时,常因违反语法规则导致脚本报错、无效,以下是最常见的语法错误及排查解决方法,逐一排查即可快速解决问题,无需复杂操作。

1.命令大小写错误(最常见)

症状:服务端控制台提示“未知脚本命令”,脚本无法执行,例如将CheckLevel写为checklevel、#IF写为#if。

排查解决:逐一核对脚本中的所有关键字、命令,确保#IF、#ACT、#ELSEACT、BREAK及所有命令(CheckLevel、SendMsg等)全部大写,修改后保存,重启引擎即可。

2.命令结尾遗漏分号

症状:服务端控制台提示“脚本语法错误”,脚本无法执行,或执行到某条命令后停止,例如“Give金币10000”遗漏分号。

排查解决:检查所有执行类命令、检测类命令,确保每条命令结尾都添加了英文分号“;”,尤其是多条命令连续编写时,不可遗漏任何一条。

3.编码格式错误

症状:脚本文件打开后中文内容乱码,服务端提示“无法识别的字符”,脚本无法执行,或提示内容乱码。

排查解决:右键点击脚本文件,用记事本打开,点击“文件-另存为”,编码选择ANSI,保存覆盖原有文件,关闭记事本后重启服务端,乱码问题即可解决。

4.变量使用错误

症状:脚本执行异常,变量判断失效,或服务端提示“变量未定义”,例如自定义变量未定义就使用、变量名称与系统自带变量冲突。

排查解决:①自定义变量需先通过SetVar命令定义,再使用;②检查变量名称,不可用系统自带变量前缀(P、D、G等);③确保变量使用时全部大写,变量值为数字。

5.脚本结构错误

症状:脚本无效,服务端无报错,但无法触发执行,例如三段式结构顺序颠倒、遗漏BREAK命令、#IF与#ACT之间添加空行。

排查解决:核对脚本结构,确保#IF、#ACT、#ELSEACT顺序正确,每个完整脚本段末尾添加BREAK命令,关键字单独占一行,不可在关键字之间添加空行。

6.标点符号错误

症状:服务端提示“脚本语法错误”,脚本无法执行,例如使用中文分号、中文句号,或命令中间添加中文标点。

排查解决:将脚本中的所有中文标点替换为英文标点,确保命令结尾用英文分号,提示内容中使用英文标点,修改后保存测试。

七、传奇脚本语法实操示例(直接可用)

结合常见游戏场景,编写符合语法规则的完整脚本,新手可直接复制粘贴,修改参数即可生效,直观掌握语法规则的实际应用。

示例1:等级达标领取奖励脚本

//语法要点:三段式结构、等级检测命令、物品发放命令、提示命令,严格遵循大小写、标点规则

#IF

CheckLevel40//检测玩家等级≥40级

CheckVarP0=0//检测玩家未领取过奖励(P0=0)

#ACT

Give高级装备1;//发放高级装备1件

Give元宝50;//发放元宝50个

SendMsg5等级达标,奖励已发放,请注意查收!;//弹出提示

SetVarP01;//将P0设为1,标记已领取奖励

#ELSEACT

SendMsg5等级不足40级,或已领取过奖励,无法领取!;//条件不满足提示

BREAK//终止脚本

示例2:物品兑换脚本

//语法要点:物品检测命令、物品扣除命令、变量操作、多条件检测

#IF

CheckItem低级材料10//检测玩家拥有10个低级材料

CheckLevel≥30//检测玩家等级≥30级

#ACT

Take低级材料10;//扣除10个低级材料

Give高级材料1;//发放1个高级材料

IncVarP11;//兑换次数增加1次(P1记录兑换次数)

SendMsg5兑换成功,获得高级材料1个!;//提示兑换成功

#ELSEACT

SendMsg5低级材料不足10个,或等级不足30级,无法兑换!;//提示条件不满足

BREAK

示例3:定时执行脚本(机器人脚本)

//语法要点:机器人命令、公告命令、定时检测语法

//存放路径:Mirserver\Mir200\Envir\Robot_def\AutoRunRobot.txt

#AutoRunNPCHOUR1@全服公告;//每1小时执行一次@全服公告脚本

//存放路径:Mirserver\Mir200\Envir\Robot_def\RobotManage.txt

@全服公告

#ACT

SendBroad255全服提示:请各位玩家规范游戏行为,共同维护公平环境!;//全服发送金色公告

WriteLog公告日志.txt<$TIME>发送全服公告一次;//记录日志

BREAK

八、补充说明

1.传奇脚本语法规则适用于所有类型传奇脚本,无论编写功能脚本、封挂脚本还是任务脚本,均需严格遵循上述规则,避免因语法错误导致脚本失效。

2.不同引擎的扩展命令语法可能存在细微差异,编写脚本前,可查看对应引擎的帮助文档,确认扩展命令的语法格式,核心语法规则完全一致。

3.编写脚本时,建议边编写边测试,每完成一个脚本段,就保存并重启引擎测试,及时发现语法错误,避免后续大面积修改。

4.脚本编写完成后,建议备份脚本文件,避免修改错误导致脚本损坏,同时便于后续恢复和修改。

5.避免使用复杂语法和冗余命令,脚本逻辑尽量简洁明了,既便于引擎解析,也便于后续修改和维护,基础语法即可满足大部分游戏功能需求。

6.若服务端出现脚本相关报错,优先排查语法错误(大小写、标点、结构),再排查路径、编码等问题,大部分报错均可通过语法检查解决。
[顶部]