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

我调试HGE引擎AddTextList字符串写入时踩过的3个坑

M2GM2026-10-01HGE引擎3
摘要:本文复盘HGE引擎AddTextList、DelTextList、AddTextListEX三条文本文件命令的踩坑过程。列出格式行与参数表,对比追加写入、定位写入、按行删除的区别,讲清相对路径以Envir为基准、绝对路径写全磁盘路径的规则,搭一个申请名单NPC含加入与移除两段脚本,最后整理三类常见报错排查。…
[TOCM]

昨晚在本地服务端测试一个申请名单NPC,玩家点按钮要把名字写进txt文件,申请完再从名单里删掉。我用字符串增删这套命令写了半天,结果名字写进去了却删不掉,删完又重复写,名单越堆越长。

后来翻帮助文档才搞清楚,AddTextList、DelTextList、AddTextListEX三条命令的参数个数不一样,路径基准也有讲究。这篇把我踩过的坑和正确写法一起复盘出来,你照着配就不会再走弯路。这组文本文件操作命令本质上就是往txt名单里增删行,AddTextList写入、DelTextList删除各管一头。

字符串增删配图 - M2GM

命令格式详解

AddTextList的作用是把一行字符串追加写入指定文本文件,支持路径变量;DelTextList是从指定文本文件里删掉匹配的字符串;AddTextListEX则是把字符串写到文件的指定行,行数不足会自动补空行。三条命令都写在#ACT段里执行。

;增加字符串
[@Test]
#IF
#ACT
AddTextList 您的名字 .\TestList.txt

;删除字符串
[@Test]
#IF
#ACT
DelTextList 您的名字 .\TestList.txt

帮助文档特别标注:AddTextList第三参数不为空时,不检查字符串是否已存在,直接追加进文件。这个细节后面踩坑会讲到。

字符串增删内容示意图 - M2GM

参数拆解

三条命令参数个数不同,你配的时候一定要对着帮助文档的格式行一个一个数,少写一个参数后面的就全错位。

命令 参数内容 参数释义 实操用法
AddTextList 字符串 文件路径 是否检查重复 是否绝对路径 读取模式 追加写入一行文本 0检测重复1不检测;0相对路径1绝对路径
DelTextList 文本 文件路径 路径类型 指定行数 读取模式 删除匹配行 -1全删0只删第一个1到X指定行删
AddTextListEX 字符串 文件路径 指定行 是否绝对路径 读取模式 写到指定行 指定行范围0到65535,行数不足补空行
Force 读取模式参数 强制从文件重新加载 文件被外部改动后加Force刷新内存缓存

路径规则要单独记:只写文件名时,基准目录是D:\mirserver\Mir200\Envir\;写成..\QuestDiary\宗师系统\申请名单.txt时,实际路径就是Envir\QuestDiary\宗师系统\申请名单.txt。

三个命令的区别对比

新手最容易把AddTextList和AddTextListEX搞混。AddTextList是追加写入,每次执行往文件末尾加一行,不管写到第几行;AddTextListEX是定位写入,你指定写到第几行就写到第几行,行数不够自动补空行把位置顶出来。

DelTextList的指定行数参数是我踩坑最久的地方。填-1表示循环查找把所有匹配行全删掉,填0表示只删匹配到的第一行,填1到X之间的数字表示只删指定行号那一行。你想删干净就用-1,想保留一条就用0。

对比项 AddTextList AddTextListEX DelTextList
写入位置 文件末尾追加 指定行号定位 删除匹配行
重复检测 第三参数控制 无重复检测 按指定行数控制删除范围
典型用途 名单追加 固定行覆盖 名单移除

字符串增删配置示意图 - M2GM

写入删除实操配置

第一步,先在Envir目录下建好名单文件,比如TestList.txt,空文件也行,命令会自动创建。

第二步,写一个申请NPC段,玩家点申请按钮执行AddTextList把<$USERNAME>写进名单。

第三步,写一个取消申请段,执行DelTextList把同名删掉。

[@申请加入]
#IF
#ACT
AddTextList <$USERNAME> ..\QuestDiary\申请名单.txt 0 0
#SAY
你的名字已加入申请名单。\
〖<返回/@main>〗

[@取消申请]
#IF
#ACT
DelTextList <$USERNAME> ..\QuestDiary\申请名单.txt 0 -1
#SAY
已从申请名单移除。\
〖<返回/@main>〗

记住第三参数0是检测重复,同一名字不会重复写进去;DelTextList最后一个行数参数填-1,把所有匹配行一次删干净。配完在M2里重载NPC,进游戏点按钮验证。

常见报错排查

名字写进去了却删不掉是什么原因?

最常见是DelTextList的指定行数参数填成了0,0只删匹配到的第一行,如果名单里同一个名字重复出现过多次,就会剩下残留行。把最后一个行数参数改成-1循环全删,再检查文件路径和写入时用的路径是否完全一致,路径对不上删的就是另一个文件。(本条问题整理自百度知道真实提问:服务端脚本错误如何解决2024-12)

写入路径找不到文件怎么办?

