BLUE引擎将变量写入文本命令 - 文本存档配置脚本教程
摘要:将变量写入文本命令是BLUE引擎把脚本变量按行写入文本文件的命令,命令名ADDLINELIST,配合DELLINELIST与CLEARNAMELIST完成写入、删除与清空。本文按官方帮助文档整理命令格式与参数说明,给出从单条写入到文件存档的三阶案例与NPC脚本配置步骤,并梳理路径前缀与HardDisk写盘等坑点。…
将变量写入文本命令是BLUE引擎脚本里把变量内容按行追加进文本文件的一条命令,命令名ADDLINELIST,官方给出的写法是命令名加文件名再加字符。它把脚本里算好的变量值一行一条写进ENVIR目录下的文本,冲级名单、排行记录、玩家名单这类需要留档的数据都靠它落成文件。
不少新手写完脚本会发现变量在游戏里明明有值,打开对应的TXT却看不到内容,或者引擎跑了一晚上再去看文件还是一片空白。这篇把ADDLINELIST的格式、参数、三阶案例和在NPC脚本里的配置步骤按顺序列出来,配套的DELLINELIST与CLEARNAMELIST一并对照说明,按顺序走一遍就能把脚本变量存档到文本里。

命令格式:写入文本的写法
该命令属于BLUE引擎的文本操作命令族,官方帮助文档把它归在脚本命令使用详解的功能操作分类下,同一族里还有负责删除文本行的DELLINELIST。文档给出的完整格式如下。
ADDLINELIST 文件名(默认ENVIR目录下) 字符 //写入文本行
DELLINELIST 文件名(默认ENVIR目录下) 字符 //删除文本行
原文对功能的描述只有一句:将变量写入文本命令。注释标得很清楚,ADDLINELIST写入文本行,DELLINELIST删除文本行,两条命令的参数位置完全相同,区别只在动作方向。命令名不区分大小写,脚本里大写小写混着写引擎都能识别,真正会让它不识别的是拼写错误和多打的空格。
官方示例用的是冲级名单玩法,先把十份文本里的旧数据清空,再把十个字符变量分别写进对应文件,完整原文如下。
#IF
#ACT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第一名.TXT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第二名.TXT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第三名.TXT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第四名.TXT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第五名.TXT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第六名.TXT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第七名.TXT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第八名.TXT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第九名.TXT
CLEARNAMELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第十名.TXT
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第一名.TXT <$STR(A14)>
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第二名.TXT <$STR(A16)>
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第三名.TXT <$STR(A18)>
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第四名.TXT <$STR(A20)>
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第五名.TXT <$STR(A22)>
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第六名.TXT <$STR(A24)>
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第七名.TXT <$STR(A26)>
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第八名.TXT <$STR(A28)>
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第九名.TXT <$STR(A30)>
ADDLINELIST ..\QUESTDIARY\WWW.BLUEM2.COM\冲级数据\冲级第十名.TXT <$STR(A32)>
这段示例一共二十行命令:前十行是CLEARNAMELIST,把冲级第一名到第十名的TXT全部清空;后十行是ADDLINELIST,把编号A14、A16一直到A32这十个字符变量的值,分别写进对应的十份文件。先清空再写入是官方示例的顺序,重复跑榜单时不会让旧数据一层层堆在文件末尾。

参数说明:变量名与文件路径
格式行里只写了文件名与字符两个位置,实际写入时还要看写盘方式,把三个要点拆开对照如下。
| 参数内容 | 参数释义 | 实操用法 |
|---|---|---|
| 文件名 | 要写入的文本文件,原文括注默认ENVIR目录下 | 写相对路径,如..\QuestDiary\rolelist.txt |
| 字符 | 要写入的一行内容,可以是变量引用 | 直接写文本,或写成<$STR(A14)>取字符变量 |
| HardDisk | 文本操作命令的扩展命令,实时读写硬盘数据 | 追加在字符之后,不写时引擎约1分钟自动保存一次 |
文件名决定内容写到哪里去。官方在重要说明里把QuestDiary文件夹的触发脚本路径统一改成了..\,并明确废除两种老写法:直接以QuestDiary\开头、以.\QuestDiary\开头都不再支持,只有..\QuestDiary\开头可用,从旧版本迁过来的脚本先做一次文本替换就行。
字符决定写什么进文件。官方对该命令的说明是:将指定变量和字符内容写入,指定文本内。也就是说这一位既可以直接写一段文本,也可以写变量引用,它的取值方式和平时的变量赋值一致,要先给字符变量赋好值,再交给命令写进文件,官方示例用的就是<$STR(A14)>这种取值写法。
写盘方式决定内容什么时候真正进到文件里。不写HardDisk时,引擎约1分钟自动保存一次物理硬盘,文本数据落盘是延后的,所以在脚本执行完立刻打开TXT可能什么都看不到;在字符后面追加HardDisk之后变成实时读写硬盘,写一条就落一条,调试阶段想边写边看文件用这种写法最省事。
三阶案例:从单条写入到文件存档
阶段一,单条写入做名单。最简用法是把一次登录的结果追加进一份名单文本,脚本里只写一行命令,字符位置直接写变量引用。
[@Login]
#IF
#ACT
ADDLINELIST ..\QuestDiary\rolelist.txt <$USERNAME>
每执行一次就在rolelist.txt末尾多一行人物名,命令本身不会替你新建文件,先把TXT手动建好放进QuestDiary目录,再让脚本往里写。
阶段二,批量分文件写入。官方示例的冲级名单就是这种做法,先用CLEARNAMELIST把每一份文本清空,再用ADDLINELIST把对应的字符变量写进对应文件,第一名到第十名各占一份。
#IF
#ACT
CLEARNAMELIST ..\QuestDiary\冲级数据\冲级第一名.TXT
ADDLINELIST ..\QuestDiary\冲级数据\冲级第一名.TXT <$STR(A14)>
变量编号按A14、A16、A18的顺序往上走,每次加2,一直到A32,正好十份数据;一份文件只留一条记录,后续用读行命令按行号取内容不会串位。
阶段三,文件存档加实时写盘。要让内容当场落到硬盘上,在字符后面补一个HardDisk;要删掉名单里的某一行,换成DELLINELIST,两个位置的参数写法与写入完全一样。
ADDLINELIST ..\QuestDiary\rolelist.txt <$USERNAME> HardDisk
DELLINELIST ..\QuestDiary\rolelist.txt <$USERNAME>
做到这一步,脚本变量存档就从内存里的变量变成了可以随时编辑的文本文件,改名单只动TXT不动脚本;需要整份清空时用CLEARNAMELIST,写行、删行、清空三条命令各管一段,配合起来就能把文本数据维护住。

实操步骤:在NPC脚本里配置写入
在NPC脚本里配置写入,落点是登录脚本与ENVIR目录两处,按下面的顺序做一遍就能跑通。
第一步,打开版本目录下的QuestDiary文件夹,确认要写入的文件放在这里,路径前缀统一写..\QuestDiary\,不要再使用QuestDiary\或.\QuestDiary\这两种已被废除的老写法。
第二步,在QuestDiary目录里新建一份TXT并命名,例如rolelist.txt,保证命令执行的时候目标文件已经存在。
第三步,打开Mir200\Envir目录下的QManage.txt,在[@Login]或[@Startup]段的#ACT下面写入ADDLINELIST命令,文件名位置填相对路径,字符位置填要写进去的变量引用。
第四步,保存QManage.txt后回到M2控制台重载登录脚本,或者小退再登录触发一次,让写入命令真正执行。
第五步,回到QuestDiary目录打开那份TXT核对结果,能看到新增的行说明写入成功;文件为空或者内容对不上,继续按下面的坑点顺序。
常见坑点:文件路径不存在导致写入失败
坑点一,目标文件不存在。写入类命令不会替你创建文件,路径指向一份不存在的TXT时,执行完在目录里什么都看不到;先在QuestDiary下把文件建好,再让命令往里写。
坑点二,路径前缀还用老写法。官方重要说明里已废除QuestDiary\与.\QuestDiary\两种前缀,只支持..\QuestDiary\;老脚本迁移时用文本替换工具统一改一遍,替换之前先备份原文件。
坑点三,写完马上打开文件却是空的。文本操作命令会把文本载入到内存中操作,不写HardDisk时引擎约1分钟才自动保存一次物理硬盘,看太早自然看不到新行;需要即时看到结果,就在字符后面追加HardDisk。
坑点四,拿DELLINELIST去清空整份文件。删除命令只处理指定文本内匹配的变量和字符内容,要清空列表得用CLEARNAMELIST,官方在文本操作命令清单里对它的说明就是清除列表内容。
坑点五,写入次数太频繁。官方提醒文本操作命令非常消耗资源,文本较大、操作频繁或脚本不合理时会明显卡顿;只对必须立刻落盘的文件加HardDisk,其余保持默认的内存写入加定时保存更稳妥。
常见问题
1. 将变量写入文本命令适合用在哪些场景?
需要把脚本运行结果留痕的场景都合适,比如登录名单、冲级排行、已领取奖励的记录。它的数据落点是ENVIR目录下的文本文件,不占变量位,重启之后内容还在;写名单、做排行、记流水这类需求用ADDLINELIST一条命令就能完成,比在脚本里堆变量更省心,数据保存的维护成本也低。
2. 传奇脚本里的全局变量是怎么保存和读取的?
全局变量里的G变量与A变量通过Mir200目录下的GlobalVal.ini保存和读取,由引擎统一维护,可跨场景共享同一份数据,等级、经验这类需要长期留存的记录都挂在上面;P变量不做传递,只适合临时数据处理。要把这类全局数据落到文本里长期留档,可以用ADDLINELIST写进QuestDiary下的TXT,变量与文本文件两条路可以并行使用。(本条问题整理自百度知道真实提问:传奇脚本全局所有变量使用说明,2024年8月)
3. 传奇脚本变量是什么?分为哪几类?
A变量是字符型,能存汉字文本;G变量是整数型,用来做数字运算;私人变量里S是字符型,D与N是整数型;在此之外还有自定义变量,用起来更灵活。写文本文件时常用字符型变量,因为它的值本身就是一行文本,交给ADDLINELIST就能直接落盘。(本条问题整理自百度知道真实提问:传奇脚本变量是什么,2022年11月)
4. 服务端里变量相关的命令一共有哪些?
数字型变量的命令是一套固定写法,P0到P9、G0到G499、M0到M99、I0到I99这些变量都靠MOV、INC、DEC、MUL以及equal、small、large来判断和运算,其中G是全局数字型,M与I是私人数字型。这些命令负责在内存里搬数字,ADDLINELIST负责把变量值写进文本,一个管算、一个管存。(本条问题整理自百度知道真实提问:《传奇》服务端中变量运用的所有命令,2019年8月)
5. 命令写在脚本里执行了,但文本里没有内容怎么排查?
按顺序查三处:先看文件名位置写的路径在QuestDiary下是否真实存在,再确认字符位置写的是变量引用而不是空值,最后确认命令写在#ACT下面并且脚本已经重载。三处都正常后文件里仍看不到内容,多半是不写HardDisk时的定时保存还没到时间,等一分钟或者补上HardDisk再看一次。
6. ADDLINELIST与DELLINELIST、CLEARNAMELIST有什么区别?
三条命令的参数位置一样,动作方向不同:ADDLINELIST把变量和字符内容追加进指定文本,DELLINELIST把指定文本内匹配的变量和字符内容删掉,CLEARNAMELIST直接清除整份列表内容。写一行用第一条,删指定行用第二条,整份清空用第三条,三者配合完成文本数据的增加、删除与重置。
7. 一次能写入多少行,变量取值有规律吗?
一次执行只写入一行,要多行就在脚本里写多条命令。官方冲级名单示例就写了十条ADDLINELIST,对应的字符变量编号从A14一直到A32,编号每次加2;批量写入的条数由脚本里写的命令条数决定,写入次数越多、文本越大,引擎消耗越高,非必要不要高频写。
总结
将变量写入文本命令解决的是变量留档的问题:ADDLINELIST负责把变量内容按行追加进文本,DELLINELIST负责删除指定内容,CLEARNAMELIST负责清空整份列表,三条命令参数位置一致,动作方向不同。动手时记住三点,文件名位置的路径默认在ENVIR目录下且前缀统一写..\,字符位置可以写变量引用,需要即时落盘就在字符后面追加HardDisk。
把名单、排行这类数据交给文本文件维护,脚本里只留读写逻辑,改内容不用再动脚本,这也是变量文本存储在本地调试里最常见的用法。
本文关于BLUE引擎将变量写入文本命令ADDLINELIST的格式与参数说明,均对照官方CHM帮助文档逐项核对,仅供单机本地学习调试使用,请勿用于线上正式环境。
扫描二维码推送至手机访问。
本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。
本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。









