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

传奇世界限时双倍勋章设置教程:30 分钟消失 + 小退计时保存脚本制作

热度:
想制作 “佩戴即计时、30 分钟后自动消失、小退大退计时不中断、小退时提示剩余时间” 的双倍勋章?核心需通过装备属性配置 + 脚本控制实现,不同服务端引擎(如 GOM、GEE)操作逻辑一致,本文结合实测步骤,详解从勋章创建到脚本编写的全流程,新手也能快速完成设置。
一、前提准备:确认服务端适配与文件路径
引擎适配:确保你的传奇世界服务端支持 “事件脚本”(如 GOM、GEE、BLUE 引擎,主流单机版均支持),若为其他引擎,需先确认是否有Wear(佩戴)、Timer(定时)、Save/Load(存档/读档)事件;
核心文件路径:
装备数据库:Mirserver\DBServer\FDB\Item.DB(用于配置双倍勋章基础属性);
脚本存放目录:Mirserver\Mir200\Envir\QuestDiary(所有自定义脚本需放在此文件夹,后缀为.txt);
引擎配置:打开Mirserver\Mir200\M2server.exe(游戏核心控制器),提前开启 “脚本定时器”(在 “选项→功能设置→脚本设置” 中勾选 “启用全局定时器”)。
二、第一步:配置双倍勋章基础属性(装备数据库修改)
先在装备库中创建 “双倍勋章”,并添加双倍属性,步骤如下:
打开装备数据库:启动 DBC2000,连接HeroDB数据库,双击打开Item.DB(装备属性表);
新增双倍勋章:
找到空白行,在Name字段填入 “双倍勋章”,Ident字段填唯一编号(如 10086,避免与其他装备重复);
StdMode字段填 “15”(勋章装备类型,不同引擎可能为 “16”,可参考其他勋章值),Shape字段填 “0”(外观编号,按喜好选择);
双倍属性添加:在AC(防御)、MAC(魔防)等基础属性栏按需填写,关键是在Special(特殊属性)字段填 “2”(代表 “双倍经验”,部分引擎为 “ExpDouble=1”,需参考服务端SpecialItem.txt说明);
自定义限时标识:在Remark(备注)字段填 “DoubleMedal=1”(用于脚本识别该装备为限时双倍勋章,避免误判其他装备);
保存数据库:按Ctrl+S保存,关闭 DBC2000(后续修改脚本时无需重启数据库)。
三、第二步:核心脚本制作(3 大关键功能实现)
需编写 3 个关联脚本,分别实现 “佩戴计时启动”“30 分钟自动消失”“小退计时保存与提示”,脚本代码可合并为 1 个文件(命名为 “双倍勋章限时脚本.txt”),放在QuestDiary目录下。
(一)脚本 1:佩戴勋章触发计时(Wear 事件)
功能:玩家佩戴双倍勋章时,记录开始时间,启动 30 分钟倒计时。
#EVENT Wear 10086 // 触发条件:佩戴Ident=10086的双倍勋章
#ACT
// 记录佩戴开始时间(变量格式:年-月-日 时:分:秒,单机版无需年份,用“时:分:秒”即可)
SetRoleVar MedalStartTime %Time% // 将当前时间存入角色变量MedalStartTime
// 启动1分钟定时器(每1分钟检查1次剩余时间,避免定时器过密占用资源)
StartTimer DoubleMedalCheck 60 // DoubleMedalCheck为定时器名称,60为间隔秒数
SENDMSG 5 你佩戴了双倍勋章,30分钟后将自动消失! // 游戏内提示

(二)脚本 2:定时检查与 30 分钟消失(Timer 事件)
功能:每 1 分钟检查剩余时间,倒计时结束后删除勋章。
#EVENT Timer DoubleMedalCheck // 触发条件:定时器DoubleMedalCheck生效
#ACT
// 1. 获取当前时间与佩戴开始时间,计算已过去分钟数
GetRoleVar MedalStartTime S // 读取角色变量中的佩戴时间
SetVar NowTime %Time% // 获取当前时间
// 计算时间差(格式:时:分:秒,转换为总分钟数)
Call TimeDiff %MedalStartTime% %NowTime% PassedMinutes // TimeDiff为引擎自带时间差函数,PassedMinutes为已过分钟数变量
// 2. 判断是否超过30分钟
If %PassedMinutes% >= 30
// 超过30分钟,删除双倍勋章
TakeItem 双倍勋章 1 // 从背包/装备栏移除1个双倍勋章
StopTimer DoubleMedalCheck // 停止定时器
SENDMSG 5 双倍勋章已到期,自动消失! // 提示玩家
ClearRoleVar MedalStartTime // 清空时间变量,避免残留
EndIf

