传奇“双倍勋章”需实现佩戴计时、30分钟自动消失、跨小退大退计时不中断及小退提示功能,核心依赖角色变量存储时间与多脚本联动,以下是完整设置步骤与脚本代码。
一、基川位:找到设置所需核心文件
限时装备配置涉及装备属性定义、触发脚本、登录加载脚本,所有文件均存于服务端MirServer\Mir200\Envir目录,关键文件及作用如下:
文件名称
存放路径
核心作用
Item.txt
Mir200\Envir\ItemConfig
定义双倍勋章属性(如双倍经验、装备ID)
LoginQuest.txt
Mir200\Envir\QuestDiary
登录时加载剩余时间,判断是否删除装备
EquipQuest.txt
Mir200\Envir\QuestDiary
佩戴勋章时触发计时,记录开始时间
LogoutQuest.txt
Mir200\Envir\QuestDiary
小退时计算剩余时间并发送提示
UserVar.txt
Mir200\Envir\QuestDiary\变量存储
保存角色“双倍勋章剩余时间”变量(需手动创建文件夹)
关键提示:若变量存储文件夹不存在,需在QuestDiary目录下手动创建,确保变量文件能正常读写(文件夹权限设为“可读写”)。
二、核心步骤:分模块编写脚本与配置
(一)第一步:定义双倍勋章基础属性(Item.txt)
先在装备属性文件中添加双倍勋章,确保佩戴时生效双倍经验,且能被脚本识别。
1.打开文件:
进入MirServer\Mir200\Envir\ItemConfig,用Notepad++打开Item.txt(若分职业,选择对应职业的ItemWarrior.txt等)。
2.添加勋章配置:
#格式:Item=装备名;ID=唯一编号;Type=装备类型;属性1;属性2;...
Item=双倍勋章;ID=2001;Type=Necklace;Level=1;ExpRate=2;Durable=30;Bind=1;
#说明:
#ID=2001(需在ItemDB.dbf中无重复,用DBC2000确认)
#Type=Necklace(项链类型,可改为Ring/Armor,按佩戴部位定)
#ExpRate=2(双倍经验属性,引擎支持参数)
#Durable=30(计时关联,30分钟对应30点耐久,非必需但可辅助判断)
#Bind=1(绑定,防止交易后计时异常)
3.确认数据库匹配:
用DBC2000打开MirServer\DB\ItemDB.dbf,添加一行新数据:
ID=2001,Name=双倍勋章,Type=项链(对应Type值),Looks=自定义外观编号(如100),确保与Item.txt参数一致。
(二)第二步:佩戴勋章触发计时(EquipQuest.txt)
编写佩戴检测脚本,当角色佩戴双倍勋章时,记录当前时间到变量,启动30分钟计时。
1.打开文件:
进入MirServer\Mir200\Envir\QuestDiary,打开EquipQuest.txt。
2.添加佩戴触发脚本:
#检测是否佩戴双倍勋章(ID=2001)
(@EquipCheck)
#IF
CHECKITEM双倍勋章1#检查背包/装备栏有1个双倍勋章
CHECKVARHUMAN双倍勋章剩余时间<=0#确保未启动计时(避免重复触发)
#ACT
#记录当前时间(单位:秒,需引擎支持TIME函数)
GETTIMECurrentTime#获取当前时间戳(秒),存到CurrentTime变量
CALCVARCurrentTime+1800#30分钟=1800秒,计算过期时间
SETVARHUMAN双倍勋章剩余时间%CurrentTime%#存储过期时间到角色变量
#保存变量到文件(跨退不丢失)
SAVEVARHUMAN双倍勋章剩余时间..\QuestDiary\变量存储\双倍勋章变量.txt
SENDMSG6双倍勋章已佩戴,30分钟后自动消失,小退不中断计时!
#ELSEIF
CHECKITEM双倍勋章1
CHECKVARHUMAN双倍勋章剩余时间>0
#ACT
SENDMSG6双倍勋章计时已启动,剩余时间可通过小退查看!
3.绑定佩戴事件:
在EquipQuest.txt开头添加事件触发:
#所有装备佩戴时触发检测(不同引擎语法可能为@Equip或@OnEquip)
@OnEquipItem=@EquipCheck
引擎差异提示:HERO引擎用@OnEquipItem,GOM引擎可能用@Equip,需参考服务端Doc目录下的QuestCommand.doc确认命令。
(三)第三步:登录加载剩余时间(LoginQuest.txt)
编写登录脚本,小退大退后登录时,读取之前存储的过期时间,计算剩余时间,若已过期则删除勋章。
1.打开文件:
进入MirServer\Mir200\Envir\QuestDiary,打开LoginQuest.txt。
2.添加登录加载脚本:
(@LoginLoad)
#IF
CHECKITEM双倍勋章1#登录时检测是否持有双倍勋章
#ACT
#加载之前保存的过期时间变量
LOADVARHUMAN双倍勋章剩余时间..\QuestDiary\变量存储\双倍勋章变量.txt
#获取当前时间,计算剩余时间
GETTIMENowTime
CALCVARHUMAN双倍勋章剩余时间-%NowTime%#过期时间-当前时间=剩余秒数
#判断是否过期
#IF
CHECKVARHUMAN双倍勋章剩余时间<=0
#ACT
REMOVEITEM双倍勋章1#过期,删除装备
SETVARHUMAN双倍勋章剩余时间0#重置变量
SAVEVARHUMAN双倍勋章剩余时间..\QuestDiary\变量存储\双倍勋章变量.txt
SENDMSG6双倍勋章已过期,已自动删除!
#ELSE
#ACT
#转换剩余秒数为分钟+秒,方便查看
CALCVARHUMAN双倍勋章剩余时间/60=剩余分钟
CALCVARHUMAN双倍勋章剩余时间%60=剩余秒
SENDMSG6双倍勋章剩余时间:%剩余分钟%分%剩余秒%秒,小退可查看!
3.绑定登录事件:
在LoginQuest.txt中添加:
#角色登录时自动执行
@Login=@LoginLoad
(四)第四步:小退提示剩余时间(LogoutQuest.txt)
编写小退脚本,角色退出时计算剩余时间并发送提示,确保玩家知晓时效。
1.打开文件:
进入MirServer\Mir200\Envir\QuestDiary,打开LogoutQuest.txt(无则新建)。
2.添加小退提示脚本:
(@LogoutTip)
#IF
CHECKITEM双倍勋章1
CHECKVARHUMAN双倍勋章剩余时间>0
#ACT
#计算剩余时间
GETTIMENowTime
CALCVARHUMAN双倍勋章剩余时间-%NowTime%=剩余总秒
CALCVAR剩余总秒/60=剩余分钟
CALCVAR剩余总秒%60=剩余秒
#发送提示(小退时弹窗或聊天栏提示,不同引擎支持不同)
SENDMSG6双倍勋章剩余时间:%剩余分钟%分%剩余秒%秒,下次登录继续计时!
#保存变量(确保退出时更新)
SAVEVARHUMAN双倍勋章剩余时间..\QuestDiary\变量存储\双倍勋章变量.txt
#ELSEIF
CHECKITEM双倍勋章1
CHECKVARHUMAN双倍勋章剩余时间<=0
#ACT
REMOVEITEM双倍勋章1
SENDMSG6双倍勋章已过期,退出时自动删除!
3.绑定小退事件:
在LogoutQuest.txt中添加:
#角色小退时执行
@Logout=@LogoutTip
三、测试与验证:确保功能正常
(一)分步测试流程
创建勋章测试:
用GM命令@give双倍勋章1获取勋章,确认背包中显示正常(名称、图标正确)。
佩戴计时测试:
佩戴勋章,查看聊天栏是否提示“计时已启动”,进入变量存储目录,确认生成双倍勋章变量.txt(内容含变量值)。
跨退测试:
小退角色,重新登录,查看是否提示剩余时间(如“剩余29分50秒”),确认勋章未消失。
过期测试:
手动修改双倍勋章变量.txt中“双倍勋章剩余时间”为当前时间戳+60(1分钟后过期),登录后等待1分钟,检查勋章是否自动删除。
小退提示测试:
佩戴勋章后小退,确认收到剩余时间提示(如“剩余28分30秒”)。
(二)常见问题排查
佩戴不触发计时:
检查EquipQuest.txt中事件命令是否正确(如HERO引擎是否用@OnEquipItem);
确认Item.txt中勋章ID(2001)与脚本中CHECKITEM参数一致,无空格或符号错误。
跨退计时丢失:
检查变量存储文件夹是否存在,权限是否为“可读写”;
确认SAVEVAR和LOADVAR路径正确(如..\QuestDiary\变量存储\,“..”代表上级目录)。
过期不删除勋章:
检查LoginQuest.txt中CALCVAR计算是否正确(是否用“过期时间-当前时间”);
确认REMOVEITEM命令参数正确(装备名无错别字,数量为1)。
小退无提示:
检查LogoutQuest.txt是否绑定@Logout事件;
确认SENDMSG命令支持(部分引擎用SENDMSG7弹窗提示,可尝试修改数字)。
四、进阶优化:适配不同引擎与场景
(一)引擎语法调整
GOM引擎适配:
变量命令需加HUMAN.前缀,如SETVARHUMAN.双倍勋章剩余时间%CurrentTime%;
时间函数用GETSYSTIME,替换GETTIME,脚本示例:
GETSYSTIMENowTime#GOM获取当前时间戳
CALCVARHUMAN.双倍勋章剩余时间=%NowTime%+1800
LEG引擎适配:
变量存储路径需用绝对路径,如SAVEVARHUMAN双倍勋章剩余时间D:\MirServer\Mir200\Envir\QuestDiary\变量存储\双倍勋章变量.txt。
(二)增加实时提示(可选)
若需游戏内实时显示剩余时间,可在QuestDiary目录新建TimeTip.txt,添加定时脚本:
(@TimeTipLoop)
#IF
CHECKITEM双倍勋章1
CHECKVARHUMAN双倍勋章剩余时间>0
#ACT
GETTIMENowTime
CALCVARHUMAN双倍勋章剩余时间-%NowTime%=剩余总秒
CALCVAR剩余总秒/60=剩余分钟
CALCVAR剩余总秒%60=剩余秒
SENDMSG6双倍勋章剩余:%剩余分钟%分%剩余秒%秒#每60秒提示一次
WAIT60000#等待60秒(60000毫秒)
GOTO@TimeTipLoop#循环执行
在LoginLoad脚本中添加GOTO@TimeTipLoop,实现实时提示。
五、实操注意事项
变量唯一性:
变量名“双倍勋章剩余时间”需唯一,避免与其他脚本变量冲突(可加前缀,如“SX_双倍勋章剩余时间”)。
时间单位统一:
所有脚本需用同一时间单位(推荐秒),避免混用毫秒(1秒=1000毫秒)导致计算错误。
文件编码格式:
所有脚本文件需保存为“ANSI”编码(Notepad++右下角可切换),避免UTF-8编码导致中文乱码、脚本解析失败。
备份原始文件:
修改Item.txt、LoginQuest.txt前,复制原始文件到其他目录,若设置出错可直接替换恢复。
一、基川位:找到设置所需核心文件
限时装备配置涉及装备属性定义、触发脚本、登录加载脚本,所有文件均存于服务端MirServer\Mir200\Envir目录,关键文件及作用如下:
文件名称
存放路径
核心作用
Item.txt
Mir200\Envir\ItemConfig
定义双倍勋章属性(如双倍经验、装备ID)
LoginQuest.txt
Mir200\Envir\QuestDiary
登录时加载剩余时间,判断是否删除装备
EquipQuest.txt
Mir200\Envir\QuestDiary
佩戴勋章时触发计时,记录开始时间
LogoutQuest.txt
Mir200\Envir\QuestDiary
小退时计算剩余时间并发送提示
UserVar.txt
Mir200\Envir\QuestDiary\变量存储
保存角色“双倍勋章剩余时间”变量(需手动创建文件夹)
关键提示:若变量存储文件夹不存在,需在QuestDiary目录下手动创建,确保变量文件能正常读写(文件夹权限设为“可读写”)。
二、核心步骤:分模块编写脚本与配置
(一)第一步:定义双倍勋章基础属性(Item.txt)
先在装备属性文件中添加双倍勋章,确保佩戴时生效双倍经验,且能被脚本识别。
1.打开文件:
进入MirServer\Mir200\Envir\ItemConfig,用Notepad++打开Item.txt(若分职业,选择对应职业的ItemWarrior.txt等)。
2.添加勋章配置:
#格式:Item=装备名;ID=唯一编号;Type=装备类型;属性1;属性2;...
Item=双倍勋章;ID=2001;Type=Necklace;Level=1;ExpRate=2;Durable=30;Bind=1;
#说明:
#ID=2001(需在ItemDB.dbf中无重复,用DBC2000确认)
#Type=Necklace(项链类型,可改为Ring/Armor,按佩戴部位定)
#ExpRate=2(双倍经验属性,引擎支持参数)
#Durable=30(计时关联,30分钟对应30点耐久,非必需但可辅助判断)
#Bind=1(绑定,防止交易后计时异常)
3.确认数据库匹配:
用DBC2000打开MirServer\DB\ItemDB.dbf,添加一行新数据:
ID=2001,Name=双倍勋章,Type=项链(对应Type值),Looks=自定义外观编号(如100),确保与Item.txt参数一致。
(二)第二步:佩戴勋章触发计时(EquipQuest.txt)
编写佩戴检测脚本,当角色佩戴双倍勋章时,记录当前时间到变量,启动30分钟计时。
1.打开文件:
进入MirServer\Mir200\Envir\QuestDiary,打开EquipQuest.txt。
2.添加佩戴触发脚本:
#检测是否佩戴双倍勋章(ID=2001)
(@EquipCheck)
#IF
CHECKITEM双倍勋章1#检查背包/装备栏有1个双倍勋章
CHECKVARHUMAN双倍勋章剩余时间<=0#确保未启动计时(避免重复触发)
#ACT
#记录当前时间(单位:秒,需引擎支持TIME函数)
GETTIMECurrentTime#获取当前时间戳(秒),存到CurrentTime变量
CALCVARCurrentTime+1800#30分钟=1800秒,计算过期时间
SETVARHUMAN双倍勋章剩余时间%CurrentTime%#存储过期时间到角色变量
#保存变量到文件(跨退不丢失)
SAVEVARHUMAN双倍勋章剩余时间..\QuestDiary\变量存储\双倍勋章变量.txt
SENDMSG6双倍勋章已佩戴,30分钟后自动消失,小退不中断计时!
#ELSEIF
CHECKITEM双倍勋章1
CHECKVARHUMAN双倍勋章剩余时间>0
#ACT
SENDMSG6双倍勋章计时已启动,剩余时间可通过小退查看!
3.绑定佩戴事件:
在EquipQuest.txt开头添加事件触发:
#所有装备佩戴时触发检测(不同引擎语法可能为@Equip或@OnEquip)
@OnEquipItem=@EquipCheck
引擎差异提示:HERO引擎用@OnEquipItem,GOM引擎可能用@Equip,需参考服务端Doc目录下的QuestCommand.doc确认命令。
(三)第三步:登录加载剩余时间(LoginQuest.txt)
编写登录脚本,小退大退后登录时,读取之前存储的过期时间,计算剩余时间,若已过期则删除勋章。
1.打开文件:
进入MirServer\Mir200\Envir\QuestDiary,打开LoginQuest.txt。
2.添加登录加载脚本:
(@LoginLoad)
#IF
CHECKITEM双倍勋章1#登录时检测是否持有双倍勋章
#ACT
#加载之前保存的过期时间变量
LOADVARHUMAN双倍勋章剩余时间..\QuestDiary\变量存储\双倍勋章变量.txt
#获取当前时间,计算剩余时间
GETTIMENowTime
CALCVARHUMAN双倍勋章剩余时间-%NowTime%#过期时间-当前时间=剩余秒数
#判断是否过期
#IF
CHECKVARHUMAN双倍勋章剩余时间<=0
#ACT
REMOVEITEM双倍勋章1#过期,删除装备
SETVARHUMAN双倍勋章剩余时间0#重置变量
SAVEVARHUMAN双倍勋章剩余时间..\QuestDiary\变量存储\双倍勋章变量.txt
SENDMSG6双倍勋章已过期,已自动删除!
#ELSE
#ACT
#转换剩余秒数为分钟+秒,方便查看
CALCVARHUMAN双倍勋章剩余时间/60=剩余分钟
CALCVARHUMAN双倍勋章剩余时间%60=剩余秒
SENDMSG6双倍勋章剩余时间:%剩余分钟%分%剩余秒%秒,小退可查看!
3.绑定登录事件:
在LoginQuest.txt中添加:
#角色登录时自动执行
@Login=@LoginLoad
(四)第四步:小退提示剩余时间(LogoutQuest.txt)
编写小退脚本,角色退出时计算剩余时间并发送提示,确保玩家知晓时效。
1.打开文件:
进入MirServer\Mir200\Envir\QuestDiary,打开LogoutQuest.txt(无则新建)。
2.添加小退提示脚本:
(@LogoutTip)
#IF
CHECKITEM双倍勋章1
CHECKVARHUMAN双倍勋章剩余时间>0
#ACT
#计算剩余时间
GETTIMENowTime
CALCVARHUMAN双倍勋章剩余时间-%NowTime%=剩余总秒
CALCVAR剩余总秒/60=剩余分钟
CALCVAR剩余总秒%60=剩余秒
#发送提示(小退时弹窗或聊天栏提示,不同引擎支持不同)
SENDMSG6双倍勋章剩余时间:%剩余分钟%分%剩余秒%秒,下次登录继续计时!
#保存变量(确保退出时更新)
SAVEVARHUMAN双倍勋章剩余时间..\QuestDiary\变量存储\双倍勋章变量.txt
#ELSEIF
CHECKITEM双倍勋章1
CHECKVARHUMAN双倍勋章剩余时间<=0
#ACT
REMOVEITEM双倍勋章1
SENDMSG6双倍勋章已过期,退出时自动删除!
3.绑定小退事件:
在LogoutQuest.txt中添加:
#角色小退时执行
@Logout=@LogoutTip
三、测试与验证:确保功能正常
(一)分步测试流程
创建勋章测试:
用GM命令@give双倍勋章1获取勋章,确认背包中显示正常(名称、图标正确)。
佩戴计时测试:
佩戴勋章,查看聊天栏是否提示“计时已启动”,进入变量存储目录,确认生成双倍勋章变量.txt(内容含变量值)。
跨退测试:
小退角色,重新登录,查看是否提示剩余时间(如“剩余29分50秒”),确认勋章未消失。
过期测试:
手动修改双倍勋章变量.txt中“双倍勋章剩余时间”为当前时间戳+60(1分钟后过期),登录后等待1分钟,检查勋章是否自动删除。
小退提示测试:
佩戴勋章后小退,确认收到剩余时间提示(如“剩余28分30秒”)。
(二)常见问题排查
佩戴不触发计时:
检查EquipQuest.txt中事件命令是否正确(如HERO引擎是否用@OnEquipItem);
确认Item.txt中勋章ID(2001)与脚本中CHECKITEM参数一致,无空格或符号错误。
跨退计时丢失:
检查变量存储文件夹是否存在,权限是否为“可读写”;
确认SAVEVAR和LOADVAR路径正确(如..\QuestDiary\变量存储\,“..”代表上级目录)。
过期不删除勋章:
检查LoginQuest.txt中CALCVAR计算是否正确(是否用“过期时间-当前时间”);
确认REMOVEITEM命令参数正确(装备名无错别字,数量为1)。
小退无提示:
检查LogoutQuest.txt是否绑定@Logout事件;
确认SENDMSG命令支持(部分引擎用SENDMSG7弹窗提示,可尝试修改数字)。
四、进阶优化:适配不同引擎与场景
(一)引擎语法调整
GOM引擎适配:
变量命令需加HUMAN.前缀,如SETVARHUMAN.双倍勋章剩余时间%CurrentTime%;
时间函数用GETSYSTIME,替换GETTIME,脚本示例:
GETSYSTIMENowTime#GOM获取当前时间戳
CALCVARHUMAN.双倍勋章剩余时间=%NowTime%+1800
LEG引擎适配:
变量存储路径需用绝对路径,如SAVEVARHUMAN双倍勋章剩余时间D:\MirServer\Mir200\Envir\QuestDiary\变量存储\双倍勋章变量.txt。
(二)增加实时提示(可选)
若需游戏内实时显示剩余时间,可在QuestDiary目录新建TimeTip.txt,添加定时脚本:
(@TimeTipLoop)
#IF
CHECKITEM双倍勋章1
CHECKVARHUMAN双倍勋章剩余时间>0
#ACT
GETTIMENowTime
CALCVARHUMAN双倍勋章剩余时间-%NowTime%=剩余总秒
CALCVAR剩余总秒/60=剩余分钟
CALCVAR剩余总秒%60=剩余秒
SENDMSG6双倍勋章剩余:%剩余分钟%分%剩余秒%秒#每60秒提示一次
WAIT60000#等待60秒(60000毫秒)
GOTO@TimeTipLoop#循环执行
在LoginLoad脚本中添加GOTO@TimeTipLoop,实现实时提示。
五、实操注意事项
变量唯一性:
变量名“双倍勋章剩余时间”需唯一,避免与其他脚本变量冲突(可加前缀,如“SX_双倍勋章剩余时间”)。
时间单位统一:
所有脚本需用同一时间单位(推荐秒),避免混用毫秒(1秒=1000毫秒)导致计算错误。
文件编码格式:
所有脚本文件需保存为“ANSI”编码(Notepad++右下角可切换),避免UTF-8编码导致中文乱码、脚本解析失败。
备份原始文件:
修改Item.txt、LoginQuest.txt前,复制原始文件到其他目录,若设置出错可直接替换恢复。

