Запуск эвента
Есть эвент 15 (рыбалка в Тернистой Долине), идет каждое воскресенье с 14:00 до 16:00.
В базе указано это же время. В логах: старт эвента в 13:00, окончание - в 15:00. Получается, что при старте и остановке эвента не учитывается перевод часов. Нужны ли какие-нибудь дополнительные настройки в конфигах или базе (например, `realmlist`.`timezone`=12)? |
что-то подобное здесь уже спрашивали. Ответ был: "Перестартони MySQL" (если у тебя сервер онлайн 24/7)
|
Да нет, это не то, поясняю, есть эвенты, которые стартуют с начала года - у них все нормально, а есть записи, у которых стартовая дата в промежутке, между датами перевода времени - вот у них это и вылазит.)
|
В базе время старта 14:00, сервер показывает время в игре 14:00, а эвент не стартует.
Лезу в лог и вижу, что эвент стартовал на час раньше. |
Цитата:
|
time_zone=SYSTEM
|
сделать две вещи надо бы:
1. унифицировать все даты стартов евентов (это в YTDB) 2. разобраться с таймзоной мускл (это локально) больше в голову ничего не приходит Может таймзону явно указать GMT+... (сколько нужно)? |
1. Эвент должен стартовать и останавливаться нормально по указанному в базе времени.
2. Время мускуля = время системы. |
Я это выше читал. :)
но навскидку можешь глянуть даты старта евентов в базе? Когда-то (я давно не смотрел, точнее не скажу) там были даты старта от 2007 до 2010 годов. Есть же еженедельные евенты, которым очень просто прописать старт на перую неделю первого месяца этого года (например)? Причем не каким-то отдельным, а ВСЕМ привести дату старта к узкому промежутку. А понятия сисетмное время и GMT+... - это все-таки разные вещи. Одно дело мусклу в твоем компе рыться в поисках нужного времени, другое дело ему прямо указать по какому считать. Вот уж не знаю - смог ли я свою мысль понятно объяснить и насколько она актуальна на текущий момент. Может уже и так все сделано... Но тогда странно, что отставание на час не у всех евентов, а только у некоторых. |
Не поленился, провел эксперимент:
1. На машине windows server 2003 x64 2. MySQL 5.1.11 (какой стоял тот и оставил) 3. поставил сервер 3.3.5а (первый попавшийся под руку) собственной компиляции с репозитория insider42 4. база YTDB из бакапа основного сервера. 5. ивенты Специально ничего не настраивал. т.е. все настройки системы и mysql - по-умолчанию. начинаю проверять на ивенте 16 - ящики на арене гурубаши: Стартует на час раньше положенного. дата начала ивента - 04.08.2007 года. меняю эту дату на 01.01.2007, перестартовываю мускуль и сервер - начинает работать нормально. ВЫВОД: если начало ивента происходит в летнее время, то каким-то неведомым способом производится корректировака времени на 1 час. Эксперимент продолжаю... |
Об этом выше писал NeatElves в посте 3.:)
|
Появилась новая потеха: нпц для эвента появляются, а квестеры - нет.
Бывает, что наоборот.:) |
Подтверждаю, пример - Омерзительный Гринч, есть 6 точек спавна, все 6 в пулле, все привязаны к евенту нового года, в мире моба нет(ранее был - точки спавна и пулл и привязка к евенту, год ничего не менялось)...
|
|
Дома ХР, а на сервере Server 2003, да и не то это.
Проблема замечена недавно. |
Если нпц Омерзительный Гринч вынести из пулла, то спавнится сразу во всех точках, т.е. именно пулл не дает нпц появиться в мире.
|
Из гуидов 13752,82719,82722,82723,83031,83035 оставил только 2 последних для теста.
Если очистить таблицу `game_event_gameobject`, то нпц спавнится, как и положено. Если таблицу не трогать, то нпц нет. Добавил вывод данных в блок: Код:
// now recheck that all eventPools linked with events after our skip pools with parents Код:
2010-12-19 00:19:00 creature2event go2event - данные по связке го-эвент. Получается, что для двух гуидов нпц находятся какие-то левые пуллы и эвенты. |
А если убрать Гринча из эвента, то спавнится один из пулла.
Но есть еще и куча нпц без пуллов, приписаны к эвентам, но при старте этих эвентов нпц в мире нет.( |
10915 - заработал спавн мобов в евентах.)
|
Значит, остается только косяк с неправильным стартом эвентов из-за перевода часов.
|
тут возможно больше косяк - в том какое время надо использовать системное.
И как я понимаю это проблема только *nix? |
Цитата:
|
Системы с багом указывал:
Цитата:
Тогда не должно быть таких косяков. |
Цитата:
|
Цитата:
|
Т.е. должно быть `realmlist`.`timezone`=12?
|
Цитата:
Вообще, стоило бы всем, у кого проблемы есть и нету - прикладывать дампы. Вот и посмотрим чьи руки виноваты. А то голословным утверждениям верить, особенно в такой ситуации - смысла нет. И вообще 9-10 посты перечитывать... |
Цитата:
в каком-нибудь навикате наберите: Код:
SHOW VARIABLES LIKE '%time_zone%'; Для изменения нужно выполнить запрос: (пример для Москвы) Код:
SET time_zone = '+03:00'; |
Цитата:
|
У меня в базе стоит SYSTEM, уже писал об этом.
Т.е. время берется системное, с нужной временной зоной, с учетом перевода часов. |
в mangos/src/game/GameEventMgr.cpp вижу строчку 113:
Код:
QueryResult *result = WorldDatabase.Query("SELECT entry,UNIX_TIMESTAMP(start_time),UNIX_TIMESTAMP(end_time),occurence,length,holiday,description FROM game_event"); Так вот, возникает мысль, а что если умный MySQL при переводе корректирует переход на летнее время? (Взял на испытание... сейчас попробую проверить). |
Цитата:
Цитата:
То есть евенты, у которых время старта проставлено на летнем времени (в промежутке между маем и сентябрем - когда у нас там летнее время считается, не помню), но которые при этом идут вне летнего времени (осенью-зимой-весной) - им необходимо корректировать время старта. :) :) :) Проблема базы. Точнее - работы с базой. :) :) :) |
В запросе время старта берется из базы с преобразованием к юникс-формату.
В остальном берется Код:
time_t currenttime = time(NULL); Ведь в мускуле указано, что надо брать системное время, а currenttime, как я понимаю, делает то же самое. |
да причем тут время системы и время базы? :(
|
Возник интересный вопрос. Сейчас у нас отменили летнее время. Что-нибудь в данном вопросе изменилось?
|
Цитата:
|
интересно, а в коде Мангоса ?
|
а мангосу на все эти пляски начхать - там по жизни используется time_t time(null) которое коррекции не подлежит - это счетчик секунд от 1 января 1970г. вот база - та выдает время с коррекцией на TZ если правильно попросить...
|
Текущее время: 21:26. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS