▲ 事件在执行的过程中,有时需要接入其他系统(如梳头修面、疗伤、战斗),此时事件窗口将暂时隐藏,直到对应的其他系统的内容执行完毕,才会继续执行事件链。
▲ 因此,在接入其他系统时,事件系统会对指定事件进行监听,便于之后执行该事件。
▲ 该部分关于监听的内容,在调用方法时,其中一个参数必须填入事件的Guid,以下将会介绍几种常用的事件监听:
战斗系统的监听
- 以与指定人物开始战斗为例,所用的方法为EventHelper.StartCombat。
- 该方法在构造时,需要传入的参数为
》》目标角色id;
》》战斗配置 ID,通常调用战斗配置表中的DefKey;
》》战斗结束后的跳转事件Guid;
》》事件链的参数盒子,默认填写ArgBox即可。 - 填写示例如下:
EventHelper.StartCombat(charId,Config.CombatConfig.DefKey.DieNormal,被监听的事件Guid,ArgBox);
(其中charId需要自行指定为有效人物Id)
- 其效果为与指定Id的角色进入死斗,死斗结束后,将执行被监听的事件(通常会在该事件中通过检测战斗结果跳转至不同的事件)。
疗伤驱毒的监听
- 以让指定人物为玩家及同道进行疗伤驱毒为例,所用方法为EventHelper.StartDoctorAction。
- 该方法在构造时,需要传入的参数为
》》医生的角色id;
》》疗伤结束后的跳转事件Guid;
》》事件链的参数盒子,默认填写ArgBox即可。 - 填写示例如下:
EventHelper.StartDoctorAction(charId, 被监听的事件Guid,ArgBox);
(其中charId需要自行指定为有效人物Id)
- 其效果为在关闭疗伤驱毒界面后,将弹出被监听的事件。
梳头修面的监听
- 以让指定人物(cutterId)为另一人物(charId)进行梳头修面为例,所用方法为EventHelper.StartShavingAction。
- 构造方法与前几种类似,填写示例如下
EventHelper.StartShavingAction(cutterCharId,charId, 被监听的事件Guid, ArgBox);
- 其效果为梳头修面结束后,弹出被监听的事件
- (可选择学习)额外地,该系统同时会自动存入梳头修面成功与否的参数,参数名为“ShaveSuccess”,可以通过此参数进行额外判定,示例如下:
bool success = false;
//没有设置梳头修面的结果,说明放弃了梳头修面行为
if(!ArgBox.Get("ShaveSuccess",ref success))
{
EventHelper.ToEvent(放弃梳头事件Guid);
return;
}
ArgBox.Remove<bool>("ShaveSuccess");
//进行洗头修面结果检测,如果成功则前往成功事件,否则前往失败事件
if(success)
EventHelper.ToEvent(梳头成功事件Guid);
else
EventHelper.ToEvent(梳头失败事件Guid);
交换藏书的监听(规则与前几种类似)
- 交换门派藏书,示例如下:
EventHelper.StartExchangeBooksByApprove(charId,事件Guid ,ArgBox);
- 交换私人藏书,示例如下:
EventHelper.StartExchangeBooksByFavor(charId, 事件Guid,ArgBox);
展示道具界面的监听
- 以展示太吾获取的道具为例,所用方法为EventHelper.ShowGetItemPageForItems。
- 该方法在构造时,需要传入的参数为
》》List<(ItemKey,int)> 其中参数为道具Key及其数量;
》》展示结束后跳转事件Guid;
》》事件链的参数盒子,默认填写ArgBox即可。 - 填写示例如下
var taiwu = ArgBox.GetCharacter(EventArgBox.RoleTaiwu);
ItemKey itemkey= EventHelper.AddItemToRole(taiwu,ItemType.Material,Config.Material.DefKey.WoodOuter7,1);
EventHelper.ShowGetItemPageForItems(new List<(ItemKey,int)>(){(itemkey,1)},展示后事件Guid,ArgBox);
先通过其他方法获取Key,随后进行相应的展示。
- 其效果为在展示完道具后,将弹出被监听的事件,如果不需要监听任何事件,填写””即可(即填入一对无包含内容的英文引号)。
展示获取人物界面的监听
- 以展示邀请人物成为同道为例,所用方法为EventHelper.ShowGetItemPageForCharacters。
- 该方法在构造时,需要传入的参数为
》》List<int> 其中参数为角色Id;
》》Bool 是否是村民,true为村民,false为同道;
》》展示结束后跳转事件Guid;
》》事件链的参数盒子,默认填写ArgBox即可。 - 填写示例如下
int charId = -1;
ArgBox.Get("CharacterId",ref charId);
EventHelper.RequestRoleJoinGroup(charId);
EventHelper.ShowGetItemPageForCharacters(new List<int>(){charId},false,"",ArgBox);
- 其效果为展示完人物获取界面后,将弹出被监听的事件,如果不需要监听任何事件,填写””即可(即填入一对无包含内容的英文引号)。