当前位置:首页 > M2插件 > SD插件 > 正文内容

SD插件SDGetStringPosEX检测字符串在列表中行数指南

M2GM2026-11-04SD插件4
摘要:SD插件检测字符串在列表中的行数用SDGetStringPosEX命令实现,本文逐参数讲解七个参数含义、配置步骤、高频误操作与热点问答。命令把命中行的行数写入数字变量、整行内容写入字符变量,配合匹配模式与查找方向可应对模糊查找、精确匹配和重复记录,适合排行榜反查、玩家名单核对类脚本场景。…
[TOCM]

之前做一个土城NPC战力榜玩法,要从玩家数据文本里按名字捞出他所在的那一整行,自己写变量逐行比对,玩家一多就卡。后来翻SD插件帮助文档才找到现成的检测字符串在列表中的行数命令SDGetStringPosEX,一行七个参数直接把行数和行内容都吐出来,省事很多。这篇把这3个最容易填错的参数讲清楚,写文本定位脚本时照着对就行。

检测字符串在列表中的行数解决的是”给定一个字符,去指定文本里找它在第几行、那一行写了什么”这件事,不用自己循环读文件,返回值直接落到数字变量和字符变量里。跟逐行比对相比,它把读取、定位、取值三步合成一个命令,写排行榜、查玩家记录这类玩法时特别顺手。

检测字符串在列表中的行数配图 - M2GM

命令格式

SDGetStringPosEX的完整格式一行写全七个参数,文件路径后面跟着检测字符和两个接收变量:

SDGetStringPosEX ..\QuestDiary\测试.txt GM一号 N1 S1 0

条件段配提示语的完整写法如下:

[@MAIN]
#IF
SDGetStringPosEX ..\QuestDiary\测试.txt GM一号 N1 S1 0
#ACT
SendMsg 5 字符在文本中的行数:<$STR(N1)>,本行所有内容是:<$STR(S1)>。
#ELSEACT
SendMsg 5 字符不在测试.txt文本中。

检测到字符时条件成立,引擎把命中行的行号写进第三个参数指定的数字变量,把整行内容写进第四个参数指定的字符变量;没找到就走#ELSEACT分支。这段可以挂在NPC对话段、机器人定时检测里,用SendMsg把结果显示出来。

参数速查

参数 说明
参数1文件路径 要检索的文本文件路径,配合参数5决定按相对还是绝对路径读取
参数2检测字符 要查找的内容,支持变量、大小写字母、数字
参数3返回行数 数字型变量,如N1,返回检测字符所在行数,可换成其它数字型变量
参数4返回行内容 字符型变量,如S1,返回命中行的整行内容,可换成其它字符型变量
参数5路径模式 0为相对路径,1为绝对路径,两种模式任选
参数6匹配模式 0或空为包含匹配,1为完全匹配
参数7查找方向 0从上往下数,1从下往上数

七个参数里最容易混的是参数3和参数4:N变量接的是行数,S变量接的是那一行的完整文本,别把两个变量填反。参数6默认不填就是包含匹配,只要那一行里含有你给的字符就算命中;想精确匹配整行内容再把它设成1。做字符串行数检测和文本列表定位时,这两个接收变量先分清楚,后面拆字段才不会错位。

配置步骤

第一步,先在QuestDiary目录下建好要检索的文本文件,每行一条记录,确认文件编码和引擎读取编码一致,避免中文乱码导致匹配不上。

第二步,在#IF条件段写入SDGetStringPosEX,按顺序填好文件路径、检测字符,再指定一个数字变量接行数、一个字符变量接行内容。

第三步,在#ACT段用SendMsg把<$STR(N1)>和<$STR(S1)>显示出来,进游戏测一次,确认返回的行数和行内容跟文本里实际对得上,再接后续发奖或跳转逻辑。

高频误操作

  • 把参数4当成返回行数:实际第三个参数N变量才接行数,第四个参数S变量接整行内容,填反了取出来的内容全错。
  • 包含匹配和完全匹配用反:参数6填0或空时只要行里含这个字符就命中,模糊查找够用;要做”整行完全相等”判断必须把参数6设成1。
  • 路径模式和文件实际位置对不上:参数5设0是相对路径,相对的是M2根目录,写1才按绝对路径读,路径前缀写错会读不到文件。
  • 同一字符在多行重复出现:这时候用参数7控制取哪一条,0从上往下数取第一条命中,1从下往上数,排行榜倒序读取就靠这个方向。

热点问答

1. 问:做自定义变量排行榜时,怎么从玩家数据列表里定位某个人所在行?

答:排行榜一般把玩家名字和数值按行写进一个文本文件,要查某人就用SDGetStringPosEX拿他的名字当检测字符,行数落到N变量、整行落到S变量,再把这一行的数值拆出来做展示。先把排序后的名单写进列表文件,再按名字反查行位置,比自己逐行读文件稳。(来源:看云,2026-06检索,已去隐私)

2. 问:排行榜面板要按自定义变量排序,列表文件怎么和脚本对应上?

答:先把玩家名字和对应数值按行写进同一个文本,每行一条;脚本端用SDGetStringPosEX按名字定位到那一行,S变量拿到整行后再按分隔符拆出数值。面板端按行号读,脚本端按名字反查行号,两边靠同一个文本文件对齐,排序规则在写文件那一步确定。(来源:天天脚本库,2026-08检索,已去隐私)

3. 问:用SDGetStringPosEX读出来的行数和内容是空的怎么办?

答:读空先查三点:一是检测字符跟文本里的实际内容是否完全一致,名字打错或多了空格就匹配不到;二是确认文本文件确实存在于参数1写的路径下,编码对得上;三是检查参数3、参数4指定的变量没被别的脚本占用覆盖。目标玩家不在线不影响这个命令,它读的是文件不是在线人物。(来源:天天脚本库,2024-08检索,已去隐私)

