装备投保功能
需要在物品DB StdItems.DB 里增加2个字段 InsuranceGold 和 InsuranceCurrency  字段类型选择: INTEGER

InsuranceGold 投保金额 设置大于0时 登陆器才会显示该装备是否已经投保
InsuranceCurrency 保金类型 0元宝 1金币 2泡点 3金刚石 4灵符

QF脚本触发,人物死亡掉装备触发 [@DropUseItemsX] X表示装备位置 0-18
这个必须是InsuranceGold字段大于0,投保次数大于0,人物死亡掉装备才会触发。投保次数,每次人物死亡掉装备自动减1

相关常量:
OK框的常量 保金类型:<$BOXITEM[X].INSURANCECURRENCY>  投保次数:<$BOXITEM[X].INSURANCECOUNT> 投保金额:<$BOXITEM[X].INSURANCEGOLD>

以下常量必须在 [@DropUseItemsX]触发里才会有效
当前掉落前装备的 剩余投保次数:<$INSURANCECOUNT>
当前掉落前装备的 保金类型:<$INSURANCECURRENCY>
当前掉落前装备的 投保金额:<$INSURANCEGOLD>
当前掉落前装备的 名称:    <$INSURANCEITEMNAME>

相关脚本命令:
检测装备投保次数
CHECKINSURANCECOUNT 位置(0-18,-1表示OK框) 检测符(>,<,=) 次数(0-65536)

调整装备投保次数
CHANGEINSURANCECOUNT 位置(0-18,-1表示OK框) 调整符(+,-,=) 次数(0-65536)

QF脚本触发:

[@DropUseItems0]
#IF
#ACT
MOV M1 0

#IF
Equal <$INSURANCECURRENCY> 0
#ACT
MOV M1 1
MOV S1 <$INSURANCEGOLD>
INC S1 元宝

#IF
Equal <$INSURANCECURRENCY> 1
#ACT
MOV M1 1
MOV S1 <$INSURANCEGOLD>
INC S1 金币

#IF
Equal <$INSURANCECURRENCY> 2
#ACT
MOV M1 1
MOV S1 <$INSURANCEGOLD>
INC S1 泡点

#IF
Equal M1 1
#ACT
ThrowItem <$MAP> <$X> <$Y> 10 <$STR(S1)> 1|60 0 1
SENDMSG 6 你的衣服【<$INSURANCEITEMNAME>】有保险,没有掉,掉落<$STR(S1)>。剩余投保次数(<$INSURANCECOUNT>)保金类型(<$INSURANCECURRENCY>)投保金额(<$INSURANCEGOLD>)
;#ELSEACT
;SENDMSG 6 未知投保类型

 

 

示例2

装备投保功能

DB字段: InsuranceCurrency 保金类型 0元宝 1金币 2泡点 3金刚石 4灵符
DB字段:InsuranceGold 投保金额 设置大于0时 登陆器才会显示该装备是否已经投保

设置投保次数:
SETINSURANCECOUNTXX 位置 操作符(+,-,=) 数值

获取投保次数
GETINSURANCECOUNTXX 位置 变量

设置投保次数:
H.SETINSURANCECOUNTXX 位置 操作符(+,-,=) 数值

获取投保次数
H.GETINSURANCECOUNTXX 位置 变量

QF脚本触发投保装备掉落触发:
@DropInsuranceItem
@HeroDropInsuranceItem

相关常量:
OK框的常量 保金类型:<$BOXITEM[X].INSURANCECURRENCY> 投保次数:<$BOXITEM[X].INSURANCECOUNT> 投保金额:<$BOXITEM[X].INSURANCEGOLD>

变量:
投保物品名:$DROPINSURANCEITEMNAME
剩余投保数:$DROPINSURANCEITEMCOUNT
投保货币类型:$DROPINSURANCEITEMCURRENCY (StdItem.db)
单件投保单价: $DROPINSURANCEITEMGOLD (StdItem.db)

 

 

示例3

;NPC如下
;——————————————————————
[@main]
<ITEMBOX:0:0:1549:50:50:1:10:*:250#请放入你要投保的装备>\
 \
 \
 \
  <投保|输入你要投保的次数/@@InputInteger250>\

[@InputInteger250]
#IF
NOT EQUAL N250 0
#ACT
MOV S$投保类型
MOV N$投保金额 0
MOV N$投保金额 <$BOXITEM[0].INSURANCEGOLD>
MUL N$投保金额 <$STR(N250)>
#ELSEACT
MessageBox 请正确的输入你要投保的次数
break

#IF
Equal <$BOXITEM[0].INSURANCECURRENCY> 0
#ACT
MOV S$投保类型 元宝
#Define $检测数量$ CHECKGAMEGOLD
#Define $收取数量$ GAMEGOLD

#IF
Equal <$BOXITEM[0].INSURANCECURRENCY> 1
#ACT
MOV S$投保类型 金币
#Define $检测数量$ checkgold
#Define $收取数量$ GOLDCOUNT

