作者归档:焕心

ArgBox-常用默认参数

    事件默认参数

    1. 事件执行时,有一些默认储存的参数,常用的默认参数有:
    参数Key参数Key
    RoleTaiwu事件盒子中太吾的固定key
    TaiwuCharacterId太吾角色id,始终获取当前太吾的角色Id
    TaiwuAreaId太吾所在区域id,始终获取太吾当前所在区域的Id
    TaiwuBlockId太吾所在地块索引,始终获取太吾当前所在地块的BlockId
    TaiwuVillageAreaId太吾村所在区域id
    TaiwuVillageBlockId太吾村所在地块索引
    ForbidViewCharacter是否禁止查看目标人物标记位
    HideFavorability是否隐藏目标人物好感度显示
    MainRoleUseAlternativeName做选择的角色名字显示是否使用代称
    TargetRoleUseAlternativeName目标交谈角色名字显示是否使用代称
    常用的默认参数
    1. 调用方法皆为EventArgBox.Key
    2. 这些Key有部分是只读的,可读取其参数值以供事件使用:
      RoleTaiwuTaiwuCharacterIdTaiwuAreaIdTaiwuBlockIdTaiwuVillageAreaIdTaiwuVillageBlockId,示例如下:
    //常用的,调用太吾的角色数据
        var taiwu=ArgBox.GetCharacter(EventArgBox.RoleTaiwu);
        //获取太吾村位置,因为Location可以通过地区和地块ID进行定义,可以通过默认储存的地区ID和地块ID获取位置
    Location villageLocation=new Location
    (EventArgBox.TaiwuVillageAreaId,EventArgBox.TaiwuVillageBlockId);

    即通过调用,便可使用其对应的参数值。

    1. 有部分是可以设置的,通过设定其值(通常是true/false),达到具体效果,
      ForbidViewCharacterHideFavorability示例如下:
    ArgBox.Set(EventArgBox.ForbidViewCharacter, true);//禁止查看目标人物ArgBox.Set(EventArgBox.HideFavorability, true);//不显示目标人物好感

    通过设置其值为true/false,则可控制当事件窗口右侧人物显示时,是否可以点击人物查看属性,是否显示人物对太吾的好感等。
    这些值如不设定,会有默认状态通常为false),通常情况下无须改变。当有特殊制作需要时,方将其改变为true。

      特殊传入参数

      1. 除了事件默认参数外,当事件接入其他系统时,也会特殊地传入一些相关参数以供使用。
      触发点类型参数类型参数盒子调用key参数描述
      太吾进行了一次地格移动LocationBlockFrom
      BlockTo
      原本所在地块
      当前到达地块
      用户点击角色头像进行交互intCharacterId被点击的角色的id
      战斗开始intCharacterId敌方的角色id
      产业系统中点击门派特色建筑shortTemplateId建筑的TemplateId
      用户点击动物头像进行交互shortTemplateId动物的TemplateId
      用户点击紫竹化身进行交互intCharacterId被点击的角色的id
      特殊传入参数
      1. 使用范例·一(以与一个角色交互为例):
        》》首先将事件类型设为“用户点击角色头像进行交互” ;
      触发类型-角色交互

      》》设置之后,参数盒子中便自然会存入默认参数“CharacterId”;
      》》结合事件参数盒子中默认储存的太吾参数(RoleTaiwu,根据需要将其填入“决策角色”与“目标角色”中;

      决策角色与目标角色

      》》填写需要的事件内容及选项(此处略);
      》》最终展示出的事件界面便是左边显示太吾立绘,右边显示被点击的角色立绘的效果:

      决策角色与目标角色效果示例

      》》如果需要对相应的角色进行处理,则可通过方法获取其角色,并对他执行相应的处理。

      1. 使用范例·二(以进行一次地格移动为例,目标:移动到太吾村时触发事件
        》》首先将想要触发的事件类型设为“太吾进行了一次地格移动”;
      触发类型-地格移动

      》》设置之后,太吾每进行一次移动,事件系统都会检定一次该事件是否应该发生,并且默认拥有原本所在地块BlockFrom)、移动后地块BlockTo)的数据;
      》》在事件代码OnCheckEventCondition()对移动后地块的数据(通过调用EventArgKeys.BlockTo)进行检测,当移动后的位置与太吾村位置相等时,则返回true触发事件

      public override bool OnCheckEventCondition()
      {
              if(ArgBox.Get(EventArgKeys.BlockTo,out Location location))//获取移动后的地格位置
              {
                  Location villageLocation=new Location(EventArgBox.TaiwuVillageAreaId,EventArgBox.TaiwuVillageBlockId);//获取太吾村的位置
                  if(location==villageLocation)//如果移动后的位置为太吾村位置
                      return true;//事件触发
              }        
          return false;//默认不触发
      }

      》》填写需要的事件内容及选项(此处略);
      》》最终效果为到达太吾村时触发事件;

      到达太吾村
      1. 其他参数调用,亦可参考如上类似方法。

        战斗后传入参数

        1. 在事件中发生战斗后,战斗系统会传入一些必要的参数以供后续事件调用;
        Key类型说明
        EventArgBox.CharIdSeizedInCombatint战斗中用绳索绑到的人物Id,可能为null
        EventArgBox.CarrierItemKeyGotInCombatItemKey战斗中用绳索绑到的动物转化为坐骑后的ItemKey
        “CombatResult”int战斗结果
        “CombatType”sbyte战斗类型
        “MainEnemyId”int战斗中主战者角色Id
        战斗参数
        1. 通过正常的参数调用方法,可以获取其值,并决定后续处理;
        2. 使用范例(以常用的战斗结果为例,根据不同的战斗结果跳转到不同事件):
         if(ArgBox.Get("CombatResult",ref combatResult))
                    {
                        if(combatResult == CombatResultType.EnemyDie)
                        {//TODO 己方胜利处决               
                             EventHelper.ToEvent(A事件Guid);
                        }
                        else if(combatResult == CombatResultType.PlayerWin)
                        {//TODO 己方胜利未处决
                             EventHelper.ToEvent(B事件Guid);
                        }
                        else if(combatResult == CombatResultType.EnemyWin)
                        {//TODO 敌方胜利未处决
                             EventHelper.ToEvent(C事件Guid);
                        }
                        else if(combatResult == CombatResultType.PlayerDie)
                        {//TODO 敌方胜利处决
                             EventHelper.ToEvent(D事件Guid);
                        }
                        else if(combatResult == CombatResultType.PlayerFlee)
                        {//TODO 我方逃跑
                             EventHelper.ToEvent(E事件Guid);
                        }
                        else if(combatResult == CombatResultType.EnemyFlee)
                        {//TODO 敌方逃跑
                             EventHelper.ToEvent(F事件Guid);
                        }
                    }

        备注:ToEvent部分代码,在事件触发类型为“太吾进行一次地格移动”时,尽量不要填写在OnEventEnter()中,且跳转之后要即时return,若不这么做,将可能造成地图系统监听事件失败而卡顿。

        1. 如代码示例,当战斗结果为敌方胜利,且敌人并未在战斗中处决我方时,则对应CombatResultType.EnemyWin结果,事件将跳转到C事件。

        ArgBox-常用操作

          变量储存

          1. 通过将变量储存进ArgBox,该变量可在后续事件链中再通过ArgBox被调用
          2. 写法格式为ArgBox.Set(参数名,值),示例如下:
          //向ArgBox中储存一个int类型值
              int rd = 5;
              ArgBox.Set("SaveArg0", rd);
          
              //向ArgBox中储存一个bool类型值
              bool haveFixed = true;
              ArgBox.Set("SaveArg1", haveFixed);
          
              //向ArgBox中储存一个string类型值
              string interactWord = "HelloWorld";
              ArgBox.Set("SaveArg2", interactWord);
          
              //向ArgBox中储存一个Location(位置)
              var taiwu = ArgBox.GetCharacter(EventArgBox.RoleTaiwu);//辅助代码:该句为获取太吾的Character,用于获取太吾所在位置,实际储存中,可以使用任意有效语句
              Location taiwuLocation = taiwu.GetLocation();//辅助代码:该句为获取太吾所在位置,实际储存中,可以使用任意有效语句
              ArgBox.Set("SaveArg3", taiwuLocation);
          
              //向ArgBox中储存一个ItemKey(道具实例)
              ItemKey itemkey= EventHelper.AddItemToRole(taiwu,ItemType.Material,Config.Material.DefKey.PoisonIllusory7,1);//辅助代码:该句为向太吾背包中添加指定类型、指定id的道具“人面曼陀罗”,同时获取其道具实例的数据,实际储存中,可以使用任意有效语句
              ArgBox.Set("SaveArg4", itemkey);
              
              //向ArgBox中储存一个CharacterId(人物Id)
              int enemyId=1;//辅助代码:指定角色id为1 
              ArgBox.Set("Enemy", enemyId);
          1. 因为人物、物品、地点的获取通常需要调用额外方法,以下对此做额外介绍:

          》》常用的调用人物方法
          >> 默认储存的人物数据,请查看“ArgBox常用默认参数-2.特殊传入参数”;
          >> 根据模板随机生成非智能角色(注:非智能角色在事件结束后将会被删除,不会实际生
          成存档角色,此方法可避免生成过多的垃圾数据)
          示例:

          int  enemyId = EventHelper.CreateNonIntelligentCharacter(Config.Character.DefKey.SnakeBeggar);
              ArgBox.Set("EnemyId", enemyId);

          通过CreateNonIntelligentCharacter方法,填入对应角色的DefKey,则可以生成一
          智能角色,同时可以获取其Id存入参数盒子。
          >> 创建真实智能角色(注:该方法每次被调用,都会生成一个真实存在的npc,一定
          谨慎使用)
          示例:

          Location location = ArgBox.GetCharacter(EventArgBox.RoleTaiwu).GetLocation();
          var SectCharacter=EventHelper.CreateIntelligentCharacter(location,Gender.Male,25,750,EventHelper.GetSettlementIdByOrgTemplateId(Config.Organization.DefKey.Shaolin),5);
                  ArgBox.Set("CharacterA",SectCharacter.GetId());

          该方法需要的参数有:人物生成的位置参数1),人物性别参数2),年龄参数
          3),魅力参数4),所属团体的TemplateId参数5),角色品级参数6)。
          最终将生成一个少林派的25岁男性阶级5的弟子,其魅力750
          >> 获取或生成固定角色(注:固定角色主要是一些主线npc,拥有特有的属性特性等)
          示例:

          int charId = EventHelper.GetOrCreateFixedCharacterByTemplateId(Config.Character.DefKey.OldWomanFeng).GetId();
              ArgBox.Set("Fengoldwoman",charId);

          通过GetOrCreateFixedCharacterByTemplateId方法,填入对应角色的DefKey
          则可以生成一个固定角色如果该固定角色曾被创建出来,则获取其Id),同时可以获
          取其Id存入参数盒子。
          >> 创建临时的智能角色,方法为CreateTemporaryIntelligentCharacter,所需参数
          创建真实智能角色一致;
          >> 获取指定地块的人物列表
          注意!!!本方法使用时需要提前在事件代码的OnEventEnter()中引用如下对应名称
          间:

          #region CustomUsings
          using GameData.Domains;
          #endregion
          

          其后,在需要检测地格人物列表的位置,先获取位置,再获取地格信息,通过地格信息
          中的相关信息得到人物列表,示例如下(获取地格的角色Id列表):

          var location = ArgBox.GetCharacter(EventArgBox.RoleTaiwu).GetLocation();
          var blockData = GameData.Domains.DomainManager.Map.GetBlock(location);
          HashSet<int> characterSet=blockData.CharacterSet;
          

          此处示例为获取太吾所在位置的角色Id列表
          之后,如果检测该列表不为空,便可对其中的Id进行遍历操作,直到找出自己想要的人
          物,示例如下:

          if(characterSet == null)//如果当前地格没有人,不触发
                  return false;
          

          此处填写在OnEventCondition()中,意为当地格无人,事件触发,如果填写在其
          他位置,也当有设计好的处理

          foreach(var charId in characterSet)
              {
                  if(EventHelper.GetCharacterById(charId)!=null)
                  {
                      var cellChar=EventHelper.GetCharacterById(charId);
                      OrganizationInfo orgInfo=cellChar.GetOrganizationInfo();
                      if(EventHelper.IsInAnySect(charId)&&orgInfo.Grade==Grade.Highest&&orgInfo.Principal)
                      {
                          ArgBox.Set("Principal",charId);
                          return true;
                      }
                  }
              }
          return false;
          

          此处示例为查找列表中是否有门派掌门。如果有,就将其传入参数盒子,如果没有,
          则不触发事件;实际使用中,根据代码填写位置和自己的需求,可以有更多的变体,比
          如通过API文档中的检测关系的相关接口,获取与自己有特定关系的人物;或者获取心
          情等属性达到一定标准的人物,皆是可以操作的。


          >> 通过参数盒子中存储的人物Id获取角色

          var taiwu = ArgBox.GetCharacter(EventArgBox.RoleTaiwu);
          var character = ArgBox.GetCharacter("CharacterId");

          方法中需要的参数为已被储存的Key

          》》常用的调用物品方法:
          >> 添加物品到角色背包(注:该方法在调用的同时,将会创建物品并放入人物背包);
          示例:

          var taiwu = ArgBox.GetCharacter(EventArgBox.RoleTaiwu);
              ItemKey itemkey= EventHelper.AddItemToRole(taiwu,ItemType.Material,Config.Material.DefKey.WoodOuter7,1);

          通过AddItemToRole方法,该方法需要的参数为:角色参数1),此处指定为太吾,
          道具类别参数2),道具Id参数3-可通过DefKey获取),数量参数4)。
          示例中的效果生成乌金紫檀并放入太吾背包。
          >> 添加促织到角色背包:
          示例:

          var taiwu = ArgBox.GetCharacter(EventArgBox.RoleTaiwu);
          ItemKey cricket1= EventHelper.AddCricketToInventory(taiwu,Config.CricketParts.DefKey.White,Config.CricketParts.DefKey.RoundWings);//生成圆翅白

          通过AddCricketToInventory方法,该方法需要的参数为:角色参数1),此处指定
          为太吾,织部件1参数2),指定为白色,促织部件2参数3),指定为圆翅。
          示例中的效果添加圆翅白并放入太吾背包。
          >> 使指定人物获取指定技艺书:
          示例:

          ItemKey bookKey=EventHelper.GetLifeSkillBook(EventArgBox.TaiwuCharacterId,123);

          通过GetLifeSkillBook方法,该方法需要的参数为:角色id参数1),此处直接调用
          参数盒子中默认参数(可查看:ArgBox-常用默认参数),技艺书id参数2)。
          示例中的效果太吾获取id为123的技艺书。
          >> 使指定人物获取指定功法书:
          示例:

          ItemKey bookKey=EventHelper.GetCombatSkillBook(EventArgBox.TaiwuCharacterId,123,1,pageIsDirect,3);

          通过GetCombatSkillBook方法,该方法需要的参数为:角色id参数1),功法书id
          参数2),总纲类型参数3-sbyte),各页是否正练参数4-bool数组,需自行指
          ),完整书页数参数5)。
          示例中的效果太吾获取id是123的功法书,总纲类型为“合”,其中有3页完整,各页正
          逆练需要看提前指定。

          >> 其他常用方法可参考常用规则中道具筛选,获取选中的物品。

          》》常用的调用地点方法:
          >> 获取人物所在的位置

          var taiwu =    ArgBox.GetCharacter(EventArgBox.RoleTaiwu);
              Location location = taiwu.GetLocation();

          首先指定人物,其次通过GetLocation()获取人物当前所处位置。
          >> 通过地区Id地块Id构造一个位置

          Location villageLocation=new Location(EventArgBox.TaiwuVillageAreaId,EventArgBox.TaiwuVillageBlockId);

          参数1地区Id参数2地块Id,此处取用参数盒子中默认储存的太吾村地区ID以及
          太吾村地块ID,则获取到太吾村位置
          >> 在获取地点后,可通过查看Location构造,查看更多使用。

            变量调用

            1. 通过调用ArgBox中已经储存的变量,可以进行相应的操作;
            2. 写法格式为:
              》》ArgBox.Get(参数名, ref 变量);
              示例如下:
            int arg0=-1;
                if(ArgBox.Get("SaveArg0",ref arg0))//如果取到值
                {
                    if(arg0>=5)
                        return 事件A的Guid;
                }
                return 事件B的Guid;

            》》ArgBox.Get(参数名, out 变量类型 变量);
            示例如下:

            //取出之前存储的ItemKey
                ArgBox.Get("SaveArg4", out ItemKey itemkey);
            
                //使用示例:转移道具
                //因为之前储存时该道具已放入玩家角色背包,此处可以直接转移给别人
                var taiwu=ArgBox.GetCharacter(EventArgBox.RoleTaiwu);
                var enemy=ArgBox.GetCharacter("Enemy");
                EventHelper.TransferInventoryOrEquipItem(taiwu,enemy,itemkey);//将太吾背包中的道具转移到别人背包中
            1. 获取参数的同时,会返回一个bool值意为是否取到该值),当参数盒子中不存在该值时,将返回false。
              变量调用-2第一个示例中,如果之前并未储存过”SaveArg0″,则取不到该参数的值,因此if方法体内的所有逻辑都不会被执行

              变量移除

              1. 通过移除ArgBox中已经储存的变量,可使后续事件中不再能取到该变量;
              2. 写法格式为ArgBox.Remove<变量类型>(变量名);
                示例如下:
              ArgBox.Remove<ItemKey>("SaveArg4");

              常用规则-事件监听

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

                          常用规则-选项可用条件和选项消耗

                          选项可用条件

                          通过在选项代码OnCreate()的内部填写相关代码,可以使选项拥有可用提示,如果不满足其可用条件,则不可点击该选项。

                          选项可用条件示意图

                          代码填写规范:

                          private void OnCreate()
                          {
                               OptionAvailableConditions = new[]
                               {   
                                  {{MonthCooldownCount,"CriketCombatInteract",1}},
                                  {{FavorAtLeast,FavorabilityType.Favorite1}},
                                  {{MovePointMore,3}}
                               };
                          }

                          》》通过填写OptionAvailableConditions = new[]{}来构造可用条件列表;
                          》》每行中第一个参数为条件类型,之后的参数为该条件类型所需要的其他参数:
                          >>MonthCooldownCount参数1),对应的条件类型为“冷却时节”,其需要的参数
                          为冷却变量名(参数2),冷却时节数(参数3),填写结果则为:
                          {{MonthCooldownCount,”CriketCombatInteract”,1}},
                          >>FavorAtLeast参数1),对应的条件类型为“好感达到或超过”,其需要的参数为好
                          感等级(参数2,本质是sbyte类型),填写结果则为:
                          {{FavorAtLeast,FavorabilityType.Favorite1}},

                          {{FavorAtLeast,3}},
                          >>MovePointMore参数1),对应的条件类型为“可用行动力不少于”,其需要的参数
                          为行动力数量(参数2),填写结果则为:
                          {{MovePointMore,3}}
                          》》更多的条件类型及其所需参数可查阅“常用规则附录-选项可用条件”。

                          选项消耗提示

                          通过在选项代码OnCreate()的内部填写相关代码,可以使选项拥有消耗提示,如果相关资源不够消耗,则不可点击该选项。

                          选项消耗提示示意图

                          代码填写规范:

                          private void OnCreate()
                          {
                              OptionConsumeInfos = new[]
                              {
                                  {Authority,300,false},
                                  {MovePoint,5,false}
                              };
                          }

                          》》通过填写OptionConsumeInfos = new[]{}来构造消耗条件列表;
                          》》每行中第一个参数为消耗类型第二个参数为该消耗类型对应的消耗数值第三个参数为“是否立即消耗”(点下选项的瞬间是否立即消耗对应资源,如不填写,则默认为立即消耗)。
                          >>Authority参数1),对应的消耗类型为“威望”,需要消耗威望的数值(参数2),
                          此时希望点下选项瞬间消耗(参数3),填写结果则为:
                          {Authority,300},
                          如果希望点下选项瞬间不消耗(参数3),而在后续操作中手动消耗,填写结果则为:
                          {Authority,300,false},
                          >>MovePoint参数1),对应的消耗类型为“行动力”,需要消耗行动力的数值(参数
                          2
                          ),则类似威望的填写结果为:
                          {MovePoint,5},

                          {MovePoint,5,false},
                          》》更多的条件类型及其所需参数可查阅“常用规则附录-选项消耗”。

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

                            物品筛选

                            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. 人物确认与取消选择:与道具筛选的处理类似,请参考道具筛选部分。

                              事件编辑器使用说明-使用步骤

                              1. 创建事件库:为了你更好的事件制作体验,你可以创建属于自己的Mod库。
                                如何创建自己的Mod库:可前往功能简介-功能菜单简介-4.切换Mod库查看详细的操作方法。
                              2. 创建事件组:
                                》》进入事件编辑器,在事件组列表中选择需要进行编辑的事件组,如没有事件组,可点击功
                                能菜单选择添加事件组
                              添加事件组

                              》》输入事件key与事件名,需注意事件key只可为字母数字

                              输入事件名

                              输入完成后点击确认键,便可看见新建事件组:

                              确认
                              新建好的事件组示意图
                              1. 编辑事件组:选中事件组后,双击事件组或点击事件编辑,则可进入事件编辑界面。
                              选中事件组
                              事件编辑界面
                              1. 新建事件:
                                》》点击功能菜单选择新建事件,注意如果没有选中任何事件组此功能将不可见
                              新建事件

                              》》填写事件详情,注意带星号(*)的为必须填写的信息,不能为空,但有的信息在粘贴事
                              件或者新建事件时,就已经填好了,在这种情况下,只需要关注一下即可。填写好详情后
                              记得点击保存当前事件。

                              填写事件详情

                              》》编辑事件:双击输入文本内容,根据自身需求编写事件代码,如何编写事件代码可前往
                              辑器开放示例事件组
                              Argbox说明文档中查看。

                              编辑事件

                              》》添加选项:点击添加一个新选项则新增一个选项,双击输入文本内容,根据自身需求绑定
                              Esc或立场、填写选项代码。如何编写选项代码可前往编辑器开放示例事件组Argbox
                              说明文档
                              中查看。

                              添加选项

                              1. 编辑跳转事件:你的事件组中可能不只存在一个事件,事件与事件之间需要连接,这时就需要通过编辑跳转事件让两个事件产生连接。
                                》》如何编辑跳转事件:可前往功能简介-事件编辑简介-2.内容填写-编辑下一事件查看编辑跳
                                转事件的两种操作方法。
                              2. 检查事件组:
                                》》事件组编写完成之后,点击左下角事件编辑返回键回到事件组列表。选择需要导出编译
                                (即需要实装)的事件组后单击左键,点击检查事件组,则编辑器便会自行检测此事件组的
                                代码是否能够运行,如代码有错误则出现相关提示,没有提示则代表没有错误。
                              3. 发布当前Mod:
                                》》事件检查无误后,如需添加到自己到Mod当中,则可点击实装需要发布的事件组,而后点
                                击功能菜单中的发布当前Mod:
                              点击发布Mod

                              》》发布后,编辑器会弹出发布Mod的流程提示框,并且自动复制此Mod的路径:

                              提示框

                              》》之后,编辑器便会自动进入Mod的填写界面,可自行填写Mod标题、描述等,填写完毕点
                              击保存即可。具体可前往功能简介-功能菜单简介-8.发布当前Mod查看具体详情。

                              1. 上传Mod:如图,首先返回游戏标题菜单。
                              标题菜单

                              点击模组选择,选择上传,填写发布信息后确认即可。

                              填写发布信息

                              发布成功后前往创意工坊订阅,就可以在模组选择中看见自己写的Mod了。
                              》》模组文件夹路径:在发布Mod时会自动复制此Mod的路径,所以在单击左键粘贴即可。也
                              可前往游戏所在目录\当前\FirstMod\Publish复制路径。

                              事件编辑器使用说明-功能简介

                                事件组列表简介

                                1. 事件组列表会显示所有的事件组;
                                2. 可通过事件组列表的搜索框上方进行事件组筛选;
                                3. 选中事件组后,事件组右边的空白框则会出现此事件组中已经填写了触发类型的事件:
                                  (注意:触发类型为无类型的事件不会在此出现)
                                事件组列表示意图

                                点击事件则会出现此事件的跳转事件双击事件则可进入到事件编辑界面

                                1. 选中事件组,并双击事件组或点击左下角“事件编辑”将会进入对应事件组的事件编辑界面;
                                2. 实装事件组:点击事件组名称左边的方框,方框中出现绿点,则视为将实装此事件组:
                                实装事件组示例

                                实装事件组后,此事件组方可被发布。
                                注意
                                事件组列表中,如存在编辑器开放示例事件,并且其为实装状态, 需点击方框取消实装)

                                1. 删除事件组:事件编辑器中无删除事件组功能,需找到所要删除的事件组文件(可点击功能菜单的打开事件库,就可进入到当前事件库的事件组中),选择需要删除的事件组后单击右键选择删除,然后点击功能菜单中的刷新事件组即可;
                                删除事件组示例

                                  功能菜单简介

                                  点击功能菜单,则出现详细功能:

                                  功能菜单示意图
                                  1. 新建事件:在所选择的事件组中新建事件,注意如果没有选中任何事件组此功能将不可见;
                                  2. 添加事件组:创建新的事件组,注意事件组key只可使用字母或数字,输入后点击确认键;
                                  3. 刷新事件组:刷新当前事件组;
                                  4. 切换Mod库:切换当前Mod库为其他Mod库;
                                    》》如何创建Mod库:可去ModFactory文件夹中新建文件夹并命名,
                                  如何创建Mod库

                                  而后重新进入游戏中便可切换Mod库,注意切换Mod库后就不会再有初次提示框;

                                  切换Mod库
                                  1. 自动保存:若打开自动保存功能,每间隔一分钟系统便自动保存当前事件,自动保存默认打开,点击可关闭;
                                  2. API文档:接口文档,点击此处跳转到网页查看需要用到的相关接口;
                                  3. 下载制作示例:点击下载示例事件,则可下载编辑器开放示例事件;
                                  4. 发布当前Mod:将已经实装的事件发布为Mod,将事件发布前可以先行检查一遍哦,这样可以保证你要发布的事件更加通畅;
                                    发布Mod后后台会在自行给你创建一个本地的Mod和需要上传的Mod ,并且会跳到一个lua文件(即你将上传的Mod描述),你需在此处填写你的Mod名称及描述:
                                  填写示例

                                  如果你需要在模组选择中查看自己的Mod,则需要前往游戏目录下的Mod文件夹中。你将
                                  会发现后台为你创建的名为FirstMod的Mod:

                                  FirstMod

                                  为了你更好的事件制作体验,十分建议你将FirstMod修改为其他英文名称。
                                  其后,进入此文件夹中,找到Config.lua文件:

                                  Config.lua位置示意

                                  点击进入,你需在此处填写你的Mod名称及描述(此Mod为本地的mod):

                                  填写示例

                                  填写完毕请勿忘记点击保存。
                                  之后,你便可以进入模组选项中看见自己写的Mod:

                                  Mod选择

                                  点击勾选则可进入游戏运行:

                                  Mod管理

                                  如要发布也可点击发布(具体操作可前往操作流程-8.上传Mod查看);

                                  1. 编辑配置表项:可在此处自定义修改配置表文件,点击进入可查看具体指引与内容。
                                    注意:配置表项需安装VSCode软件,否则则会进入记事本编辑
                                    代码内容显示如下:
                                  return {
                                      ConfigName = "",                    -- 所属的配置表名
                                      SrcConfigRefName = "",              -- 以一个已存在的物品为模板,通过引用名指定
                                      DestConfigRefName = "",             -- 新物品的引用名(可以与物品显示名不同)
                                      TemplateId = -1,                    -- 如果为新增配置项则必须指定,修改原有配置不用指定。需要唯一ID,不可与游戏原本ID或其它Mod冲突
                                  
                                      -- 物品数据
                                      Data = {
                                      },
                                  }

                                  》》如需新增配置表项(以新增一个名叫“金箍棒”的武器为例):
                                  >> 首先确认新增的物品/人物等数据所属的配置表,具体可查看底部的ConfigName提
                                  示,并将其Name填入第一行。填写如下:

                                  ConfigName = "Weapon",

                                  >> 新增的配置表项因为其中参数过多,一一指定过于艰难,所以需要以某个已存在的配
                                  置数据为模板来进行修改,此处我们决定以“四海神光”为模板,检索得到其DefKey为
                                  CopperPolearmB8。
                                  填写如下:

                                  SrcConfigRefName = "CopperPolearmB8",

                                  >> 确定新物品的引用名,可以任意指定未与已有DefKey冲突的英文字符串。
                                  填写如下:

                                  DestConfigRefName = "ChaoJiWuDiJinGuBang",  

                                  >> 确定新物品的TemplateId,注意尽量填写较大的数值,以免与已有的数据项对应Id冲
                                  突。
                                  填写入下:

                                  TemplateId = 12345,

                                  >> 修改配置行的数据,填写在Data = {后。
                                  如此处需要修改其显示的中文名,检索得到其中文名对应的参数名为Name,所需要
                                  的数据类型为LString,填写修改如下:

                                  Name = "金箍棒",

                                  同理,其描述修改如下:

                                  Desc = "五行大山压不住你!",

                                  若需修改其品质(8为最高),查得其参数名为Grade,需要数据类型为sbyte,修改
                                  如下:

                                  Grade = 8,

                                  其它参数皆同理修改;

                                  >> 最终填写结果如下:

                                  return {
                                      ConfigName = "Weapon",                   
                                      SrcConfigRefName = "CopperPolearmB8",               
                                      DestConfigRefName = "ChaoJiWuDiJinGuBang",          
                                      TemplateId = 12345,                    
                                  
                                      -- 物品数据
                                      Data = {
                                          Name = "金箍棒",                           
                                          Desc = "五行大山压不住你!",              
                                          Grade = 8,
                                       },
                                  }

                                  >> 保存之后,即可使用。

                                  1. 打开事件背景图库:打开事件背景图存储的文件夹;
                                  2. 打开事件库:打开当前所在的事件库,可看到当前事件库中的事件组;
                                  3. 返回主界面:返回游戏主界面。

                                    事件编辑简介

                                    点击事件编辑,可编辑当前所选的择事件组的事件,进入事件编辑界面,事件编辑界面由三分部组成,即事件列表内容填写详情填写

                                    1. 事件列表:事件编辑器界面左边为事件列表,显示当前事件组的所有事件;此外,可通过事件列表的搜索框上方进行事件筛选(可输入事件名称或事件文本)。
                                    事件列表示意图
                                    事件搜索框示意图
                                    1. 内容填写:事件编辑器界面中间显示当前正在编辑的事件,由背景框、事件文本框及选项框组成:
                                      》》快捷返回键:事件编辑器界面中间上方的两个箭头即为快捷返回键,左边箭头可跳转
                                      到当前事件的上一级事件,右边箭头可跳转到当前事件的下一级事件。注意:只有点
                                      击跳转到了某一事件后,此功能才生效。
                                    快捷返回键示意图

                                    》》事件背景框:事件背景框显示事件背景图,背景图需在事件详情的事件背景图中填写,
                                    如不填写背景框则在事件编辑器中随机显示EventTextures文件夹中的图片(如果此文
                                    件夹中没有图片,则显示为空白
                                    ),进入游戏则显示为自适应地形图片。

                                    事件背景框示意图

                                    》》事件文本框:可在文本框内填写事件文本,双击文本框可输入文本

                                    事件文本框示意图
                                    > 可了解的内容 <
                                    如何改变文本颜色
                                    改变文本颜色需要用到特殊的颜色代码,在此处先列出: 
                                    · 浅灰色:<color=#lightgrey>浅灰色</color>
                                    · 深灰色:<color=#darkgrey>深灰色</color>
                                    · 白色:<color=#white>白色</color>
                                    · 红色:<color=#darkred>红色</color>
                                    · 黄色:<color=#yellow>黄色</color>
                                    如需将某段文字变为某种颜色,则将这段颜色代码中的中文颜色名称改为那段文字,下面举例如何在事件编辑器中将某一段文字变为某中颜色,此处以将星期一改为深灰色为例:
                                    需先将<color=#darkgrey>深灰色</color>中的“深灰色”改为“星期一”<color=#darkgrey>星期一</color>
                                    注意事件在编辑时会显示整段代码,不在编辑界面时,才会显示字体颜色。
                                    
                                    
                                    (有时颜色可能不会及时显现,可先点击另一个事件让此事件刷新一下。)

                                    》》事件选项:点击添加一个新选项则可新增一个选项,双击选项框则可填写选项文本:

                                    选项框示意图

                                    鼠标悬浮在选项框会出现绑定到Esc、绑定立场、编辑选项代码的功能:

                                    选项悬浮功能

                                    鼠标悬浮在选项框后右击鼠标,则会出现复制选项、删除选项、编辑下一选项的功能:

                                    选项右键功能

                                    功能说明:
                                    >> 绑定到Esc:将此选项绑定到Esc,设为默认选项,点击Esc键确认选项;
                                    >> 立场选择:如此选项需要绑定立场,点击立场框,选择所要绑定的立场,如选择无立
                                    场则不绑定任何立场;
                                    >> 编辑选项代码:进入VSCode编辑当前选项的逻辑代码,具体代码可前往编辑器开放
                                    示例事件查看(注意:编辑代码需安装VSCode软件,否则则会进入记事本编辑)
                                    >> 复制选项:复制当前选项,包括选项文本及选项代码;
                                    >> 删除选项:删除当前选项;
                                    >> 编辑下一事件:

                                    如何编辑下一级事件
                                    下一级事件说明

                                    新建此选项的跳转事件并会自动填写跳转逻辑,但是要注意,如果选项代码中需要填
                                    写特殊的监听事件,如战斗监听较艺监听梳头修面监听等,则不可以直接在此处
                                    编辑下一事件,而需要根据监听事件填写要求进行填写(具体可看以上监听事件代
                                    码,在编辑开放示例事件及Argbox说明中可以查看
                                    );

                                    > 建议了解的内容 <
                                    除编辑下一事件功能可以进行跳转之外,也可自行编辑选项代码进行跳转。
                                    下面将演示如何从事件1-星期一跳转到事件2-星期二· 首先点击功能菜单,新建两个事件,完成事件详情填写(可前往功能简介-3.事件编辑简介-详情填写中查看说明),然后将这两个事件分别命名为1-星期一2-星期二,并且编辑好事件文本和选项文本。
                                    · 然后来到2-星期二事件,复制这个事件的guid:
                                    
                                    · 复制好2-星期二的guid后,我们来到需要跳转到星期二事件的星期一事件。
                                    选择选项,点击编辑选项代码:
                                    
                                    · 点击编辑选项代码后就会进入就会进入代码编辑界面,找到private string OnSelect()接口(一般在倒数第二个),然后将刚刚复制的星期二事件的guid粘贴到“return string.Empty;”return后面,再将string.Empty删除即可,就像这样:
                                    private string OnSelect()
                                    {
                                        // 选项标记为已读,如果再次进入该事件则显示为暗灰色。如果本事件链再次触发,则会清除已读标记
                                    // SetOptionRead(thisOption.OptionKey);
                                        //TODO 有需要分不同条件跳转时,在这里编码if/switch分支
                                        return "fdb6df60-ec34-4c84-b6ad-6c2103f639e5";
                                    }
                                    · 然后保存代码(Ctrl+s),退出编辑界面,
                                    再去点击事件星期一的相应选项,就会跳转到事件星期二了。

                                    >> 上移选项:使选项上移,只有有两个及以上选项方可上移;
                                    >> 下移选项:使选项下移,只有有两个及以上选项方可下移。

                                    1. 详情填写:事件编辑器界面右边为事件详情填写与占位符查阅组成。事件详情为当前事件需要填写的各类信息,注意带星号(*)的为必须填写的信息,不能为空。但有的信息在粘贴事件或者新建事件时,就已经填好了,在这种情况下,只需要关注一下即可。
                                    事件详情示意图

                                    》》事件名称:填写当前事件名称,双击输入,注意事件名称不可重复;
                                    》》事件排序:当前事件的触发优先级,游戏运行中如果同时有多个事件准备触发,将根
                                    据事件排序决定触发顺序,默认事件排序为500,可双击后自行填写数字,数字越小优
                                    先级最高,只可填写为正整数;
                                    》》事件类型:固定为Mod事件类型;
                                    》》事件分组:选择当前事件所属事件分组,双击输入事件分组名称,而后选择即可;
                                    》》事件触发:选择当前事件的触发条件,满足触发条件后此事件才会触发一般只有首事
                                    件需要填写触发条件,承接的子事件只需填写无触发类型便可。

                                    注意:触发类型皆可重复触发。例如你选择太吾进行了一次地格移动为触发条件,那么
                                    太吾每一次移动则都会触发此事件,这时就需要你进入编辑事件代码中,通过填写参数
                                    来控制更为准确的触发条件,可通过编辑开放示例事件或Argbox说明文档查看详细写
                                    法;
                                    》》填写决策角色则可显示人物形象,不填则不显示,决策角色出现在对话框左边,一般
                                    为太吾本人
                                    ,填写为RoleTaiwu即可(因ArgBox中默认存有RoleTaiwu,所以可直接使
                                    ),如要填写其他人物则需要填写再ArgBox中存入的人物名称(具体可查看编辑器
                                    开放示例事件中的ArgBox介绍或Argbox说明文档
                                    ),需注意事件编辑器中不会显示人
                                    物形象,进入游戏中才会显示
                                    》》填写目标角色则可显示人物形象,不填则不显示,目标角色出现在对话框右边,为在
                                    此事件中与太吾产生互动的角色,填写在ArgBox中存入的人物名称(可查看编辑器开
                                    放示例事件中的ArgBox介绍
                                    )即可,需注意事件编辑器中不会显示人物形象,进入游
                                    戏中才会显示;
                                    》》控制遮罩:遮罩可将背景暂时变为黑色,应用于特殊事件的情景渲染,可根据自身需
                                    求填写遮罩行为、渐变时间;
                                    》》事件背景图:在此填写EventTextures文件夹中所要显示的图片名称,则可显示相应图
                                    片,如不作任何填写将会随机出现EventTextures文件夹中的图片,进入游戏后则将显
                                    示为自适应当前地形的背景图,;
                                    >> 如何存入图片:点击功能菜单中的打开事件图库,就会来到存储事件背景图的文件
                                    夹,将图片存入此文件夹中即可,注意游戏只能读取到png格式的图片,且图片大小
                                    格式最好为1140 * 303,这样可以更精准的显示你的图片;

                                    存入图片文件夹

                                    >> 如何填写图片:然后复制需要显示的图片名称到事件背景图中即可。

                                    如何填写图片

                                    》》复制Guid:复制当前事件的Guid,多作用于事件跳转;
                                    》》复制事件:复制当前事件的事件逻辑及事件选项,事件的事件文本不会被复制;
                                    》》粘贴事件:只有复制事件后,才能点击粘贴事件,粘贴所复制事件的事件逻辑及事件
                                    选项;
                                    》》占位符替换:全局替换当前事件组的某一占位符为另一占位符,选择添加新的替换规
                                    则,填写完毕事件规则,点击执行替换即可,执行完毕点击返回,返回到事件详情中;

                                    占位符替换说明

                                    》》编辑事件代码:进入VSCode编辑当前事件的事件代码,具体代码可前往编辑器开放示
                                    例事件查看,当前事件如无特殊逻辑,则不需填写(注意编辑代码需安装VSCode软
                                    件,否则则会进入记事本编辑)

                                    》》保存当前事件:保存当前正在编辑的事件;
                                    》》删除当前事件:删除当前正在编辑的事件。

                                    1. 占位符查阅:事件编辑器界面右边为事件详情填写为占位符查阅组成,可在占位符查阅快速复制文本占位符,注意需要将ArgBoxKey换为正确内容(即为ArgBox中存储的名称,具体可前往查看编辑器开放示例事件中的ArgBox示例-1占位符展示,若是太吾则可直接填写,因ArgBox中已自动存入了RoleTaiwu)。
                                    占位符查询示意图

                                    在此举例姓名占位符该如何填写:
                                    》》姓名占位符为:<Character key=ArgBoxKey str=Name/>
                                    如果需要显示太吾的姓名,则需要填写为<Character key=RoleTaiwu str=Name/>
                                    但如果需要填写除太吾外的其他角色姓名,则需找到你在ArgBox中所存储的角色ID,比
                                    如,当你在ArgBox中存入了一个地痞角色(关于如何创建,以及存入角色,可前往编辑器
                                    开放示例事件及ArgBox说明中查看),并给他的id取名为enemy,这时就需要填写为
                                    <Character key=enemy str=Name/>
                                    》》如何复制到对话框:直接复制整段占位符到需要显示太吾姓名与角色姓名的地方,

                                    复制占位符示意图

                                    注意:事件文本只有才编辑时才会显示整段的占位符,如果不在编辑状态,则只会显示占
                                    位符标黄了的地方,但如果是在选项文案中填写占位符,则无论是不是编辑状态都会显示
                                    整段。

                                    占位符的显示

                                    注意:事件编辑器中无法显示太吾及角色姓名,需进入到游戏中后才显示。

                                    1. “——”返回键:退出当前编辑事件界面,返回事件组列表。

                                    事件编辑器使用说明-下载文件

                                    • 下载示例事件文件:
                                    1. 进入事件编辑器会跳出初次提示框:
                                    初次提示框

                                    点击提示框第二个“这里”则可前往下载制作示例文件。

                                    (当玩家掌握新建Mod库后,使用切换Mod库功能切换到自己Mod目录,此提示将不再弹出,但可以前往功能菜单中下载制作示例下载示例文件)

                                    1. 下载编辑器开放示例事件:
                                      下载制作示例文件后,前往下载列表中将编辑器开放示例事件文件复制到ModFactory\FirstMod\WorkSpace\EventEditorData路径下的 EventCore文件夹中,如下图所示:
                                    路径示例

                                    (注意:如第一次进入事件编辑器,则需关闭提示框后,此文件夹才会被自动创建)
                                    完成这一步后,刷新事件组,双击事件组或选中事件组点击左下角的事件编辑,进入到事件编辑界面查看示例事件:

                                    事件编辑界面

                                    具体示例事件有:

                                    • ArgBox方法使用示例
                                      》》 存入并调用人物,以及与编辑器决策角色、目标角色的联动
                                      》》 存入ItemKey,并转移道具,以及相关占位符的运用
                                      》》 通过储存变量,决定事件跳转分支的示例
                                      》》通过储存变量,控制一个可读选项消失的示例
                                      》》 使用ArgBox中默认存储数据的示例
                                    • 占位符示例
                                      》》 普通占位符示例
                                      》》 特殊占位符示例
                                    • EventHelper方法使用示例
                                      》》 筛选道具
                                      》》 筛选人物
                                      》》 调试信息
                                      》》 生成奇遇