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

Нужна Помощь В Настройке Времени Осад В First-Team

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

Здравствуйте.

Сборка First-Team хроники High Five

Проблема - осады каждую неделю, нужно изменить на 1 раз в две недели

Искал в конфигах, не нашел где это менять на стандартные 2 недели

Вопрос - где в этой сборке настраивать время проведения осад? Есть исходный код.

Заранее благодарю за подсказки.

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


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

Класс java\l2ft\gameserver\model\entity\events\impl\CastleSiegeEvent.java

Метод generateNextSiegeDates()

Строка calendar.add(Calendar.WEEK_OF_YEAR, 1);

Я думаю, что это

Изменено пользователем dislike
  • Upvote 2

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


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

Хотя нет, это для первых осад, ниже в методе setNextSiegeTime() аналогичная строка

  • Upvote 2

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


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

Класс java\l2ft\gameserver\model\entity\events\impl\CastleSiegeEvent.java

Метод generateNextSiegeDates()

Строка calendar.add(Calendar.WEEK_OF_YEAR, 1);

Я думаю, что это

 

Вижу вот такой вот код

 

 public void generateNextSiegeDates()
 {
   if (((Castle)getResidence()).getSiegeDate().getTimeInMillis() != 0L) {
  return;
   }
   Calendar calendar = (Calendar)Config.CASTLE_VALIDATION_DATE.clone();
   calendar.set(7, 1);
   if (calendar.before(Config.CASTLE_VALIDATION_DATE))
  calendar.add(3, 1);
   validateSiegeDate(calendar, 2);

   this._nextSiegeTimes = new TreeIntSet();

   for (int h : Config.CASTLE_SELECT_HOURS) {
  calendar.set(11, h);
  this._nextSiegeTimes.add((int)(calendar.getTimeInMillis() / 1000L));
   }

   long diff = ((Castle)getResidence()).getOwnDate().getTimeInMillis() + 86400000L - System.currentTimeMillis();
   this._nextSiegeDateSetTask = ThreadPoolManager.getInstance().schedule(new NextSiegeDateSet(null), diff);
 }

 public void setNextSiegeTime(int id)
 {
   if ((!this._nextSiegeTimes.contains(id)) || (this._nextSiegeDateSetTask == null)) {
  return;
   }
   this._nextSiegeTimes = Containers.EMPTY_INT_SET;
   this._nextSiegeDateSetTask.cancel(false);
   this._nextSiegeDateSetTask = null;

   setNextSiegeTime(id * 1000L);
 }

 private void setNextSiegeTime()
 {
   Calendar calendar = (Calendar)Config.CASTLE_VALIDATION_DATE.clone();
   calendar.set(7, 1);
   calendar.set(11, ((Castle)getResidence()).getLastSiegeDate().get(11));
   if (calendar.before(Config.CASTLE_VALIDATION_DATE))
  calendar.add(3, 1);
   validateSiegeDate(calendar, 2);

   if (Config.CASTLE_GENERATE_TIME_ALTERNATIVE)
   {
  if ((getId() == 3) || (getId() == 4) || (getId() == 6) || (getId() == 7))
    setNextSiegeTime(calendar.getTimeInMillis() + Config.CASTLE_GENERATE_TIME_HIGH);
  else
    setNextSiegeTime(calendar.getTimeInMillis() + Config.CASTLE_GENERATE_TIME_LOW);
   }
   else
  setNextSiegeTime(calendar.getTimeInMillis());
 }

 private void setNextSiegeTime(long g)
 {
   broadcastToWorld(new SystemMessage2(SystemMsg.S1_HAS_ANNOUNCED_THE_NEXT_CASTLE_SIEGE_TIME).addResidenceName(getResidence()));
   clearActions();
   ((Castle)getResidence()).getSiegeDate().setTimeInMillis(g);
   ((Castle)getResidence()).setJdbcState(JdbcEntityState.UPDATED);
   ((Castle)getResidence()).update();
   registerActions();
 }

 public boolean isAttackersInAlly()
 {
   return !this._firstStep;
 }

 public int[] getNextSiegeTimes()
 {
   return this._nextSiegeTimes.toArray();
 }

 

 

Мне кажется эта строка отвечает за интервал осад, или я ошибаюсь? calendar.set(7, 1);

Поменять на calendar.set(14, 1); и будет раз в две недели, или я ошибаюсь?

 

 

хотя что то совсем запутался..

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

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


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

На сколько помню вот тут это меняется setValidDate

  • Upvote 1

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


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

На сколько помню вот тут это меняется setValidDate

А если по коду, что я вставил поглядеть, там немного по другому...

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


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

А если по коду, что я вставил поглядеть, там немного по другому...

 

calendar.add(Calendar.WEEK_OF_YEAR, 1); поставь 2

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


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

calendar.add(Calendar.WEEK_OF_YEAR, 1); поставь 2

я это понял, но беда в том, что в коде я не вижу данной строки. в 4 посте можно увидеть код, который находится в этом классе, я думаю что в строке calendar.set(7, 1);

цифра 7 обозначает количество дней, и чтобы было раз в две недели поменять на 14 ее, но не уверен.

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


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

я это понял, но беда в том, что в коде я не вижу данной строки. в 4 посте можно увидеть код, который находится в этом классе, я думаю что в строке calendar.set(7, 1);

цифра 7 обозначает количество дней, и чтобы было раз в две недели поменять на 14 ее, но не уверен.

public void generateNextSiegeDates()
{
 if(getResidence().getSiegeDate().getTimeInMillis() != 0)
  return;
 final Calendar calendar = (Calendar) Config.CASTLE_VALIDATION_DATE.clone();
 calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
 if(calendar.before(Config.CASTLE_VALIDATION_DATE))
  calendar.add(Calendar.WEEK_OF_YEAR, 2);
 validateSiegeDate(calendar, 2);
 _nextSiegeTimes = new TreeIntSet();
 for(int h : Config.CASTLE_SELECT_HOURS)
 {
  calendar.set(Calendar.HOUR_OF_DAY, h);
  _nextSiegeTimes.add((int) (calendar.getTimeInMillis() / 1000L));
 }
 long diff = getResidence().getOwnDate().getTimeInMillis() + DAY_IN_MILISECONDS - System.currentTimeMillis();
 _nextSiegeDateSetTask = ThreadPoolManager.getInstance().schedule(new NextSiegeDateSet(), diff);
}

лови

  • Upvote 1

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


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

public void generateNextSiegeDates()
{
if(getResidence().getSiegeDate().getTimeInMillis() != 0)
return;
final Calendar calendar = (Calendar) Config.CASTLE_VALIDATION_DATE.clone();
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
if(calendar.before(Config.CASTLE_VALIDATION_DATE))
calendar.add(Calendar.WEEK_OF_YEAR, 2);
validateSiegeDate(calendar, 2);
_nextSiegeTimes = new TreeIntSet();
for(int h : Config.CASTLE_SELECT_HOURS)
{
calendar.set(Calendar.HOUR_OF_DAY, h);
_nextSiegeTimes.add((int) (calendar.getTimeInMillis() / 1000L));
}
long diff = getResidence().getOwnDate().getTimeInMillis() + DAY_IN_MILISECONDS - System.currentTimeMillis();
_nextSiegeDateSetTask = ThreadPoolManager.getInstance().schedule(new NextSiegeDateSet(), diff);
}

лови

спасибо большое

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

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


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

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

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

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

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

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

Войти

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

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

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

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

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