传奇新BLUE引擎代码更新:多种触发QF及setup触发总开关详解

来源: 作者: 点击:

传奇新BLUE引擎的更新带来了多种触发QF(QuestFunction)的功能,以及setup触发总开关的设置。本文将详细介绍这些新特性,帮助开发者更好地利用引擎功能。

新增加的QF触发:

被人顶号触发:[@KickDoubleConnect]
加入组队触发:[@JoinGroup]
离开组队触发:[@LeaveGroup]
英雄穿戴触发:[@HeroTakeOn+位置]、[@HeroTakeOff+位置]
假人触发:[@PickupItem]、[@HeroLogin]
使用聚灵珠触发:[@OnUseExpBall]、[@OnHeroUseExpBall]
释放魔法触发:[@MagSelfFuncXX]、[@MagTagFuncXX]
SetAbility赋值触发:[@SetAbility_XX]、[@ResetAbility_XX]
英雄支持使用StdMode=31的非药品类物品:[@StdModeFuncXX]
setup触发总开关:

在setup.txt中,可以通过设置AttackTrigger来控制触发QF的[@Attack]。默认值为0,表示关闭触发;设置为1,表示开启触发。

QFunction触发示例:

[@Attack]触发:当人或随从攻击指定怪物时触发。

[@Attack]
#IF
COMPVAL<$TARINFO_FNAME>=蜈蚣
COMPVAL<$T.HP>>50
#ACT
T.HUMANHP-50
SENDMSG7目标【<$TARINFO_NAME>】血量<$T.HP>
Copy
[@UnderAttack]触发:当人或随从或列表指定怪物攻击时触发。

[@UnderAttack]
#IF
COMPVAL<$ATTINFO_FNAME>=蜈蚣
#ACT
HUMANHP-50
SENDMSG7你的随从<$ATTINFO_NAME>正在攻击<$TARINFO_NAME>
Copy
其他触发功能:

商铺购买触发:[@shopping]
打开箱子触发:[@OpenTreasureChest]
拾取物品触发:[@PickupItem]
丢弃物品触发:[@DropItem]
鉴定装备成功触发:[@EvalEquipSucceed]
淬炼极品属性扩展:[@RefineItem_Succeed]
行会相关触发:[@BuildGuild]、[@JoinGuild]、[@LeaveGuild]、[@KickOutOfGuild]、[@DismissGuild]
针对目标或全服或地图触发:PLAYEFFECT扩展、GOTOLABEL模式
原有功能补充说明:SENDMSGNN文字FFBB30@本NPC触发
扩展Take命令:支持GetEquipProps、DLGITEM系列NPC命令的操作
QM增加服务器关闭时的触发:@OnStop、@OnStart
宝箱物品几率优化:最大支持1000万,并增加错误物品提示
改名触发:[@chgname_fail_name_used]
聊天信息显示与触发:ViewWhisper设置、[@OnMonitorChatMessage] 

BLUEM2引擎新增加多种触发QM增加服务器关闭时的触发@OnStop和@OnStart是一对触发标签31类双击触发物品突破255限制@StdModeFuncXX可以超过255setup.txtAttackTrigger=0//攻触发总开关默认0关闭1开启触发QF的[@Attack]

QFunction新增触发如下:
被人顶号触发:[@KickDoubleConnect]
加入组队触发:[@JoinGroup]
离开组队触发:[@LeaveGroup]
英雄穿戴触发:[@HeroTakeOn+位置][@HeroTakeOff+位置]//英雄穿戴/取下装备触发,参考人物的穿戴触发
假人可以触发:[@PickupItem]、[@HeroLogin]
使用聚灵珠触:[@OnUseExpBall][@OnHeroUseExpBall]<$PARAM(1)>:物品名<$PARAM(2)>:价格<$PARAM(3)>:价格类型(0-4)
释放魔法触发:[@MagSelfFuncXX]和[@MagTagFuncXX]支持英雄,如果<$PARAM(0)>=0表示触发的是玩家,1表示触发的是英雄(执行脚本主体仍然是英雄主人)
SetAbility赋值时会触发QF的[@SetAbility_XX],属性过期后将触发[@ResetAbility_XX]支持英雄,如果<$PARAM(0)>=0表示触发的是玩家,1表示触发的是英雄(执行脚本主体仍然是英雄主人)
英雄支持使用StdMode=31的非药品类物品(配套客户端更新),[@StdModeFuncXX]中如果<$PARAM(0)>=0表示使用物品的是玩家,1表示是英雄(执行脚本主体仍然是英雄主人)
【31类双击触发物品】突破255限制@StdModeFuncXX,XX可以超过255,公式:XX=Reserved*256+AniCount

!setup.txtAttackTrigger=0//攻触发总开关,默认0关闭,1开启触发QF的[@Attack]
怪物表monster(原monster)表字段说明:HitTrigger攻触发(0~1),被玩家攻是否触发@Attack、@UsderAttack字段
攻目标触发:[@Attack]//下列为[@Attack][@UnderAttack]攻触发字段的【专属】变量,不能用于其他字段,否则引擎会发生崩溃
<$TARINFO_RACE>//目标Race
<$TARINFO_ISHERO>//目标是否英雄{'0''1'}
<$TARINFO_NAME>//目标名称
<$TARINFO_FNAME>//目标全名
<$ATTINFO_SKILLID>//攻使用技能ID
<$ATTINFO_RACE>//攻者Race
<$ATTINFO_ISHERO>//攻者是否英雄
<$ATTINFO_NAME>//攻者名称
<$ATTINFO_FNAME>//攻者全名

//目标变量
<$T.CURRENTMAPDESC>
<$T.CURRENTMAP>
<$T.CURRENTX>
<$T.CURRENTY>
<$T.USERNAME>
<$T.MONKILLER>
<$T.KILLER>
<$T.LEVEL>
<$T.HP>
<$T.MAXHP>
<$T.MP>
<$T.MAXMP>
<$T.AC>
<$T.MAXAC>
<$T.MAC>
<$T.MAXMAC>
<$T.DC>
<$T.MAXDC>
<$T.MC>
<$T.MAXMC>
<$T.SC>
<$T.MAXSC>
<$T.HIT>
<$T.SPD>

//QF例子
[@Attack]//人或随从攻列表指定怪物,会触发
#IF
COMPVAL<$TARINFO_FNAME>=蜈蚣
COMPVAL<$T.HP>>50
#ACT
T.HUMANHP-50
SENDMSG7目标【<$TARINFO_NAME>】血量<$T.HP>

#IF
COMPVAL<$ATTINFO_RACE>!1//Race=1是玩家,这里就是非玩家(即随从)
#ACT
SENDMSG7你的随从<$ATTINFO_NAME>正在攻<$TARINFO_NAME>

[@UnderAttack]//被人或随从或列表指定怪物攻,会触发
#IF
COMPVAL<$ATTINFO_FNAME>=蜈蚣//蜈蚣打随从或自己
#ACT
HUMANHP-50//主人扣血

#IF
COMPVAL<$ATTINFO_MNAME>!""//攻者主人名称不为空
#ACT
SENDMSG7【<$ATTINFO_MNAME>】的随从<$ATTINFO_NAME>正在攻你
#ELSEIF
COMPVAL<$TARINFO_RACE>!1//自己的随从
#ACT
SENDMSG7【<$ATTINFO_NAME>】正在攻你的随从【<$TARINFO_NAME>】
#ELSEACT
SENDMSG7【<$ATTINFO_NAME>】正在攻你

以下触发都需要达到一个条件:物品都需要存在于HintItemList.txt文本中

商铺购买触发:[@shopping]//商铺购买物品,相关临时变量物品名称:<$PARAM(1)>、价格:<$PARAM(2)>:外观:<$PARAM(3)>、购买数量:<$PARAM(4)>
打开箱子触发:[@OpenTreasureChest]//开箱子获得物品,相关临时变量<$PARAM(1)>:物品名<$PARAM(2)>:价格<$PARAM(3)>:Looks
拾取物品触发:[@PickupItem]//拾取物品,<$PARAM(0)>=0非背包掉落,1背包掉落,2、挖取<$PARAM(1)>:物品名<$PARAM(2)>:Looks<$PARAM(3)>:角色名<$PARAM(4)>:地图名<$PARAM(5)>:X坐标<$PARAM(6)>:Y坐标<$PARAM(7)>:物品ID:<$PARAM(9)>:是否装备类(0~1)
丢弃物品触发:[@DropItem]//丢弃物品,相关临时变量<$PARAM(1)>:物品名<$PARAM(2)>:Looks<$PARAM(3)>:角色名<$PARAM(4)>:地图名<$PARAM(5)>:X坐标<$PARAM(6)>:Y坐标<$PARAM(7)>:物品ID
鉴定装备成功:[@EvalEquipSucceed]//可临时使用GetEquipProps、UpgradeDlgItem(位置10000)等命令,注意用法,防止死循环
淬炼极品属性扩展:普通属性配置(0~25)|鉴定属性配置(0~19)(扩展部分涉及二进制计算,如若不懂建议别用),成功触发QF的[@RefineItem_Succeed]可临时使用GetEquipProps、UpgradeDlgItem等...

[@KillPlayXX][@KillPlayMonXX]触发时,可以使用KILLERTYPE区分杀怪/人的主体

[@KillPlay1]
#IF
KILLERTYPE=1//1人物,2英雄,3宝宝
#ACT
SENDMSG5人物干掉

行会相关触发:

[@BuildGuild]//创建行会:<$PARAM(0)>行会名
[@JoinGuild]//加入行会:<$PARAM(0)>行会名
[@LeaveGuild]//退出行会:<$PARAM(0)>行会名
[@KickOutOfGuild]//踢出行会:<$PARAM(0)>行会名
[@DismissGuild]//解散行会:<$PARAM(0)>行会名

针对目标或全服或地图触发:

PLAYEFFECT扩展修改://需要M2/客户端配套
--------------------------------------
PLAYEFFECTWIL名称/X/Y起始图片帧数间隔循环次数声音声音循环(0/1)对象(""/All/Guild/地图名)特效模式(0/1)
注意:WIL名称XY->WIL名称/X/Y;特效模式:0普通,1技能特效模式(默认);可以利用微端模式下的~cui.txt自定义资源

//X=-1则跟随人物坐标播放,否则固定坐标;对象:空字符自己,all在线所有人guild行会在线的人地图给某制定地图发送
//执行效果并触发当前脚本的[@OnPlayEffect]
例:
<播放特效/@PlayEffect>\
[@PlayEffect]
#act
PLAYEFFECTPrguse2/1/111015801Wav\powerup.wav0""1
[@OnPlayEffect]
#act
SENDMSG3播放了一个动画效果

GOTOLABEL模式(1234)参数2//扩展
模式=1小组成员触发模式=2行会成员触发
模式=3当前地图的人物触发模式=4以自己坐标为中心指定范围人物触发

例如:

#IF
#ACT
GOTO@队伍1

[@队伍]
#IF
#ACT
CHANGEATTACKMODE1
#SAY
队伍中有人为您开启了【编组模式】!

原有功能补充说明:SENDMSGNN文字FFBB30@本NPC触发//30秒后执行[@本NPC触发],注意次时间内NPC不能消失或释放

扩展Take命令,第5参数为触发的字段,非空时物品会临时放在自定装备框,$PARAM(7)角色名,$PARAM(8)物品名,$PARAM(9)物品ID
触发支持GetEquipProps、DLGITEM系列NPC命令的操作,例如:Take物品名1""0~OnTakeItem

QM增加服务器关闭时的触发@OnStop,和@OnStart是一对触发标签

宝箱物品几率最大支持1000万并优化算法,加载配置时增加错误物品的提示,[@OpenTreasureChest]触发增加<$PARAM(4)>:物品ID(如果有多个物品,指向最后一个物品的ID;给重叠物品不会有物品ID)

改名如果新名字的角色在线,也会触发[@chgname_fail_name_used]

!setup的[server]下ViewWhisper=1时,引擎会显示聊天信息(原默认),可参考:记录聊天日志示例.txt
当ViewWhisper=2时,可触发QChatMission的[@OnMonitorChatMessage],<$CHATMSG>是此字段【专用】获取聊天信息变量,此触发字段禁止使用文本操作,否则将引发引擎崩溃!

[顶部]