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

Время Combat Mode.

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

Доброй ночи всем.

Хочу поменять время Combat Mode чтобы игрок дольше держался в агро режиме. 

Исходы L2RO-Fandc H5. Перерыл все что есть в пакетах и так далее не нашел.

Кто может подсказать ?

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


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

Ищите упоминаня о endStance() или EndStanceTask гденибудь в Player. Должна быть функция которая запускает Runable с определеным таймаутом на завершение боевого режима

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


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

Банально в конфигах точно нету ?

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


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, Wortex сказал:

Банально в конфигах точно нету ?

Хоть в одной сборке покажи где это вынесено в конфиг.

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


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

Спасибо всем за ответы.

Не каких вариантов больше нет?

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


Ссылка на сообщение
Поделиться на другие сайты
7 часов назад, IIoIIPbIryH сказал:

Хоть в одной сборке покажи где это вынесено в конфиг.

В люцераподобных помню что-то было подобное, там и время "флага" выставить можно было.

Изменено пользователем Wortex
  • Like 1

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


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

В люцераподобных помню что-то было подобное, там и время "флага" выставить можно было.

Ну да. Глянул в jts тоже в конфиг вынесено.

# Length one stays in PvP mode after hitting an innocent (in ms)
"PvPTime" : "120000"

 

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


Ссылка на сообщение
Поделиться на другие сайты
В 24.07.2018 в 10:53, DiaWhaze сказал:

Спасибо всем за ответы.

Не каких вариантов больше нет?

Какие ещё тебе варианты нужны?

Player.java (на jts так выглядит код)

@Override
    public void startPvPFlag(final Creature target) {
        if (karma > 0) {
            return;
        }

        long startTime = System.currentTimeMillis();
        if (target != null && target.getPvpFlag() != 0) {
            startTime -= PvpConfig.PVP_TIME / 2;
        }
        if (_pvpFlag != 0 && _lastPvpAttack > startTime) {
            return;
        }

        _lastPvpAttack = startTime;

        updatePvPFlag(1);

        if (_PvPRegTask == null) {
            _PvPRegTask = ThreadPoolManager.getInstance().scheduleAtFixedRate(new PvPFlagTask(this), 1000, 1000);
        }
    }

    public void stopPvPFlag() {
        if (_PvPRegTask != null) {
            _PvPRegTask.cancel(false);
            _PvPRegTask = null;
        }
        updatePvPFlag(0);
    }

    public void updatePvPFlag(final int value) {
        if (_handysBlockCheckerEventArena != -1) {
            return;
        }
        if (_pvpFlag == value) {
            return;
        }

        setPvpFlag(value);

        sendStatusUpdate(true, true, StatusUpdate.PVP_FLAG);

        broadcastRelationChanged();
    }

    @Override
    public int getPvpFlag() {
        return _pvpFlag;
    }

    public void setPvpFlag(final int pvpFlag) {
        _pvpFlag = pvpFlag;
    }

 

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


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, IIoIIPbIryH сказал:

Какие ещё тебе варианты нужны?

Player.java (на jts так выглядит код)


@Override
    public void startPvPFlag(final Creature target) {
        if (karma > 0) {
            return;
        }

        long startTime = System.currentTimeMillis();
        if (target != null && target.getPvpFlag() != 0) {
            startTime -= PvpConfig.PVP_TIME / 2;
        }
        if (_pvpFlag != 0 && _lastPvpAttack > startTime) {
            return;
        }

        _lastPvpAttack = startTime;

        updatePvPFlag(1);

        if (_PvPRegTask == null) {
            _PvPRegTask = ThreadPoolManager.getInstance().scheduleAtFixedRate(new PvPFlagTask(this), 1000, 1000);
        }
    }

    public void stopPvPFlag() {
        if (_PvPRegTask != null) {
            _PvPRegTask.cancel(false);
            _PvPRegTask = null;
        }
        updatePvPFlag(0);
    }

    public void updatePvPFlag(final int value) {
        if (_handysBlockCheckerEventArena != -1) {
            return;
        }
        if (_pvpFlag == value) {
            return;
        }

        setPvpFlag(value);

        sendStatusUpdate(true, true, StatusUpdate.PVP_FLAG);

        broadcastRelationChanged();
    }

    @Override
    public int getPvpFlag() {
        return _pvpFlag;
    }

    public void setPvpFlag(final int pvpFlag) {
        _pvpFlag = pvpFlag;
    }

 

Сейчас бы скидывать код на пвп флаг и говорить о Агро режиме...

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


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, Demoncool сказал:

Сейчас бы скидывать код на пвп флаг и говорить о Агро режиме...

Ну значит я не правильно понял чего он хочет.

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


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

Агро режим. Когда игрок после одного удара держится в агро режиме.

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


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

Я же уже все выше описал. Там что-то не понятно?

Вот пример  с овероподобных сборок. Тут   устаналивается время начала боевого режиме, а затем запускаться таска которая проверяет не прошло ли это время, и если прошло завершает боевой режим.

 

protected void startAttackStanceTask0()
  {
    if (isInCombat())
    {
      _stanceEndTime = (System.currentTimeMillis() + 15000L);
      return;
    }
    
    _stanceEndTime = (System.currentTimeMillis() + 15000L);
    
    broadcastPacket(new L2GameServerPacket[] { new AutoAttackStart(getObjectId()) });
    

    Future<?> task = _stanceTask;
    if (task != null) {
      task.cancel(false);
    }
    

    _stanceTask = LazyPrecisionTaskManager.getInstance().scheduleAtFixedRate(_stanceTaskRunnable == null ? (this._stanceTaskRunnable = new AttackStanceTask(null)) : _stanceTaskRunnable, 1000L, 1000L);
  }

 

В данном случае время окончания боевого режима устанавливаеться как текущее + 15 сек

_stanceEndTime = (System.currentTimeMillis() + 15000L);

Изменено пользователем lvlkoo

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


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

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

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

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

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

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

Войти

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

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

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

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

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