当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

HEROM2引擎脚本保存玩家姓名到指定TXT文本教程

热度:
HEROM2引擎中,将玩家姓名保存到指定TXT文本,核心是修正输入触发、文件路径及保存指令错误,原脚本存在输入类型不匹配、指令无效、路径不规范问题,以下是完整修正方案及原理说明。

一、原脚本核心错误解析

原脚本无法实现功能,根源在于三处关键错误,需先明确问题再针对性修改:

1.输入类型错误:玩家姓名为字符串,原脚本用“@@InPutInteger6”(整数输入),无法正确获取玩家姓名,需替换为字符串输入指令;2.保存指令无效:HEROM2无“SAVEVAR”保存文本指令,需用“WriteTextFile”专用指令写入TXT;3.路径与触发异常:未创建对应文件夹会导致写入失败,且输入后触发事件“[@InPutString5]”与输入指令不对应,逻辑断裂。

二、完整修正后脚本(直接复制可用)

修正后脚本适配HEROM2引擎,支持输入玩家姓名、验证玩家存在性、写入指定TXT,同时补充提示信息,优化操作体验:

[@控制面板]
{
尊敬的『<$USERNAME>』管理,欢迎使用后台管理系统。\
提示:请谨慎操作避免不必要的麻烦。\
当前服务器是『<$SERVERNAME>』\
当前人数『<$USERCOUNT>』\
选择你需要的服务器功能\
<封号管理/@封号管理>\
<退出系统/@exit>
}

[@封号管理]
{
说明:如玩家已获得一个封号请把之前的封号删除掉在添加!\\
<添加荣誉账号/@荣誉账号>\
------------------------\
<删除荣誉玩家/@荣誉玩家>\\
<返回/@控制面板>
}

[@荣誉账号]
{
#IF
#ACT
SendMsg6请输入玩家姓名(无需输入账号)!\
@@InPutString5//字符串输入,对应后续[@InPutString5]触发<返回/@封号管理>
}

[@InPutString5]//与输入指令@@InPutString5精准对应
#IF
CheckOnline<$STR(S5)>//验证玩家是否在线(可选,无则删除此条件)
CheckName<$STR(S5)>//验证玩家姓名是否存在(必选,避免无效写入)
#ACT
//写入TXT,路径用绝对路径更稳定,自动换行避免覆盖
WriteTextFileD:\Mirserver\Mir200\Envir\QuestDiary\荣誉名单\荣誉玩家.txt<$STR(S5)>1
SendMsg6操作成功!玩家【<$STR(S5)>】已添加至荣誉名单。
Goto@封号管理//自动返回封号管理界面
#ELSEACT
SendMsg6操作失败!玩家姓名不存在或输入错误。
Goto@荣誉账号//返回重新输入
}

[@荣誉玩家]
{
//此处可补充删除荣誉玩家的脚本,逻辑参考添加功能
SendMsg6暂未开启删除功能,敬请期待。
<返回/@封号管理>
}

[@exit]
#ACT
CloseDialog//关闭控制面板
SendMsg6已退出后台管理系统。

三、关键修改点及原理说明

1.输入指令修正:匹配字符串类型

将原脚本“@@InPutInteger6”改为“@@InPutString5”,前者仅支持输入数字(适合账号、数值),后者支持中英文字符串(适配玩家姓名)。HEROM2中字符串输入指令格式为“@@InPutStringX”(X为1-9),对应触发事件“[@InPutStringX]”,需确保两者编号一致(如本文均用5)。

2.保存指令替换:使用专用写入指令

HEROM2保存内容到TXT需用“WriteTextFile”指令,语法格式为:WriteTextFile文件绝对路径写入内容是否换行(1=换行,0=覆盖)。原脚本“SAVEVAR”为变量保存指令,无法写入文本文件,此指令是核心修正点。

3.路径规范:确保文件可正常写入

