传奇脚本如何将玩家名写入指定TXT文本文件

来源: 作者: 点击:
在HEROM2引擎中,通过脚本将玩家名字保存到指定的TXT文本,需正确使用输入指令、变量判断与文件写入命令。原脚本存在多处逻辑和语法问题,包括输入类型错误、变量引用不当、路径格式不规范等。

首先,获取玩家姓名应使用字符串输入指令,而非整数。原脚本中“@@InPutInteger6”用于输入数字,但玩家名称为字符串,必须改为“@@InPutString5”或“@@InPutString6”等字符串输入标签。同时,调用输入框的链接应指向正确的输入标签,如“”。

其次,“CheckRecall ”命令用途是检查玩家是否在线,但此处意图是验证输入是否为空或是否为有效角色名。更合适的做法是先判断S5是否为空。可使用“#IF EQUAL S5”配合空值检测,避免写入无效内容。

再者,“SAVEVAR ..QuestDiary荣誉名单荣誉玩家.txt”语法错误。SAVEVAR用于保存变量到INI格式文件,且参数顺序为:SAVEVAR 变量名 文件路径 [节名]。若仅需将名字追加到纯文本文件,应使用“WRITEFILE”命令。

正确写法如下:

[@荣誉账号]
ACT
SENDMSG 7 请输入玩家角色名!
OPENMERCHANTBIGDLG 0 0 @@InPutString5

[@InPutString5]
IF
EQUAL S5
ACT
SENDMSG 7 输入不能为空,请重新输入!
GOTO @荣誉账号
break

IF
CHECKNAME
ACT
WRITEFILE ..QuestDiary荣誉名单荣誉玩家.txt
SENDMSG 7 玩家 已成功加入荣誉名单!
GOTO @封号管理
ELSEACT
SENDMSG 7 角色名 不存在,请确认后重试!

其中,CHECKNAME用于验证该角色名是否存在于数据库中,防止写入无效名称。WRITEFILE命令会将内容追加到指定TXT末尾,每执行一次写入一行。确保“荣誉名单”文件夹已手动创建,否则写入失败。

路径中的“..QuestDiary”为相对路径,指向服务端根目录下的QuestDiary文件夹。若路径含中文,需确认系统编码支持,建议使用英文路径避免异常。

最终完整修正片段如下:

[@荣誉账号]
ACT
SENDMSG 7 请输入玩家角色名!
OPENMERCHANTBIGDLG 0 0 @@InPutString5

[@InPutString5]
IF
EQUAL S5
ACT
SENDMSG 7 输入内容为空!
GOTO @荣誉账号
break

IF
CHECKNAME
ACT
WRITEFILE ..QuestDiaryHonourListHonourPlayers.txt
SENDMSG 7 已记录至荣誉名单。
GOTO @封号管理
ELSEACT
SENDMSG 7 角色 不存在。

注意:文件路径建议使用英文,避免因编码问题导致写入失败;每次写入前验证角色存在性可保证数据有效性;WRITEFILE默认追加模式,无需额外设置。