一、传奇脚本基础认知
传奇脚本是控制游戏内NPC交互、任务执行、功能触发等行为的指令集合,基于特定语法规则编写,存储为.txt文本文件,放置在服务端Envir/QuestDiary目录下生效。其核心作用是串联游戏内各类元素,实现自定义玩法,比如NPC对话、任务奖励发放、地图事件触发等,无需修改服务端核心程序即可拓展游戏功能。
传奇脚本兼容主流服务端引擎(GOM、GEE、COM等),不同引擎语法略有差异,但核心逻辑一致,均遵循“条件判断-执行操作-反馈结果”的基础框架。脚本文件命名无严格要求,但建议按功能命名(如“新手任务.txt”“会员特权.txt”),方便后续管理。
二、传奇脚本核心构成要素
1.脚本标记:定位与入口
脚本标记是脚本的核心定位符,用于指定脚本执行的入口和分支,常见标记格式为“(@标记名)”,区分大小写。核心标记包括:
-@main:主入口标记,脚本默认执行的起始点,通常用于NPC对话初始界面、功能触发初始判断;
-@sub:子标记,用于分支逻辑跳转,比如NPC对话选项后的不同操作分支,需通过“GOTO@sub”命令调用;
-@return:返回标记,用于从子标记跳转回主标记,实现逻辑闭环。
示例:(@main)为脚本起始,玩家对话NPC时首先执行该标记下的内容;若对话有多个选项,每个选项对应一个@sub子标记,选择后跳转至对应子标记执行操作。
2.条件判断语句:脚本执行的“开关”
条件判断语句用于判断玩家状态是否满足执行后续操作的要求,核心格式为“#IF+条件表达式+#ACT/#ELSEACT”,即“如果满足条件,则执行#ACT下操作;否则执行#ELSEACT下操作”。
常见条件表达式:
-等级判断:CHECKLEVEL>=10(玩家等级≥10级)、CHECKLEVEL<20(玩家等级<20级);
-物品判断:CHECKITEM金币1000(玩家拥有金币≥1000)、CHECKITEM屠龙1(玩家拥有屠龙装备≥1件);
-权限判断:CHECKADMINLEVEL9(玩家GM等级≥9级)、CHECKMEMBER1(玩家为有效会员);
-任务状态判断:CHECKQUEST新手任务1(玩家已完成“新手任务”)。
3.执行操作语句:脚本的核心功能实现
执行操作语句紧跟在#ACT或#ELSEACT后,用于实现具体功能,比如发放奖励、扣除物品、传送地图等,每条操作语句单独成行。
高频操作语句分类:
-物品/道具操作:GIVE裁决之杖1(发放1把裁决之杖)、DELITEM金币500(扣除500金币)、UPGRADEITEM武器1(武器强化+1);
-角色状态操作:ADDLEVEL5(提升5级)、ADDHP100(增加100点生命值上限)、SETNAME传奇大神(修改角色名称);
-地图/传送操作:MAPMOVE3300300(传送至3号地图300300坐标)、OPENGATE1200200(在1号地图200200坐标打开传送门);
-任务/状态标记:SETQUEST新手任务1(标记“新手任务”为已完成)、ADDNAMELIST会员名单.txt(添加玩家至会员名单)。
4.反馈语句:玩家交互的“桥梁”
反馈语句用于向玩家传递操作结果,常见格式为“SENDMSG颜色代码提示内容字体参数”,其中颜色代码决定提示文字颜色(6为黄色、255为白色等),字体参数控制字体大小和样式。
示例:SENDMSG6新手任务完成,获得1000金币奖励!255253,代表向玩家发送黄色提示文字,告知任务完成及奖励。除SENDMSG外,还有SENDTALKMSG(NPC对话文字)、SENDNOTICE(系统公告)等反馈语句,根据场景选择使用。
三、传奇脚本核心执行逻辑
传奇脚本执行遵循“线性扫描+分支跳转”逻辑,整体流程可概括为4步:
1.触发启动:玩家触发脚本入口(如与NPC对话、点击地图物品、满足任务条件),服务端加载对应脚本文件,定位至@main主标记;
2.条件判断:脚本从@main开始线性扫描,遇到#IF条件判断语句时,检测玩家当前状态是否匹配条件表达式;
3.操作执行:若条件匹配,执行#ACT下的操作语句;若不匹配,执行#ELSEACT下的操作语句(无#ELSEACT则直接结束当前逻辑);
4.分支跳转/结束:若操作语句中包含“GOTO@sub”,则跳转至对应子标记继续执行;若无线性跳转语句,执行完所有操作语句后,脚本本次执行结束。
示例:新手任务脚本执行逻辑——玩家对话NPC触发@main→#IF判断是否完成任务前置条件(等级≥5级)→满足则#ACT发放奖励+标记任务完成+SENDMSG反馈;不满足则#ELSEACT发送“等级不足5级,无法完成任务”提示→脚本结束。
四、常见传奇脚本类型及实例解析
1.NPC对话交互脚本
核心功能:实现玩家与NPC的对话交互,提供选项分支。实例代码及解析:
(@main)
SENDTALKMSG0新手引导员1欢迎来到传奇世界!我可以为你提供新手帮助。//NPC对话文字
SENDMSG6请选择:1.领取新手装备2.查询新手任务3.离开//选项提示
WAITINPUTS$1//等待玩家输入选项,将输入内容存入变量S$1
#IF
EQUALS$11//判断玩家输入1
#ACT
GIVE木剑1//发放木剑
GIVE布衣1//发放布衣
SENDMSG6新手装备已发放,请查收背包!255253
GOTO@main//跳转回主标记,继续对话
#ELSEIF
EQUALS$12//判断玩家输入2
#ACT
SENDMSG6新手任务:击杀10只稻草人,完成后可返回领取1000金币!255253
GOTO@main
#ELSEIF
EQUALS$13//判断玩家输入3
#ACT
SENDTALKMSG0新手引导员1祝你游戏愉快!//NPC结束对话
#ELSEACT
SENDMSG6输入错误,请重新选择!255253
GOTO@main
解析:该脚本通过WAITINPUT获取玩家输入,用EQUAL判断输入内容,实现多选项分支,完成新手引导交互,跳转语句保证对话逻辑闭环。
2.任务执行脚本
核心功能:实现任务接取、进度判断、奖励发放全流程。实例代码及解析:
(@main)
#IF
CHECKQUEST击杀稻草人0//判断未接取该任务
#ACT
SENDMSG6是否接取“击杀稻草人”任务?(1.接取2.不接取)255253
WAITINPUTS$1
#IF
EQUALS$11
#ACT
SETQUEST击杀稻草人1//标记任务为已接取
SENDMSG6任务接取成功!需击杀10只稻草人。255253
#ELSEACT
SENDMSG6已取消接取任务。255253
#ELSEIF
CHECKQUEST击杀稻草人1//判断已接取任务
#ACT
CHECKKILLMON稻草人10//检查是否击杀10只稻草人
#IF
TRUE//满足击杀条件
#ACT
SETQUEST击杀稻草人2//标记任务完成
GIVE金币1000//发放奖励
ADDLEVEL1//提升1级
SENDMSG6任务完成!获得1000金币和1级奖励!255253
#ELSEACT
GETKILLMON稻草人N$1//获取已击杀数量存入N$1
SENDMSG6当前已击杀<$STR(N$1)>/10只稻草人,请继续努力!255253
#ELSEIF
CHECKQUEST击杀稻草人2//判断任务已完成
#ACT
SENDMSG6该任务已完成,无法重复接取!255253
解析:脚本通过CHECKQUEST标记任务状态,CHECKKILLMON检测任务进度,GETKILLMON获取当前进度并通过变量展示,实现任务全流程管控。
3.功能触发脚本(会员特权)
核心功能:判断玩家会员身份,触发专属特权。实例代码及解析:
(@main)
#IF
CHECKNAMEDATETIMELIST..\QuestDiary\会员名单.txt1S$1N$1N$2N$3//检测有效会员
#ACT
SENDMSG6欢迎你,尊贵的会员!可享受以下特权:1.会员地图传送2.领取会员福利3.离开255253
WAITINPUTS$1
#IF
EQUALS$11
#ACT
MAPMOVE10300300//传送至会员地图(10号地图)
SENDMSG6已传送至会员专属地图!255253
#ELSEIF
EQUALS$12
#ACT
GIVE会员礼包1//发放会员福利
SENDMSG6会员福利已发放,请查收!255253
#ELSEACT
SENDMSG6感谢使用会员服务!255253
#ELSEACT
SENDMSG6你不是有效会员,无法享受会员特权!255253
解析:脚本通过CHECKNAMEDATETIMELIST检测会员有效期,仅有效会员可触发后续特权操作,实现会员功能的精准管控。
五、传奇脚本编写与调试注意要点
1.语法规范:脚本语句严格区分大小写,#IF、#ACT、#ELSEACT等关键字需大写;每条语句单独成行,不可叠加书写;标记名不可重复,否则会导致脚本执行混乱。
2.变量使用:合理使用系统变量(如<$CHARNAME>角色名、<$USERACCOUNT>账号、S$1字符串变量、N$1数字变量),变量赋值后需通过<$STR(变量名)>转换为字符串才能在反馈语句中显示。
3.路径正确:调用外部文件(如会员名单.txt)时,需填写正确相对路径,格式为“..\QuestDiary\文件名.txt”,路径错误会导致脚本无法读取文件。
4.调试方法:编写完成后,先备份原脚本文件;登录游戏触发脚本,观察是否按预期执行;若执行异常,检查语法错误(如遗漏#ACT、条件表达式错误),可通过添加SENDMSG反馈语句定位问题节点。
5.引擎兼容:不同引擎支持的命令可能存在差异,编写前确认服务端引擎类型,避免使用不兼容命令;若需跨引擎兼容,选择通用命令(如GIVE、DELITEM、MAPMOVE等)。
六、传奇脚本核心命令汇总
1.标记与跳转命令:GOTO@标记名(跳转至指定标记)、RETURN(返回上一级标记)、WAITINPUT变量名(等待玩家输入);
2.条件判断命令:CHECKLEVEL(等级判断)、CHECKITEM(物品判断)、CHECKQUEST(任务判断)、CHECKADMINLEVEL(GM等级判断)、EQUAL(等于判断);
3.操作执行命令:GIVE(发放物品)、DELITEM(扣除物品)、ADDLEVEL(提升等级)、MAPMOVE(地图传送)、SETQUEST(标记任务)、ADDNAMELIST(添加名单);
4.反馈命令:SENDMSG(玩家提示)、SENDTALKMSG(NPC对话)、SENDNOTICE(系统公告);
5.数据获取命令:GETKILLMON(获取击杀数量)、GETITEMNUM(获取物品数量)、STR(变量)(变量转字符串)。
传奇脚本是控制游戏内NPC交互、任务执行、功能触发等行为的指令集合,基于特定语法规则编写,存储为.txt文本文件,放置在服务端Envir/QuestDiary目录下生效。其核心作用是串联游戏内各类元素,实现自定义玩法,比如NPC对话、任务奖励发放、地图事件触发等,无需修改服务端核心程序即可拓展游戏功能。
传奇脚本兼容主流服务端引擎(GOM、GEE、COM等),不同引擎语法略有差异,但核心逻辑一致,均遵循“条件判断-执行操作-反馈结果”的基础框架。脚本文件命名无严格要求,但建议按功能命名(如“新手任务.txt”“会员特权.txt”),方便后续管理。
二、传奇脚本核心构成要素
1.脚本标记:定位与入口
脚本标记是脚本的核心定位符,用于指定脚本执行的入口和分支,常见标记格式为“(@标记名)”,区分大小写。核心标记包括:
-@main:主入口标记,脚本默认执行的起始点,通常用于NPC对话初始界面、功能触发初始判断;
-@sub:子标记,用于分支逻辑跳转,比如NPC对话选项后的不同操作分支,需通过“GOTO@sub”命令调用;
-@return:返回标记,用于从子标记跳转回主标记,实现逻辑闭环。
示例:(@main)为脚本起始,玩家对话NPC时首先执行该标记下的内容;若对话有多个选项,每个选项对应一个@sub子标记,选择后跳转至对应子标记执行操作。
2.条件判断语句:脚本执行的“开关”
条件判断语句用于判断玩家状态是否满足执行后续操作的要求,核心格式为“#IF+条件表达式+#ACT/#ELSEACT”,即“如果满足条件,则执行#ACT下操作;否则执行#ELSEACT下操作”。
常见条件表达式:
-等级判断:CHECKLEVEL>=10(玩家等级≥10级)、CHECKLEVEL<20(玩家等级<20级);
-物品判断:CHECKITEM金币1000(玩家拥有金币≥1000)、CHECKITEM屠龙1(玩家拥有屠龙装备≥1件);
-权限判断:CHECKADMINLEVEL9(玩家GM等级≥9级)、CHECKMEMBER1(玩家为有效会员);
-任务状态判断:CHECKQUEST新手任务1(玩家已完成“新手任务”)。
3.执行操作语句:脚本的核心功能实现
执行操作语句紧跟在#ACT或#ELSEACT后,用于实现具体功能,比如发放奖励、扣除物品、传送地图等,每条操作语句单独成行。
高频操作语句分类:
-物品/道具操作:GIVE裁决之杖1(发放1把裁决之杖)、DELITEM金币500(扣除500金币)、UPGRADEITEM武器1(武器强化+1);
-角色状态操作:ADDLEVEL5(提升5级)、ADDHP100(增加100点生命值上限)、SETNAME传奇大神(修改角色名称);
-地图/传送操作:MAPMOVE3300300(传送至3号地图300300坐标)、OPENGATE1200200(在1号地图200200坐标打开传送门);
-任务/状态标记:SETQUEST新手任务1(标记“新手任务”为已完成)、ADDNAMELIST会员名单.txt(添加玩家至会员名单)。
4.反馈语句:玩家交互的“桥梁”
反馈语句用于向玩家传递操作结果,常见格式为“SENDMSG颜色代码提示内容字体参数”,其中颜色代码决定提示文字颜色(6为黄色、255为白色等),字体参数控制字体大小和样式。
示例:SENDMSG6新手任务完成,获得1000金币奖励!255253,代表向玩家发送黄色提示文字,告知任务完成及奖励。除SENDMSG外,还有SENDTALKMSG(NPC对话文字)、SENDNOTICE(系统公告)等反馈语句,根据场景选择使用。
三、传奇脚本核心执行逻辑
传奇脚本执行遵循“线性扫描+分支跳转”逻辑,整体流程可概括为4步:
1.触发启动:玩家触发脚本入口(如与NPC对话、点击地图物品、满足任务条件),服务端加载对应脚本文件,定位至@main主标记;
2.条件判断:脚本从@main开始线性扫描,遇到#IF条件判断语句时,检测玩家当前状态是否匹配条件表达式;
3.操作执行:若条件匹配,执行#ACT下的操作语句;若不匹配,执行#ELSEACT下的操作语句(无#ELSEACT则直接结束当前逻辑);
4.分支跳转/结束:若操作语句中包含“GOTO@sub”,则跳转至对应子标记继续执行;若无线性跳转语句,执行完所有操作语句后,脚本本次执行结束。
示例:新手任务脚本执行逻辑——玩家对话NPC触发@main→#IF判断是否完成任务前置条件(等级≥5级)→满足则#ACT发放奖励+标记任务完成+SENDMSG反馈;不满足则#ELSEACT发送“等级不足5级,无法完成任务”提示→脚本结束。
四、常见传奇脚本类型及实例解析
1.NPC对话交互脚本
核心功能:实现玩家与NPC的对话交互,提供选项分支。实例代码及解析:
(@main)
SENDTALKMSG0新手引导员1欢迎来到传奇世界!我可以为你提供新手帮助。//NPC对话文字
SENDMSG6请选择:1.领取新手装备2.查询新手任务3.离开//选项提示
WAITINPUTS$1//等待玩家输入选项,将输入内容存入变量S$1
#IF
EQUALS$11//判断玩家输入1
#ACT
GIVE木剑1//发放木剑
GIVE布衣1//发放布衣
SENDMSG6新手装备已发放,请查收背包!255253
GOTO@main//跳转回主标记,继续对话
#ELSEIF
EQUALS$12//判断玩家输入2
#ACT
SENDMSG6新手任务:击杀10只稻草人,完成后可返回领取1000金币!255253
GOTO@main
#ELSEIF
EQUALS$13//判断玩家输入3
#ACT
SENDTALKMSG0新手引导员1祝你游戏愉快!//NPC结束对话
#ELSEACT
SENDMSG6输入错误,请重新选择!255253
GOTO@main
解析:该脚本通过WAITINPUT获取玩家输入,用EQUAL判断输入内容,实现多选项分支,完成新手引导交互,跳转语句保证对话逻辑闭环。
2.任务执行脚本
核心功能:实现任务接取、进度判断、奖励发放全流程。实例代码及解析:
(@main)
#IF
CHECKQUEST击杀稻草人0//判断未接取该任务
#ACT
SENDMSG6是否接取“击杀稻草人”任务?(1.接取2.不接取)255253
WAITINPUTS$1
#IF
EQUALS$11
#ACT
SETQUEST击杀稻草人1//标记任务为已接取
SENDMSG6任务接取成功!需击杀10只稻草人。255253
#ELSEACT
SENDMSG6已取消接取任务。255253
#ELSEIF
CHECKQUEST击杀稻草人1//判断已接取任务
#ACT
CHECKKILLMON稻草人10//检查是否击杀10只稻草人
#IF
TRUE//满足击杀条件
#ACT
SETQUEST击杀稻草人2//标记任务完成
GIVE金币1000//发放奖励
ADDLEVEL1//提升1级
SENDMSG6任务完成!获得1000金币和1级奖励!255253
#ELSEACT
GETKILLMON稻草人N$1//获取已击杀数量存入N$1
SENDMSG6当前已击杀<$STR(N$1)>/10只稻草人,请继续努力!255253
#ELSEIF
CHECKQUEST击杀稻草人2//判断任务已完成
#ACT
SENDMSG6该任务已完成,无法重复接取!255253
解析:脚本通过CHECKQUEST标记任务状态,CHECKKILLMON检测任务进度,GETKILLMON获取当前进度并通过变量展示,实现任务全流程管控。
3.功能触发脚本(会员特权)
核心功能:判断玩家会员身份,触发专属特权。实例代码及解析:
(@main)
#IF
CHECKNAMEDATETIMELIST..\QuestDiary\会员名单.txt1S$1N$1N$2N$3//检测有效会员
#ACT
SENDMSG6欢迎你,尊贵的会员!可享受以下特权:1.会员地图传送2.领取会员福利3.离开255253
WAITINPUTS$1
#IF
EQUALS$11
#ACT
MAPMOVE10300300//传送至会员地图(10号地图)
SENDMSG6已传送至会员专属地图!255253
#ELSEIF
EQUALS$12
#ACT
GIVE会员礼包1//发放会员福利
SENDMSG6会员福利已发放,请查收!255253
#ELSEACT
SENDMSG6感谢使用会员服务!255253
#ELSEACT
SENDMSG6你不是有效会员,无法享受会员特权!255253
解析:脚本通过CHECKNAMEDATETIMELIST检测会员有效期,仅有效会员可触发后续特权操作,实现会员功能的精准管控。
五、传奇脚本编写与调试注意要点
1.语法规范:脚本语句严格区分大小写,#IF、#ACT、#ELSEACT等关键字需大写;每条语句单独成行,不可叠加书写;标记名不可重复,否则会导致脚本执行混乱。
2.变量使用:合理使用系统变量(如<$CHARNAME>角色名、<$USERACCOUNT>账号、S$1字符串变量、N$1数字变量),变量赋值后需通过<$STR(变量名)>转换为字符串才能在反馈语句中显示。
3.路径正确:调用外部文件(如会员名单.txt)时,需填写正确相对路径,格式为“..\QuestDiary\文件名.txt”,路径错误会导致脚本无法读取文件。
4.调试方法:编写完成后,先备份原脚本文件;登录游戏触发脚本,观察是否按预期执行;若执行异常,检查语法错误(如遗漏#ACT、条件表达式错误),可通过添加SENDMSG反馈语句定位问题节点。
5.引擎兼容:不同引擎支持的命令可能存在差异,编写前确认服务端引擎类型,避免使用不兼容命令;若需跨引擎兼容,选择通用命令(如GIVE、DELITEM、MAPMOVE等)。
六、传奇脚本核心命令汇总
1.标记与跳转命令:GOTO@标记名(跳转至指定标记)、RETURN(返回上一级标记)、WAITINPUT变量名(等待玩家输入);
2.条件判断命令:CHECKLEVEL(等级判断)、CHECKITEM(物品判断)、CHECKQUEST(任务判断)、CHECKADMINLEVEL(GM等级判断)、EQUAL(等于判断);
3.操作执行命令:GIVE(发放物品)、DELITEM(扣除物品)、ADDLEVEL(提升等级)、MAPMOVE(地图传送)、SETQUEST(标记任务)、ADDNAMELIST(添加名单);
4.反馈命令:SENDMSG(玩家提示)、SENDTALKMSG(NPC对话)、SENDNOTICE(系统公告);
5.数据获取命令:GETKILLMON(获取击杀数量)、GETITEMNUM(获取物品数量)、STR(变量)(变量转字符串)。

