读取文本到变量命令详解 - 996引擎文本数据配置
摘要:本文讲解996引擎GetListString命令的完整用法,包括命令格式、行号计数规则、双变量拆分逻辑,提供排行榜名单、公告轮播等三阶案例,并汇总行号写错、路径错误、编码乱码等常见坑点,帮助新手在本地环境完成文本数据配置,实现文本文件读取与脚本变量读取的无缝衔接。…
读取文本到变量是996引擎兼容HeroM2模式下最常用的脚本能力之一,GetListString命令能把txt文本文件指定行的内容直接读到变量里,做排行榜名单、公告文字、配置文件读取这类功能非常顺手,全程在本地单机环境下调试即可完成。
新手调试时最容易卡在两个地方:一是行号到底从几开始数,二是读出来的值怎么显示到NPC对话里。本文把命令格式、参数含义和三种实际用法逐一说明,按顺序操作就能跑通。
先看命令格式,再对照参数表理解每个字段,最后用三个案例覆盖入门、优化和定制三个层级。

GetListString命令格式
GetListString的标准格式如下,来自996引擎帮助文档原文:
GetListString 文件路径 行号(行号从0开始) 变量1 变量2
官方示例直接引用:
[@main]
#IF
#ACT
GetListString ..\QuestDiary\测试.txt 5 A10 N10
上面的例子把测试.txt第6行内容读取到A10,再按冒号拆分读取到N10。行号从0开始,所以写5表示读第6行,这一点新手最容易弄反。

参数详解
| 参数内容 | 参数释义 | 实操用法 |
|---|---|---|
| 文件路径 | 要读取的txt文件位置,可用相对路径 | ..\QuestDiary\测试.txt 指向QuestDiary目录下文件 |
| 行号 | 从0开始计数的目标行 | 写0读第一行,写5读第六行 |
| 变量1 | 读取整行内容存入的变量 | 常用A或S类字符变量,如A10 |
| 变量2 | 按冒号拆分后读取的第二个值 | 可省略;单行格式必须是人物1:10才能拆分 |
当需要读取变量2时,文本单行的内容必须是固定格式:
人物1:10
人物2:20
冒号左边进变量1,右边进变量2,一条文本可以拆出两个值,适合存名字加数值的组合数据。
配置实操
第一步,在服务端QuestDiary目录下新建一个txt文件,命名为名单.txt,逐行写入要读取的内容,例如第一行写排行榜榜首的名字,第二行写第二名,每行一个名字。
第二步,打开需要读取的NPC脚本,在[@main]段之前确认QuestDiary目录配置无误,脚本文件放在Market_Def目录下正常加载。
第三步,在NPC脚本里写入读取段,把名单.txt第三行的内容读到变量里:
[@main]
#IF
#ACT
GetListString ..\QuestDiary\名单.txt 2 A10
#SAY
排行榜第三名是:<$STR(A10)>
第四步,保存脚本后在本地M2上重新加载NPC,打开NPC对话验证读取结果。脚本变量读取是否成功,看<$STR(A10)>显示的值即可判断。

脚本示例
初级入门案例:读取一行公告文字并显示。先准备公告.txt,第一行写欢迎语,脚本里写GetListString ..\QuestDiary\公告.txt 0 A10,再用<$STR(A10)>输出,行号写0取第一行。
中级优化案例:读取名字加积分组合数据。公告名单.txt每行写成玩家A:100的格式,脚本用GetListString ..\QuestDiary\名单.txt 3 A10 N10一次取出名字和积分,分别用<$STR(A10)>和<$STR(N10)>显示,排行榜功能不需要再写多个读取命令。
高阶定制案例:动态读取并配合变量赋值做轮播。把多条公告按行存放,用个人定时器定时改变行号变量,每轮调用GetListString读取不同行,实现公告自动轮播,全程不用改脚本文件内容。
常见坑点
行号从0开始计数,读取第一行必须写0,写1会读到第二行,这是反馈最多的错误。
路径写法要注意,..\QuestDiary\是相对服务端Mir200目录的相对路径,写成绝对路径或路径多一层少一层都会导致文本文件读取失败,M2日志里会出现脚本错误提示。
变量2的使用前提是文本行必须带冒号,整行只有一个值的时候不要写变量2,否则读出来的内容为空。
文本文件保存编码要统一,中文内容推荐保持与引擎一致的编码格式,编码不一致会出现乱码,读出来的名字显示异常。
FAQ问答
1. 问:GetListString读取文本到变量时,行号从0开始是从哪一行算起?
行号从0开始表示文件的第一行,写0读取第一行,写1读取第二行,依次类推。例如想读取名单.txt的第六行内容,行号参数要写5。这是996引擎帮助文档原文明确规定的计数方式,按这个规则写就不会偏行。(本条问题整理自百度知道真实提问:传奇GetListString命令的使用方法,2013年10月)
2. 问:读取文本到变量后,怎么在NPC对话里显示读出来的值?
读取命令执行后,变量1存的是整行内容,变量2存的是冒号后的数值。显示用<$STR(变量名)>格式,例如A10变量就写<$STR(A10)>,N10变量写<$STR(N10)>,放在#SAY段里即可正常输出。(本条问题整理自百度知道真实提问:传奇脚本求教!,2012年9月)
3. 问:脚本变量读取时文本行有冒号但只写变量1,会读出什么?
只写变量1时,整行内容包括冒号和后面的数值都会一起存入变量1,显示出来是完整的人物1:10这样一行。只有同时写了变量2,引擎才会按冒号把左右两边拆分到两个变量里。要根据用途决定是否写变量2。(本条问题整理自百度知道真实提问:传奇脚本如何查看指定玩家的指定变量,2014年1月)
4. 问:GetListString和文本检测命令有什么区别?
GetListString负责把指定行的内容读取到变量中,属于数据读取;文本检测类命令负责判断某个字符串是否存在于文件里,属于条件判断。读取文本到变量适合做数据展示,检测命令适合做条件拦截,两者常配合使用,编写996引擎脚本时按用途选择即可。
5. 问:读取的txt文件变得很大,会不会影响脚本运行?
会。素材库里记录过类似情况:脚本读写文件太频繁或文件太大,引擎每次读取都会访问硬盘,文件越来越大读取会越来越慢,甚至出现卡顿。建议名单类文件控制行数,定期清理无效行,避免在触发频繁的脚本段里做大量读取。
6. 问:路径写成..\QuestDiary\名单.txt读取不到是什么原因?
常见原因有三个:一是文件名或目录名拼写不一致,二是txt文件没有放在QuestDiary目录下,三是M2没有重新加载脚本。逐项核对路径大小写、文件位置和脚本重载情况,本地测试时最容易漏掉最后一步。
7. 问:变量2读取的数值能直接参与计算吗?
可以。变量2存入的是数字型变量,例如N10,可以直接参与数值比较和加减运算。如果读出来参与计算不生效,先检查文本行冒号右边是否纯数字,混入中文或空格会导致数字变量赋值失败。
收尾要点
读取文本到变量是脚本开发里高频使用的数据读取手段,GetListString用一条命令就能完成文件读取和变量赋值,行号从0开始、冒号拆分、<$STR()>显示这三个要点掌握后,排行榜、公告、名单类功能都能快速落地。文本数据配置在本地单机环境验证通过后,直接迁移到版本里即可使用。
以上GetListString读取文本配置全程在本地996引擎环境跑通;该命令面向996引擎设计,其他引擎是否兼容需要自行验证。本文内容仅供单机本地学习调试。
扫描二维码推送至手机访问。
本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。
本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。