脚本中使用绝对路径“D:\Mirserver\Mir200\Envir\QuestDiary\荣誉名单\荣誉玩家.txt”,需提前手动在对应目录创建“荣誉名单”文件夹,否则会因路径不存在导致写入失败。避免使用相对路径(如..\),部分HEROM2版本对相对路径支持不稳定,易出现写入异常。

4.验证逻辑补充:避免无效写入

新增“CheckName<$STR(S5)>”指令,验证输入的玩家姓名是否在数据库中存在;可选添加“CheckOnline<$STR(S5)>”,仅允许写入在线玩家姓名。无验证逻辑时,输入错误姓名也会写入TXT,导致名单冗余,补充后更严谨。

5.交互优化:添加提示与跳转

新增“SendMsg6”系统提示,告知管理员操作结果(成功/失败原因);通过“Goto”指令实现自动跳转,无需手动返回,提升操作流畅度。原脚本无提示,管理员无法判断是否写入成功,此优化提升实用性。

四、脚本部署与测试步骤

1.部署前准备

第一步:手动创建文件夹,路径为“D:\Mirserver\Mir200\Envir\QuestDiary\荣誉名单”;第二步:将修正后的脚本复制到“Mir200\Envir\QuestDiary\”目录下的QFunction-0.txt文件(或单独创建专属脚本文件,确保被M2加载);第三步:备份原脚本文件,避免覆盖原有功能。

2.测试验证

启动M2引擎及服务端,登录管理员账号,触发“@控制面板”进入界面,依次点击“封号管理→添加荣誉账号”,输入存在的玩家姓名,若收到“操作成功”提示,打开荣誉玩家.txt文件,能看到对应玩家姓名(每行一个),说明脚本生效。输入不存在的姓名,会收到失败提示,无内容写入TXT。

五、常见问题处置

1.输入姓名后无反应

原因:输入指令与触发事件编号不匹配(如用@@InPutString5却写[@InPutString6]),或脚本格式错误(括号、换行不规范)。解决:核对输入指令与触发事件编号一致,用记事本打开脚本,确保语法格式与修正版一致,无多余空格或符号。

2.提示成功但TXT无内容

原因:未创建“荣誉名单”文件夹,或路径填写错误(如盘符、文件夹名称拼写错误)。解决:按脚本路径手动创建文件夹,逐字核对路径是否正确,确保与服务端安装路径一致(如服务端在E盘,需将D:改为E:)。

3.写入内容乱码

原因:脚本文件编码格式错误,HEROM2仅支持ANSI编码。解决:用记事本打开脚本文件,点击“文件→另存为”,编码选择ANSI,覆盖原文件,重启M2后测试。

4.验证逻辑失效(不存在的姓名也能写入)

原因:HEROM2版本不支持“CheckName”指令,或指令拼写错误。解决:替换为“CheckPlayer<$STR(S5)>”指令(部分旧版本兼容此指令),或删除验证条件,仅保留写入逻辑。

六、拓展功能(可选)

1.添加时间戳:记录写入时间

修改写入指令为:WriteTextFile路径<$STR(S5)>-写入时间:<$DATE><$TIME>1,可在TXT中同步记录玩家姓名及添加时间,便于追溯操作记录(<$DATE>为日期,<$TIME>为时间)。

2.去重写入:避免重复添加

新增去重逻辑,在#IF条件中添加“CheckTextFile路径<$STR(S5)>”,验证TXT中是否已存在该玩家姓名,不存在才执行写入操作,避免同一玩家多次添加导致名单重复。

3.删除功能补充

在[@荣誉玩家]节点添加删除脚本,用“DelLineTextFile路径<$STR(S5)>”指令,删除TXT中对应玩家姓名的行,实现添加、删除双向管理,完善荣誉名单功能。

七、补充说明

脚本仅适用于HEROM2引擎,其他引擎(如GOM、GEE)指令不同,需对应调整。操作前务必重启M2引擎,确保脚本被正常加载;TXT文件支持手动打开编辑,若需批量管理荣誉玩家,可直接修改文本内容。所有修改需在服务端关闭状态下进行,避免脚本加载异常,同时定期备份荣誉玩家.txt,防止数据丢失。
[顶部]