Всем здорова!Сборка 4.9 aion lighting. Проблема в том,что враждующие между собой мобы не агрятся. Сборка аион 4.6 На примере Форт Тиамат.В начале данжа НПС должны агриться на мобов и защищать игроков,а они просто стоят. <tribe name="IDTIAMAT_XDRAKAN" base="MONSTER"> <aggro>PC PC_DARK IDTIAMAT_ANCIENT</aggro> <support>IDTIAMAT_XDRAKAN</support> </tribe> <tribe name="IDTIAMAT_ANCIENT" base="USEALL"> <aggro>IDTIAMAT_XDRAKAN</aggro> </tribe> Это мобы -IDTIAMAT_XDRAKAN Это защитники - IDTIAMAT_ANCIENT Подставлял <hostile>,не помогает. Нпс начинает атаковать только если моб первый начал атаку на него. Сам агр сервис работает норм.На персонажа все мобы норм агрятся. Если даже в куче нпс создать моба враждующего, то атака будет только между двумя противниками,остальные не агрятся. Такая проблема везде.НПС защитники стоят и не реагируют на враждующих мобов. Прикрепил трайбсервис. Код: public class TribeRelationService { public static boolean isAggressive(Creature creature1, Creature creature2) { switch (creature1.getBaseTribe()) { case GUARD_DARK: switch (creature2.getBaseTribe()) { case PC: case GUARD: case PROTECTGUARD_LIGHT: case GENERAL: case GUARD_DRAGON: return true; default: break; } break; case PROTECTGUARD_DARK: switch (creature2.getBaseTribe()) { case PC: case GUARD: case PROTECTGUARD_LIGHT: case GENERAL: case GUARD_DRAGON: return true; default: break; } break; case GUARD: switch (creature2.getBaseTribe()) { case PC_DARK: case GUARD_DARK: case PROTECTGUARD_DARK: case GENERAL_DARK: case GUARD_DRAGON: return true; default: break; } break; case PROTECTGUARD_LIGHT: switch (creature2.getBaseTribe()) { case PC_DARK: case GUARD_DARK: case PROTECTGUARD_DARK: case GENERAL_DARK: case GUARD_DRAGON: return true; default: break; } break; case GUARD_DRAGON: switch (creature2.getBaseTribe()) { case PC_DARK: case PC: case GUARD: case GUARD_DARK: case GENERAL_DARK: case GENERAL: case PROTECTGUARD_DARK: case PROTECTGUARD_LIGHT: return true; default: break; } break; default: break; } return DataManager.TRIBE_RELATIONS_DATA.isAggressiveRelation(creature1.getTribe(), creature2.getTribe()); } public static boolean isFriend(Creature creature1, Creature creature2) { if (creature1.getTribe() == creature2.getTribe()) // OR BASE ???? return true; switch (creature1.getBaseTribe()) { case USEALL: case FIELD_OBJECT_ALL: return true; case GENERAL_DARK: switch (creature2.getBaseTribe()) { case PC_DARK: case GUARD_DARK: return true; } break; case GENERAL: switch (creature2.getBaseTribe()) { case PC: case GUARD: return true; } break; case FIELD_OBJECT_LIGHT: switch (creature2.getBaseTribe()) { case PC: return true; } case FIELD_OBJECT_DARK: switch (creature2.getBaseTribe()) { case PC_DARK: return true; } break; } return DataManager.TRIBE_RELATIONS_DATA.isFriendlyRelation(creature1.getTribe(), creature2.getTribe()); } public static boolean isSupport(Creature creature1, Creature creature2) { switch (creature1.getBaseTribe()) { case GUARD_DARK: switch (creature2.getBaseTribe()) { case PC_DARK: return true; } break; case GUARD: switch (creature2.getBaseTribe()) { case PC: return true; } break; } return DataManager.TRIBE_RELATIONS_DATA.isSupportRelation(creature1.getTribe(), creature2.getTribe()); } public static boolean isNone(Creature creature1, Creature creature2) { if (DataManager.TRIBE_RELATIONS_DATA.isAggressiveRelation(creature1.getTribe(), creature2.getTribe()) || creature1 instanceof Npc && checkSiegeRelation((Npc) creature1, creature2) || DataManager.TRIBE_RELATIONS_DATA.isHostileRelation(creature1.getTribe(), creature2.getTribe()) || DataManager.TRIBE_RELATIONS_DATA.isNeutralRelation(creature1.getTribe(), creature2.getTribe())) { return false; } switch (creature1.getBaseTribe()) { case GENERAL_DRAGON: return true; case GENERAL: case FIELD_OBJECT_LIGHT: switch (creature2.getBaseTribe()) { case PC_DARK: return true; } break; case GENERAL_DARK: case FIELD_OBJECT_DARK: switch (creature2.getBaseTribe()) { case PC: return true; } break; } return DataManager.TRIBE_RELATIONS_DATA.isNoneRelation(creature1.getTribe(), creature2.getTribe()); } public static boolean isNeutral(Creature creature1, Creature creature2) { return DataManager.TRIBE_RELATIONS_DATA.isNeutralRelation(creature1.getTribe(), creature2.getTribe()); } public static boolean isHostile(Creature creature1, Creature creature2) { if (creature1 instanceof Npc && checkSiegeRelation((Npc) creature1, creature2)) { return true; } switch (creature1.getBaseTribe()) { case MONSTER: switch (creature2.getBaseTribe()) { case PC_DARK: case PC: return true; } break; } return DataManager.TRIBE_RELATIONS_DATA.isHostileRelation(creature1.getTribe(), creature2.getTribe()); } public static boolean checkSiegeRelation(Npc npc, Creature creature) { return npc.getObjectTemplate().getAbyssNpcType() != AbyssNpcType.ARTIFACT && npc.getObjectTemplate().getAbyssNpcType() != AbyssNpcType.NONE && ((npc.getBaseTribe() == TribeClass.GENERAL && creature.getTribe() == TribeClass.PC_DARK) || (npc.getBaseTribe() == TribeClass.GENERAL_DARK && creature.getTribe() == TribeClass.PC) || npc.getBaseTribe() == TribeClass.GENERAL_DRAGON); }
во первых в нпс темплейте проверь у мобов какие аишки стоят или вот так попробуй добвить после case GUARD_DRAGON: switch (creature2.getBaseTribe()) { case PC_DARK: case PC: case GUARD: case GUARD_DARK: case GENERAL_DARK: case GENERAL: case PROTECTGUARD_DARK: case PROTECTGUARD_LIGHT: return true; default: break; } break; вот этот код добавь >>>>>>>>>>>>>>>> case IDTIAMAT_XDRAKAN: switch (creature2.getBaseTribe()) { case IDTIAMAT_ANCIENT: return true; default: break; } break; case IDTIAMAT_ANCIENT: switch (creature2.getBaseTribe()) { case IDTIAMAT_XDRAKAN: return true; default: break; } break;