Не так давно я смотрел сабж и там были скупки максимум полугодичной давности. А сегодня там есть скупки старостью и полтора года и почти два. Это Икс при рестарте восстановил несвежую базу торговцев или команда глючит?
Не совсем. Некоторые из этих "старых" скупок переустановили не так давно вернувшиеся в игру игроки, но их переоткрытие на высоком аптайме игрового сервера приводит к переполнению счётчика времени, используемого в момент фиксирования времени установки. Из-за этого, время переоткрытия не зафиксировалось и осталось прежним - таким, каким устанавливалось в предыдущий раз. Я пока не буду исправлять их вручную, может быть позже. Возможно игрок переоткроет их в ближайший месяц. Кстати, именно это - причина вопросиков в колонке открытия времени. Вы могли видеть такие вопросики у @buylist time в прошлом. Открытие скупки на высоком аптайме не фиксирует время скупки. Мы постараемся не доводить до этого в следующий раз. А со сменой эмулятора, эта архитектурная проблема пропадёт в принципе. Я понимаю, что это лишь смена всех связанных переменных на 64битные вместо 32, но не хочется исправлять это точечно в одиночку с перспективой выхода из под контроля каких-либо других вещей из-за этого.
Вообще-то оно тут совсем не нужно. Минимальная градация там, кажется, день, так что значение, полученное от time(), можно спокойно делить на 86400 и сохранять именно таким. 32-х разрядов хватит за глаза. Или (что вероятнее) значение времени таки надо получать из time(), а не счётчика игровых тиков.
Код: if ( !sd->state.loaded_autotrader ) sd->buy_open_time = (int)time(NULL); Похоже, я ошибся: здесь уже используется системный time(). Мы сохраняем некоторые некритичные флаги/состояния игрока (такие, как запоминание команд) в map_quit(), т.е. единожды, при плановой выгрузке персонажа из игры. Последняя аварийная остановка игры 3 мая была внеплановой, игровые процессы прерывались жёстко, поскольку с сервером была прервана связь и её нужно было вернуть. Это привело к тому, что map_quit() на персонажах не выполнился, а значит у него осталась лишь предыдущая метка об установке скупки. Спасибо, что обратили внимание. Да, проблема аптайма и некоторых сайд-эффектов связана с 32-битным счётчиком тиков. Этой проблемы нет на эмуляторе, куда мы мигрируем.