当前位置:首页 > 实操教程 > 996引擎 > 正文内容

读取文本到变量命令详解 - 996引擎文本数据配置

M2GM2026-10-22996引擎37
摘要:本文讲解996引擎GetListString命令的完整用法,包括命令格式、行号计数规则、双变量拆分逻辑,提供排行榜名单、公告轮播等三阶案例,并汇总行号写错、路径错误、编码乱码等常见坑点,帮助新手在本地环境完成文本数据配置,实现文本文件读取与脚本变量读取的无缝衔接。…
[TOCM]

读取文本到变量是996引擎兼容HeroM2模式下最常用的脚本能力之一,GetListString命令能把txt文本文件指定行的内容直接读到变量里,做排行榜名单、公告文字、配置文件读取这类功能非常顺手,全程在本地单机环境下调试即可完成。

新手调试时最容易卡在两个地方:一是行号到底从几开始数,二是读出来的值怎么显示到NPC对话里。本文把命令格式、参数含义和三种实际用法逐一说明,按顺序操作就能跑通。

先看命令格式,再对照参数表理解每个字段,最后用三个案例覆盖入门、优化和定制三个层级。

读取文本到变量脚本配图 - M2GM

GetListString命令格式

GetListString的标准格式如下,来自996引擎帮助文档原文:

GetListString 文件路径 行号(行号从0开始) 变量1 变量2

官方示例直接引用:

[@main]
#IF
#ACT
GetListString ..\QuestDiary\测试.txt 5 A10 N10

上面的例子把测试.txt第6行内容读取到A10,再按冒号拆分读取到N10。行号从0开始,所以写5表示读第6行,这一点新手最容易弄反。

读取文本到变量内容示意图 - M2GM

参数详解

参数内容 参数释义 实操用法
文件路径 要读取的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)>显示的值即可判断。

读取文本到变量脚本配置示意图 - M2GM

脚本示例

初级入门案例:读取一行公告文字并显示。先准备公告.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发布,如需转载请注明出处。如有侵权请联系站长删除。

本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。

本文链接:https://www.m2gm.com/tech/996/996-getliststring/

分享给朋友:

相关文章

996引擎AddMapRoute怎么设?地图动态链接点添加脚本教程

996引擎AddMapRoute怎么设?地图动态链接点添加脚本教程

996引擎AddMapRoute与SetMapRoute建地图动态链接点教程:标示号配对、两端坐标、双向互通、活动限时拆装;只写一半与标示不一致排查,上面这套改完直接丢进对应脚本段就行,不用额外配置。…

Blue引擎宝箱物品触发脚本教程 - OpenTreasureChest命令实操

Blue引擎宝箱物品触发脚本教程 - OpenTreasureChest命令实操

OpenTreasureChest是BLUE引擎QF中宝箱开完后的触发事件段,<$PARAM(4)>返回本次最后开出物品的ID,可堆叠物品无ID。本文说明该触发与OPENBOX开箱命令的区别、BoxItem.txt奖励配置分工、PARAM(4)取值规则和三步配置流程,解答开箱后物品不进包等常见问题。…

SD插件SDBDelMonHp切割命令脚本教程 - 宝宝切割必查的参数细节

SD插件SDBDelMonHp切割命令脚本教程 - 宝宝切割必查的参数细节

SD插件宝宝切割教程:命令SDBDelMonHp六个参数,参数2选固定值或百分比切割,参数4控制切割对象只切怪物,参数5设百分比分母,含报错排查与三阶案例,适配SD插件脚本学习,仅供单机本地调试。…

大秦插件NPC倒计时标签怎么用?SetNpcCountDown命令功能教程

大秦插件NPC倒计时标签怎么用?SetNpcCountDown命令功能教程

大秦插件NPC倒计时教程:三参数NPC标识秒数提示文字;显示在NPC头顶不是屏幕中间;到0自动消失;能多个NPC同时倒数;配合DelayCall做倒计时完触发,附避坑与实操步骤。…

回收倍率改了没生效?SD插件SDSetRecycleRate回收率设置详解

回收倍率改了没生效?SD插件SDSetRecycleRate回收率设置详解

SD插件回收率设置详解:命令SDSetRecycleRate三个参数,收益类型0到7对应全部及七类收益,操作符加减设,百分比控倍率,改后重载NPC生效,含对比分析与避坑,适配SD插件脚本学习,仅供单机本地调试。…

大秦插件NPC设置文字坐标怎么用?NPC文字坐标脚本教程

大秦插件NPC设置文字坐标怎么用?NPC文字坐标脚本教程

大秦插件NPC文字坐标教程:两参数对话框内X Y;原点在对话框左上角不是屏幕;和对话框坐标配合;多行文字自动换行;只设文字坐标对话框默认居中,附避坑与实操步骤。…

LFM2引擎TAKE怎么收物品?TAKE收回背包物品脚本教程

LFM2引擎TAKE怎么收物品?TAKE收回背包物品脚本教程

LFM2引擎TAKE教程:两参数物品名数量;先CHECKITEM检测数量再TAKE;物品名要和Stditem.db一致;数量不够静默失败;TAKE和TAKEW区别是收背包vs收身上,附避坑与实操步骤。…

GOM引擎怎么查行会人数?GOM获取指定行会人员数量脚本教程

GOM引擎怎么查行会人数?GOM获取指定行会人员数量脚本教程

GOM引擎GuildMemberAll教程:两参数N变量行会名;查的是在线人数不是总人数;行会名要一字不差;行会不存在返回0;一次只查一个行会,附避坑与实操步骤。…