Somon 3 Опубликовано 22 января, 2017 Как включить осаду на каждую неделю? # Время от которого идет валидация времени осады замков(ТВ)CastleValidationDate = 1;9;2016# Масив времени которые генерится после осады замка, дает юзеру выбор времени осадыCastleSelectHours = 16;20# Альтернативное время осад# Включить альтернативное время осад?CastleGenerateAlternativeTime = falseCastleGenerateTimeLow = 46800000CastleGenerateTimeHigh = 61200000 включить алтернативную времю осад? вообщем нужно чтобы каждую неделю в субботу и в пятницу были осады. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 22 января, 2017 В файле Siege.java меняешь cal.set(Calendar.DAY_OF_WEEK, holder.getDay()); cal.set(Calendar.HOUR_OF_DAY, holder.getHour()); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); if (cal.before(Calendar.getInstance())) { cal.add(Calendar.DAY_OF_WEEK, 14); } на cal.set(Calendar.DAY_OF_WEEK, holder.getDay()); cal.set(Calendar.HOUR_OF_DAY, holder.getHour()); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); if (cal.before(Calendar.getInstance())) { cal.add(Calendar.DAY_OF_WEEK, 7); } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Somon 3 Опубликовано 22 января, 2017 В файле Siege.java меняешь cal.set(Calendar.DAY_OF_WEEK, holder.getDay()); cal.set(Calendar.HOUR_OF_DAY, holder.getHour()); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); if (cal.before(Calendar.getInstance())) { cal.add(Calendar.DAY_OF_WEEK, 14); } на cal.set(Calendar.DAY_OF_WEEK, holder.getDay()); cal.set(Calendar.HOUR_OF_DAY, holder.getHour()); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); if (cal.before(Calendar.getInstance())) { cal.add(Calendar.DAY_OF_WEEK, 7); } в ядре? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Somon 3 Опубликовано 22 января, 2017 у меня хф - гринд тим нету такого файла походу( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 22 января, 2017 В ядре. Везде есть. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Somon 3 Опубликовано 22 января, 2017 /** * Генерирует даты для следующей осады замка, и запускает таймер на автоматическую установку даты */ 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); } /** * Ставит осадное время вручну, вызывается с пакета {@link core.gameserver.network.l2.c2s.RequestSetCastleSiegeTime} * @param id */ public void setNextSiegeTime(int id) { if(!_nextSiegeTimes.contains(id) || _nextSiegeDateSetTask == null) return; _nextSiegeTimes = Containers.EMPTY_INT_SET; _nextSiegeDateSetTask.cancel(false); _nextSiegeDateSetTask = null; setNextSiegeTime(id * 1000L); } /** * Автоматически генерит и устанавливает дату осады */ private void setNextSiegeTime() { final Calendar calendar = (Calendar) Config.CASTLE_VALIDATION_DATE.clone(); calendar.set(Calendar.DAY_OF_WEEK, _dayOfWeek); calendar.set(Calendar.HOUR_OF_DAY, _hourOfDay); if(calendar.before(Config.CASTLE_VALIDATION_DATE)) calendar.add(Calendar.WEEK_OF_YEAR, 2); 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()); } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Somon 3 Опубликовано 22 января, 2017 (изменено) В ядре. Везде есть. выше пост в ядре нашёл. Изменено 22 января, 2017 пользователем Somon Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 22 января, 2017 (изменено) calendar.add(Calendar.WEEK_OF_YEAR, 2); меняй на calendar.add(Calendar.DAY_OF_WEEK, 7); Изменено 22 января, 2017 пользователем zGosu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 22 января, 2017 validateSiegeDate(calendar, 2); - Еще это глянь, если предыдущее работать не будет. Т.к. я хз за что это функция отвечает. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Somon 3 Опубликовано 22 января, 2017 calendar.add(Calendar.WEEK_OF_YEAR, 2); меняй на calendar.add(Calendar.DAY_OF_WEEK, 7); там же YEAR а не WEEK. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 22 января, 2017 там же YEAR а не WEEK. И? Вы даже не знаете что оно обозначает? DAY_OF_YEAR — день года (0- 365) DAY_OF_MONTH — день месяца( какой по счету день в месяце 0 — 31) WEEK_OF_MONTH — неделя месяца WEEK_OF_YEAR — неделя в году MONTH — номер месяца Year — номер года Calendar.ERA — эра 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Somon 3 Опубликовано 22 января, 2017 И? Вы даже не знаете что оно обозначает? DAY_OF_YEAR — день года (0- 365) DAY_OF_MONTH — день месяца( какой по счету день в месяце 0 — 31) WEEK_OF_MONTH — неделя месяца WEEK_OF_YEAR — неделя в году MONTH — номер месяца Year — номер года Calendar.ERA — эра спасибо, щас компил сделаю. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты