一、核心需求拆解:变量存储与文本保存逻辑
本次实现核心为“双击物品→弹出输入框→玩家输入信息存入@@InPutString100变量→变量值自动写入文本文件”,全程通过M2脚本触发,无需手动操作数据库或文件。其中@@InPutString100为M2全局输入变量,支持存储玩家输入的字符串信息,需通过脚本调用该变量值,再借助文件写入命令保存到指定文本,同时兼容S变量(私人字符型变量)、G变量(全局变量)的保存需求,适配多数传奇服务端版本。
文本文件默认保存至服务端指定目录,便于后续查阅与管理,脚本中可自定义文件路径、名称及保存格式(含玩家角色名、输入内容、触发时间等信息),避免数据混乱。操作前需确保服务端M2引擎支持文件写入命令(如WriteFile、WriteText等),无该命令可升级M2引擎至对应版本,或通过第三方插件补充功能,确保脚本正常执行。
二、完整自动保存脚本(可直接复制使用)
1. 双击物品触发输入框脚本
脚本功能:玩家双击指定物品(如“信息录入器”),弹出输入框,输入内容自动存入@@InPutString100变量,同时触发后续文本保存操作。需将脚本放入服务端“QuestDiary”文件夹,命名为“InputSave.txt”(后缀为.txt,避免格式错误)。
; 双击物品触发输入框(物品ID需替换为实际物品ID)
(@DoubleClickItem 1001) ; 1001为触发物品ID,可替换为任意物品ID
#act
; 弹出输入框,提示玩家输入信息
SendMsg 6 请输入需保存的信息(最长50字符):
; 调用输入框,输入内容存入@@InPutString100变量
InputString 100 50 ; 100对应@@InPutString100,50为最大输入字符数
; 触发变量保存到文本的子程序
GotoSub SaveToText
; 提示玩家信息保存成功
SendMsg 6 信息已成功保存至文本文件!
; 变量保存到文本子程序
(@SaveToText)
#act
; 定义文本保存路径(可自定义,需确保路径存在)
SetStr S1 D:\MirServer\Log\PlayerInput.txt ; S1为临时变量,存储文本路径
; 读取玩家角色名,存入S2变量
GetCharName S2
; 获取当前时间,存入S3变量(格式:时:分:秒)
GetTime S3
; 拼接保存内容(格式:角色名 时间 输入信息)
SetStr S4 <$S2> - <$S3> - 输入内容:<$@@InPutString100>
; 写入文本文件(追加模式,避免覆盖原有内容)
WriteFile <$S1> <$S4> 1 ; 1为追加模式,0为覆盖模式
; 清空变量,避免残留数据
ClearVar @@InPutString100
ClearVar S1 S2 S3 S4
Return
2. S变量/G变量保存到文本脚本(拓展功能)
若需保存M2全局S变量(私人字符型变量)或G变量(全局变量),可在上述脚本基础上添加以下子程序,支持批量保存变量值到文本。
; S变量/G变量保存到文本子程序(可单独调用)
(@SaveVarToText)
#act
; 定义变量保存路径
SetStr S1 D:\MirServer\Log\VarSave.txt
; 读取S变量(如S0)和G变量(如G1)的值
GetVar S0 S2 ; 读取S0变量值存入S2
GetVar G1 S3 ; 读取G1变量值存入S3
; 获取当前时间和角色名
GetCharName S4
GetTime S5
; 拼接保存内容
SetStr S6 <$S4> - <$S5> - S0变量值:<$S2> - G1变量值:<$S3>
; 追加写入文本
WriteFile <$S1> <$S6> 1
; 提示保存成功
SendMsg 6 S/G变量值已保存至文本!
ClearVar S1 S2 S3 S4 S5 S6
Return
三、脚本配置与执行步骤(新手必看)
1. 基础配置操作
第一步:替换物品ID。脚本中“1001”为触发物品ID,需在DBC2000中找到目标物品,查看其“物品ID”并替换,确保双击对应物品可触发输入框。第二步:修改文本保存路径。脚本中“D:\MirServer\Log\PlayerInput.txt”为默认路径,需确认服务端存在“Log”文件夹,无则手动创建;可自定义路径(如E:\Save\InputLog.txt),但需避免含特殊字符(如空格、中文符号)。
第三步:开启M2脚本功能。打开M2引擎,依次点击“选项→功能设置→脚本功能”,勾选“启用自定义脚本”“启用文件写入命令”,点击保存并重启M2引擎,使配置生效。第四步:测试脚本。登录游戏,获取触发物品(可通过GM命令“@give 角色名 1001 1”发放),双击物品弹出输入框,输入内容后点击确认,查看指定路径下是否生成文本文件,验证内容是否保存成功。
2. 常见参数调整说明
输入字符限制:脚本中“InputString 100 50”的“50”为最大输入字符数,可调整为100、200等,根据需求设置,避免输入内容过长导致保存失败。保存模式:“WriteFile”命令中“1”为追加模式(新内容添加到文件末尾),“0”为覆盖模式(新内容替换原有内容),按需切换。
变量替换:若需保存其他输入变量(如@@InPutString101),只需将脚本中“100”改为对应数字(如101),同时调整“InputString”命令的第一个参数即可。多物品触发:可复制“@DoubleClickItem”段落,修改物品ID,实现多个物品触发同一输入保存功能。
四、避错要点:避免脚本执行失败的核心注意事项
1. 路径与文件夹问题:文本保存路径必须存在,无对应文件夹需手动创建;路径中不可含空格、中文符号(如全角逗号、句号),建议使用英文路径或纯数字路径,避免文件写入失败。
2. M2命令权限:部分服务端M2引擎默认关闭文件写入权限,需在M2“命令权限”中勾选“WriteFile”“SetStr”等命令,允许脚本调用,否则会提示“命令无权限”。
3. 变量清空与残留:脚本结尾需添加“ClearVar”命令清空临时变量,避免变量残留导致下次保存内容错乱;@@InPutString100变量需在保存后清空,防止后续触发时读取旧数据。
4. 编码格式:脚本文件需保存为ANSI编码,用记事本打开脚本,依次点击“文件→另存为”,编码选择“ANSI”,避免因编码错误导致脚本乱码、无法执行。
5. 版本兼容性:若脚本执行无响应,可能是服务端版本不兼容,可尝试将“WriteFile”命令替换为“WriteText”(部分版本支持该命令),或升级M2引擎至最新稳定版本。
五、文本文件管理与内容查看
保存后的文本文件可直接用记事本、Notepad++等工具打开,内容按“角色名-时间-输入信息”格式排列,便于快速查阅。建议定期备份文本文件,避免因服务端清理日志导致数据丢失;可通过脚本添加“自动备份”功能,如每日固定时间将文本文件复制到备份目录,具体脚本如下:
; 文本自动备份脚本(每日0点执行)
(@Timer 00:00:00)
#act
; 原文件路径
SetStr S1 D:\MirServer\Log\PlayerInput.txt
; 备份文件路径(添加日期标识)
SetStr S2 D:\MirServer\Log\Backup\PlayerInput_<$Date>.txt
; 复制文件实现备份
CopyFile <$S1> <$S2>
SendMsg 6 输入信息文本已自动备份完成!
若需批量导出或编辑文本内容,可将文件导入Excel,按角色名、时间等字段拆分数据,方便后续统计与管理。同时禁止删除文本文件中的内容,如需清理旧数据,可手动删除或通过脚本设置“保留最近30天数据”功能,避免误删重要信息。

