Перейти к содержанию
Авторизация  
drakola

Исправить Fear

Рекомендуемые сообщения

Привет всем. 

 

дело в том что когда кидаешь фир на моба он бегает как бешеный в перед и назад и при этом может еще и атаковать как мне исправить и где?

мне как то давали совет удалить в файле L2Character.java

 

|| isAfraid() в строках  с public boolean isAllSkillsDisabled() и с public boolean isAttackingDisabled()

 

я удалил фир стал работать но все равно не так как надо.

  11 (Показать контент)
Изменено пользователем Demoncool

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@@zGosu

 

у меня в L2Character.java  так

    public boolean isOutOfControl() {
        return isConfused() || isAfraid();
    }

а в L2AttackableAI.java я не понял где. есть только 

    public void run() {
        onEvtThink();
    }

и вот это 

    protected void onEvtThink() {
        // Check if the thinking action is already in progress
        if (_thinking || _actor.isCastingNow() || _actor.isAllSkillsDisabled()) {
            return;
        }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 17:07, drakola сказал:

 

@@zGosu

 

у меня в L2Character.java  так

    public boolean isOutOfControl() {
        return isConfused() || isAfraid();
    }

а в L2AttackableAI.java я не понял где. есть только 

    public void run() {
        onEvtThink();
    }

и вот это 

    protected void onEvtThink() {
        // Check if the thinking action is already in progress
        if (_thinking || _actor.isCastingNow() || _actor.isAllSkillsDisabled()) {
            return;
        }

Если во время фира моб подбигает и бьет скилом, то надо

// Check if the thinking action is already in progress

добавляете:

if (npc.isAllSkillsDisabled() || npc.isAfraid())
			npc.abortCast();

P.S. Этот фикс работает на L2JServer. Для других сборок фикс может немного отличаться (обычно смотрят в сам эффект)

Изменено пользователем zGosu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 11:02, gvb сказал:

У вас формула не верно написана в EffectFear.java метод onStart()

вот формула
 
    public boolean onStart() {
        // Fear skills cannot be used L2Pcinstance to L2Pcinstance.
        // Heroic Dread, Curse: Fear, Fear, Horror, Sword Symphony, Word of Fear and Mass Curse Fear are the exceptions.
        if (getEffected() instanceof L2PcInstance && getEffector() instanceof L2PcInstance) {
            switch (getSkill().getId()) {
                case 65:
                case 98:
                case 1092:
                case 1169:
                case 1272:
                case 1376:
                case 1381:
                    // all ok
                    break;
                default:
                    return false;
            }
        }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 17:20, drakola сказал:

 

вот формула
 
    public boolean onStart() {
        // Fear skills cannot be used L2Pcinstance to L2Pcinstance.
        // Heroic Dread, Curse: Fear, Fear, Horror, Sword Symphony, Word of Fear and Mass Curse Fear are the exceptions.
        if (getEffected() instanceof L2PcInstance && getEffector() instanceof L2PcInstance) {
            switch (getSkill().getId()) {
                case 65:
                case 98:
                case 1092:
                case 1169:
                case 1272:
                case 1376:
                case 1381:
                    // all ok
                    break;
                default:
                    return false;
            }
        }

 

Какая формула? Ее тут нет) Тут просто ID скилов перечислено, которые не отвечают за обрыв скила и т.п.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 17:12, zGosu сказал:

Если во время фира моб подбигает и бьет скилом, то надо

// Check if the thinking action is already in progress

добавляете:

if (npc.isAllSkillsDisabled() || npc.isAfraid())
			npc.abortCast();

P.S. Этот фикс работает на L2JServer. Для других сборок фикс может немного отличаться (обычно смотрят в сам эффект)

ошибка в гс 

        at ru.catssoftware.gameserver.ai.L2AttackableAI.onEvtThink(L2AttackableAI.java:1633)
        at ru.catssoftware.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:700)
        at ru.catssoftware.gameserver.ai.L2AttackableAI.onEvtArrived(L2AttackableAI.java:563)
        at ru.catssoftware.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:449)
        at ru.catssoftware.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:375)
        at ru.catssoftware.gameserver.GameTimeController$ArrivedCharacterManager.callTask(GameTimeController.java:218)
        at ru.catssoftware.gameserver.GameTimeController$ArrivedCharacterManager.callTask(GameTimeController.java:197)
        at ru.catssoftware.gameserver.taskmanager.AbstractFIFOPeriodicTaskManager.run(AbstractFIFOPeriodicTaskManager.java:62)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 17:43, drakola сказал:

 

