Правка Fortress Siege Time

KateKate7912

who lost her mind
Пользователь
Разработчик
За знание датапака
За знание ядра
За веру и верность форуму
Медаль за активность на Форуме
Сообщения
1 131
Розыгрыши
0
Репутация
941
Реакции
576
Баллы
0
Здравствуйте, уважаемые администраторы портала!
Хотела бы получить поддержку по такому вопросу.

Задача:
Изменить время повторной осады на форт после его взятия.

А именно, мне не совсем понятны такие переменные.

Siege.java
На форт можно зарегистрироваться сразу же после осады, буд то код вообще не работает.

Код:
// Регистрация невозможна, если последняя осада проходила менее чем четыре часа назад
            if(getSiegeUnit().getLastSiegeDate() * 1000 + 4 * 60 * 60 * 1000 > System.currentTimeMillis())
            {
                player.sendPacket(new SystemMessage(SystemMessage.THE_DEADLINE_TO_REGISTER_FOR_THE_SIEGE_OF_S1_HAS_PASSED).addString(getSiegeUnit().getName()));
                return false;
            }

            if(TerritorySiege.getSiegeDate().getTimeInMillis() > System.currentTimeMillis() && TerritorySiege.getSiegeDate().getTimeInMillis() - System.currentTimeMillis() < 2 * 60 * 60 * 1000)
            {
                player.sendPacket(new SystemMessage(SystemMessage.THE_DEADLINE_TO_REGISTER_FOR_THE_SIEGE_OF_S1_HAS_PASSED).addString(getSiegeUnit().getName()));
                return false;
            }

FortressSiege.java

Код:
1.
L2GameThreadPools.getInstance().scheduleGeneral(new FortressSiegeEndTask(this), getSiegeLength() * 60 * 1000); // Prepare auto end task
            _fameTask = L2GameThreadPools.getInstance().scheduleGeneralAtFixedRate(new SiegeFameTask(), Config.FORTRESS_ZONE_FAME_TASK_FREQUENCY, Config.FORTRESS_ZONE_FAME_TASK_FREQUENCY);

2.
// Schedule siege auto start, через 1 час
        _siegeStartTask = L2GameThreadPools.getInstance().scheduleGeneral(new FortressSiegeStartTask(this, 3600), 1000);

3.
Тут так же не понятно работает это или нет, так как дать регистрацию можно сразу после осады.

// Осада не чаще, чем каждые 4 часа + 1 час на подготовку.
            if(Calendar.getInstance().getTimeInMillis() - getSiegeUnit().getLastSiegeDate() * 1000 > 14400000)
                _siegeDate.add(Calendar.HOUR_OF_DAY, 1);
            else
            {
                _siegeDate.setTimeInMillis(getSiegeUnit().getLastSiegeDate() * 1000);
                _siegeDate.add(Calendar.HOUR_OF_DAY, 5);
            }
            _database.saveSiegeDate();
        }
    }
 
Здравствуйте, уважаемые администраторы портала!
Хотела бы получить поддержку по такому вопросу.

Задача:
Изменить время повторной осады на форт после его взятия.

А именно, мне не совсем понятны такие переменные.

Siege.java
На форт можно зарегистрироваться сразу же после осады, буд то код вообще не работает.

Код:
// Регистрация невозможна, если последняя осада проходила менее чем четыре часа назад
            if(getSiegeUnit().getLastSiegeDate() * 1000 + 4 * 60 * 60 * 1000 > System.currentTimeMillis())
            {
                player.sendPacket(new SystemMessage(SystemMessage.THE_DEADLINE_TO_REGISTER_FOR_THE_SIEGE_OF_S1_HAS_PASSED).addString(getSiegeUnit().getName()));
                return false;
            }

            if(TerritorySiege.getSiegeDate().getTimeInMillis() > System.currentTimeMillis() && TerritorySiege.getSiegeDate().getTimeInMillis() - System.currentTimeMillis() < 2 * 60 * 60 * 1000)
            {
                player.sendPacket(new SystemMessage(SystemMessage.THE_DEADLINE_TO_REGISTER_FOR_THE_SIEGE_OF_S1_HAS_PASSED).addString(getSiegeUnit().getName()));
                return false;
            }

FortressSiege.java

Код:
1.
L2GameThreadPools.getInstance().scheduleGeneral(new FortressSiegeEndTask(this), getSiegeLength() * 60 * 1000); // Prepare auto end task
            _fameTask = L2GameThreadPools.getInstance().scheduleGeneralAtFixedRate(new SiegeFameTask(), Config.FORTRESS_ZONE_FAME_TASK_FREQUENCY, Config.FORTRESS_ZONE_FAME_TASK_FREQUENCY);

2.
// Schedule siege auto start, через 1 час
        _siegeStartTask = L2GameThreadPools.getInstance().scheduleGeneral(new FortressSiegeStartTask(this, 3600), 1000);

3.
Тут так же не понятно работает это или нет, так как дать регистрацию можно сразу после осады.

// Осада не чаще, чем каждые 4 часа + 1 час на подготовку.
            if(Calendar.getInstance().getTimeInMillis() - getSiegeUnit().getLastSiegeDate() * 1000 > 14400000)
                _siegeDate.add(Calendar.HOUR_OF_DAY, 1);
            else
            {
                _siegeDate.setTimeInMillis(getSiegeUnit().getLastSiegeDate() * 1000);
                _siegeDate.add(Calendar.HOUR_OF_DAY, 5);
            }
            _database.saveSiegeDate();
        }
    }
Но осада то начнется через 5 часов, а не через час. Или ткбя парит что можно кинуть саму регу?
 
Но осада то начнется через 5 часов, а не через час. Или ткбя парит что можно кинуть саму регу?
Здравствуйте!
Нпс для регистрации не пропадает после осады, хотя вроде бы должен. Он работает по принципу регистрации на замок. Как на проекте scryde.
Вот там так же можно фармить каждый час форты. И интересно то, что в нпс отображает когда будет осада.

Пример.
Я зарегистрировалась, взяла форт. Подхожу к нпс твинком, даю регистрацию, и пишет время следующей осады. (В моем случае 1 час).
Буд то код где написано о 4 часах просто не работает, или я чего то не понимаю.=/
 
Здравствуйте!
Нпс для регистрации не пропадает после осады, хотя вроде бы должен. Он работает по принципу регистрации на замок. Как на проекте scryde.
Вот там так же можно фармить каждый час форты. И интересно то, что в нпс отображает когда будет осада.

Пример.
Я зарегистрировалась, взяла форт. Подхожу к нпс твинком, даю регистрацию, и пишет время следующей осады. (В моем случае 1 час).
Буд то код где написано о 4 часах просто не работает, или я чего то не понимаю.=/


не надо смотреть на скрайд. скрайд вместе с его многотысячетемным багразделом идут в очко.
 
  • Мне нравится
Реакции: Hook
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
код не весь.
нужно смотреть где устанавливается время ( getSiegeUnit().getLastSiegeDate() ) и как оно берется.
 
Не понял что именно интересует)) Если время менять, то надо смотреть весь код, ну и конечно в условиях на время тоже менять.
 
Назад
Сверху Снизу