一、基础程序语句与程序段命令
基础语句是脚本执行的核心框架,用于控制流程跳转、对话显示及程序终止,是各类脚本编写的必备基础。
(@段):段标识,可用英文或数字命名,作为程序执行的节点标记,供跳转命令定位。
goto@段:跳转命令,执行后直接跳转至指定标识段开始运行,类似基础编程中的跳转语句,适用于流程的单向切换。
选择项目@段:提供可选交互项,玩家点击对应选项后跳转至指定段,常用于NPC对话分支选择,实现多路径交互逻辑。
#IF:条件判断起始标记,后续紧跟判断条件,满足条件则执行#ACT下命令,不满足则执行#ELSEACT或#ELSESAY内容。
#SAY语句:对话显示命令,语句无需添加定界符,直接输出文本内容至游戏对话框,用于向玩家展示信息。
#ACT:条件满足后执行的命令块标记,后续可衔接各类功能命令,实现道具发放、坐标移动等操作。
#ELSEACT:条件不满足时执行的命令块标记,与#ACT形成逻辑互补,用于设置备选执行流程。
#ELSESAY:条件不满足时的对话显示命令,向玩家反馈条件未达成的原因或备选提示。
@exit:关闭对话框命令,玩家触发后直接关闭当前NPC对话窗口,是交互结束的常用命令。
close:程序自动执行的关闭命令,功能等同于@exit,无需玩家手动触发,适用于流程结束后自动关闭对话。
break:终止当前命令块执行,跳出循环或分支流程,避免后续命令继续运行,防止逻辑冲突。
Delaygoto(Grobal)时长@段:延时跳转命令,设定时长(单位:秒)后自动跳转至指定段,可用于定时触发事件。
二、变量与常量相关命令
变量与常量用于存储脚本运行中的数据,支持数值计算、状态标记等功能,是实现复杂逻辑的核心要素。变量按类型划分,命名有明确规范,常量则用于固定标识特定功能。
(一)变量类型与命名规范
字符型变量:A0-A9、B0-B9,用于存储文本类数据;数字型变量:D0-D9、P0-P9、S0-S9,用于存储数值并支持计算;服务器共享变量:N0-N9(数字型)、B1-B9(字符型),可跨玩家、跨进程共享数据。
#Define变量{标识}变量:常量定义命令,为变量绑定固定标识,增强脚本可读性,适用于常用固定值标记,如#DefineN0{START}N0。
(二)变量操作命令
mov变量数值/字符:赋值命令,为变量赋予指定数值或字符,如movA0测试文本、movD0100,是变量初始化的基础命令。
inc变量数值:自增命令,使变量值在原有基础上增加指定数值,等同于数值运算中的累加操作,如incD05,即D0=D0+5。
dec变量数值:自减命令,使变量值在原有基础上减少指定数值,如decD03,即D0=D0-3。
sum变量a变量b/变量c:求和命令,需配合赋值命令使用,先初始化求和变量,再依次累加目标变量。例:movX0;sum变量a变量b;sum变量c,最终X=变量a+变量b+变量c,单独使用无意义。
movr变量数值:随机赋值命令,为变量赋予0至指定数值(不含数值本身)的随机数,如movrS110,变量S1值范围为1-9。
random数值:随机判断命令,当生成的随机数与指定数值一致时返回1,否则返回0,概率为1/数值,如random2对应50%概率触发。
$str(变量):变量显示命令,用于#SAY语句后,将变量值转化为文本显示在游戏对话框中,方便玩家查看变量状态。
reset(变量起始值)数量:变量重置命令,将从起始变量开始的指定数量变量恢复为初始值0,如reset(100)7,即重置100至106号变量。
三、逻辑判断语句命令
逻辑判断命令通过检测玩家状态、数值条件等,控制脚本流程走向,是实现任务触发、权限验证、条件交互的关键,核心以#IF为起始,搭配各类检测命令使用。
(n):逻辑变量,取值为0或1,初始值为0,属于私人变量,可通过set命令标记状态,如标记任务完成状态。
set(n)1:设置逻辑变量为真(值为1),用于标记特定状态达成,如任务完成后set(10)1。
check(n)1:检测逻辑变量状态,若变量值为1则条件成立,常用于验证任务是否完成、状态是否激活。
数值与字符比较命令:small变量数值(变量<数值则成立)、esmall变量数值(字符变量=数值则成立)、large变量数值(变量>数值则成立)、elarge变量数值(字符变量=数值则成立)、equal变量数值(变量=数值则成立)。
职业与性别检测:checkjobwarr(wizard、taos),检测玩家职业为战士(法师、道士)则成立;genderman,检测玩家性别为男则成立。
资源与状态检测:checkgold数值(拥有金币数≥数值则成立)、checklevel数值(人物等级≥数值则成立)、checkitem物品数值(背包内拥有指定物品及对应数量则成立)、checkitemw物品(检测玩家是否佩戴指定物品)。
背包与物品品质检测:checkbaggage(背包已满则成立)、CheckBagSize数量(背包空格数满足指定数量则成立)、checkduraeva物品名数值(检测矿物等物品品质≥数值则成立)。
场景与数量检测:checkhum地图名数值(指定地图玩家数量满足条件则成立)、checkmonmap地图名数值(指定地图怪物数量满足条件则成立)、checkpkpoint数值(玩家PK值满足条件则成立)、checkluckypoint数值(玩家幸运值满足条件则成立)。
技能与宠物检测:checkmagic技能名称(检测玩家已修炼指定技能)、chkmagiclevel(检测技能等级是否满足条件)、checkmonrecall(检测玩家是否拥有宠物)、checkhorse(检测玩家是否拥有坐骑)。
列表与权限检测:addnamelist(添加玩家名到指定文本文件)、checknamelist(检测玩家名是否在指定文本文件中)、delnamelist(从文本文件删除玩家名)、ISADMIN(检测玩家是否为管理员)。
四、功能执行命令
功能执行命令用于实现道具收发、坐标移动、怪物控制、状态调整等具体操作,是脚本与游戏玩法结合的核心命令,多配合#ACT使用。
道具与货币操作:give物品数量(向玩家发放指定物品及数量)、take物品数量是否检测改名(收回玩家背包内指定物品,0/空不检测改名,1检测)、takew物品(直接收回玩家佩戴的指定物品)、GAMEGOLD(=+-)数量(调整玩家元宝数量,支持赋值、增减)。
坐标与地图控制:map地图名(将玩家传送至指定地图随机坐标)、mapmove地图名坐标A坐标B范围(传送至指定地图指定坐标,范围留空或为0则定点传送)、TIMERECALL数值(设定分钟数后将玩家传送回当前位置)、BREAKTIMERECALL(中断TIMERECALL设定的传送指令)。
怪物与宠物控制:monclear地图名(清除指定地图内所有刷出的怪物)、MonGen怪物名称数量时间(在指定位置刷新怪物,设定数量及存在时间)、RECALLMOB怪物名称宝宝等级叛变时间是否变色固定颜色(为玩家召唤指定怪物作为宠物,等级最高为7)。
外观与状态调整:hairstyle数值(修改玩家头发样式)、haircolor红值绿值蓝值(调整头发颜色,数值范围0-255)、SETRANKLEVELNAME封号(修改玩家封号)、setautogetexp命令时间经验是否安全区地图号(设置玩家在线自动获取经验,0为非安全区生效)。
行会与沙城相关:ADDGUILDLIST行会列表.txt(将玩家行会加入指定列表)、DELGUILDLIST行会列表.txt(从列表删除玩家行会)、ISCASTLEGUILD(检测玩家是否为沙城成员)、ISCASTLEMASTER(检测玩家是否为沙城城主)、CHECKCASTLEDOOR(检测沙城城门状态,支持损坏、开启、关闭)。
五、商人NPC专属命令
商人NPC脚本需通过特定前缀命令定义交易类型与价格倍率,控制NPC交易功能,以下为常用专属命令及标识。
价格倍率:%100代表按原价格交易,数值调整可实现加价或降价,如%200为双倍价格购买。
交易类型标识:+0(买各种药水)、+1(卖肉)、+3(买卷轴、书类)、+4(卖书类)、+5(修炼武器或买武器)、+6(修炼武器或卖武器)、+10(买衣服)、+11(修衣服)、+15(头盔)、+19(项链)、+20(项链)、+22(买戒指)、+23(卖戒指)、+24(买手镯)、+25(特殊水)、+26(修手镯类、卖手镯)、+30(蜡烛等)、+40(买肉)、+42(卖各种药水)、+43(武器有关,维修)。
六、脚本编写基础规范
注释符号:;作为注释标识,添加在一行之首,该行内容不参与脚本编译,仅用于备注说明,方便后期维护。
换行与分隔:\用于对话文本换行,避免内容过长超出对话框;/作为分隔符,区分显示文本与脚本命令,如“关闭/@exit”,玩家看到“关闭”可点击触发@exit。
NPC存放路径:脚本文件存放于D:\Mirserver\Mir200\Envir\Market_def,NPC形象及坐标设置在D:\Mirserver\Mir200\Envir\Merchant.txt,文件内需按规范填写脚本名称、地图坐标、NPC属性等信息。
逻辑优先级:not(非)、and(与)、or(或)用于组合多个判断条件,not优先级最高,and次之,or最低,合理搭配可实现复杂条件判断。
基础语句是脚本执行的核心框架,用于控制流程跳转、对话显示及程序终止,是各类脚本编写的必备基础。
(@段):段标识,可用英文或数字命名,作为程序执行的节点标记,供跳转命令定位。
goto@段:跳转命令,执行后直接跳转至指定标识段开始运行,类似基础编程中的跳转语句,适用于流程的单向切换。
选择项目@段:提供可选交互项,玩家点击对应选项后跳转至指定段,常用于NPC对话分支选择,实现多路径交互逻辑。
#IF:条件判断起始标记,后续紧跟判断条件,满足条件则执行#ACT下命令,不满足则执行#ELSEACT或#ELSESAY内容。
#SAY语句:对话显示命令,语句无需添加定界符,直接输出文本内容至游戏对话框,用于向玩家展示信息。
#ACT:条件满足后执行的命令块标记,后续可衔接各类功能命令,实现道具发放、坐标移动等操作。
#ELSEACT:条件不满足时执行的命令块标记,与#ACT形成逻辑互补,用于设置备选执行流程。
#ELSESAY:条件不满足时的对话显示命令,向玩家反馈条件未达成的原因或备选提示。
@exit:关闭对话框命令,玩家触发后直接关闭当前NPC对话窗口,是交互结束的常用命令。
close:程序自动执行的关闭命令,功能等同于@exit,无需玩家手动触发,适用于流程结束后自动关闭对话。
break:终止当前命令块执行,跳出循环或分支流程,避免后续命令继续运行,防止逻辑冲突。
Delaygoto(Grobal)时长@段:延时跳转命令,设定时长(单位:秒)后自动跳转至指定段,可用于定时触发事件。
二、变量与常量相关命令
变量与常量用于存储脚本运行中的数据,支持数值计算、状态标记等功能,是实现复杂逻辑的核心要素。变量按类型划分,命名有明确规范,常量则用于固定标识特定功能。
(一)变量类型与命名规范
字符型变量:A0-A9、B0-B9,用于存储文本类数据;数字型变量:D0-D9、P0-P9、S0-S9,用于存储数值并支持计算;服务器共享变量:N0-N9(数字型)、B1-B9(字符型),可跨玩家、跨进程共享数据。
#Define变量{标识}变量:常量定义命令,为变量绑定固定标识,增强脚本可读性,适用于常用固定值标记,如#DefineN0{START}N0。
(二)变量操作命令
mov变量数值/字符:赋值命令,为变量赋予指定数值或字符,如movA0测试文本、movD0100,是变量初始化的基础命令。
inc变量数值:自增命令,使变量值在原有基础上增加指定数值,等同于数值运算中的累加操作,如incD05,即D0=D0+5。
dec变量数值:自减命令,使变量值在原有基础上减少指定数值,如decD03,即D0=D0-3。
sum变量a变量b/变量c:求和命令,需配合赋值命令使用,先初始化求和变量,再依次累加目标变量。例:movX0;sum变量a变量b;sum变量c,最终X=变量a+变量b+变量c,单独使用无意义。
movr变量数值:随机赋值命令,为变量赋予0至指定数值(不含数值本身)的随机数,如movrS110,变量S1值范围为1-9。
random数值:随机判断命令,当生成的随机数与指定数值一致时返回1,否则返回0,概率为1/数值,如random2对应50%概率触发。
$str(变量):变量显示命令,用于#SAY语句后,将变量值转化为文本显示在游戏对话框中,方便玩家查看变量状态。
reset(变量起始值)数量:变量重置命令,将从起始变量开始的指定数量变量恢复为初始值0,如reset(100)7,即重置100至106号变量。
三、逻辑判断语句命令
逻辑判断命令通过检测玩家状态、数值条件等,控制脚本流程走向,是实现任务触发、权限验证、条件交互的关键,核心以#IF为起始,搭配各类检测命令使用。
(n):逻辑变量,取值为0或1,初始值为0,属于私人变量,可通过set命令标记状态,如标记任务完成状态。
set(n)1:设置逻辑变量为真(值为1),用于标记特定状态达成,如任务完成后set(10)1。
check(n)1:检测逻辑变量状态,若变量值为1则条件成立,常用于验证任务是否完成、状态是否激活。
数值与字符比较命令:small变量数值(变量<数值则成立)、esmall变量数值(字符变量=数值则成立)、large变量数值(变量>数值则成立)、elarge变量数值(字符变量=数值则成立)、equal变量数值(变量=数值则成立)。
职业与性别检测:checkjobwarr(wizard、taos),检测玩家职业为战士(法师、道士)则成立;genderman,检测玩家性别为男则成立。
资源与状态检测:checkgold数值(拥有金币数≥数值则成立)、checklevel数值(人物等级≥数值则成立)、checkitem物品数值(背包内拥有指定物品及对应数量则成立)、checkitemw物品(检测玩家是否佩戴指定物品)。
背包与物品品质检测:checkbaggage(背包已满则成立)、CheckBagSize数量(背包空格数满足指定数量则成立)、checkduraeva物品名数值(检测矿物等物品品质≥数值则成立)。
场景与数量检测:checkhum地图名数值(指定地图玩家数量满足条件则成立)、checkmonmap地图名数值(指定地图怪物数量满足条件则成立)、checkpkpoint数值(玩家PK值满足条件则成立)、checkluckypoint数值(玩家幸运值满足条件则成立)。
技能与宠物检测:checkmagic技能名称(检测玩家已修炼指定技能)、chkmagiclevel(检测技能等级是否满足条件)、checkmonrecall(检测玩家是否拥有宠物)、checkhorse(检测玩家是否拥有坐骑)。
列表与权限检测:addnamelist(添加玩家名到指定文本文件)、checknamelist(检测玩家名是否在指定文本文件中)、delnamelist(从文本文件删除玩家名)、ISADMIN(检测玩家是否为管理员)。
四、功能执行命令
功能执行命令用于实现道具收发、坐标移动、怪物控制、状态调整等具体操作,是脚本与游戏玩法结合的核心命令,多配合#ACT使用。
道具与货币操作:give物品数量(向玩家发放指定物品及数量)、take物品数量是否检测改名(收回玩家背包内指定物品,0/空不检测改名,1检测)、takew物品(直接收回玩家佩戴的指定物品)、GAMEGOLD(=+-)数量(调整玩家元宝数量,支持赋值、增减)。
坐标与地图控制:map地图名(将玩家传送至指定地图随机坐标)、mapmove地图名坐标A坐标B范围(传送至指定地图指定坐标,范围留空或为0则定点传送)、TIMERECALL数值(设定分钟数后将玩家传送回当前位置)、BREAKTIMERECALL(中断TIMERECALL设定的传送指令)。
怪物与宠物控制:monclear地图名(清除指定地图内所有刷出的怪物)、MonGen怪物名称数量时间(在指定位置刷新怪物,设定数量及存在时间)、RECALLMOB怪物名称宝宝等级叛变时间是否变色固定颜色(为玩家召唤指定怪物作为宠物,等级最高为7)。
外观与状态调整:hairstyle数值(修改玩家头发样式)、haircolor红值绿值蓝值(调整头发颜色,数值范围0-255)、SETRANKLEVELNAME封号(修改玩家封号)、setautogetexp命令时间经验是否安全区地图号(设置玩家在线自动获取经验,0为非安全区生效)。
行会与沙城相关:ADDGUILDLIST行会列表.txt(将玩家行会加入指定列表)、DELGUILDLIST行会列表.txt(从列表删除玩家行会)、ISCASTLEGUILD(检测玩家是否为沙城成员)、ISCASTLEMASTER(检测玩家是否为沙城城主)、CHECKCASTLEDOOR(检测沙城城门状态,支持损坏、开启、关闭)。
五、商人NPC专属命令
商人NPC脚本需通过特定前缀命令定义交易类型与价格倍率,控制NPC交易功能,以下为常用专属命令及标识。
价格倍率:%100代表按原价格交易,数值调整可实现加价或降价,如%200为双倍价格购买。
交易类型标识:+0(买各种药水)、+1(卖肉)、+3(买卷轴、书类)、+4(卖书类)、+5(修炼武器或买武器)、+6(修炼武器或卖武器)、+10(买衣服)、+11(修衣服)、+15(头盔)、+19(项链)、+20(项链)、+22(买戒指)、+23(卖戒指)、+24(买手镯)、+25(特殊水)、+26(修手镯类、卖手镯)、+30(蜡烛等)、+40(买肉)、+42(卖各种药水)、+43(武器有关,维修)。
六、脚本编写基础规范
注释符号:;作为注释标识,添加在一行之首,该行内容不参与脚本编译,仅用于备注说明,方便后期维护。
换行与分隔:\用于对话文本换行,避免内容过长超出对话框;/作为分隔符,区分显示文本与脚本命令,如“关闭/@exit”,玩家看到“关闭”可点击触发@exit。
NPC存放路径:脚本文件存放于D:\Mirserver\Mir200\Envir\Market_def,NPC形象及坐标设置在D:\Mirserver\Mir200\Envir\Merchant.txt,文件内需按规范填写脚本名称、地图坐标、NPC属性等信息。
逻辑优先级:not(非)、and(与)、or(或)用于组合多个判断条件,not优先级最高,and次之,or最低,合理搭配可实现复杂条件判断。

