一、GetListString命令格式与参数详解
标准格式:
GetListString文件路径行数变量接收变量
•文件路径:相对于服务端Mir200目录,支持绝对路径(如D:\MirServer\...)和相对路径(如..\QuestDiary\...)。
•行数变量:指定读取文件的第几行,必须为数字型变量(如N变量、P变量、G变量、D变量、S$变量等),行数从0开始计数。
•接收变量:存放读取内容的字符串变量,必须是可赋值的字符串类型(如S$变量、A$变量、M$变量)。
示例脚本:
#ACT
MOVN$行数0
GetListString..\QuestDiary\名单.txtN$行数S$读取内容
SENDMSG0第0行内容:<$STR(S$读取内容)>
这将读取名单.txt的第1行(行数0)存入变量S$读取内容。
二、错误脚本逐行分析
#IF
CHECK[102]1
#ACT
MOV<$STR(N主线段数)>1
GetListString..\QuestDiary\二明专用\任务系统\任务变量\主线名称.txt<$STR(N主线段数)><$STR(S$主线名称)>
核心错误:
1.MOV命令语法错误:<$STR(N主线段数)>是变量取值格式,不能作为变量名被赋值。MOV命令的目标变量名不能带格式符。正确写法是:
MOVN$主线段数1
2.GetListString参数格式错误:第二、三个参数必须是变量名本身,不能是<$STR(...)>格式。这是脚本执行失败、只能读第一行的根本原因。
三、正确脚本与常见用法
修正后的脚本:
#IF
CHECK[102]1
#ACT
MOVN$主线段数0
GetListString..\QuestDiary\二明专用\任务系统\任务变量\主线名称.txtN$主线段数S$主线名称
SENDMSG0读取的线段名称:<$STR(S$主线名称)>
循环读取文件所有行示例:
#ACT
MOVN$当前行0
WHILEN$当前行<3
GetListString..\QuestDiary\任务变量\主线名称.txtN$当前行S$临时内容
SENDMSG0第<$STR(N$当前行)>行:<$STR(S$临时内容)>
INCN$当前行1
ENDWHILE
四、文件格式与路径排查
文件主线名称.txt格式问题:
你的文件内容为:
被废弃的村庄1:皇族埋骨地一层1
被废弃的村庄1:皇族埋骨地一层2
被废弃的村庄1:皇族埋骨地一层3
这是正确格式。常见错误格式包括:
•文件编码不是ANSI(用记事本另存为ANSI编码)。
•文件名或路径含中文但引擎不支持(用全英文路径测试)。
•文件有BOM头(用Notepad++转UTF-8无BOM)。
路径检查技巧:
•先确认文件存在:..\QuestDiary\二明专用\任务系统\任务变量\主线名称.txt
•用绝对路径测试:GetListStringD:\MirServer\Mir200\QuestDiary\二明专用\任务系统\任务变量\主线名称.txtN$主线段数S$主线名称
•检查权限:确保引擎有读取该目录的权限。
五、不同引擎语法差异
GEE/GOM引擎:支持GetRandomText命令替代GetListString,语法不同。
LF/翎风引擎:GetListString行数参数从0开始,与HERO、BLUE引擎一致。
3K/KK引擎:老版本需用GETRANDOMLINETEXT命令,新版本支持GetListString。
通用兼容写法:
#ACT
VARIntegerHUMAN主线段数
LoadValueHUMAN主线段数
GetListString..\QuestDiary\文件.txtHUMAN主线段数
六、脚本调试与日志查看
修改脚本后,重启M2或重新加载QFunction脚本。在M2菜单查看→脚本日志中查看具体报错:
•若提示“文件不存在”,检查路径和文件名。
•若提示“变量类型错误”,确认参数是变量名。
•若提示“行数超出范围”,检查文件行数和行数变量值。
用以下调试脚本测试:
#IF
#ACT
MOVN$行数1
DECN$行数1
GetListString..\QuestDiary\测试.txtN$行数S$内容
SENDMSG0行数<$STR(N$行数)>的内容是:<$STR(S$内容)>
总结:GetListString命令的常见错误是参数使用了<$STR(...)>取值格式。正确做法是:第一参数为文件路径字符串,第二参数为数字型变量名,第三参数为字符串型变量名。修改脚本变量格式、确认文件编码、检查引擎兼容性即可解决读取问题。
标准格式:
GetListString文件路径行数变量接收变量
•文件路径:相对于服务端Mir200目录,支持绝对路径(如D:\MirServer\...)和相对路径(如..\QuestDiary\...)。
•行数变量:指定读取文件的第几行,必须为数字型变量(如N变量、P变量、G变量、D变量、S$变量等),行数从0开始计数。
•接收变量:存放读取内容的字符串变量,必须是可赋值的字符串类型(如S$变量、A$变量、M$变量)。
示例脚本:
#ACT
MOVN$行数0
GetListString..\QuestDiary\名单.txtN$行数S$读取内容
SENDMSG0第0行内容:<$STR(S$读取内容)>
这将读取名单.txt的第1行(行数0)存入变量S$读取内容。
二、错误脚本逐行分析
#IF
CHECK[102]1
#ACT
MOV<$STR(N主线段数)>1
GetListString..\QuestDiary\二明专用\任务系统\任务变量\主线名称.txt<$STR(N主线段数)><$STR(S$主线名称)>
核心错误:
1.MOV命令语法错误:<$STR(N主线段数)>是变量取值格式,不能作为变量名被赋值。MOV命令的目标变量名不能带格式符。正确写法是:
MOVN$主线段数1
2.GetListString参数格式错误:第二、三个参数必须是变量名本身,不能是<$STR(...)>格式。这是脚本执行失败、只能读第一行的根本原因。
三、正确脚本与常见用法
修正后的脚本:
#IF
CHECK[102]1
#ACT
MOVN$主线段数0
GetListString..\QuestDiary\二明专用\任务系统\任务变量\主线名称.txtN$主线段数S$主线名称
SENDMSG0读取的线段名称:<$STR(S$主线名称)>
循环读取文件所有行示例:
#ACT
MOVN$当前行0
WHILEN$当前行<3
GetListString..\QuestDiary\任务变量\主线名称.txtN$当前行S$临时内容
SENDMSG0第<$STR(N$当前行)>行:<$STR(S$临时内容)>
INCN$当前行1
ENDWHILE
四、文件格式与路径排查
文件主线名称.txt格式问题:
你的文件内容为:
被废弃的村庄1:皇族埋骨地一层1
被废弃的村庄1:皇族埋骨地一层2
被废弃的村庄1:皇族埋骨地一层3
这是正确格式。常见错误格式包括:
•文件编码不是ANSI(用记事本另存为ANSI编码)。
•文件名或路径含中文但引擎不支持(用全英文路径测试)。
•文件有BOM头(用Notepad++转UTF-8无BOM)。
路径检查技巧:
•先确认文件存在:..\QuestDiary\二明专用\任务系统\任务变量\主线名称.txt
•用绝对路径测试:GetListStringD:\MirServer\Mir200\QuestDiary\二明专用\任务系统\任务变量\主线名称.txtN$主线段数S$主线名称
•检查权限:确保引擎有读取该目录的权限。
五、不同引擎语法差异
GEE/GOM引擎:支持GetRandomText命令替代GetListString,语法不同。
LF/翎风引擎:GetListString行数参数从0开始,与HERO、BLUE引擎一致。
3K/KK引擎:老版本需用GETRANDOMLINETEXT命令,新版本支持GetListString。
通用兼容写法:
#ACT
VARIntegerHUMAN主线段数
LoadValueHUMAN主线段数
GetListString..\QuestDiary\文件.txtHUMAN主线段数
六、脚本调试与日志查看
修改脚本后,重启M2或重新加载QFunction脚本。在M2菜单查看→脚本日志中查看具体报错:
•若提示“文件不存在”,检查路径和文件名。
•若提示“变量类型错误”,确认参数是变量名。
•若提示“行数超出范围”,检查文件行数和行数变量值。
用以下调试脚本测试:
#IF
#ACT
MOVN$行数1
DECN$行数1
GetListString..\QuestDiary\测试.txtN$行数S$内容
SENDMSG0行数<$STR(N$行数)>的内容是:<$STR(S$内容)>
总结:GetListString命令的常见错误是参数使用了<$STR(...)>取值格式。正确做法是:第一参数为文件路径字符串,第二参数为数字型变量名,第三参数为字符串型变量名。修改脚本变量格式、确认文件编码、检查引擎兼容性即可解决读取问题。

