阵营 - woshiermuqwq/mythic-chinese GitHub Wiki

阵营 & 自定义AI

MythicMobs允许您修改实体的AI,这将包含着许多 可自定义内容,如实体应该与什么实体战斗等行动

以下内容将讲解关于如何在服务器内配置俩种常见 的实体战斗情景

玩家注意事项: 若玩家拥有权限faction.(某阵营),则玩家会成为"某阵营"的一员

处在同一阵营内的 不同Mythic实体(意味着对玩家无效) 之间无法互相伤害
这一点和实体无法伤害自己的主人相似

可以使用API通过注册自定义阵营提供程序来修改相关行为.

AI行动器 , AI目标选择器 , 阵营

  • 自定义AI通常并不需要 AI行动器AI目标选择器 一同工作.
  • 阵营 用于将实体分组,并为更高级的配置做准备.
  • 一般情况下,每个实体类型都有自己的默认AI行动器与默认AI目标选择器, 如拉弓射击并与目标保持距离属于 AI行动器 ,而选取铁傀儡与玩家 为目标则为 AI目标选择器 .
  • 自定义AI通常不用为两者写入clear(清空默认),若工作异常请写入该项.
  • 自定义AI并不适用于全部实体,如蝙蝠、末影龙、凋灵,因其默认AI为硬 编码的原因而无法修改,强行修改可能导致服务器崩溃.
腐坏骷髅:
  Mobtype: skeleton
  Display: '&aa 腐坏的 骷髅'
  Health: 15
  Damage: 1
  Faction: 亡灵
  AIGoalSelectors:
  - clear
  - bowshoot
  AITargetSelectors:
  - clear
  - players
  Options:
    FollowRange: 10
    MovementSpeed: 0.2
    PreventOtherDrops: true
  • 这个例子展示了通常情况下骷髅的AI是如何工作的,用弓射击玩家 (移除了随机走动等默认AI).
    • AIGoalSelectors(行动器) 因清除默认AI并仅写有 bowshoot ,故该骷髅脱战状态下什么也不做,战斗中拉弓射击并会与目标保持距离.
    • AITargetSelectors(目标选择器) 将令该实体仅选中玩家为目标(因已清除默认AI,所以不选择铁傀儡为目标),并在战斗中使用 bowshoot 行动器.
    • clear 并不必放在首位,一般在工作异常时才会写入AI行动器或目标选择器
* 现在我们让该骷髅近距离攻击其它阵营实体而不是拉弓射击并会在受伤后进行回击.

腐败骷髅:
  Mobtype: skeleton
  Display: '&a一个 腐败的 骷髅'
  Health: 15
  Damage: 1
  Faction: 亡灵
  AIGoalSelectors:
  - meleeattack
  AITargetSelectors:
  - hurtbytarget
  - otherfactionmonsters
  Equipment:
  - COS_WoodSword:0
  Options:
    FollowRange: 10
    MovementSpeed: 0.2
    PreventOtherDrops: true
  • 该骷髅现在会攻击其它阵营的任何实体类型怪物的实体(不包括中立/被动实体类型) 此外它将使用近距离攻击而不是拉弓射击.

    • AIGoalSelectors(行动器) 仅写有 meleeattack ,故该实体脱战后还是什么也不干
      但战斗中使用近距离攻击而不是拉弓射击,需要注意的是,您必须给骷髅配备一把近战武器(只要不是弓) 因为骷髅无法手持着弓时近距离攻击目标,其它实体就没有这个要求了.
    • AITargetSelectors(目标选择器) 现在骷髅不会再主动攻击玩家,取而代之的是目标选择器 otherfactionmonsters ,将令骷髅选择所有不在"亡灵"阵营内的所有实体(不包括无阵营实体)为目标.目标选择器 hurtbytarget ,将令它在受伤后选择攻击者为目标,若不写入该目标选择器,骷髅将被玩家轻松击杀.
  • 一列可用的AI行动器与目标选择器 AI行动器.

  • 以下内容将讲解关于如何在服务器内配置常见的阵营对峙.

例1 : 守卫对峙怪物

  • 在此场景中,我们希望在村庄入口设置一些守卫 以击退村庄附近的怪物. 你可以使用伪装成村民 的铁傀儡来做到对峙效果但是铁傀儡的AI更难以 控制,以及铁傀儡独特的近距离攻击附带的击飞 这对怪物来说不公平,所以我们要用MythicMobs的 自定义AI以更好的方式做到相同效果.
  • 我们要做的第一件事是新建一个守卫来保护村庄 让我们新建一个伪装成村民 手持武器的骷髅.

守卫:
  Mobtype: skeleton
  Display: '&E一个 村庄守卫'
  Health: 500
  Damage: 5
  Equipment:
  - 守卫铁剑:0
  Options:
    Disguise: villager
    Despawn: true
    FollowRange: 5
    AlwaysShowName: false
    MovementSpeed: 0.35
    PreventOtherDrops: true
    KnockbackResistance: 1
    PreventMobKillDrops: true

  • 若在玩家附近生成该守卫,守卫会攻击附近的玩家,这并不符合预期 所以我们要将其改成以下内容.
