HEROM2传奇并不是所有脚本都能随意使用变量操作。变量能否生效,要看脚本文件类型、段落标签、引擎版本以及变量本身是否被正确定义。HEROM2对变量有明确范围限制,基础数字变量通常只支持P0-P9、D0-D9,逻辑变量使用[n]格式,全局变量、字符变量、自定义变量需要对应引擎版本和脚本环境才能使用。
基础变量在HEROM2里最常见。P0-P9属于私人数字变量,通常关闭NPC对话框或转换NPC后会归零,适合做临时计数、任务进度、对话分支。D0-D9也是私人数字变量,一般小退后归零,适合做临时判定、次数限制、活动记录。赋值用MOV,自增用INC,自减用DEC,乘法用MUL,除法用DIV,随机赋值用MOVR,比较用SMALL、LARGE、EQUAL。
逻辑变量写法是[n],n通常为1到1024。它只有0和1两种状态,初始值为0,不会因为下线或重启自动重置。设置用SET [n] 1,检测用Check [n] 1,批量重置用RESET [XXX] 数量。逻辑变量常用于任务是否完成、称号是否领取、活动是否触发、一次性奖励是否发放。
全局变量和字符变量在HEROM2里支持范围有限。G变量通常用于全局数字型数据,可保存;A变量用于全局字符型数据,可保存;I变量属于全局数字型,但重启后可能归零。部分版本还支持U、T等可保存个人变量,但具体范围要以当前HEROM2版本帮助文档为准。
自定义变量不是所有HEROM2版本都能直接用。较新版本或新HeroM2引擎支持自定义变量,需要先声明类型,例如VAR Integer HUMAN/GLOBAL/GUILD 变量名,再使用CHECKVAR、MOV、INC等命令操作。自定义变量名称不能以P、D、M、N、S、I、G、A开头,否则会与系统保留变量冲突。
脚本文件类型也会影响变量是否生效。NPC对话脚本通常放在Market_Def或Npc_Def目录下,变量多用于对话分支、任务判断、物品扣除和奖励发放。QManage.txt、QFunction-0.txt等事件脚本可以记录玩家状态,但变量写入后必须确认是否保存到人物数据库或全局存储。机器人脚本、地图进入脚本、死亡触发脚本也能使用变量,但需要保证标签正确、命令格式符合当前引擎版本。
变量大小写在HEROM2里需要特别注意。部分脚本命令和参数要求大写,例如HCall @TTT ,如果写成可能无法正确触发。变量名本身也要保持一致,不能一会儿写P0,一会儿写p0,否则检测会失效。
显示变量时,通常使用<STR(变量)>把变量值输出到对话框或提示消息中。例如在#SAY段里显示玩家当前任务进度,就可以用<STR(P0)>。但变量显示是否生效,取决于脚本段落是否在#SAY或#ACT中正确引用,以及客户端是否能解析该变量格式。
变量不生效的常见原因有几种。第一,变量超出范围,例如在老版本HEROM2里直接使用P10、D10或大量自定义变量。第二,变量未声明,自定义变量没有先用VAR定义就直接检测。第三,脚本文件放错目录,导致引擎没有加载。第四,修改后没有重新加载脚本或重启M2。第五,逻辑变量和数字变量混用,例如用SET设置数字变量,或用MOV设置逻辑变量。第六,变量名大小写不一致,导致检测失败。
排查时先看脚本是否属于HEROM2支持的变量环境,再确认变量类型是否在允许范围内,再检查赋值、检测、显示命令格式是否正确,最后确认脚本是否重新加载。如果某个脚本段里变量始终无效,可以先用SENDMSG输出变量值,判断是赋值失败、检测失败,还是显示失败。
HEROM2脚本变量操作能力较强,但不能理解为“所有脚本都支持所有变量”。基础变量、逻辑变量、全局变量、自定义变量各有适用范围,老版本和新版本之间也存在差异。实际使用时应以当前引擎版本的脚本帮助文档为准,避免把其他引擎的变量写法直接套用到HEROM2上。
传奇HEROM2脚本变量操作解析:并非所有脚本全支持,区分基础变量、逻辑变量与自定义变
来源:
作者:
点击:

