常用规则-事件监听

▲ 事件在执行的过程中,有时需要接入其他系统如梳头修面、疗伤、战斗),此时事件窗口将暂时隐藏,直到对应的其他系统的内容执行完毕,才会继续执行事件链。
因此,在接入其他系统时,事件系统会对指定事件进行监听,便于之后执行该事件。
该部分关于监听的内容,在调用方法时,其中一个参数必须填入事件的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);
              • 效果为展示完人物获取界面后,将弹出被监听的事件,如果不需要监听任何事件,填写””即可(即填入一对无包含内容的英文引号)。

              常用规则-事件监听》有1个想法

              发表回复

              您的电子邮箱地址不会被公开。 必填项已用 * 标注