守卫:
  Mobtype: skeleton
  Display: '&E一个村庄村民'
  Health: 500
  Damage: 5
  Equipment:
  - 守卫铁剑:0
  Faction: 守卫
  AIGoalSelectors:
  - clear
  - opendoors
  - meleeattack
  AITargetSelectors:
  - clear
  - hurtbytarget
  - otherfactionmonsters
  Options:
    Disguise: villager
    Despawn: true
    FollowRange: 5
    AlwaysShowName: false
    MovementSpeed: 0.35
    PreventOtherDrops: true
    KnockbackResistance: 1
    PreventMobKillDrops: true
  • 现在守卫将锁定其它阵营的任何实体为目标并会在受伤后锁定攻击者为目标 (这将包括攻击它的玩家),同时在走向目标时会打开面前的门.

腐败骷髅:
  Mobtype: skeleton
  Display: '&a一个 腐败骷髅'
  Health: 15
  Damage: 1
  Faction: 亡灵
  AIGoalSelectors:
  - clear
  - meleeattack
  AITargetSelectors:
  - clear
  - hurtbytarget
  - players
  Equipment:
  - COS_RawHead:4
  - COS_WoodSword:0
  Options:
    Despawn: true
    FollowRange: 10
    AlwaysShowName: false
    MovementSpeed: 0.2
    PreventOtherDrops: true
  • 此骷髅现在处在亡灵阵营内,会被守卫认定为目标(因骷髅对守卫而言是其它阵 营实体,并在被守卫攻击后进行回击.

  • 对于我们在城镇附近繁殖的任何其它敌对实体,您应该为其添上阵营,以确保它 们拥有不同于守卫的阵营.

  • 现在守卫会攻击其它阵营的敌对实体,只要玩家不攻击就不对玩家造成伤害.

  • 设置选项 PreventMobKillDrops 为true以防止守卫被非玩家实体击杀 后掉落物品. 修改定点生成选项 Leash 与实体选项 FollowRange 为较低值以 防止守卫击杀离自身较远的敌对实体

例2: 兽族阵营与地精族阵营对峙

  • 设一个世界有两个怪物阵营:兽人与地精,它们彼此不大喜欢,经常发生冲突.
  • 下文将讲解有关上述场景的配置写法.
  • 创建一个位于兽族阵营的实体与一个位于地精租阵营的实体.
兽人:
  Mobtype: zombie_villager
  Display: '&a一个 兽人'
  Health: 50
  Damage: 4
  Faction: 兽族
  AIGoalSelectors:
  - opendoors
  - meleeattack
  AITargetSelectors:
  - hurtbytarget
  - specificfactionmonsters 地精族
  - players
  Equipment:
  - C_DeathfistSkullcap:4
  - C_DeathfistTunic:3
  - C_DeathfistLeggings:2
  - C_DeathfistBoots:1
  - COS_WoodSword:0
  Options:
    Despawn: true
    FollowRange: 10
    AlwaysShowName: false
    MovementSpeed: 0.25
    PreventOtherDrops: true
    PreventItemPickup: true
    KnockbackResistance: 0.25
    PreventMobKillDrops: true
    
地精:
  Mobtype: zombie
  Display: '&a一个 地精'
  Health: 80
  Damage: 4
  Faction: 地精族
  AIGoalSelectors:
  - opendoors
  - meleeattack
  AITargetSelectors:
  - hurtbytarget
  - specificfactionmonsters 兽族
  - players
  Equipment:
  - COS_BronzeHead:4
  - COS_BronzeChest:3
  - COS_BronzeLegs:2
  - COS_BronzeFeet:1
  - COS_WoodAxe:0
  Skills:
  - skill BashI ~onAttack >0 0.25
  Options:
    Despawn: true
    FollowRange: 10
    AlwaysShowName: false
    MovementSpeed: 0.25
    PreventOtherDrops: true
    PreventItemPickup: true
    KnockbackResistance: 0.4    
    PreventMobKillDrops: true
  • 上述配置有一些值得注意的地方.
    • 首先,这两个MythicMobs实体的阵营不同,是为了区分它们俩.

    • 其次,使用AI行动器 开门与近战攻击 来配置这两个实体,这在大多数近距离攻击类型的实体配置中很常见.

    • 最后清除默认AI目标选择器并进行设置.

      • AI目标选择器 hurtbytarget 可防止实体被玩家所利用(比如原版常见的骷髅内斗).
      • AI目标选择器 specifictargetfaction 用于决定实体会选取处在什么阵营内的实体为目标.
      • AI目标选择器 players 将在周围没有对立阵营的实体时选取附近的玩家为目标.
  • 现在实体会攻击对立阵营的实体与玩家. 设置选项 *PreventMobKillDrops 为true以防止实体被非玩家实体击 杀后掉落物品.
  • 如果您想要添加其它处在这俩阵营内的实体,只需要复制并粘贴上述内容的AI配置.
⚠️ **GitHub.com Fallback** ⚠️