常用规则-物品筛选与人物筛选

    物品筛选

    1. 通过在事件代码OnEventEnter()中,填入物品筛选的相关代码处理,便可使事件窗口在展示时,显示出道具筛选窗口。
    道具筛选窗口
    1. 道具筛选窗口相关代码填写规则:
      》》构造一个道具筛选器默认写法):
    SelectItemFilter filter = new SelectItemFilter();

    》》填写筛选器的相关参数1:筛选规则示例如下

    filter.FilterTemplateId = Config.ItemFilterRules.DefKey.SelectMetalInner;

    根据不同需要,通过改变DefKey.后的引用,可以改变为不同的筛选规则。目前已有的
    DefKey部分列举如下(此处示例引用为选择软铁):
    备注:若不想进行任何筛选,则该行可不填,将取到人物的所有道具

    筛选伏虞剑	SelectFuyuSword
    选择素食	SelectVegetarianFood
    选择荤食	SelectMeatFood
    选择所有食物和茶酒	SelectAllFoodAndTeaWine
    选择硬木	SelectWoodOuter
    选择软木	SelectWoodInner
    选择硬铁	SelectMetalOuter
    选择软铁	SelectMetalInner
    选择硬玉	SelectJadeOuter
    选择软玉	SelectJadeInner
    选择硬布	SelectFabricOuter
    选择软布	SelectFabricInner
    选择腐毒引子	SelectPoisonRotten
    选择幻毒引子	SelectPoisonIllusory
    选择武器	SelectWeapon
    选择可服食道具	SelectSomethingCanEat
    筛选茶	SelectTea
    筛选酒	SelectWine
    筛选毒药	SelectPoisonMedicine
    筛选剑冢碎片	SelectSwordFragments
    筛选西域珍宝	SelectWesternPresent

    》》填写筛选器的相关参数2:选中的物品在ArgBox对应的参数名示例如下

    filter.Key = "MetalKey";

    通过设定参数名,之后可以在参数盒子中取到该值,以便于后续处理。

    》》确定执行相关筛选器的处理:
    >> 选择太吾所持道具(示例如下

    EventHelper.TaiwuSelectItemRequest(ArgBox,filter);

    >> 选择指定人物所持道具(示例如下

    EventHelper.SelectCharacterItemRequest(charId,ArgBox,filter);

    其中charId为指定人物的角色Id,可以根据需要替换。

    》》(可选)为物品筛选指令排除一些个性化的物品:

    >> 排除不可修理的道具

    EventHelper.ExcludeItemsForEventSelectItemData(ArgBox,ItemDisplayDataFilterId. IsItemRepairable);

    >> 排除不可转移的道具

    EventHelper.ExcludeItemsForEventSelectItemData(ArgBox,ItemDisplayDataFilterId. IsItemTransferable);

    >> 排除不可作为礼物的道具

    EventHelper.ExcludeItemsForEventSelectItemData(ArgBox,ItemDisplayDataFilterId. CanItemAsGift);

    》》最终整体示例如下:

    public override void OnEventEnter()
    {
        //TODO
        SelectItemFilter filter = new SelectItemFilter();
        filter.FilterTemplateId = Config.ItemFilterRules.DefKey.SelectMetalInner;
        filter.Key = "MetalKey";
        EventHelper.TaiwuSelectItemRequest(ArgBox,filter);
    }

    所呈现的结果是筛选玩家所持的所有硬木引子。

    1. 道具确认与取消选择
      》》道具确认的处理,对应着编辑器中该事件的第一个选项,具体逻辑通常写在选项代码
      OnSelect()中。

      >> 通常会在此处对选中的道具进行指定处理:
    var taiwu= ArgBox.GetCharacter(EventArgBox.RoleTaiwu); 
        if(ArgBox.Get("MetalKey", out ItemKey metalKey))
        {   
            EventHelper.RemoveInventoryItem(taiwu,metalKey);
        }

    通过事件代码中存入的Key,可以获取道具的ItemKey,此处进行的处理是将太吾
    选中的物品从背包中移除

    >> 通常会在处理完成后跳转到下一级事件:

    return 需要跳转到的事件的Guid;

    》》取消选择的处理,对应着编辑器中该事件的第二个选项,具体逻辑通常写在选项代码
    OnSelect()中,通常是跳转回上一级事件。

      人物筛选

      1. 通过在事件代码OnEventEnter()中,填入人物筛选的相关代码处理,便可使事件窗口在展示时,显示出人物筛选窗口。
      人物筛选窗口
      1. 人物筛选窗口相关代码填写规则:
        》》构造一个人物筛选器
        》》填写筛选器的相关参数1:筛选规则通常填为-1,则筛选所有人);
        》》填写筛选器的相关参数2:选中的人物Id在ArgBox对应的参数名
        》》确定执行相关筛选器的处理(目前仅有筛选同道的处理);
        》》最终示例如下,其显示结果为太吾本人和所有同道
      CharacterSelectFilter filter = new CharacterSelectFilter();
          filter.FilterTemplateId = -1;//若根据CharacterFilter中填写DefKey,则可以细致筛选条件,此处-1则包括太吾和其同道
          filter.SelectKey = "SpirtualCharacterId";
          EventHelper.SelectTeammateRequest(ArgBox,filter,true);

      若需要排除太吾,则将最后一个参数“true”改为“false”即可。

      1. 人物确认与取消选择:与道具筛选的处理类似,请参考道具筛选部分。

      常用规则-物品筛选与人物筛选》有2个想法

      1. 猫蘸画

        现在可以不经过这个筛选页面,获得太吾所有同道么,类似获取地格所有npc那样,直接拿到hashset?

        回复

      发表回复

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