|
Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь |
|
Опции темы | Поиск в этой теме | Опции просмотра |
08.12.2010, 11:23 | #1 |
Администратор
|
Запуск эвента
Есть эвент 15 (рыбалка в Тернистой Долине), идет каждое воскресенье с 14:00 до 16:00.
В базе указано это же время. В логах: старт эвента в 13:00, окончание - в 15:00. Получается, что при старте и остановке эвента не учитывается перевод часов. Нужны ли какие-нибудь дополнительные настройки в конфигах или базе (например, `realmlist`.`timezone`=12)? |
08.12.2010, 14:42 | #3 |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
Да нет, это не то, поясняю, есть эвенты, которые стартуют с начала года - у них все нормально, а есть записи, у которых стартовая дата в промежутке, между датами перевода времени - вот у них это и вылазит.)
|
08.12.2010, 16:34 | #4 |
Администратор
|
В базе время старта 14:00, сервер показывает время в игре 14:00, а эвент не стартует.
Лезу в лог и вижу, что эвент стартовал на час раньше. |
09.12.2010, 02:29 | #5 |
Супер-модератор
Регистрация: 26.02.2010
Сообщений: 13
Сказал(а) спасибо: 58
Поблагодарили 8 раз(а) в 3 сообщениях
|
|
09.12.2010, 08:59 | #6 |
Администратор
|
time_zone=SYSTEM
|
09.12.2010, 16:50 | #7 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
сделать две вещи надо бы:
1. унифицировать все даты стартов евентов (это в YTDB) 2. разобраться с таймзоной мускл (это локально) больше в голову ничего не приходит Может таймзону явно указать GMT+... (сколько нужно)?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
09.12.2010, 17:25 | #8 |
Администратор
|
1. Эвент должен стартовать и останавливаться нормально по указанному в базе времени.
2. Время мускуля = время системы. |
09.12.2010, 17:36 | #9 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Я это выше читал.
но навскидку можешь глянуть даты старта евентов в базе? Когда-то (я давно не смотрел, точнее не скажу) там были даты старта от 2007 до 2010 годов. Есть же еженедельные евенты, которым очень просто прописать старт на перую неделю первого месяца этого года (например)? Причем не каким-то отдельным, а ВСЕМ привести дату старта к узкому промежутку. А понятия сисетмное время и GMT+... - это все-таки разные вещи. Одно дело мусклу в твоем компе рыться в поисках нужного времени, другое дело ему прямо указать по какому считать. Вот уж не знаю - смог ли я свою мысль понятно объяснить и насколько она актуальна на текущий момент. Может уже и так все сделано... Но тогда странно, что отставание на час не у всех евентов, а только у некоторых.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
09.12.2010, 19:38 | #10 |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
Не поленился, провел эксперимент:
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 час. Эксперимент продолжаю... Последний раз редактировалось Кот ДаWINчи; 09.12.2010 в 19:45. |
09.12.2010, 19:41 | #11 |
Администратор
|
Об этом выше писал NeatElves в посте 3.
|
16.12.2010, 21:04 | #12 |
Администратор
|
Появилась новая потеха: нпц для эвента появляются, а квестеры - нет.
Бывает, что наоборот. |
16.12.2010, 21:46 | #13 |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
Подтверждаю, пример - Омерзительный Гринч, есть 6 точек спавна, все 6 в пулле, все привязаны к евенту нового года, в мире моба нет(ранее был - точки спавна и пулл и привязка к евенту, год ничего не менялось)...
|
17.12.2010, 05:30 | #14 |
Гость
Сообщений: n/a
|
Последний раз редактировалось Sark; 17.12.2010 в 05:32. |
17.12.2010, 09:12 | #15 |
Администратор
|
Дома ХР, а на сервере Server 2003, да и не то это.
Проблема замечена недавно. |
18.12.2010, 18:45 | #16 |
Администратор
|
Если нпц Омерзительный Гринч вынести из пулла, то спавнится сразу во всех точках, т.е. именно пулл не дает нпц появиться в мире.
|
18.12.2010, 23:25 | #17 |
Администратор
|
Из гуидов 13752,82719,82722,82723,83031,83035 оставил только 2 последних для теста.
Если очистить таблицу `game_event_gameobject`, то нпц спавнится, как и положено. Если таблицу не трогать, то нпц нет. Добавил вывод данных в блок: Код:
// now recheck that all eventPools linked with events after our skip pools with parents for(std::map<uint16,int16>::const_iterator itr = pool2event.begin(); itr != pool2event.end(); ++itr) { uint16 pool_id = itr->first; int16 event_id = itr->second; sPoolMgr.CheckEventLinkAndReport(pool_id, event_id, creature2event, go2event); Код:
2010-12-19 00:19:00 creature2event 2010-12-19 00:19:00 pool_id=1083, event_id=15, g=83031, e=2 2010-12-19 00:19:00 pool_id=1083, event_id=15, g=83035, e=2 2010-12-19 00:19:00 go2event 2010-12-19 00:19:00 creature2event 2010-12-19 00:19:00 pool_id=1095, event_id=15, g=83031, e=2 2010-12-19 00:19:00 pool_id=1095, event_id=15, g=83035, e=2 2010-12-19 00:19:00 go2event 2010-12-19 00:19:00 creature2event 2010-12-19 00:19:00 pool_id=1102, event_id=15, g=83031, e=2 2010-12-19 00:19:00 pool_id=1102, event_id=15, g=83035, e=2 2010-12-19 00:19:00 go2event 2010-12-19 00:19:00 creature2event 2010-12-19 00:19:00 pool_id=1104, event_id=15, g=83031, e=2 2010-12-19 00:19:00 pool_id=1104, event_id=15, g=83035, e=2 2010-12-19 00:19:00 go2event 2010-12-19 00:19:00 creature2event 2010-12-19 00:19:00 pool_id=9867, event_id=2, g=83031, e=2 2010-12-19 00:19:00 pool_id=9867, event_id=2, g=83035, e=2 2010-12-19 00:19:00 go2event go2event - данные по связке го-эвент. Получается, что для двух гуидов нпц находятся какие-то левые пуллы и эвенты. |
18.12.2010, 23:47 | #18 |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
А если убрать Гринча из эвента, то спавнится один из пулла.
Но есть еще и куча нпц без пуллов, приписаны к эвентам, но при старте этих эвентов нпц в мире нет.( Последний раз редактировалось NeatElves; 18.12.2010 в 23:50. |
24.12.2010, 15:25 | #19 |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
10915 - заработал спавн мобов в евентах.)
Последний раз редактировалось NeatElves; 24.12.2010 в 15:27. |
24.12.2010, 15:49 | #20 |
Администратор
|
Значит, остается только косяк с неправильным стартом эвентов из-за перевода часов.
|
27.12.2010, 20:34 | #21 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
тут возможно больше косяк - в том какое время надо использовать системное.
И как я понимаю это проблема только *nix?
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
27.12.2010, 22:10 | #23 |
Администратор
|
|
27.12.2010, 22:18 | #24 |
MaNGOS Dev
Регистрация: 22.06.2010
Сообщений: 78
Сказал(а) спасибо: 24
Поблагодарили 71 раз(а) в 25 сообщениях
|
|
28.12.2010, 08:58 | #26 |
Администратор
|
Т.е. должно быть `realmlist`.`timezone`=12?
|
28.12.2010, 09:46 | #27 | |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Цитата:
Вообще, стоило бы всем, у кого проблемы есть и нету - прикладывать дампы. Вот и посмотрим чьи руки виноваты. А то голословным утверждениям верить, особенно в такой ситуации - смысла нет. И вообще 9-10 посты перечитывать...
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
|
28.12.2010, 13:18 | #28 |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
нет.
в каком-нибудь навикате наберите: Код:
SHOW VARIABLES LIKE '%time_zone%'; Для изменения нужно выполнить запрос: (пример для Москвы) Код:
SET time_zone = '+03:00'; |
28.12.2010, 13:53 | #30 |
Администратор
|
У меня в базе стоит SYSTEM, уже писал об этом.
Т.е. время берется системное, с нужной временной зоной, с учетом перевода часов. |
28.12.2010, 16:38 | #31 |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
в 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 при переводе корректирует переход на летнее время? (Взял на испытание... сейчас попробую проверить). |
28.12.2010, 17:46 | #32 | |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Незачем, так и есть.
Цитата:
То есть евенты, у которых время старта проставлено на летнем времени (в промежутке между маем и сентябрем - когда у нас там летнее время считается, не помню), но которые при этом идут вне летнего времени (осенью-зимой-весной) - им необходимо корректировать время старта. Проблема базы. Точнее - работы с базой.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
|
28.12.2010, 23:09 | #33 |
Администратор
|
В запросе время старта берется из базы с преобразованием к юникс-формату.
В остальном берется Код:
time_t currenttime = time(NULL); Ведь в мускуле указано, что надо брать системное время, а currenttime, как я понимаю, делает то же самое. |
28.12.2010, 23:20 | #34 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
да причем тут время системы и время базы?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
10.12.2011, 22:18 | #38 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
а мангосу на все эти пляски начхать - там по жизни используется time_t time(null) которое коррекции не подлежит - это счетчик секунд от 1 января 1970г. вот база - та выдает время с коррекцией на TZ если правильно попросить...
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Установка, настройка и запуск MaNGOS | KiriX | Установка MaNGOS | 58 | 14.09.2013 14:37 |
Запуск мангос на линукс через wine (вопрос) | Hard | Корзина | 4 | 21.03.2010 09:40 |