脚本示例

金刚石锻造脚本

金刚石锻造完整脚本:登录脚本、定时器、元宝申请锻造、倒计时与领取金刚石。

用途

元宝锻造金刚石:玩家按元宝数量申请锻造,1 元宝锻造 3 分钟并附赠 3 颗金刚石,进度写进玩家 HASH 与 499 号全局计时 ID 上显示倒计时,到点后到 NPC 处领取。

参考脚本

QManage.txt

[@OnTimer6] 定时器
#IF
Compval <$HASH(<$USERNAME>)<$USERNAME>_总锻造金刚石> = 0
#ACT
Hash <$USERNAME> Set <$USERNAME>_总锻造金刚石 0

#IF
Compval <$HASH(<$USERNAME>)<$USERNAME>_已锻造金刚石> = 0
#ACT
Hash <$USERNAME> Set <$USERNAME>_已锻造金刚石 0

#IF
Compval <$HASH(<$USERNAME>)<$USERNAME>_未完成金刚石> > 0
#ACT
Hash <$USERNAME> INC <$USERNAME>_总锻造金刚石 1
Hash <$USERNAME> INC <$USERNAME>_已锻造金刚石 1
Hash <$USERNAME> INC <$USERNAME>_可领取 1
Hash <$USERNAME> Dec <$USERNAME>_未完成金刚石 1
Hash <$USERNAME> INC <$USERNAME>_申请锻造分钟 1
Hash <$USERNAME> Dec <$USERNAME>_锻造倒计时 180
Hash <$USERNAME> Save ..\QuestDiary\HumData\<$USERNAME>.csv
SENDMSG 7 <$USERNAME>:炼金师已完成金刚石锻造:<$HASH(<$USERNAME>)<$USERNAME>_可领取>颗!未完成金刚石数量:<$HASH(<$USERNAME>)<$USERNAME>_未完成金刚石>
SetAbility 499 1 <$HASH(<$USERNAME>)<$USERNAME>_锻造倒计时>
  SendMsg5<$USERNAME>、您申请的金刚石锻造剩余时间:<ACD=499{c=clBlue}>
    BREAK