4. 问:SDGetStringPosEX适合用在哪些玩法场景里?

答:凡是”按一个关键字去文本里反查那一行”的场景都能用,比如玩家战力榜按名字查记录、充值名单核对、活动兑换码校验、家族花名册查询。把结构化数据按行写进QuestDiary下的txt,再用这个命令定位,比维护一堆独立变量清晰得多。

5. 问:检测命令写在#ACT段里为什么不生效?

答:SDGetStringPosEX是条件检测命令,只能放在#IF条件段做判断,写进#ACT动作段不会执行定位逻辑。正确做法是把命令连同参数写在#IF下,命中后在#ACT里再用<$STR()>把取到的行数和内容显示或做后续处理。

6. 问:要找的字符在文本里出现多次,命令取的是哪一行?

答:由参数7查找方向决定。填0时从上往下数,取第一次命中的那一行;填1时从下往上数。如果配合参数6做完全匹配、且文本里每条记录唯一,方向其实不影响结果;只有同一字符重复出现时,方向参数才决定取上面那条还是下面那条。

小结

检测字符串在列表中的行数用SDGetStringPosEX一条命令完成文本定位,行数走N变量、整行内容走S变量,配合参数6匹配模式和参数7方向就能应对模糊查找、精确定位、重复记录倒序取这几类需求。写排行榜、查玩家记录类脚本时,先把数据按行规整进文本,再用这个命令反查,比手动循环比对省事也更稳。

SDGetStringPosEX的七个参数按帮助文档逐条核对并在本地跑过,行数与内容返回与文档一致,仅适配SD插件,其他引擎需自行验证。

内容来源可溯:SD插件帮助文档(检测字符串在列表中的行数)。

扫描二维码推送至手机访问。

本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。

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

本文链接:https://www.m2gm.com/plug/sd/sd-getstringposex/

分享给朋友:

相关文章

文件列表读取脚本教程 - GOM引擎装备读取实现

文件列表读取脚本教程 - GOM引擎装备读取实现

本文讲解GOM引擎IncFileList命令的完整用法,包括命令格式、装备位置参数、保存变量与文件路径的对应关系,并给出切割装备列表的配置实操、三阶实战案例、常见坑点与常见问题排查思路。通过文本文件逐行匹配装备名并累加数值,实现本地调试时装备数据的快速汇总,全文内容仅供单机本地学习调试。…

BLUE引擎将变量写入文本命令 - 文本存档配置脚本教程

BLUE引擎将变量写入文本命令 - 文本存档配置脚本教程

将变量写入文本命令是BLUE引擎把脚本变量按行写入文本文件的命令,命令名ADDLINELIST,配合DELLINELIST与CLEARNAMELIST完成写入、删除与清空。本文按官方帮助文档整理命令格式与参数说明,给出从单条写入到文件存档的三阶案例与NPC脚本配置步骤,并梳理路径前缀与HardDisk写盘等坑点。…

SD插件如何判断字符串类型 - SDCheckCharType脚本命令详解

SD插件如何判断字符串类型 - SDCheckCharType脚本命令详解

SD插件判断字符串类型用SDCheckCharType命令实现,涵盖命令格式拆解、参数对照、实操示例与易错点。参数1取0到5六种判断口径,分别对应汉字字母数字混合、纯汉字、纯字母、纯小写、纯大写、纯数字,参数2填待检测文本,配合#SAY与#ELSESAY分支即可完成注册改名类输入校验,建议放在#IF条件段使用。…

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

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

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

HGE引擎DelGuildList删除列表行会名详解 - 帮会名单清理方法

HGE引擎DelGuildList删除列表行会名详解 - 帮会名单清理方法

HGE引擎的DelGuildList命令按文本路径删除行会名单文件中的行会名,带是否绝对路径和Force读取模式两个参数。本文按帮助文档原文拆解三参数含义、说明Force每次重读硬盘的行为,给出清理配置步骤并与DelNameList等名单命令对比,用常见问题解答改文件不生效、路径写法和效率选择等疑问。…

HGE引擎如何分割字符串 - ExtractString命令用法详解

HGE引擎如何分割字符串 - ExtractString命令用法详解

HGE引擎的ExtractString命令可以把字符串按分隔符拆成多段存入字符变量,ExtractStringEx还能同时输出整型统计变量,是脚本里处理坐标串、名单、键值数据的基础工具。本文按帮助文档原文拆解两条命令的格式与参数,给出分割实操步骤、常见报错修复和FAQ,适合传奇脚本维护者直接查阅使用。…

996引擎如何检测本月的天数 - DAYOFMONTH日期判断命令详解

996引擎如何检测本月的天数 - DAYOFMONTH日期判断命令详解

996引擎检测本月的天数用DAYOFMONTH命令实现,本文讲解格式说明、参数详解、配置步骤、案例进阶与FAQ。DAYOFMONTH接起止两个天数,第二个参数可省略,落在区间内条件即成立,适合本月前几天、月末签到类日期活动,在登录或NPC对话触发里按日期发对应提示。…

996引擎检测字符串长度命令CheckStringlength用法配置教程

996引擎检测字符串长度命令CheckStringlength用法配置教程

996引擎检测字符串长度用CheckStringlength命令实现,本文讲解格式拆解、参数速查、配置方法、案例实践与FAQ。CheckStringlength接字符串、操作符与位数,按一个汉字两位计数、特殊符号也占两位的规则判断,适合在线改名、名称合法性校验类脚本使用,长度不合法时接#ELSESAY提示玩家重输。…