传奇中“双倍勋章”的限时功能需通过Quest脚本实现,核心是“佩戴触发计时+人物变量存时+退服读取变量+超时删除物品”,以下为完整脚本制作步骤,含物品定义、计时逻辑、小退提示代码。
一、核心功能实现原理
计时存储:用人物专属变量(如HUMAN_ZXMedalTime)记录勋章剩余时间(单位:秒),30分钟即1800秒,佩戴时初始化变量,每秒自动减1;
退服保留:人物下线(小退/大退)时,变量数据自动存入数据库,上线后读取变量继续计时,避免时间重置;
小退提示:在人物Logout(下线)脚本中添加变量读取命令,触发“剩余时间”提示;
超时消失:当变量值≤0时,脚本自动删除人物身上的双倍勋章,并移除双倍属性效果。
二、详细脚本制作步骤(适配主流传奇引擎)
1.第一步:定义双倍勋章物品(物品数据库配置)
先在“Mir200\Envir\Item.txt”(物品数据库)中添加双倍勋章属性,确保物品可被脚本识别:
;物品ID名称类型基础属性特殊属性脚本触发标识
12345双倍勋章饰品攻击+5魔法+5道术+5双倍攻击(2倍)@ZXMedalWear;佩戴时触发@ZXMedalWear脚本
说明:12345为自定义物品ID(需确保不与现有物品重复),“@ZXMedalWear”是佩戴触发的脚本入口。
2.第二步:佩戴触发计时脚本(核心计时逻辑)
在“Mir200\Envir\QuestDiary\勋章限时\ZXMedal.qf”新建脚本文件,写入佩戴触发与自动计时代码:
;佩戴勋章时触发:初始化剩余时间1800秒(30分钟)
[@ZXMedalWear]
#IF
CHECKHUMANITEM12345;检查是否佩戴双倍勋章
CHECKHUMANVARHUMAN_ZXMedalTime<1;检查变量是否未初始化
#ACT
SETHUMANVARHUMAN_ZXMedalTime1800;设置初始时间1800秒
SENDMSG6【双倍勋章】已激活!30分钟后自动消失,退服不重置计时。;系统提示(6为橙色字体)
GOTO@ZXMedalTimer;跳转至计时循环
;计时循环:每秒减1,直到时间为0
[@ZXMedalTimer]
#IF
CHECKHUMANVARHUMAN_ZXMedalTime>0;剩余时间>0
CHECKHUMANITEM12345;确保勋章仍在身上
#ACT
DELAY1000;延迟1000毫秒(1秒)
SETHUMANVARHUMAN_ZXMedalTime-1;时间减1
GOTO@ZXMedalTimer;循环计时
#ELSEACT
TAKE123451;时间≤0,删除双倍勋章
SENDMSG6【双倍勋章】时间已到,自动回收!;消失提示
CLEARHUMANVARHUMAN_ZXMedalTime;清空变量,避免残留
3.第三步:小退提示与时间保存脚本(退服不丢时间)
在“Mir200\Envir\QuestDiary\Common\Logout.qf”(人物下线脚本)中添加小退提示代码,读取剩余时间并提示:
;小退时触发:读取勋章剩余时间并提示
[@Logout]
#IF
CHECKHUMANVARHUMAN_ZXMedalTime>0;存在有效计时
CHECKHUMANITEM12345;勋章仍在身上
#ACT
CALCVARHUMAN_ZXMedalTime/60=Min;秒转分钟(便于阅读)
SENDMSG6【双倍勋章】剩余时间:<$HUMAN_ZXMedalTime>秒(约<$Min>分钟),下次上线继续计时。;小退提示
#ELSEACT
;无有效计时,不提示
说明:人物大退时,引擎会自动保存HUMAN_ZXMedalTime变量至数据库;上线时无需额外脚本,变量会自动加载,计时继续。
4.第四步:双倍属性生效脚本(确保效果随勋章存在)
若需勋章佩戴时实时生效双倍攻击,在“Mir200\Envir\QuestDiary\勋章限时\ZXMedal.qf”补充属性触发代码:
;每秒检查勋章是否佩戴,同步双倍属性
[@ZXMedalAttr]
#IF
CHECKHUMANITEM12345;佩戴勋章
CHECKHUMANVARHUMAN_ZXMedalTime>0;计时有效
#ACT
SETATTACK2;设置攻击为2倍(双倍效果)
DELAY1000
GOTO@ZXMedalAttr
#ELSEACT
SETATTACK1;未佩戴/计时结束,恢复正常攻击
CLEARHUMANVARHUMAN_ZXMedalTime
注:需在人物登录脚本(@Login)中添加“GOTO@ZXMedalAttr”,确保上线后自动检查属性。
三、脚本整合与测试步骤
文件放置:将“ZXMedal.qf”放入“QuestDiary\勋章限时”目录,确保所有脚本文件编码为ANSI(避免乱码);
引擎配置:打开“Mir200\Envir\QuestEnv.txt”,添加“勋章限时=ZXMedal.qf”,让引擎加载脚本;
测试流程:
用GM命令“@make123451”生成双倍勋章,佩戴后查看是否提示“激活30分钟”;
佩戴后等待10秒,小退再上线,检查系统提示是否显示“剩余1790秒”;
手动将变量设为10秒(GM命令“@sethumanvarHUMAN_ZXMedalTime10”),观察10秒后勋章是否自动消失。
四、关键注意事项
物品ID(12345)需在“Item.txt”中唯一,若已存在,需替换为未使用的ID;
延迟命令(DELAY)需根据引擎支持调整,部分引擎需写“WAIT”而非“DELAY”;
若服务器有“物品回收”功能,需在回收脚本中添加“CHECKHUMANVARHUMAN_ZXMedalTime>0”判断,避免勋章被误回收;
变量“HUMAN_ZXMedalTime”需避免与其他脚本重名,建议前缀加“ZX”(如“ZXMedal”)区分。
一、核心功能实现原理
计时存储:用人物专属变量(如HUMAN_ZXMedalTime)记录勋章剩余时间(单位:秒),30分钟即1800秒,佩戴时初始化变量,每秒自动减1;
退服保留:人物下线(小退/大退)时,变量数据自动存入数据库,上线后读取变量继续计时,避免时间重置;
小退提示:在人物Logout(下线)脚本中添加变量读取命令,触发“剩余时间”提示;
超时消失:当变量值≤0时,脚本自动删除人物身上的双倍勋章,并移除双倍属性效果。
二、详细脚本制作步骤(适配主流传奇引擎)
1.第一步:定义双倍勋章物品(物品数据库配置)
先在“Mir200\Envir\Item.txt”(物品数据库)中添加双倍勋章属性,确保物品可被脚本识别:
;物品ID名称类型基础属性特殊属性脚本触发标识
12345双倍勋章饰品攻击+5魔法+5道术+5双倍攻击(2倍)@ZXMedalWear;佩戴时触发@ZXMedalWear脚本
说明:12345为自定义物品ID(需确保不与现有物品重复),“@ZXMedalWear”是佩戴触发的脚本入口。
2.第二步:佩戴触发计时脚本(核心计时逻辑)
在“Mir200\Envir\QuestDiary\勋章限时\ZXMedal.qf”新建脚本文件,写入佩戴触发与自动计时代码:
;佩戴勋章时触发:初始化剩余时间1800秒(30分钟)
[@ZXMedalWear]
#IF
CHECKHUMANITEM12345;检查是否佩戴双倍勋章
CHECKHUMANVARHUMAN_ZXMedalTime<1;检查变量是否未初始化
#ACT
SETHUMANVARHUMAN_ZXMedalTime1800;设置初始时间1800秒
SENDMSG6【双倍勋章】已激活!30分钟后自动消失,退服不重置计时。;系统提示(6为橙色字体)
GOTO@ZXMedalTimer;跳转至计时循环
;计时循环:每秒减1,直到时间为0
[@ZXMedalTimer]
#IF
CHECKHUMANVARHUMAN_ZXMedalTime>0;剩余时间>0
CHECKHUMANITEM12345;确保勋章仍在身上
#ACT
DELAY1000;延迟1000毫秒(1秒)
SETHUMANVARHUMAN_ZXMedalTime-1;时间减1
GOTO@ZXMedalTimer;循环计时
#ELSEACT
TAKE123451;时间≤0,删除双倍勋章
SENDMSG6【双倍勋章】时间已到,自动回收!;消失提示
CLEARHUMANVARHUMAN_ZXMedalTime;清空变量,避免残留
3.第三步:小退提示与时间保存脚本(退服不丢时间)
在“Mir200\Envir\QuestDiary\Common\Logout.qf”(人物下线脚本)中添加小退提示代码,读取剩余时间并提示:
;小退时触发:读取勋章剩余时间并提示
[@Logout]
#IF
CHECKHUMANVARHUMAN_ZXMedalTime>0;存在有效计时
CHECKHUMANITEM12345;勋章仍在身上
#ACT
CALCVARHUMAN_ZXMedalTime/60=Min;秒转分钟(便于阅读)
SENDMSG6【双倍勋章】剩余时间:<$HUMAN_ZXMedalTime>秒(约<$Min>分钟),下次上线继续计时。;小退提示
#ELSEACT
;无有效计时,不提示
说明:人物大退时,引擎会自动保存HUMAN_ZXMedalTime变量至数据库;上线时无需额外脚本,变量会自动加载,计时继续。
4.第四步:双倍属性生效脚本(确保效果随勋章存在)
若需勋章佩戴时实时生效双倍攻击,在“Mir200\Envir\QuestDiary\勋章限时\ZXMedal.qf”补充属性触发代码:
;每秒检查勋章是否佩戴,同步双倍属性
[@ZXMedalAttr]
#IF
CHECKHUMANITEM12345;佩戴勋章
CHECKHUMANVARHUMAN_ZXMedalTime>0;计时有效
#ACT
SETATTACK2;设置攻击为2倍(双倍效果)
DELAY1000
GOTO@ZXMedalAttr
#ELSEACT
SETATTACK1;未佩戴/计时结束,恢复正常攻击
CLEARHUMANVARHUMAN_ZXMedalTime
注:需在人物登录脚本(@Login)中添加“GOTO@ZXMedalAttr”,确保上线后自动检查属性。
三、脚本整合与测试步骤
文件放置:将“ZXMedal.qf”放入“QuestDiary\勋章限时”目录,确保所有脚本文件编码为ANSI(避免乱码);
引擎配置:打开“Mir200\Envir\QuestEnv.txt”,添加“勋章限时=ZXMedal.qf”,让引擎加载脚本;
测试流程:
用GM命令“@make123451”生成双倍勋章,佩戴后查看是否提示“激活30分钟”;
佩戴后等待10秒,小退再上线,检查系统提示是否显示“剩余1790秒”;
手动将变量设为10秒(GM命令“@sethumanvarHUMAN_ZXMedalTime10”),观察10秒后勋章是否自动消失。
四、关键注意事项
物品ID(12345)需在“Item.txt”中唯一,若已存在,需替换为未使用的ID;
延迟命令(DELAY)需根据引擎支持调整,部分引擎需写“WAIT”而非“DELAY”;
若服务器有“物品回收”功能,需在回收脚本中添加“CHECKHUMANVARHUMAN_ZXMedalTime>0”判断,避免勋章被误回收;
变量“HUMAN_ZXMedalTime”需避免与其他脚本重名,建议前缀加“ZX”(如“ZXMedal”)区分。

