↑ ↓

Не срабатывают трайбы

Тема в разделе "Помощь", создана пользователем galol, 12 окт 2020.

  1. TopicStarter Overlay
    Offline

    galol Рядовой

    58
    0
    34
    Кредиты:
    $165,00
    Репутация:
    0
    Всем здорова!Сборка 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);
    	}
     
  2. Offline

    SG Shaiy Ефрейтор

    402
    95
    61
    Кредиты:
    $15.767,72
    Репутация:
    9
    во первых в нпс темплейте проверь у мобов какие аишки стоят
    или вот так попробуй добвить после
    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;