(三)脚本 3:小退保存计时 + 上线提示剩余时间(Save/Load 事件)
功能:玩家小退 / 大退时保存剩余时间,重新上线时提示剩余时长;小退瞬间弹出剩余时间提示。
// 子脚本1:小退时保存计时(Save事件,角色退出时触发)
#EVENT Save
#ACT
// 检查玩家是否佩戴双倍勋章,若佩戴则计算剩余时间并保存
CheckItem 双倍勋章 1
If TRUE
GetRoleVar MedalStartTime S
SetVar NowTime %Time%
Call TimeDiff %MedalStartTime% %NowTime% PassedMinutes
SetVar RemainMinutes 30 - %PassedMinutes% // 计算剩余分钟数
If %RemainMinutes% > 0
SetRoleVar MedalRemain %RemainMinutes% // 保存剩余时间到角色变量
SENDMSG 5 双倍勋章剩余时间:%RemainMinutes%分钟,重新上线后计时继续! // 小退时提示
Else
ClearRoleVar MedalRemain // 若已到期,清空变量
EndIf
EndIf

// 子脚本2:重新上线加载计时(Load事件,角色登录时触发)
#EVENT Load
#ACT
// 检查是否有未过期的双倍勋章计时
GetRoleVar MedalRemain S
If %MedalRemain% > 0
// 重新计算开始时间(当前时间 - 已过时间 = 原开始时间)
SetVar NowTime %Time%
Call TimeAdd %NowTime% -%MedalRemain% MedalStartTime // TimeAdd为时间加减函数,恢复原开始时间
SetRoleVar MedalStartTime %MedalStartTime%
// 重启定时器
StartTimer DoubleMedalCheck 60
SENDMSG 5 双倍勋章剩余时间:%MedalRemain%分钟,计时已继续! // 上线提示
Else
// 若剩余时间≤0,删除可能残留的勋章(防止BUG)
TakeItem 双倍勋章 1
ClearRoleVar MedalStartTime
ClearRoleVar MedalRemain
EndIf

(四)脚本启用:加载脚本至服务端
打开M2server.exe,点击 “脚本管理→Quest 脚本管理”;
点击 “添加”,选择QuestDiary目录下的 “双倍勋章限时脚本.txt”,勾选 “启用”,点击 “保存”;
无需重启 M2server,脚本即时生效(部分引擎需点击 “刷新脚本”)。
四、第三步:测试与问题排查(确保功能正常)
测试流程:
玩家背包添加 “双倍勋章”(可用 GM 指令@生成 双倍勋章 1);
佩戴勋章,查看是否提示 “30 分钟后消失”;
佩戴 5 分钟后小退,查看是否提示 “剩余 25 分钟”;
重新上线,查看是否提示 “剩余 25 分钟”;
等待 30 分钟(或修改脚本中 “30” 为 “1”,测试 1 分钟消失),确认勋章是否自动删除;
常见问题解决:
计时不生效:检查StartTimer函数的间隔秒数是否为 “60”,若引擎不支持%Time%变量,可改用%Hour%:%Minute%:%Second%(时:分: 秒);
小退不提示剩余时间:确认#EVENT Save事件是否写在脚本内,角色变量MedalRemain是否正确赋值(可在 M2 “角色变量查询” 中查看);
勋章到期不消失:检查TakeItem函数的装备名称是否与Item.DB中Name字段完全一致(如 “双倍勋章” 不能少 “双” 字),或改用TakeItemEx 10086 1(按 Ident 编号删除)。
小贴士
若想调整限时时长,只需将脚本中 “30” 改为目标分钟数(如 “60” 为 1 小时);
建议提前备份Item.DB和 “双倍勋章限时脚本.txt”,避免修改失误导致装备或脚本异常;
若需添加 “双倍属性生效提示”,可在#EVENT Wear脚本中新增SENDMSG 5 双倍经验已激活,持续30分钟!,增强玩家感知。
[顶部]