ошибка в гс 

        at ru.catssoftware.gameserver.ai.L2AttackableAI.onEvtThink(L2AttackableAI.java:1633)
        at ru.catssoftware.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:700)
        at ru.catssoftware.gameserver.ai.L2AttackableAI.onEvtArrived(L2AttackableAI.java:563)
        at ru.catssoftware.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:449)
        at ru.catssoftware.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:375)
        at ru.catssoftware.gameserver.GameTimeController$ArrivedCharacterManager.callTask(GameTimeController.java:218)
        at ru.catssoftware.gameserver.GameTimeController$ArrivedCharacterManager.callTask(GameTimeController.java:197)
        at ru.catssoftware.gameserver.taskmanager.AbstractFIFOPeriodicTaskManager.run(AbstractFIFOPeriodicTaskManager.java:62)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

 

  В 10.04.2017 в 17:12, zGosu сказал:

Если во время фира моб подбигает и бьет скилом, то надо

// Check if the thinking action is already in progress

добавляете:

if (npc.isAllSkillsDisabled() || npc.isAfraid())
			npc.abortCast();

P.S. Этот фикс работает на L2JServer. Для других сборок фикс может немного отличаться (обычно смотрят в сам эффект)

Лучше правьте в самом эффекте, а не в AI

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 17:55, zGosu сказал:

Как фиксить бег я скидывал выше. 

За отмену каста отвечает метод abortCast()

За отмену автоатаки - abortAttack()

Пора уже учиться самому править такие не сложные баги. 

так дела то тогда в L2Character.java а не в  L2AttackableAI.java  и EffectFear.java

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 19:15, drakola сказал:

так дела то тогда в L2Character.java а не в  L2AttackableAI.java  и EffectFear.java

Вам виднее. Если такая проблема только с мобами, то править надо L2AttackableAI.java. В остальных случаях в EffectFear.java

 

  Где у меня присутствует проверка на FEAR (Показать контент)
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 19:26, zGosu сказал:

Вам виднее. Если такая проблема только с мобами, то править надо L2AttackableAI.java. В остальных случаях в EffectFear.java

 

  Где у меня присутствует проверка на FEAR (Показать контент)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 19:31, drakola сказал:

 

public final boolean isAfraid() {
        return _isAfraid;

 

Это просто метод. Я скинул фикс с бегом и как оборвать атаку\каст. Дело за Вами осталось) 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 10.04.2017 в 08:04, drakola сказал:

мне как то давали совет удалить в файле L2Character.java

 

|| isAfraid() в строках  с public boolean isAllSkillsDisabled() и с public boolean isAttackingDisabled()

после выполнения таких дебильных советов не стоит удивляться самым странным проблемам появившимся после правок. Изменено пользователем Gaikotsu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 13.04.2017 в 14:15, Gaikotsu сказал:

после выполнения таких дебильных советов не стоит удивляться самым странным проблемам появившимся после правок.

если это || isAfraid() в строках  с public boolean isAllSkillsDisabled() и с public boolean isAttackingDisabled() 

вернуть обратно то при фире моб просто стоит и не двигается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 13.04.2017 в 18:51, drakola сказал:

если это || isAfraid() в строках  с public boolean isAllSkillsDisabled() и с public boolean isAttackingDisabled() 

вернуть обратно то при фире моб просто стоит и не двигается.

ну а так он будет всех бить в фире) 

Просто добавь метод, который будет заставлять их бегать и всё. 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 13.04.2017 в 18:52, zGosu сказал:

ну а так он будет всех бить в фире) 

Просто добавь метод, который будет заставлять их бегать и всё. 

не подскажешь какой метод надо найти ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 13.04.2017 в 18:56, drakola сказал:

не подскажешь какой метод надо найти ? 

На передвижение. Если знаете английский, то без проблем его найдете. 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 13.04.2017 в 18:57, zGosu сказал:

На передвижение. Если знаете английский, то без проблем его найдете. 

в том то и дело что нет )))

 

может это ? 

        // Caclulate the Nb of ticks between the current position and the destination
        // One tick added for rounding reasons
        int ticksToMove = 1 + (int) ((GameTimeController.TICKS_PER_SECOND * distance) / speed);
        m._xDestination = x;
        m._yDestination = y;
        m._zDestination = z; // this is what was requested from client
Изменено пользователем drakola

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 13.04.2017 в 18:58, drakola сказал:

 

в том то и дело что нет )))

 

может это ? 

        // Caclulate the Nb of ticks between the current position and the destination
        // One tick added for rounding reasons
        int ticksToMove = 1 + (int) ((GameTimeController.TICKS_PER_SECOND * distance) / speed);
        m._xDestination = x;
        m._yDestination = y;
        m._zDestination = z; // this is what was requested from client

