• QQ:15656018

    工作时间

    周一至周五:9:00-23:00

    周末及节日:9:00-23:00

  • 手机版二维码

    随时手机查素材

    gm下载站
  • 扫描二维码

    加入官方QQ群

    gm下载站
发布资源赚元宝
gm下载站 管理员
  • 未知地域
  • 8857发帖数
  • 8839主题数
  • 0关注数
  • 0粉丝
开通vip会员

[其他资料] [BLUE引擎]传奇版本相关特效补丁功能说明

[复制链接]
gm下载站 发表于 2025-1-4 19:37:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

马上注册,查看更多内容,丰富传奇GM资源等你下载探索。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

相关特效补丁
支持描述动态修改图片<BR>;解说的文字支持以下格式<主宰法靴|C=16777215S=11B=Bold><u~|I=1345>支持\换行,\必须在>后比如<主宰法靴|C=16777215 S= 11B=Bold>\换行<u~|I=1345>
; C = 颜色  cl开头的颜色单词或纯数字颜色
;S=文字大小<BR>;<u~magic|I=170N=8X=70Y=90W=60H=140>,调用magic.wzl索引位置170的图片,可选项:N=帧数,X=偏移X,Y=偏移Y,W=指定宽度,H=指定高度<BR>;u~|I=ui1.wzl里图片序号,[u~后面不跟文件目录,默认读取UI1]如要读其他文件内的图片即u~magic|I=170,也可以写u~ui1|I=170,
;N=帧数,既图片数量,X=偏移X,Y=偏移Y,W=指定宽度,H=指定高度
=========================================================
举例1:
FormatStr"<u~|I=1345>来源:<%s|c=clRed>" <$PARAM(0)>

举例2:
FormatStr "<u~magic|I=170 N=8 X=70 Y=90 W= 60H=140>\来源:<%s|c=clRed>" <$PARAM(0)>
=========================================================
;将直接搜索客户端UI1=1345的图片
;最终展现结果
;★来源:怪物掉落
=========================================================
对英雄执行 h.SetItemDesc 和h.SetEquipProp均需要加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
=========================================================

关于启用物品来源、装备附加注释合区之后错乱的统一解答:
1、老区直接升级新引擎的,如果你老版本的setup,itemnumber没有按照合区工具提示的ID修改,进行正确修改的话。 请使用最新的合区工具,合一个空白区,然后按照提示修改正确的 itemnumber。
2、如果是新版本,新区开区的时候,不是通过引擎原版控制台程序进行数据清空的话。请把底板按照要求重新清空。确保底板setup,itemnumber=1
3、如果是正在开的区,使用新引擎配套的DBServer.exe。提示你物品总数和最大物品ID不一致的情况。方法1:修改setup里的ID大于最大物品ID,方法2:用最新的合区工具,合一个空白区 修改正确的 itemnumber


; 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=1~31>,其中:T~装备ID,P=是装备属性类型,仅用于物品描述中
FormatStr "%-13s <剩余|c=clLime>%s\%-13s <剩余|c=clLime>%s\%-13s <剩余|c=clLime>%s" "攻击 10000" "<T~<$PARAM(1)>|P=1 c=clLime>" "魔法 10000" "<T~<$PARAM(1)>|P=2 c=clLime>" "道术 10000" "<T~<$PARAM(1)>|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><T~54321>|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 事先设置好各种装备对应名称的特效,描述等,这里的装备可以以装备名称,也可以自己定特效属性编号
A 装备名称                 B补丁名称    C -1
=========================================================
屠龙 <u~~TX|I=0 N=8 X=0 Y=0 W=0 H=0> -1
开天 <u~~TX|I=130 N=12 X=0 Y=0 W=0 H=0> -1
=========================================================
[@ProduceItem] //产出或GM制造装备时将触发QF
#IF
COMPVAL <$param(1)> < <$STR(H5)>
#ACT
BREAK

#if
HashExists H_ItemImage <$param(3)>
#act
MOV H5 <$param(1)>
mov S特效 <$HASH(H_ItemImage)<$param(3)>>
FormatStr"来源:<%s|c=clRed>\地图:<%s|c=$4AD663>\出处:<%s|c=$E9A000>\<归属:|c=clSkyBlue><%s|c=$5CF4FF>\<时间:|c=$5CF4FF>%s" <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)>\<$STR(S特效)>
SetItemDesc <$PARAM(1)> <$CALCRESULT> 1
BREAK

#IF
COMPVAL <$param(1)> > <$STR(H5)>
#ACT
MOV H5 <$param(1)>
mov S物品道具 <$HASH(H_ItemImage)<$param(3)>>
FormatStr"来源:<%s|c=clRed>\地图:<%s|c=$4AD663>\出处:<%s|c=$E9A000>\<归属:|c=clSkyBlue><%s|c=$5CF4FF>\<时间:|c=$5CF4FF>%s" <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)>\<$STR(S物品道具)>
SetItemDesc <$PARAM(1)> <$CALCRESULT> 1
BREAK
=========================================================

如果GM在游戏里私下刷装备,也会触发QF那么使用以下脚本可以避免对玩家产生厌恶私下刷装备!

(@@InPutInteger,@@inputstring)
[@main]
<刷装备/@赠送>


[@赠送]
#IF
ISADMIN
#ACT
QUERYVALUE 1 0 14 @检测 朋友越多,快乐越多,千金易得,挚友难求啊!请输入赠送对象名称:
BREAK

[@检测]
#IF
EQUAL S1 <$USERNAME>
#ACT
MessageBox 不能对自己发送赠送。
BREAK
#IF
CHECKONLINE <$STR(S1)>
#SAY
请设置需要赠送的装备名称:比如 屠龙\\
<装备名称/@装备名称>\
#ELSEACT
MessageBox <$STR(S1)>\不在线,你不能赠送!


[@装备名称]
#IF
CHECKONLINE <$STR(S1)>
#ACT
QUERYVALUE 2 0 10 ~赠予 请填写你要赠送[<$STR(S1)>]的[装备]!
BREAK
#ELSEACT
Messagebox 玩家<$STR(S1)>暂时不在线!
break

[~赠予]
#IF
;HashExists H_ItemImage <$param(3)>
CHECKONLINE <$STR(S1)>
#ACT
<$STR(S1)>.GIVE <$STR(S2)>
<$STR(S1)>.SENDMSG 5 你收到了友人赠送的:<$STR(S2)>
SENDMSG 0 <$STR(S1)>收到了友人:<$USERNAME>,赠送的:<$STR(S2)> 246 245
CLOSE
BREAK
#ELSEACT
MessageBox <$STR(S1)>\不在线,你不能赠送!
CLOSE
上传梦想,下载希望,为传奇爱好者添砖加瓦!
世界上能用金钱兑换时间的机会不多,这里就有一个!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
全国统一客服QQ
QQ:15656018

24x7小时免费咨询

  • 官方在线客服

    QQ客服:小西

    点击交谈

    QQ客服:良子

    点击交谈

    QQ客服:闵月

    点击交谈
  • 上海市虹口区海伦中心B座4F4055-4056室

  • 手机查找资源更方便

    手机扫码查看手机版

    手机查找资源更方便

  • 传奇QQ群

    扫一扫关注传奇Q群

    加入传奇QQ群

传奇游戏资源分享基地 gm下载站 ©2010-2024 传奇版本网站传奇游戏源码资源下载中心( 鄂ICP备2024043260号-1 )网站地图