[@登录] 登录脚本
{
#IF
Compval <$HASH(<$USERNAME>)<$USERNAME>_锻造倒计时> > 0
#ACT
SetAbility 499 1 <$HASH(<$USERNAME>)<$USERNAME>_锻造倒计时>
SendMsg 6 <$USERNAME>、您申请的金刚石锻造剩余时间:<ACD=  499{c=    clBlue}>

#IF
CHECKLEVELEX > 0
#ACT
SetScTimer 6 180

[@main] 锻造脚本
你还不知道吗?元宝释放的能量将给锻造者带来更多的经验\
并且,锻造还会带来经验值的附赠品:金刚石\
不过用元宝锻造的话,必须每次到我这里来领取。\\
<查询元宝锻造规则/@锻造规则>        <申请元宝锻造/@申请锻造>\
<领取锻造附赠品:金刚石/@领取>      <查询当前拥有的金刚石数量/@查询数量>\\
申请锻造分钟:<ACD=499{c=clRed}> <$HASH(<$USERNAME>)<$USERNAME>_锻造倒计时>\
<关闭/@EXIT>\

[@查询数量]
#IF
#ACT
SENDMSG 6 你当前的金刚石数量是∶<$GAMEDIAMOND>

[@锻造规则]
1、使用元宝申请锻造后,必须到NPC处领取经验值及附赠品:金刚石\
2、用于锻造经验值的元宝数量单次申请范围在1~999之间\
3、1个元宝可以锻造3分钟,随之赠3颗金刚石\
4、使用元宝进行锻造,可以获得更多的经验\\
 <已了解元宝锻造规则,返回/@炼金师>

[@申请锻造]
锻造需要用强大的意志力,一旦确认自己需要锻造的元宝数量后,\
1颗金刚石需要锻造3分钟,1元宝可以随之附赠3颗金刚石。\
一旦申请元宝锻造成功后,此次锻造将不能被终止\
锻造所获得的经验值,就必须先终止当前的普通锻造\
 <同意元宝锻造的规则并接受元宝锻造/@元宝锻造>\
 <终止锻造/@同意并终止>\
 <返回/@炼金师>

[@元宝锻造]
请输入想要用于锻造经验值的元宝数量\
一次申请范围在2~999个元宝之间\ \
特别提示:申请成功后,无论人物是否在线,锻造都将继续!\
         但是如果你,元宝锻造未完成时,你领取了金刚石\
         未完成的时间将废除,元宝锻造时间将重新计算!\
 <请输入用于锻造的元宝数量/@输入元宝>\
 <取消/@EXIT>

[@输入元宝]
#ACT
MOV M1 0
QUERYVALUE 1 1 3 @检查元宝 请在下面输入1-999之间的元宝数量:

[@检查元宝]
#IF
SMALL M1 1
#SAY
请输入大于1的数字!\ \<关闭/@exit>
#ACT
BREAK

#IF
LARGE M1 999
#SAY
用于锻造经验值的元宝数量单次申请范围在1~999之间!\ \<关闭/@exit>
#ACT
BREAK

#IF
MIN 00 00
#SAY
我正在准备,请1分钟后再来申请金刚石锻造!\ \<关闭/@exit>
#ACT
BREAK

#IF
Compval <$HASH(<$USERNAME>)申请锻造分钟> ? 1
#SAY
您的锻造时间未结束,请勿重复申请。\ \ \ \ \ \
<返回/@炼金师>\
#ACT
BREAK

#IF
CHECKGAMEGOLD ? <$STR(M1)>
#ACT
MOV M_金刚石 1
MOV M_锻造分钟 3
MOV M_锻造经验 1680
MOV M_定时锻造 60
MUL M_锻造经验 <$LEVEL>
MUL M_锻造经验 <$STR(M_金刚石)>
MUL M_锻造分钟 <$STR(M_金刚石)>
MUL M_金刚石 <$STR(M1)>
MUL M_锻造分钟 <$STR(M1)>
MUL M_锻造经验 <$STR(M1)>
MUL M_定时锻造 <$STR(M_锻造分钟)>
#SAY
<$USERNAME>,您打算使用 <$STR(M1)> 个元宝来锻造经验值,<$STR(M_锻造经验)>\
并且,整个锻造过程你将获得附赠:<$STR(M_金刚石)>颗金刚石,\
这可能要花费 <$STR(M_锻造分钟)> 分钟的时间,请注意,锻造一但开始,\
就无法终止;锻造成功后,您也将获得附赠品:金刚石。\
您确认开始锻造吗?\ \
 <确认锻造/@确认锻造>  <放弃/@EXIT>
#ELSESAY
账号元宝数不足,无法申请金刚石锻造,请充值。\ \<关闭/@exit>

[@确认锻造]
#IF
MIN 00 00
#SAY
我正在准备,请1分钟后再来申请金刚石锻造!\ \<关闭/@exit>
#ACT
BREAK

#IF
Compval <$HASH(<$USERNAME>)<$USERNAME>_申请锻造> = 1
#SAY
上次申请锻造还未完成!是否选择取消锻造?\
注意:正在锻造中的这颗金刚石将消失且该锻造时间不能补回\ \
<同意并终止/@同意并终止>\
<返回/@炼金师>
#ACT
BREAK

#IF
CHECKGAMEGOLD ? <$STR(M1)>

#ACT
SetAbility 499 1 <$STR(M_定时锻造)>
Hash <$USERNAME> Set <$USERNAME>_申请锻造 1
Hash <$USERNAME> Set <$USERNAME>_元宝 <$STR(M1)>
Hash <$USERNAME> Set <$USERNAME>_锻造经验 <$STR(M_锻造经验)>
Hash <$USERNAME> Set <$USERNAME>_元宝金刚石 <$STR(M_金刚石)>
Hash <$USERNAME> Set <$USERNAME>_可领取 0
Hash <$USERNAME> Set <$USERNAME>_未完成金刚石 <$STR(M_金刚石)>
Hash <$USERNAME> Set <$USERNAME>_申请锻造分钟 0
Hash <$USERNAME> Set <$USERNAME>_申请锻造日期 $UNIXTIME
Hash <$USERNAME> Set <$USERNAME>_锻造倒计时 <$STR(M_定时锻造)>
Hash <$USERNAME> Save ..\QuestDiary\HumData\<$USERNAME>.csv
ints 6 = $UNIXTIME
ints 6 + <$STR(M_定时锻造)>
calcval $INTS6 ~ 0
SENDMSG 7 您申请的元宝锻造金刚石已经开始!
  SendMsg6<$USERNAME>、您申请的金刚石锻造剩余时间:<ACD=499{c=clBlue}>
SetScTimer 6 180
SendScrollMsg <$USERNAME>,申请锻造金刚石<$STR(M_金刚石)>颗!预计将获得锻造经验:<$STR(M_锻造经验)>。领取日期:<$CALCRESULT> 151 0
SENDMSG 1 <$USERNAME>,申请锻造金刚石<$STR(M_金刚石)>颗!预计将获得锻造经验:<$STR(M_锻造经验)>。。领取日期:<$CALCRESULT> 149 249 10

#SAY
恭喜你申请元宝锻造金刚石成功!\ \ \ \ \ \
<离开/@EXIT>
#ELSESAY
「失败」:没有足够的元宝、请充值。\ \ \ \ \ \
<返回/@炼金师>

[@同意并终止]
#IF
Compval <$HASH(<$USERNAME>)<$USERNAME>_申请锻造> = 1
#ACT
Hash <$USERNAME> Set <$USERNAME>_申请锻造 0
Hash <$USERNAME> Set <$USERNAME>_元宝 0
Hash <$USERNAME> Set <$USERNAME>_锻造经验 0
Hash <$USERNAME> Set <$USERNAME>_元宝金刚石 0
Hash <$USERNAME> Set <$USERNAME>_可领取 0
Hash <$USERNAME> Set <$USERNAME>_申请锻造分钟 0
Hash <$USERNAME> Set <$USERNAME>_未完成金刚石 0
Hash <$USERNAME> Set <$USERNAME>_申请锻造日期 0
Hash <$USERNAME> Set <$USERNAME>_锻造倒计时 0
Hash <$USERNAME> Save ..\QuestDiary\HumData\<$USERNAME>.csv
SENDMSG 6 申请终止当前锻造成功
CLOSE
#ELSEACT
SENDMSG 6 你尚未申请锻造无需终止
CLOSE

[@领取]
<$USERNAME>,根据您申请锻造的时间计算,可领取金刚石倒计时:<ACD=499>\
当前您申请总数:<$HASH(<$USERNAME>)<$USERNAME>_元宝金刚石>颗\
已经锻造完成数:<$HASH(<$USERNAME>)<$USERNAME>_已锻造金刚石>颗\
共领取金刚石数:<$HASH(<$USERNAME>)<$USERNAME>_总锻造金刚石>颗\
可以领取金刚石:<$HASH(<$USERNAME>)<$USERNAME>_可领取>颗\
本次可领取经验:<$HASH(<$USERNAME>)<$USERNAME>_锻造经验>点\
尚未锻造完成数:<$HASH(<$USERNAME>)<$USERNAME>_未完成金刚石>颗\
<COLOR=clAqua 提示:如果您选择领取金刚石,锻造时间将被重新计算。>\
您要领取吗?  <领取/@领金刚石>          <返回/@炼金师>
#ELSESAY
「失败」:你没有申请元宝锻造。\ \ \ \ \ \
<返回/@炼金师>\

[@领金刚石]
#IF
MIN 00 00
#SAY
系统正在计算,请1分钟后再来领取金刚石。\ \<关闭/@exit>
#ACT
BREAK

#IF
Compval <$ABILTTL499> > 0
#SAY
申请锻造分钟剩余:<ACD=499{c=clRed}>\\ \ \ \ \ \
<返回/@炼金师>\
#ACT
BREAK

#IF
Compval <$HASH(<$USERNAME>)<$USERNAME>_申请锻造> = 0
#SAY
「失败」:你没有申请元宝锻造。\ \ \ \ \ \
<返回/@炼金师>\
#ACT
BREAK

#IF
Compval <$HASH(<$USERNAME>)<$USERNAME>_申请锻造> = 1
#ACT
GAMEDIAMOND + <$HASH(<$USERNAME>)<$USERNAME>_可领取>
CHANGEEXP + <$HASH(<$USERNAME>)<$USERNAME>_锻造经验>
SENDMSG 7 你成功获得金刚石<$HASH(<$USERNAME>)<$USERNAME>_可领取>颗!获得经验:<$HASH(<$USERNAME>)<$USERNAME>_锻造经验>
SENDMSG 0 恭喜:<$USERNAME>,领取锻造的金刚石<$HASH(<$USERNAME>)<$USERNAME>_可领取>颗!获得经验:<$HASH(<$USERNAME>)<$USERNAME>_锻造经验> 255 168 65000
SendScrollMsg 恭喜:<$USERNAME>,领取锻造的金刚石<$HASH(<$USERNAME>)<$USERNAME>_可领取>颗!获得经验:<$HASH(<$USERNAME>)<$USERNAME>_锻造经验> 151 0
MOV M_金刚石 0
MOV M_锻造分钟 0
MOV M_锻造经验 0
Hash <$USERNAME> Set <$USERNAME>_申请锻造 0
Hash <$USERNAME> Set <$USERNAME>_元宝 0
Hash <$USERNAME> Set <$USERNAME>_锻造经验 0
Hash <$USERNAME> Set <$USERNAME>_元宝金刚石 0
Hash <$USERNAME> Set <$USERNAME>_可领取 0
Hash <$USERNAME> Set <$USERNAME>_申请锻造分钟 0
Hash <$USERNAME> Set <$USERNAME>_未完成金刚石 0
Hash <$USERNAME> Set <$USERNAME>_申请锻造日期 0
Hash <$USERNAME> Set <$USERNAME>_锻造倒计时 0
Hash <$USERNAME> INC <$USERNAME>_已锻造金刚石 <$HASH(<$USERNAME>)<$USERNAME>_可领取>
Hash <$USERNAME> INC <$USERNAME>_共领取金刚石数 <$HASH(<$USERNAME>)<$USERNAME>_可领取>
KillScTimer 6
#ELSESAY
你完成的金刚石已经领取。

关键点

  • 脚本顶部注明这个文件应放在 QManage.txt(登录脚本)里,因此包含 [@OnTimer6] 定时器、[@登录] 登录脚本、[@main] 锻造脚本 三部分。
  • 进度数据用 HASH 存:Hash <$USERNAME> Set/INC/Dec <$USERNAME>_总锻造金刚石|_已锻造金刚石|_可领取|_未完成金刚石|_锻造倒计时,并 Hash ... Save ..\QuestDiary\HumData\<$USERNAME>.csv 落盘。
  • 倒计时用 SetScTimer 6 180 起 6 号计时器,用 SetAbility 499 1 <秒数> 配合 <ACD=499> 在对话框里显示剩余时间。
  • 金刚石数量用 <$GAMEDIAMOND> 读取,扣除/发放元宝用 CHECKGAMEGOLD、GAMEGOLD -。

相关阅读