это не метод.... moveToLocation или похожие на него. методов на передвижение много. Но обычно пользуются тем, что я выделил, или new Location.

Тут надо смотреть, не двигается вообще (и мобы и игроки). Если только мобы, то править надо только для них (L2Attackable) или смотреть ограничения в фир эффекте или методе на передвижение. 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 13.04.2017 в 20:38, zGosu сказал:

это не метод.... moveToLocation или похожие на него. методов на передвижение много. Но обычно пользуются тем, что я выделил, или new Location.

Тут надо смотреть, не двигается вообще (и мобы и игроки). Если только мобы, то править надо только для них (L2Attackable) или смотреть ограничения в фир эффекте или методе на передвижение. 

        public void moveTo(int x, int y, int z, int offset) {
            moveToLocation(x, y, z, offset);
        }

        public boolean moveTo(int x, int y, int z) {
            return moveToLocation(x, y, z, 0);
        }
        // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive
        // to destination by GameTimeController
        // Send a Server->Client packet CharMoveToLocation to the actor and all L2PcInstance in its _knownPlayers
        broadcastPacket(new MoveToLocation(this));
    protected boolean moveToLocation(int x, int y, int z, int offset) {
		// Get the Move Speed of the L2Charcater
		float speed = getStat().getMoveSpeed();
		if (speed <= 0 || isMovementDisabled()) {
//			actionFail();
			return _AIdisabled;
		}

вот все что есть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 13.04.2017 в 22:19, drakola сказал:
        public void moveTo(int x, int y, int z, int offset) {
            moveToLocation(x, y, z, offset);
        }

        public boolean moveTo(int x, int y, int z) {
            return moveToLocation(x, y, z, 0);
        }
        // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive
        // to destination by GameTimeController
        // Send a Server->Client packet CharMoveToLocation to the actor and all L2PcInstance in its _knownPlayers
        broadcastPacket(new MoveToLocation(this));
    protected boolean moveToLocation(int x, int y, int z, int offset) {
		// Get the Move Speed of the L2Charcater
		float speed = getStat().getMoveSpeed();
		if (speed <= 0 || isMovementDisabled()) {
//			actionFail();
			return _AIdisabled;
		}

вот все что есть

 

Я фикс до этого выше Вам кидал (потом Модерация его удалила). Я так понял он Вам не помог. Поэтому рекомендую выбрать один из следующих вариантов:

1) Попросить разработчика, что бы исправили баг

2) Взять код из сборки, где работает этот эффект

3) Ну если нет разработчика и Вы не умеете копировать код из одного места в другое (т.к. фикс я Вам кидал, а Вы не можете его вставить :( ), то просить человека, что бы он за Вас поправил баг (платно\бесплатно - как повезет).

Fear.7zFetching info...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 14.04.2017 в 06:52, zGosu сказал:

Я фикс до этого выше Вам кидал (потом Модерация его удалила). Я так понял он Вам не помог. Поэтому рекомендую выбрать один из следующих вариантов:

1) Попросить разработчика, что бы исправили баг

2) Взять код из сборки, где работает этот эффект

3) Ну если нет разработчика и Вы не умеете копировать код из одного места в другое (т.к. фикс я Вам кидал, а Вы не можете его вставить :( ), то просить человека, что бы он за Вас поправил баг (платно\бесплатно - как повезет).

вы мне скинули эффект в нем то как раз все хорошо. а вот в L2Character.java косяк какой то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 14.04.2017 в 16:34, drakola сказал:

вы мне скинули эффект в нем то как раз все хорошо. а вот в L2Character.java косяк какой то.

Вы удалили в Character проверку на фир эффект... Верните его обратно. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 14.04.2017 в 16:41, zGosu сказал:

Вы удалили в Character проверку на фир эффект... Верните его обратно. 

|| isAfraid это ?

 

вернул.

   /**
     * Return true if the L2Character can't use its skills (ex : stun,
     * sleep...).
     */
    public boolean isAllSkillsDisabled() {
        return _allSkillsDisabled || isStunned() || isSleeping() || isImmobileUntilAttacked() || isParalyzed() || isPetrified()|| isAfraid() ;
    }

    /**
     * Return true if the L2Character can't attack (stun, sleep, attackEndTime,
     * fakeDeath, paralyse).
     */
    public boolean isAttackingDisabled() {
        return isStunned() || isSleeping() || isImmobileUntilAttacked() || isAttackingNow() || isFakeDeath() || isParalyzed()
                || isPetrified() || isFallsdown() || isPhysicalAttackMuted() || isCoreAIDisabled() || isAfraid();
    }
Изменено пользователем drakola

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 14.04.2017 в 16:50, drakola сказал:

|| isAfraid это ?

Да

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...