#IF
Equal <$BOXITEM[0].INSURANCECURRENCY> 2
#ACT
MOV S$投保类型 泡点
#Define $检测数量$ CHECKGAMEPOINT
#Define $收取数量$ GAMEPOINT

#IF
Equal <$BOXITEM[0].INSURANCECURRENCY> 3
#ACT
MOV S$投保类型 金刚石
#Define $检测数量$ CHECKGAMEDIAMOND
#Define $收取数量$ GAMEDIAMOND

#IF
Equal <$BOXITEM[0].INSURANCECURRENCY> 4
#ACT
MOV S$投保类型 灵符
#Define $检测数量$ CHECKGAMEGIRD
#Define $收取数量$ GAMEGIRD

#IF
Equal <$BOXITEM[0].INSURANCEGOLD> 0
#ACT
MessageBox 此装备无法进行投保
break

#IF
NOT $检测数量$ < N$投保金额
#ACT
$收取数量$ – N$投保金额
SETINSURANCECOUNTXX boxitem0 + <$STR(N250)>
UpdateItem boxitem0
MessageBox 你花费<$STR(N$投保金额)><$STR(S$投保类型)>将<$BOXITEM[0].NAME>投保了<$STR(N250)>次\ \当前共投保了<$BOXITEM[0].INSURANCECOUNT>次
break
#ELSEACT
MessageBox 投保<$STR(N250)>次<$BOXITEM[0].NAME>需要<$STR(N$投保金额)><$STR(S$投保类型)>
break

;QF如下:
;——————————————————————
[@DropInsuranceItem]
#IF
LARGE <$DROPINSURANCEITEMCOUNT> 0
#ACT
sendmsg 6 你的<$DROPINSURANCEITEMNAME>因为已经投保了,所以此次没有掉落
#ELSEACT
break

#IF
CheckKillByHum
#ACT
CalcPercent <$DROPINSURANCEITEMGOLD> 50 N$获得投保金额
SetHumVar <$KILLER> N$获得投保金额 N$获得投保金额
SetHumVar <$KILLER> S$获得装备名字 <$DROPINSURANCEITEMNAME>
#ELSEACT
sendmsg 6 你被怪物[<$KILLER>]杀死,<$KILLER>无法获得保费
break

#IF
Equal <$DROPINSURANCEITEMCURRENCY> 0
#ACT
M.GAMEGOLD + N$获得投保金额
sendmsg 6 <$KILLER>获得投保金额<$STR(N$获得投保金额)>元宝
M.sendmsg 6 由于<$CURRRTARGETNAME>的<$STR(S$获得装备名字)>进行了投保,所以没有爆出
M.sendmsg 6 本次你获得<$STR(S$获得装备名字)>的50%投保金额<$STR(N$获得投保金额)>元宝

#IF
Equal <$DROPINSURANCEITEMCURRENCY> 1
#ACT
M.GOLDCOUNT + N$获得投保金额
sendmsg 6 <$KILLER>获得投保金额<$STR(N$获得投保金额)>金币
M.sendmsg 6 由于<$CURRRTARGETNAME>的<$STR(S$获得装备名字)>进行了投保,所以没有爆出
M.sendmsg 6 本次你获得<$STR(S$获得装备名字)>的50%投保金额<$STR(N$获得投保金额)>金币

#IF
Equal <$DROPINSURANCEITEMCURRENCY> 2
#ACT
M.GAMEPOINT + N$获得投保金额
sendmsg 6 <$KILLER>获得投保金额<$STR(N$获得投保金额)>泡点
M.sendmsg 6 由于<$CURRRTARGETNAME>的<$STR(S$获得装备名字)>进行了投保,所以没有爆出
M.sendmsg 6 本次你获得<$STR(S$获得装备名字)>的50%投保金额<$STR(N$获得投保金额)>泡点

#IF
Equal <$DROPINSURANCEITEMCURRENCY> 3
#ACT
M.GAMEDIAMOND + N$获得投保金额
sendmsg 6 <$KILLER>获得投保金额<$STR(N$获得投保金额)>金刚石
M.sendmsg 6 由于<$CURRRTARGETNAME>的<$STR(S$获得装备名字)>进行了投保,所以没有爆出
M.sendmsg 6 本次你获得<$STR(S$获得装备名字)>的50%投保金额<$STR(N$获得投保金额)>金刚石

#IF
Equal <$DROPINSURANCEITEMCURRENCY> 4
#ACT
M.GAMEGIRD + N$获得投保金额
sendmsg 6 <$KILLER>获得投保金额<$STR(N$获得投保金额)>灵符
M.sendmsg 6 由于<$CURRRTARGETNAME>的<$STR(S$获得装备名字)>进行了投保,所以没有爆出
M.sendmsg 6 本次你获得<$STR(S$获得装备名字)>的50%金额<$STR(N$获得投保金额)>灵符

发表回复

后才能评论