差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
插件手册:mythicmobs:阵营 [2021/08/26 15:13] – [阵营 Factions] duangfafa | 插件手册:mythicmobs:阵营 [2021/08/30 13:19] (当前版本) – 移除 duangfafa | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== 阵营(派系) Factions ====== | ||
- | ====== 自定义 生物 AI ====== | ||
- | |||
- | ---- | ||
- | MythicMobs 提供了在你的生物中对自定义生物 AI 进行编程的能力,这允许对生物如何攻击、他们选择攻击的目标以及其他动作进行大量额外的定制。 | ||
- | |||
- | 在以下部分中,我将提供一些示例,说明如何配置您可能希望在服务器上使用的几个常见场景。 | ||
- | |||
- | **玩家注意事项:** | ||
- | 默认情况下,MythicMobs 使用权限系统让玩家被视为派系的一部分。如果玩家有权限'' | ||
- | 通过注册自定义派系提供者,可以使用 API 覆盖此行为。 | ||
- | |||
- | ===== AI 目标、目标和派系 ===== | ||
- | * 定义 AI 通常需要配置两件事才能工作。你需要**AI Goals**,它告诉生物它应该如何行动,你需要**AI Targets**告诉生物它应该如何瞄准事物。 | ||
- | * **派系**用于将生物分组,稍后将用于更高级的配置。 | ||
- | * 默认情况下,大多数(不是全部)Minecraft 生物都有某种内部 AI 目标列表,可以告诉他们 AI 应该如何工作。例如,骷髅 AI 说它应该以玩家为目标,并且在攻击所述玩家时应该使用箭矢的攻击选项。 | ||
- | * 为了使用 MythicMobs 重新编程 AI,我们必须首先明确其 AI 目标和目标,然后向这些领域添加新目标。 | ||
- | * 自定义 AI 不适用于所有生物。一些生物,例如末影龙,是硬编码的,无法更改。**__< | ||
- | <code yaml [enable_line_numbers=" | ||
- | DecayingSkeleton: | ||
- | Mobtype: skeleton | ||
- | Display: '& | ||
- | Health: 15 | ||
- | Damage: 1 | ||
- | Faction: Undead | ||
- | AIGoalSelectors: | ||
- | - clear | ||
- | - arrowattack | ||
- | AITargetSelectors: | ||
- | - clear | ||
- | - players | ||
- | Options: | ||
- | FollowRange: | ||
- | MovementSpeed: | ||
- | PreventOtherDrops: | ||
- | </ | ||
- | |||
- | * 此示例显示了骷髅 AI 通常如何用于攻击。 (减去了所有细节,例如随机走动的代码)。 | ||
- | * 现在守卫将锁定其它阵营的任何实体为目标并会在受伤后锁定攻击者为目标 (这将包括攻击它的玩家), | ||
- | * **AIGoalSelectors** 部分告诉骷髅在实现其日常目标时使用 **arrowattack** 动作。 | ||
- | * **AITargetSelectors** 部分告诉 骷髅 | ||
- | * 如您所见,**clear** 始终是第一位的,在这种情况下,它会清除原本的 AI,因此您可以使用干净的AI。 这很重要,否则您的 AI 可能无法按您预期的方式运行。 | ||
- | |||
- | ---- | ||
- | |||
- | * 现在假设我们希望骷髅改为攻击其他生物,并且我们希望他使用近战攻击而不是远程攻击。 请参阅下文了解我们如何实现这一点。 | ||
- | <code yaml [enable_line_numbers=" | ||
- | DecayingSkeleton: | ||
- | Mobtype: skeleton | ||
- | Display: '& | ||
- | Health: 15 | ||
- | Damage: 1 | ||
- | Faction: Undead | ||
- | AIGoalSelectors: | ||
- | - clear | ||
- | - meleeattack | ||
- | AITargetSelectors: | ||
- | - clear | ||
- | - hurtbytarget | ||
- | - otherfactionmonsters | ||
- | Equipment: | ||
- | - COS_WoodSword: | ||
- | Options: | ||
- | FollowRange: | ||
- | MovementSpeed: | ||
- | PreventOtherDrops: | ||
- | </ | ||
- | |||
- | * 骷髅 AI 现在被编程为攻击其他生物,以及首先攻击它的任何生物。此外,它将使用近战攻击而不是远程攻击。 | ||
- | * **AIGoalSelectors** 部分现在有 **meleeattack** 目标,表示使用近战攻击。应该注意的是,你现在必须给骷髅装备一把剑,这样他才能使用近战攻击,因为你不能用装备了弓的近战攻击(骷髅默认武器)这对僵尸来说不是必需的。 | ||
- | * **AITargetSelectors** 部分现在移除了 **players** 目标,因此骨架不会主动吸引玩家。相反,它有 **otherfactionmonsters** 目标,它告诉它应该攻击任何不在自己派系中的怪物(在本例中为 Undead)。还有一个优先级为 1 的 **hurtbytarget** 选择器,它表示如果任何其他实体首先攻击骷髅(例如玩家),那么它会进行报复。这个目标选择器是一个常见的选择器,应该设置为更高的优先级,这样生物就不会被利用。如果没有这个,玩家可以杀死骷髅而不用它反击,这通常是不想要的效果。 | ||
- | |||
- | ===== 示例 1:守卫攻击附近的怪物 ===== | ||
- | |||
- | * 在这种情况下,我们希望在我们城市的入口处设置一些守卫,以击退游荡太近的怪物。你可以使用一个伪装成村民的铁傀儡来实现这个功能,但他们的 AI 更难控制,而且他们有特殊的击倒攻击,这对怪物来说是不公平的,所以我们将使用 MythicMobs 的自定义 AI 来完成同样的事情以更好的方式。 | ||
- | * 我们首先需要的是一群强壮的 守卫mob 来保护我们的城镇。让我们创造一个**伪装**成村民的骷髅,并为他装备一把剑。 | ||
- | <code yaml [enable_line_numbers=" | ||
- | SummonedGuard1: | ||
- | Mobtype: skeleton | ||
- | Display: '& | ||
- | Health: 500 | ||
- | Damage: 5 | ||
- | Equipment: | ||
- | - COS_StoneSword: | ||
- | Options: | ||
- | Disguise: villager | ||
- | Despawn: true | ||
- | FollowRange: | ||
- | AlwaysShowName: | ||
- | MovementSpeed: | ||
- | PreventOtherDrops: | ||
- | KnockbackResistance: | ||
- | PreventMobKillDrops: | ||
- | </ | ||
- | * 所以如果我们把这个生物和我们镇门口的刷怪点(Spawners)绑定起来,他就会去攻击我们镇上的所有玩家,所以我们需要做一些调整来让他变得友好。 | ||
- | <code yaml [enable_line_numbers=" | ||
- | SummonedGuard1: | ||
- | Mobtype: skeleton | ||
- | Display: '& | ||
- | Health: 500 | ||
- | Damage: 5 | ||
- | Equipment: | ||
- | - COS_StoneSword: | ||
- | Faction: Guard | ||
- | AIGoalSelectors: | ||
- | - clear | ||
- | - opendoors | ||
- | - meleeattack | ||
- | AITargetSelectors: | ||
- | - clear | ||
- | - hurtbytarget | ||
- | - otherfactionmonsters | ||
- | Options: | ||
- | Disguise: villager | ||
- | Despawn: true | ||
- | FollowRange: | ||
- | AlwaysShowName: | ||
- | MovementSpeed: | ||
- | PreventOtherDrops: | ||
- | KnockbackResistance: | ||
- | PreventMobKillDrops: | ||
- | </ | ||
- | * 现在,生物将针对除他自己以外的其他包含怪物的派系,并将针对任何伤害他的人(这将阻止我们一些道德感较低的玩家为此杀死我们的守卫)他还将打开任何门以获取到他的目标。 | ||
- | * 那么问题来了。接下来,我们需要确保在我们城墙外漫游的怪物会反击我们的守卫。 | ||
- | * 下面我们将新建我们的 DecayingSkeleton (这个mob的名字)并对其进行配置。 | ||
- | <code yaml [enable_line_numbers=" | ||
- | DecayingSkeleton: | ||
- | Mobtype: skeleton | ||
- | Display: '& | ||
- | Health: 15 | ||
- | Damage: 1 | ||
- | Faction: Undead | ||
- | AIGoalSelectors: | ||
- | - clear | ||
- | - meleeattack | ||
- | AITargetSelectors: | ||
- | - clear | ||
- | - hurtbytarget | ||
- | - players | ||
- | Equipment: | ||
- | - COS_RawHead: | ||
- | - COS_WoodSword: | ||
- | Options: | ||
- | Despawn: true | ||
- | FollowRange: | ||
- | AlwaysShowName: | ||
- | MovementSpeed: | ||
- | PreventOtherDrops: | ||
- | </ | ||
- | |||
- | * 我们的DecayingSkeleton (这个mob的名字)现在在 **亡灵派系**(与守卫派系不同),所以他会被守卫攻击。此外,通过添加伤害目标选择器,如果与守卫交战(并最终死亡),我们的 DecayingSkeleton 现在会反击 | ||
- | * 对于我们在城镇附近生成的任何其他生物,我们希望为 骷髅 添加与上面配置相同的 AI 目标和目标,以确保该生物与守卫具有**不同的派系**。 | ||
- | * 现在,当我们在城门口为城镇守卫设置刷怪笼时,他会击退怪物但无视玩家(只要他们不理会守卫) | ||
- | * 在这种情况下,我们可能想要设置的一些附加设置是警卫的短跟随范围(在这种情况下为 5)在刷怪点的控制范围。这将确保守卫不会到处跑并杀死 玩家想杀怪物。我们还希望确保守卫将**PreventMobKillDrops**设置为true,这样他的击杀不会为我们的玩家掉落经验/ | ||
- | ===== 示例 2:兽人和地精互相攻击 ===== | ||
- | |||