本文针对传奇服务端中M2全局S变量、G变量的文本保存需求,以及双击物品触发输入框并将输入内容存入文本的场景,提供完整自动保存脚本及操作步骤,直接适配主流传奇服务端架构,复制即可使用。
一、核心需求拆解
1. 实现双击指定物品触发输入框,玩家输入信息存入@@InPutString100变量;2. 将@@InPutString100变量值提取并自动保存到指定文本文件;3. 兼容M2全局S变量、G变量的通用保存逻辑,支持批量变量存储。
二、双击物品触发输入框脚本
首先配置物品触发脚本,通过物品DB文件关联脚本命令,实现双击后调用输入框并赋值变量。
1. 物品DB配置修改
找到目标物品的DB记录(通常位于D:\MirServer\Mir200\Envir\Items.DB),修改“触发脚本”字段为“QFunction-01.txt|OnDoubleClick_InputItem”,确保物品可触发自定义脚本。
2. 触发脚本编写(QFunction-01.txt)
在QFunction-01.txt中添加以下脚本,实现双击弹出输入框并将内容存入@@InPutString100:
//双击触发输入框脚本
function OnDoubleClick_InputItem()
//判断是否为玩家触发
if not IsPlayer() then return end
//弹出输入框,提示文字可自定义
InputBox("请输入需要保存的信息:", 100)
//输入完成后,内容自动存入@@InPutString100变量
//此处可添加输入非空判断
if @@InPutString100 == "" then
SendMsg2Player("输入内容不能为空!")
return
end
SendMsg2Player("输入成功,内容将自动保存:"..@@InPutString100)
//调用保存变量到文本的函数
SaveInputToTxt()
end
三、M2全局变量文本保存脚本(核心部分)
编写变量保存函数,支持将@@InPutString100及其他S/G全局变量写入文本,实现自动保存。脚本仍写入QFunction-01.txt,与上述触发脚本关联。
1. 保存函数编写
//变量保存到文本函数
function SaveInputToTxt()
//定义文本保存路径,可自定义(建议放在Envir目录下,方便管理)
local txtPath = "D:\\MirServer\\Mir200\\Envir\\InputSave.txt"
//定义保存内容,可添加时间戳、玩家信息、其他全局变量
local saveContent = "玩家名称:"..GetPlayerName().."|输入内容:"..@@InPutString100.."|S变量示例:"..@@S100.."|G变量示例:"..@@G200.."\r\n"
//打开文本文件,以追加模式写入(不覆盖原有内容)
local file = io.open(txtPath, "a+")
if file then
file:write(saveContent)
file:close()
SendMsg2Player("信息已成功保存到文本文件!")
else
SendMsg2Player("文本文件打开失败,请检查路径是否正确!")
end
end
2. 全局S/G变量保存扩展
若需保存多个M2全局S变量、G变量,只需在saveContent中添加对应变量即可,格式为“变量说明:"..@@变量名。示例:
local saveContent = "玩家:"..GetPlayerName().."|输入内容:"..@@InPutString100.."|全局S变量1:"..@@S001.."|全局G变量2:"..@@G002.."|触发时间:"..os.date("%Y-%m-%d %H:%M:%S").."\r\n"
四、自动保存配置(可选)
若需定时自动保存全局变量(无需玩家触发),可添加定时脚本,通过M2的定时任务调用保存函数。
1. 定时脚本编写(QFunction-01.txt)
//定时保存全局变量脚本
function AutoSaveGlobalVars()
local txtPath = "D:\\MirServer\\Mir200\\Envir\\GlobalVarsSave.txt"
local saveContent = "定时保存|S变量合集:"..@@S001..","..@@S002.."|G变量合集:"..@@G001..","..@@G002.."|时间:"..os.date("%Y-%m-%d %H:%M:%S").."\r\n"
local file = io.open(txtPath, "a+")
if file then
file:write(saveContent)
file:close()
print("全局变量定时保存成功")
end
end
2. M2定时任务配置
打开M2服务器控制台,依次点击“选项”-“定时任务”-“添加”,设置任务名称(如“全局变量自动保存”),执行间隔(如3600秒,即1小时),执行命令为“CallFunction AutoSaveGlobalVars”,点击确定即可生效。
五、脚本使用注意事项
1. 文本保存路径需使用双反斜杠“\\”,确保服务端有权限写入(建议放在Envir目录下,默认具备写入权限);2. 输入框编号100需与变量@@InPutString100对应,若使用其他编号(如101),变量需改为@@InPutString101;3. 批量保存变量时,避免变量名重复,建议对S/G变量进行分类编号管理;4. 脚本编写完成后,需重启M2服务器或通过M2控制台“脚本”-“重新加载脚本”使配置生效;5. 若玩家输入特殊字符,文本可能出现乱码,可在输入后添加字符过滤脚本,限制输入字符类型。
六、常见问题排查
1. 双击物品无反应:检查物品DB的“触发脚本”字段是否正确,QFunction-01.txt是否存在该脚本函数,脚本是否存在语法错误(如缺少end、引号不匹配);2. 变量无法存入文本:检查保存路径是否正确,服务端文件夹是否设置为“只读”,去除只读属性即可;3. 输入内容为空仍保存:需在触发脚本中添加非空判断,参考第二步中的脚本示例;4. 定时保存不生效:检查M2定时任务的执行命令是否正确,间隔时间是否设置合理,确保定时任务已启用。
通过以上脚本配置,可实现双击物品触发输入框、变量赋值及自动保存到文本的完整需求,同时支持M2全局S/G变量的灵活扩展保存,适配多数传奇服务端版本,无需修改核心程序,直接通过脚本即可实现功能。
传奇服务端M2全局S/G变量文本保存方法 双击物品触发输入框脚本
来源:
作者:
点击:

