Previous topicNext topic
Help > BLUE引擎2021更新 >
新增加多种触发

功能:

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

例如:

#IF
#ACT
GOTO @队伍 1

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

;======================================================================================================================
原有功能补充说明:SENDMSG NN 文字 FF BB 30 @本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>是此字段【专用】获取聊天信息变量,此触发字段禁止使用文本操作,否则将引发引擎崩溃!
;======================================================================================================================
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表示触发的是英雄(执行脚本主体仍然是英雄主人)

丢弃物品触发:[@DropItem]  //丢弃物品,相关临时变量 <$PARAM(1)>:物品名 <$PARAM(2)>:Looks <$PARAM(3)>:角色名 <$PARAM(4)>:地图名 <$PARAM(5)>:X坐标 <$PARAM(6)>:Y坐标 <$PARAM(7)>:物品ID

人物死亡掉落:[@DroppingItem](物品表的RareItem包含8)注:死亡掉落物品$PARAM(0)=0,手动丢掉物品$PARAM(0)=1  //注建议使用此触发用于丢弃触发!

商店购买触发:[@DealingGoods]  NPC商店买/卖商品之前(物品表的RareItem包含32)

仓库存取触发:[@StorageItem]     NPC仓库存/取物品之前(物品表的RareItem包含64)
====================================================================================================================
注意点:物品表的RareItem细分:
1=怪物掉落通知
2=拾取触发
4=商铺购买通知
8=人物丢弃/死亡掉落触发
16=队伍拾取通知
32=NPC商店买/卖商品触发
64=仓库存/取物品触发,要开启多项,将前面的值相加即可
====================================================================================================================
英雄/人物丢掉或掉落物品之前(物品表的RareItem包含8)将触发QF的[@DroppingItem]  // 禁止实时HardDisk操作
<$PARAM(0)>等于1000   //死亡掉落背包物品
<$PARAM(0)>等于2000   //手动丢弃背包物品
<$PARAM(0)>在0~16之间   //死亡掉落身上装备的位置
<$PARAM(9)>是否装备(0/1)
其他$PARAM(XX)参数同[@DropItem]
====================================================================================================================
例://商店购买
====================================================================================================================
[@DealingGoods] // 如果不需要此功能删除掉QF的[@DealingGoods]字段即可
#IF
CheckLevelEx > 0
#ACT
MOV M48 <$PARAM(7)>

;#if
;CompVal <$PARAM(1)> = 英雄灵魂火符
;#act
;Approve 0
;sendmsg 0 角色名:<$PARAM(3)>、禁止购买:<$PARAM(1)>
;BREAK

#if
CompVal <$PARAM(0)> = 0
#act
INSERTLINE ..\QuestDiary\商店购买.ini 1 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!找【<$PARAM(9)>】、购买:<$PARAM(1)>、单价:<$PARAM(8)>
;sendmsg 0 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!找【<$PARAM(9)>】、购买:<$PARAM(1)>、单价:<$PARAM(8)>

#if
CompVal <$PARAM(0)> = 1
#act
INSERTLINE ..\QuestDiary\商店出售.ini 1 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!找【<$PARAM(9)>】、出售:<$PARAM(1)>、单价:<$PARAM(8)>
;sendmsg 0 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!找【<$PARAM(9)>】、出售:<$PARAM(1)>、单价:<$PARAM(8)>
====================================================================================================================
例://仓库存取
====================================================================================================================
[@StorageItem]        //如果不需要此功能删除掉QF的[@StorageItem]字段即可
#if
CompVal <$PARAM(1)> = 英雄幽灵盾
#act
Approve 0
sendmsg 0 角色名:<$PARAM(3)>、禁止存放:<$PARAM(1)>
BREAK

#if
CompVal <$PARAM(0)> = 0
#act
INSERTLINE ..\QuestDiary\测试.ini 1 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>、存放:<$PARAM(1)>、NPC:<$PARAM(9)>
;sendmsg 0 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>存放:<$PARAM(1)>

#if
CompVal <$PARAM(0)> = 1
#act
ADDLINELIST ..\QuestDiary\测试.txt 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>、取回:<$PARAM(1)>、NPC:<$PARAM(9)>
INSERTLINE ..\QuestDiary\测试.ini 1 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>、取回:<$PARAM(1)>、NPC:<$PARAM(9)>
;sendmsg 0 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>、取回:<$PARAM(1)>
====================================================================================================================
例://死亡掉落或手动丢弃
====================================================================================================================
[@DroppingItem]    //如果不需要此功能删除掉QF的[@DroppingItem]字段即可
#IF
CompVal <$PARAM(0)> = 1000
#ACT
;sendmsg 0 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!死亡掉落装备:【<$PARAM(1)>】
INSERTLINE ..\QuestDiary\死亡掉落.ini 1 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!死亡掉落装备:【<$PARAM(1)>】、物品ID:<$PARAM(7)>、死亡日期:<$TIMESTAMP>
BREAK

#if
CompVal <$PARAM(0)> = 2000
#act
INSERTLINE ..\QuestDiary\丢掉道具.ini 1 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>:、<$PARAM(7)>、手动:<$PARAM(0)>丢弃:<$PARAM(1)>、物品ID:<$PARAM(7)>、丢弃日期:<$TIMESTAMP>
;sendmsg 0 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!丢掉装备:【<$PARAM(1)>】、丢弃日期:<$TIMESTAMP>
BREAK

;======================================================================================================================
!setup.txt AttackTrigger=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
SENDMSG 7 目标【<$TARINFO_NAME>】血量<$T.HP>

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


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

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

人物死亡掉落记录物品(物品表的RareItem包含8)将触发QF的[@DropItem],注:死亡掉落物品$PARAM(0)=0,手动丢掉物品$PARAM(0)=1

===========================================

[@DropItem]  //不建议使用【HardDisk】参考如下
#IF
#ACT
ADDLINELIST ..\QuestDiary\测试.txt 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>:、手动丢弃:<$PARAM(1)>、物品ID:<$PARAM(7)>、丢弃日期:<$TIMESTAMP>
INSERTLINE ..\QuestDiary\测试.ini 1 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>:、手动丢弃:<$PARAM(1)>、物品ID:<$PARAM(7)>、丢弃日期:<$TIMESTAMP>

鉴定装备成功:[@EvalEquipSucceed]  //可临时使用GetEquipProps、UpgradeDlgItem(位置10000)等命令,注意用法,防止死循环

淬炼极品属性扩展:普通属性配置(0~25)|鉴定属性配置(0~19)(扩展部分涉及二进制计算,如若不懂建议别用),成功触发QF的[@RefineItem_Succeed]可临时使用GetEquipProps、UpgradeDlgItem等...

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

[@KillPlay1]
#IF
KILLERTYPE = 1  //1人物,2英雄,3宝宝
#ACT
SENDMSG 5 人物杀死


===========================================

行会相关触发:

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


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

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

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