- 积分
- 26488
- 注册时间
- 2023-8-30
- 最后登录
- 2024-12-3
- 在线时间
- 158 小时
超级版主
- 积分
- 26488
- 威望
- 123
- 金币
- 17420
- 贡献
- 7523
|
Blue引擎+登录器+程序全部免费开放,QQ快捷登陆,加入BLUE引擎论坛!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 完美 于 2024-3-11 12:26 PM 编辑
【注意】以下所有功能必须搭配AC登录器+AC网关使用,非AC客户不生效。
【提醒】案例素材配套配置文件,可直接看到效果,看不到效果的请升级到最新引擎。
AC反外挂购买联系:blue引擎代理-完美,QQ29240180,网站:Www.bluem2.Cn
★AC封挂技术交流群★:523603356
BLUE引擎21.05.24-18版本更新了众多新功能,其中GM比较关注的是,装备来源、物品描述、个性化释放魔法命令等。
可以根据此类命令,实现众多魔法新玩法:比如道士的群攻技能、多重合击技能、技能链式触发、溅射触发等新玩法。
可以根据装备描述玩法,实现装备来源、专属BUFF、个性化变量描述、自定义属性、限时装备、装备个性化加星、拾取鉴定BUFF、个性化强化脚本等功能玩法。
补丁及案例脚本免费下载,回复可见!
一、增加释放魔法NPC命令:MagicFire 1技能ID 2等级(0~15) 3显示技能效果(0/1) 4方式(-2链式 -1溅射 0自己,1当前目标,自定义坐标X) 5自定义坐标Y[可选] 6技能延迟(毫秒)[可选] 7自定义坐标强显效果(0/1)
【使用说明】
攻击触发里增加目标坐标变量:<$TARINFO_CX>,<$TARINFO_CY>
技能触发[@MagSelfFuncXX]是,<$PARAM(1)>是目标X坐标,<$PARAM(2)>是目标Y坐标
增加释放魔法NPC命令:MagicFire 1技能ID 2等级(0~15) 3显示技能效果(0/1) 4方式(-2链式 -1溅射 0自己,1当前目标,自定义坐标X) 5自定义坐标Y[可选] 6技能延迟(毫秒)[可选] 7自定义坐标强显效果(0/1)
注:支持普通魔法技能和合击技能,不包含战士技能,不支持技能触发,不支持攻击触发,无举手动作,需配套客户端更新!
当参数4为-1时,参数5为溅射技能半径,建议使用T.MagicFire方式
当参数4为-2时,参数5为链式技能半径,建议使用T.MagicFire方式
当使用自定义坐标时,X和Y支持批量方式,如:11|22|33 44|55|56
当自定义坐标有效且参数7不为0是,将不检测目标有效性,强制显示技能效果
例1:
[@attack]
#act
SetRandomNO 60 65
#if
CompVal <$ATTINFO_ISHERO> = 1
#act
h.MagicFire <$RANDOMNO> 5 1 1
#elseact
MagicFire 13 11 1 1
MagicFire <$RANDOMNO> 15 1 1
例2:
[@MagSelfFunc11]
#act
; 暂存技能ID
Mov M97 11
goto @CustomMagic
[@MagSelfFunc13]
#act
; 暂存技能ID
Mov M97 13
goto @CustomMagic
[@CustomMagic]
#act
; 存放XY坐标组,使用“|”间隔
Mov S98 ""
Mov S99 ""
; 多层循环,M0/M1分别从-2至+2,构成一个5x5的攻击范围方格
#for (M0 = -2, M0 < 3, M0 + 1)
#for (M1 = -2, M1 < 3, M1 + 1)
#if(1)
; 过滤掉中间的重合点
CompVal <$STR(M0)> ! 0
CompVal <$STR(M1)> ! 0
#act
; 将计算得出24个坐标放置在S98和S99
Calc "<$PARAM(1)>+0<$STR(M0)>" M98
Calc "<$PARAM(2)>+0<$STR(M1)>" M99
Inc S98 <$STR(M98)>|
Inc S99 <$STR(M99)>|
#~for
#~for
#if
CompVal <$PARAM(0)> = 0
#act
MagicFire <$STR(M97)> <$MAGICLEVEL(<$STR(M97)>)> 1 <$STR(S98)> <$STR(S99)> 500 1
#elseact
h.MagicFire <$STR(M97)> <$MAGICLEVEL(<$STR(M97)>)> 1 <$STR(S98)> <$STR(S99)> 450 1
例3:
[@Attack]
#act
Mov M99 <$ATTINFO_SKILLID>
#case (M99)
#1, 5, 13, 104, 105, 107~110:
#if
CompVal <$ATTINFO_ISHERO> = 1
#act
; 以怪物为中心发出溅射技能
T.MagicFire <$ATTINFO_SKILLID> <$H.MAGICLEVEL(<$ATTINFO_SKILLID>)> 1 -1 3
; 以怪物为主逐次发出链式技能
; T.MagicFire <$ATTINFO_SKILLID> <$H.MAGICLEVEL(<$ATTINFO_SKILLID>)> 1 -2 4
#elseact
T.MagicFire <$ATTINFO_SKILLID> <$MAGICLEVEL(<$ATTINFO_SKILLID>)> 1 -1 3
; T.MagicFire <$ATTINFO_SKILLID> <$MAGICLEVEL(<$ATTINFO_SKILLID>)> 1 -2 4
#~case
AC专属功能装备来源、物品描述、装备加星、限时武器、个性化释放魔法命令等 ... ... ... ... ... ...
二、增加设置物品描述NPC命令:SetItemDesc 物品ID 描述 0前缀/1中间/2后缀 // 当“描述”为空时将删除对应物品ID的描述;需要客户端配套,仅AC客户端支持该功能!
增加设置物品属性NPC命令:SetEqUIpProp 物品ID 属性类型(1~31) 属性值 过期秒数(可选,默认-1永久,大于0为过期秒数) @过期触发(可选) // 类型对应的属性参考鉴定属性,过期触发QF的[@过期触发]
下方脚本安装前,请参考以下链接设置合理的装备DB
关于新老blue引擎极品提示及各类通知触发的解答。HintItemList RareItem
https://www.BLUEM2.cn/thread-672-1-1.html
;AC反外挂购买联系:BLUE引擎代理-完美,QQ29240180,网站:Www.BlueM2.Cn
;★BLUE引擎AC封挂交流群★:523603356
; QM
[@OnStart]
#act
; 服务器启动时,加载物品描述数据并设置后台自动保存
; 注意“H_ItemPreDesc”(前缀)、“H_ItemMidDesc”(中间)、“H_ItemSufDesc”(后缀)为系统保留标识,请勿占用
; 注意引擎开启后,不要去读写下列数据文件,防止文件占用冲突导致存取失败
Hash H_ItemPreDesc Load ..\ItemData\ItemPreDesc.csv
Hash H_ItemPreDesc BGSave ..\ItemData\ItemPreDesc.csv
Hash H_ItemMidDesc Load ..\ItemData\ItemMidDesc.csv
Hash H_ItemMidDesc BGSave ..\ItemData\ItemMidDesc.csv
Hash H_ItemSufDesc Load ..\ItemData\ItemSufDesc.csv
Hash H_ItemSufDesc BGSave ..\ItemData\ItemSufDesc.csv
; 服务器启动时,加载装备属性数据并设置后台自动保存
; 注意“H_ItemProp_1~31”为系统保留标识,请勿占用
; 注意引擎开启后,不要去读写下列数据文件,防止文件占用冲突导致存取失败
#for (M_cur = 1, M_cur < 32, M_cur + 1)
#if
#act
; <$STR(M_cur)>等同于<$LoopCursor>
Hash H_ItemProp_<$STR(M_cur)> Load ..\ItemData\ItemProp_<$STR(M_cur)>.csv
Hash H_ItemProp_<$LoopCursor> BGSave ..\ItemData\ItemProp_<$LoopCursor>.csv
#~for
; QF
[@ProduceItem]
#if
CompVal <$PARAM(3)> = 限时武器
#act
SetItemDesc <$PARAM(1)> "<u~~ui_6|I=120 N=6 X=-39 Y=-70 W=3 H=3 F=150><u~~ui_6|I=130 N=6 X=-12 Y=-12 W=3 H=3 F=150><u~~ui_6|I=130 N=6 X=5 Y=-12 W=3 H=3 F=150><u~~ui_6|I=130 N=6 X=22 Y=-12 W=3 H=3 F=150><u~~ui_6|I=130 N=6 X=39 Y=-12 W=3 H=3 F=150><u~~ui_6|I=130 N=6 X=56 Y=-12 W=3 H=3 F=150><u~~ui_6|I=130 N=6 X=73 Y=-12 W=3 H=3 F=150><u~~ui_6|I=180 N=10 X=43 Y=-12 W=3 H=3 F=150><u~~ui_6|I=170 N=10 X=85 Y=-12 W=3 H=3 F=150>" 0
;红色龙特效+蓝色六颗星效果+永久回收限时奖励图标
FormatStr "<u~~ui_6|I=80 N=15 X=-5 Y=-5 W=134 H=21 F=100>\<来源:%s|c=$00FF00>\<地图:%s|c=$00FFFF>\<产者:%s|c=$00FF00>\<物主:%s|c=$00FFFF>\<时间:|c=$00FF00>%s" <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)>
;装备来源+动图效果
SetItemDesc <$PARAM(1)> <$CALCRESULT> 2
#if
CompVal <$PARAM(3)> = 限时武器
#act
SetEquipProp <$PARAM(1)> 1 50 3600 @限时属性过期
SetEquipProp <$PARAM(1)> 2 50 3600
SetEquipProp <$PARAM(1)> 3 50 3600
SetEquipProp <$PARAM(1)> 9 9 3600
FormatStr "\-\<u~~ui_6|I=100 N=15 X=-5 Y=-5 W=134 H=21 F=100>\%-13s <剩余|c=clLime>%s\%-13s <剩余|c=clLime>%s\%-13s <剩余|c=clLime>%s\%-27s <剩余|c=clLime>%s" "攻击 50-50" "<T~<$PARAM(1)>|P=1 c=clLime>" "魔法 50-50" "<T~<$PARAM(1)>|P=2 c=clLime>" "道术 50-50" "<T~<$PARAM(1)>|P=3 c=clLime>" "<幸运 +9|c=$00EFD68C>" "<T~<$PARAM(1)>|P=9 c=clLime>\"
;限时属性+动图效果
SetItemDesc <$PARAM(1)> <$CALCRESULT> 1
#if
CompVal <$PARAM(3)> = 加星武器
#act
SetItemDesc <$PARAM(1)> "<u~~ui_6|I=310 N=11 X=-52 Y=-80 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=-15 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=2 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=19 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=36 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=53 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=70 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=87 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=104 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=121 Y=-17 W=3 H=3 F=150>" 0
;七彩老虎炫光+金色九颗星效果
FormatStr "<u~~ui_6|I=80 N=15 X=-5 Y=-5 W=134 H=21 F=100>\<来源:%s|c=$00FF00>\<地图:%s|c=$00FFFF>\<产者:%s|c=$00FF00>\<物主:%s|c=$00FFFF>\<时间:|c=$00FF00>%s" <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)>
;装备来源+动图效果
SetItemDesc <$PARAM(1)> "<$CALCRESULT>\-\<u~~ui_6|I=190 N=12 X=-2 Y=-5 W=171 H=28 F=150>\<BUFF:|c=$00FFFF><[*BLUE引擎*技丶血盾]|c=$FF00FF>\<特效:|c=$00FFFF><生命值额外暴涨|c=$00FF00><22%|c=$FFFF00>\<神技:|c=$00FFFF><HP到10%时提供100W护盾,|c=$00FF00><CD60s|c=$FFFF00>\-\<u~~ui_6|I=210 N=12 X=-2 Y=-5 W=171 H=28 F=150>\<额外道术攻击:|c=$FFFF00><+16570|c=$00FF00>\<额外魔法躲避:|c=$FFFF00><+10%提升麻痹免疫几率|c=$00FF00>\<灵魂火符技能:|c=$FFFF00><*BLUE引擎*符数量+1,无CD|c=$FF00FF>" 2
;专属BUFF+鉴定属性+神秘属性
#if
CompVal <$PARAM(3)> = 专属武器
#act
SetItemDesc <$PARAM(1)> "<u~~ui_6|I=300 N=8 X=30 Y=-35 W=3 H=3 F=150><u~~ui_6|I=130 N=6 X=-12 Y=-12 W=3 H=3 F=150><u~~ui_6|I=130 N=6 X=5 Y=-12 W=3 H=3 F=150><u~~ui_6|I=130 N=6 X=22 Y=-12 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=39 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=56 Y=-17 W=3 H=3 F=150><u~~ui_6|I=140 N=10 X=73 Y=-17 W=3 H=3 F=150><u~~ui_6|I=160 N=10 X=90 Y=8 W=3 H=3 F=150>" 0
;蓝色炫光+蓝色三颗星+金色三颗星
FormatStr "<u~~ui_6|I=80 N=15 X=-5 Y=-5 W=134 H=21 F=100>\<来源:%s|c=$00FF00>\<地图:%s|c=$00FFFF>\<产者:%s|c=$00FF00>\<物主:%s|c=$00FFFF>\<时间:|c=$00FF00>%s" <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)>
;装备来源+动图效果
SetItemDesc <$PARAM(1)> "<$CALCRESULT>\-\<u~~ui_6|I=230 N=12 X=-2 Y=-5 W=171 H=28 F=150>\<失传已久的顶阶神器:|c=$00FFFF><[专属丶无情斩]|c=$FFFF00>\<击杀高等级敌人,|c=$FFFF00><将随机解密一条专属|c=$00FFFF>\<死亡或下线专属消失,|c=$00FFFF><无限制击杀*BLUE引擎*|c=$FF00FF>\-\<u~~ui_6|I=267 N=1 X=0 Y=-5 W=28 H=28><青丘狐·攻击|c=$FF00FF> 刀刀切割额外 <+8W|c=$00FF00>\<u~~ui_6|I=269 N=1 X=0 Y=-5 W=28 H=28><天禄兽·爆率|c=$FF00FF> 打宝爆率 <+10%|c=$00FF00>\<u~~ui_6|I=258 N=1 X=0 Y=-5 W=28 H=28><石中猴·加伤|c=$FF00FF> 最终伤害 <+5%|c=$00FF00>\<u~~ui_6|I=253 N=1 X=0 Y=-5 W=28 H=28><飞廉兽·生命|c=$FF00FF> 每秒回血 <+3%|c=$00FF00>\<u~~ui_6|I=262 N=1 X=0 Y=-5 W=28 H=28><室火猪·生命|c=$FF00FF> 受到攻击回血 <100W|c=$00FF00>\<u~~ui_6|I=266 N=1 X=0 Y=-5 W=28 H=28><三足鸟·物防|c=$FF00FF> 固定防御减伤 <+20%|c=$00FF00>\<u~~ui_6|I=272 N=1 X=0 Y=-5 W=28 H=28><庚金虎·破防|c=$FF00FF> 物理魔法穿透 <+20%|c=$00FF00>\<u~~ui_6|I=268 N=1 X=0 Y=-5 W=28 H=28><待解封·神秘|c=$FF00FF> 杀敌后解密 <最多8条|c=$00FF00>" 2
;专属BUFF+鉴定属性+神秘属性
[@限时属性过期]
#act
Mov S_tmp <$HASH(H_ItemMidDesc)<$PARAM(1)>>
SetEquipProp <$PARAM(1)> 1 ""
RegExReplace S_tmp "攻击 [0-9]+.*?\\" ""
RegExReplace S_tmp "魔法 [0-9]+.*?\\" ""
RegExReplace S_tmp "道术 [0-9]+.*?\\" ""
RegExReplace S_tmp "<幸运 \+[0-9]*.*?\\" ""
INC S_tmp 限时属性已过期\
;限时属性到期清理属性倒计时提示
SetItemDesc <$PARAM(1)> <$STR(S_tmp)> 1
下述的几张效果图配合上面的脚本,以及引擎包内~ui_6.wzl wzx补丁,即可快速呈现效果。
AC专属功能装备来源、物品描述、装备加星、限时武器、个性化释放魔法命令等 ... ... ... ... ... ...
AC专属功能装备来源、物品描述、装备加星、限时武器、个性化释放魔法命令等 ... ... ... ... ... ...
AC专属功能装备来源、物品描述、装备加星、限时武器、个性化释放魔法命令等 ... ... ... ... ... ...
支持描述动态修改图片
; 解说的文字支持以下格式<主宰法靴|C=16777215 S=11 B=Bold>支持\换行,\必须在>后比如<主宰法靴|C=16777215 S=11 B=Bold>\换行
; C = 颜色 cl开头的颜色单词或纯数字颜色
; S = 文字大小
; ,调用magic.wzl索引位置170的图片,可选项:N=帧数,X=偏移X,Y=偏移Y,W=指定宽度,H=指定高度
; u~|I=ui1.wzl里图片序号,【u~后面不跟文件目录,默认读取UI1】如要读其他文件内的图片即u~magic|I=170,也可以写u~ui1|I=170,
; N=帧数,既图片数量,X=偏移X,Y=偏移Y,W=指定宽度,H=指定高度
举例1:
FormatStr "来源:<%s|c=clRed>" <$PARAM(0)>
举例2:
FormatStr "\来源:<%s|c=clRed>" <$PARAM(0)>
;将直接搜索客户端UI1=1345的图片
;最终展现结果
;★来源:怪物掉落
=========================================================
对英雄执行 h.SetItemDesc 和h.SetEquipProp均*BLUE引擎*h.
举列1:
获取物品来源
物品表的RareItem细分:1=怪物掉落通知 2=拾取触发 4=商铺购买通知 8=人物丢弃/死亡掉落触发 16=队伍拾取通知 32=NPC商店买/卖商品触发 64=仓库存/取物品触发 128=物品来源 要开启多项,将前面的值相加即可
首先物品item数据表中的物品,RareItem字段需要包含128,比如要支持上面所有的功能就1+2+4+8+16+32+64+128=255 RareItem字段写255即可
获得新物品时临时传输变量:
$PARAM(0) // 来源
$PARAM(1) // 物品ID
$PARAM(2) // 时间
$PARAM(3) // 物品名
$PARAM(4) // 地图
$PARAM(5) // 出产者
$PARAM(6) // 物主
$PARAM(7) // 是否装备类物品(0/1)
$PARAM(8) // 物品的looks
; QM添加【注意:ItemDesc.csv 名称不可更改,物品来源系统文件.合区工具可以合】
[@OnStart]
#act
; 服务器启动时,加载物品描述数据并设置后台自动保存
; 注意“H_ItemDesc”为系统保留标识,请勿占用
Hash H_ItemPreDesc Load ..\ItemData\ItemPreDesc.csv
Hash H_ItemPreDesc BGSave ..\ItemData\ItemPreDesc.csv
Hash H_ItemMidDesc Load ..\ItemData\ItemMidDesc.csv
Hash H_ItemMidDesc BGSave ..\ItemData\ItemMidDesc.csv
Hash H_ItemSufDesc Load ..\ItemData\ItemSufDesc.csv
Hash H_ItemSufDesc BGSave ..\ItemData\ItemSufDesc.csv
; QF
[@ProduceItem]
#act
; 注意物品的描述文字里不要带逗号“,”
; <字符串|c=clRed>,“字符串”是红色,没有在尖括号内的字符为普通白色 c= 这个是颜色代码 帮助说明查找
FormatStr "来源:<%s|c=clRed>\地图:<%s|c=$4AD663>\产者:<%s|c=$E9A000>\<物主:|c=clSkyBlue><%s|c=$5CF4FF>\<时间:%s|c=clLime>" <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)>
; 设置此物品ID的附加描述
SetItemDesc <$PARAM(1)> <$CALCRESULT> 2
----------------------------
此时拾取RareItem字段需要包含128的装备,就会展示如下属性
来源:
地图:
产者:
物主:
时间:
==============================================================================
举列2:
物品附加属性【注意该属性不在装备面板直接显示,属于隐藏属性】
!!!!!!!!不要给非装备类setEquipProp!!!!!!!!!注意先判断是不是装备在执行SetEquipProp附加属性
; QM增加以下系统列表【注意:H_ItemProp_1.csv到H_ItemProp_36.csv 名称不可更改,物品附加属性系统文件.合区工具可以合】
[@OnStart]
; 服务器启动时,加载物品属性数据并设置后台自动保存
; 注意“H_ItemProp_1~31”为系统保留标识,请勿占用
#for (M_cur = 1, M_cur < 32, M_cur + 1)
#if
#act
; <$STR(M_cur)>等同于<$LoopCursor>
Hash H_ItemProp_<$STR(M_cur)> Load ..\ItemData\ItemProp_<$STR(M_cur)>.csv
Hash H_ItemProp_<$LoopCursor> BGSave ..\ItemData\ItemProp_<$LoopCursor>.csv
#~for
; 任意脚本,要客户端看到属性值,需结合SetItemDesc使用
增加设置物品属性NPC命令:SetEquipProp 物品ID 属性类型(1~31) 属性值 过期秒数(可选,默认-1永久,大于0为过期秒数) @过期触发(可选) // 类型对应的属性参考鉴定属性,过期触发QF的[@过期触发],类似Hash的Set子命令
第一步
;首先获取物品的来源信息
(H_ItemPreDesc)为固定的物品描述前缀
(H_ItemMidDesc)为固定的物品描述中间
(H_ItemSufDesc)为固定的物品描述后缀
比如我们写在中间
#ACT
Mov S物品来源 <$HASH(H_ItemMidDesc)<$PARAM(0)>>
;使用嵌套变量<$HASH(H_ItemMidDesc)物品Id>获得所有物品备注信息
;注意这里的888物品ID比如带在身上的可以使用GetEquipProps 命令去获取该物品的ID获取后在<$PARAM(0)>
也可以在拾取该装备时,在拾取触发里获取该装备的物品ID <$PARAM(0)> 即可直接嵌套变量写: <$HASH(H_ItemMidDesc)<$PARAM(0)>>
;如果知道物品ID可以直接写 Mov S物品来源 <$HASH(H_ItemMidDesc)888>
;比如我要给物品ID 888的装备 属性位置1是攻击 2是道术 3是魔法 各加上 100点 并在装备上显示
SetEquipProp <$PARAM(0)> 1 100
SetEquipProp <$PARAM(0)> 2 100
SetEquipProp <$PARAM(0)> 3 100
第二步 分割符号
#if
True
#Act
Inc S物品来源 \<----------------------------------|c=clskyblue>\附加属性\
第三步
;检测当前装备是否有附加攻击属性如果有则附加装备备注信息即鉴定属性位置1的属性值
#if
Compval <$HASH(H_ItemProp_1)<$PARAM(0)>> > 0 Int
#Act
Inc S物品来源 附加攻击:<$HASH(H_ItemProp_1)<$PARAM(0)>>\
;检测当前武器是否有附加魔法属性如果有则附加装备备注信息即鉴定属性位置2的属性值
#if
Compval <$HASH(H_ItemProp_2)<$PARAM(0)>> > 0 Int
#Act
Inc S物品来源 附加魔法:<$HASH(H_ItemProp_2)<$PARAM(0)>>\
;检测当前武器是否有附加道术属性如果有则附加装备备注信息即鉴定属性位置3的属性值
#if
Compval <$HASH(H_ItemProp_3)<$PARAM(0)>> > 0 Int
#Act
Inc S物品来源 附加魔法:<$HASH(H_ItemProp_3)<$PARAM(0)>>\
#if
True
#Act
;显示所有附加信息到装备上
SetItemDesc <$PARAM(0)> <$Str(S物品来源)> 1
----------------------------
此时装备就会展示如下属性
来源:
地图:
产者:
物主:
时间:
----------------------------------
附加属性
附加攻击:100
附加魔法:100
附加道术:100
==============================================================================
举列3:
物品已经拥有了来源信息,以及附加属性,此时需要刷新附加属性
第一步
;首先获取物品的来源信息
(H_ItemPreDesc)为固定的物品描述前缀
(H_ItemMidDesc)为固定的物品描述中间
(H_ItemSufDesc)为固定的物品描述后缀
#ACT
Mov S物品来源 <$HASH(H_ItemMidDesc)<$PARAM(0)>>
;此时我用中间描述的来源信息 已经包含附加属性,我们需要先把附加属性给删掉 从新附加
;使用该命令StringReplace S1 $STR(S2) $STR(S3) //替换字符串,S1源字符串,搜索S2->替换为S3
StringReplace S物品来源 \<----------------------------------|c=clskyblue> #
;使用该命令StrTok S1 S2 |, 以“|”为分隔符,分解字符串,S1源字符串,S2存放分解子字符串,S1存放分解剩余部分;第三参数为空代表空格,“#9”代表Tab;第一、二参数支持S,A变量
StrTok S物品来源 S物品来源分解 #
;此时(S物品来源分解)变量就只剩余物品的来源信息
;要新加新的附加属性就可以直接加即可
SetEquipProp <$PARAM(0)> 1 100
SetEquipProp <$PARAM(0)> 2 100
SetEquipProp <$PARAM(0)> 3 100
;分割符号
#if
True
#Act
Inc S物品来源分解 \<----------------------------------|c=clskyblue>\附加属性\
;检测当前装备是否有附加攻击属性如果有则附加装备备注信息即鉴定属性位置1的属性值
#if
Compval <$HASH(H_ItemProp_1)<$PARAM(0)>> > 0 Int
#Act
Inc S物品来源分解 附加攻击:<$HASH(H_ItemProp_1)<$PARAM(0)>>\
;检测当前武器是否有附加魔法属性如果有则附加装备备注信息即鉴定属性位置2的属性值
#if
Compval <$HASH(H_ItemProp_2)<$PARAM(0)>> > 0 Int
#Act
Inc S物品来源分解 附加魔法:<$HASH(H_ItemProp_2)<$PARAM(0)>>\
;检测当前武器是否有附加道术属性如果有则附加装备备注信息即鉴定属性位置3的属性值
#if
Compval <$HASH(H_ItemProp_3)<$PARAM(0)>> > 0 Int
#Act
Inc S物品来源分解 附加魔法:<$HASH(H_ItemProp_3)<$PARAM(0)>>\
#if
True
#Act
;显示所有附加信息到装备上
SetItemDesc <$PARAM(0)> <$Str(S物品来源分解)> 1
----------------------------
此时装备就会展示如下属性
来源:
地图:
产者:
物主:
时间:
----------------------------------
附加属性
附加攻击:100
附加魔法:100
附加道术:100
==============================================================================
举列4:
将物品的附加属性作为临时属性,到期后自动消失【也可以做为限时装备】
首先获取物品的ID来源,获取的方式有很多种,GIVE 拾取 GetEquipProps 等
比如限时攻击
NPC命令:SetEquipProp 物品ID 属性类型(1~31) 属性值 过期秒数(可选,默认-1永久,大于0为过期秒数) @过期触发(可选) // 类型对应的属性参考鉴定属性,过期触发QF的[@过期触发],类似Hash的Set子命令
#if
#act
; 设置装备攻击、魔法、道术都+1万,且为不同的过期时间
SetEquipProp <$PARAM(1)> 1 10000 10 @属性过期_AC
SetEquipProp <$PARAM(1)> 2 10000 15 @属性过期_MC
SetEquipProp <$PARAM(1)> 3 10000 20 @属性过期_SC
; 设置属性描述
; 每种属性的倒计时格式:,其中:T~装备ID,P=是装备属性类型,仅用于物品描述中
FormatStr "%-13s <剩余|c=clLime>%s\%-13s <剩余|c=clLime>%s\%-13s <剩余|c=clLime>%s" "攻击 10000" "<t~|P=1 c=clLime>" "魔法 10000" "<t~|P=2 c=clLime>" "道术 10000" "<t~|P=3 c=clLime>\"
; 设置此物品在中间位置的属性描述
SetItemDesc <$PARAM(1)> <$CALCRESULT> 1
;也可以用HASH命令获取该装备的过期时间
Hash H_ItemProp_1 GetE 物品ID M1
sendmsg 0 攻击【<$HASH(H_ItemProp_1)物品ID>】将于<$STR(M1)>秒过期
; QF下
[@属性过期_AC]
#act
; 先获取物品属性描述到S_tmp
Mov S_tmp <$HASH(H_ItemMidDesc)<$PARAM(1)>>
; 然后清理属性
SetEquipProp <$PARAM(1)> 1 ""
; 去掉对应的属性描述 // 比如去掉:“攻击 12345 <剩余|c=clLime>|P=1 c=clLime>\”
RegExReplace S_tmp "攻击 [0-9]+.*?\\" ""
; 更新修改后的属性描述
SetItemDesc <$PARAM(1)> <$STR(S_tmp)> 1
[@属性过期_MC]
#act
Mov S_tmp <$HASH(H_ItemSufDesc)<$PARAM(1)>>
SetEquipProp <$PARAM(1)> 2 ""
RegExReplace S_tmp "魔法 [0-9]+.*?\\" ""
SetItemDesc <$PARAM(1)> <$STR(S_tmp)> 1
[@属性过期_SC]
#act
Mov S_tmp <$HASH(H_ItemSufDesc)<$PARAM(1)>>
SetEquipProp <$PARAM(1)> 3 ""
; 去掉前两个汉字包含:攻击|魔法|道术...的属性描述
RegExReplace S_tmp "(攻击|魔法|道术) [0-9]+.*?\\" ""
SetItemDesc <$PARAM(1)> <$STR(S_tmp)> 1
==============================================================================
举列5:
将特定的物品描述,事先做好一个静态表格,获得物品时直接表格里对应的描述
比如建立一个H_ItemImage变量,表名ItemImage.csv
QM启动加载
[@OnStart]
Hash H_ItemImage Load ..\QuestDiary\ItemData\ItemImage.csv
ItemImage.csv 事先设置好各种装备对应名称的特效,描述等,这里的装备可以以装备名称,也可以自己定特效属性编号
屠龙,,-1,,
开天,,-1,,
; QF 产出装备时将触发
[@ProduceItem]
#if
HashExists H_ItemImage <$param(3)>
;检测静态表内是不是存在这个装备预设特效 $param(3) 为物品名
#act
mov S特效 <$HASH(H_ItemImage)<$param(3)>>
;这里的<$param(3)>是获得新物品时临时传输变量:上面有介绍
;有就执行特效获取,在物品来源信息的最后面加上特效介绍
FormatStr "来源:<%s|c=clRed>\地图:<%s|c=$4AD663>\产者:<%s|c=$E9A000>\<物主:|c=clSkyBlue><%s|c=$5CF4FF>\<时间:%s|c=clLime>"\特效介绍%s <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)> <$STR(S特效)>
setitemdesc <$PARAM(1)> <$CALCRESULT> 1
</t~</t~</t~
|
|