只写文件名时基准目录是Envir,不是版本根目录。如果你把名单文件放在QuestDiary子目录下,路径必须写成..\QuestDiary\名单.txt这种相对路径,不能直接写QuestDiary\名单.txt。拿不准就用绝对路径,第四参数填1,把完整路径D:\mirserver\Mir200\Envir\QuestDiary\名单.txt写全。

改了脚本游戏里写入行为没变怎么排查?

脚本改动后NPC需要在M2控制台重新加载才生效。另外文本文件如果被你用记事本手动改过,引擎内存里还缓存着旧内容,这时在命令最后加Force参数强制从文件重新加载,就能读到最新内容。(本条问题整理自百度知道真实提问:服务端脚本改了游戏里面没变化2022-11)

常见问题

1. AddTextList第三参数0和1怎么选?

0表示写入前检测重复,名单里已有这个字符串就不重复追加,适合做申请名单、签到记录这种一人一条的场景;1表示不检测直接追加,适合做日志流水、抽奖记录这种允许重复的场景。拿不准就用0,能防止名单被刷爆。(本条问题整理自百度知道真实提问:机器人脚本为什么不运行2016-11)

2. AddTextListEX行数不足补空行是什么意思?

假设文件只有3行,你执行AddTextListEX往第10行写内容,引擎会自动在第4行到第9行补上空行,把第10行的位置顶出来再写入。这个特性适合做固定槽位的配置表,但要注意空行会占用行数,DelTextList删除时空行不会自动收缩。

3. 相对路径和绝对路径怎么区分填?

相对路径第三参数填0,路径以Envir目录为基准,写成.\TestList.txt就是Envir\TestList.txt;绝对路径第四参数填1,写完整磁盘路径D:\mirserver\Mir200\Envir\TestList.txt。版本要迁移换目录时用相对路径更省事,绝对路径写死了换盘就要全改。

4. DelTextList指定行数-1和0有什么区别?

-1是循环查找全删除,文件里所有匹配这个文本的行都会被清掉;0是只删除匹配到的第一行,后面相同文本的行保留。取消申请、退出名单这种要删干净的场景用-1;只想删最早一条记录的场景用0。

5. 写入的中文名字在txt里乱码怎么办?

文本文件编码要和引擎读取编码一致,建议用记事本另存为ANSI编码,不要存成UTF-8。中文Windows本地环境下ANSI编码就是GBK,引擎默认按这个编码读txt。存成UTF-8不带BOM时中文会显示成问号。

6. AddTextList和写Ini文件命令怎么选?

AddTextList按行追加纯文本名单,适合人名列表、签到记录这种一行一条的数据;Ini文件操作是按键值对读写配置项,适合存参数配置。名单类需求用AddTextList,参数配置类需求用Ini读写命令,两者不要混用。

写在最后

AddTextList负责追加写入、DelTextList负责按行删除、AddTextListEX负责定位写指定行,三条命令配合相对路径基准和重复检测参数,就能搭出申请名单、签到记录这类文本名单功能。关键是数清参数个数、记准路径基准、删除时用-1全删干净。

AddTextList与DelTextList名单增删相关案例已在本地HGE引擎环境逐项跑通;命令仅适配HGE引擎,部分其他引擎存在兼容可能性,跨引擎使用需要自行测试修改。字符串增删用于版本技术研究与功能测试,仅供单机本地学习调试。

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

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

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

本文链接:https://www.m2gm.com/tech/hge/addtextlist-deltextlist/

分享给朋友:

相关文章

SD插件SD_SetSkillCooltime命令修改技能冷却时间教程 - 技能CD参数设置与排错

SD插件SD_SetSkillCooltime命令修改技能冷却时间教程 - 技能CD参数设置与排错

本文系统梳理SD插件修改技能冷却命令的完整用法,区分临时脚本调整和技能数据库永久修改的适用边界,覆盖会员特权加速、攻城活动临时减CD、新手保护期跑图优化等常见业务场景,同时整理了新手最容易踩的参数填反、单位误解、技能名错配三类坑,给出对应排查和修复步骤。…

大秦插件删除键值命令怎么用 - 清理无用键值数据教程

大秦插件删除键值命令怎么用 - 清理无用键值数据教程

删除键值命令DQHashTableRemove后接标识字符串一个参数,执行后该标识记录从哈希库移除,再查找或读取均无返回;标识不区分大小写,拼错或多空格会删不到目标且不报错;常用于玩家下线清临时记录、活动结束清状态、手动清测试残留;删除不可逆,操作前用查找命令确认标识,删后复查。…

HGE引擎CreateDir命令用法详解 - 创建文件夹实现方法

HGE引擎CreateDir命令用法详解 - 创建文件夹实现方法

CreateDir是HGE引擎脚本运行时创建文件夹的命令,格式为CreateDir加文件夹名和路径类型两项参数。按官方文档列出格式实例,用表格拆解路径参数,复盘相对层级写错、路径类型不匹配、建目录不建文件等坑点,给出活动存档目录从触发段到重载验证的配置步骤,补充不生成目录、写入仍报路径不存在两类故障排查与六条问答。…