Перейти к содержанию

Electr0

Администраторы
  • Постов

    10 387
  • Зарегистрирован

  • Посещение

  • Победитель дней

    417

Весь контент Electr0

  1. Значение Статус изменено на: Публичное тестирование
  2. Значение Статус изменено на: Публичное тестирование
  3. В предиктивной проверке должна быть проверка на предотвращение исполнения уже созданных действий поворота минигана по осям X Z
  4. запрет на поворот по оси X внедрен, текущие углы миниганов будут сброшены.
  5. ally_warning_system ally_fort_system ally_vip_system ally_vote_manager под наблюдением.
  6. Значение Статус изменено на: Публичное тестирование
  7. Значение Статус изменено на: Закрытое тестирование
  8. ally_warning_system поправлен
  9. код сбора белого листка имунки от кика переписан, теперь не пишет лишнюю информацию в ввиду времени старта и конца, при входе игрока ничего больше не делает.
  10. ally_vote_manager тоже подвержен проблеме
  11. ally_fort_system переправлена ally_vip_system готова
  12. изменения отменены, нужно избавится от чтения 32 битных чисел даты которые переполнятся к 38 году на стороне приложения которое 32 битное в нашем случае Sourcemod. Оставим MYSQL эту работу, а к 2038 году в MYSQL добавят поддержку 64 битных чисел в функции from_unixtime и все будет ок. Нужно лишь изменить тип хранения поля time в BIGINT
  13. ally_fort_system поправлена пример запроса конвертации поля таблицы с timestamp в datetime ALTER TABLE fs_obj_storage ADD COLUMN new_time DATETIME; UPDATE fs_obj_storage SET new_time=FROM_UNIXTIME(time); ALTER TABLE fs_obj_storage DROP COLUMN time; ALTER TABLE fs_obj_storage CHANGE COLUMN new_time time DATETIME NOT NULL; следующий дедлайн 9999 год, когда поле DATETIME перестанет действовать, ну и мы тоже D
  14. Если хранить данные в полях Datetime выглядят они так: SELECT NOW(); 2020-01-21 19:54:06 то потом можно их извлекать средствами самого mysql: к примеру: SELECT YEAR("2020-01-21 19:54:06"), MONTH("2020-01-21 19:54:06"), HOUR("2020-01-21 19:54:06"), MINUTE("2020-01-21 19:54:06"), SECOND("2020-01-21 19:54:06"); Показ текущего времени с рапределением чисел года, месяца, часа, секунды по отдельности. SELECT YEAR(NOW()) as current_year, MONTH(NOW()) as current_month, HOUR(NOW()) as current_hour, MINUTE(NOW()) as current_minute, SECOND(NOW()) as current_second; в таком случае переделать будет не трудно.
  15. https://bugs.mysql.com/bug.php?id=12654 печаля, даже mysql не готов к этому. а 2548990800 это GMT: Monday, 10 October 2050 г., 5:00:00 по секундному времени. select from_unixtime(2548990800); а он возвращает тебе NULL)
  16. мне даже не хочется писать новый код используя преобразование 32 битного числа таймштампа, т.к. это будет уже не актуально.
  17. где проблема проявит себя: ally_warning_system: перестанет понимать дату предупреждения. ally_fort_system : перестанет работать корректность определения даты изменения / создания постройки. ally_vip_system: випка не сможет понять истекла ли випка у игрока.
  18. в большом количестве используются 32 битные timestamp которые обязательно дадут о себе знать.
  19. метод 3 взят в работу, других логических исключений пока не нашел.
  20. метод 3: что если во время загрузки слота записывать и прибавлять число загрузок слота. Допустим загрузили слот на приватной меге: после чего его число загрузок стало 1 пошли на обычную мегу число загрузок стало 2 вернулись на приватный сервер там у загруженного слота число загрузок 1, а по базе данных 2, значит слот невалидный и загружался где-то еще, шлем на три стороны света вынуждая игрока удалить слот с карты и загрузить снова чтобы он мог снова сохранять слот или что-то еще что требует сохранения данных слота в базу данных. точно такую же проверку делаем при операциях сохранения или продажи.
  21. в случае потери соединения сервера с интернетом и не выхода на связь больше он не сможет сказать что слот игрока нигде не загружен, этот метод по этому параметру тоже такой себе способ получается. В таком случае для обхода этого исключения нужно добавлять epochstamp времени и если запись в базе данных старше 5 минут то ее во время сеанса связи нужно удалить и не брать в расчет. Сервер же должен раз в 2-4 минуты подтверждать статус слота.
  22. так.. а ведь это не закроет проблему когда игрок просто загрузил слот на двух мегах по очереди и пошел продавать с них предметы. Нужен более извращенный метод возможно придется записывать в базу данных загруженные в данный момент слоты игроков, если есть информация что слот загружен на другом сервере то игроку доступна только загрузка слота и не более. В таком случае если происходит рестарт раунда, пометка что слот не загружен, смена карты, нужно делать запрос в базу данных об удалении записи загруженности слота. Главное в этом способе это обеспечить наиболее надежную работу записи статуса слота в базу данных любые изменения статуса слота должны быть отражены иначе пострадает возможность игрока делать со слотом легитимные вещи. при старте карты сервер обязан отчитатся в таблицу статусов слотов о данных по загруженности слотов игроков.
  23. примерный вариант фикса: в базе данных слотов добавляем поле version оно будет зашиваться при сохранении слота прибавляя +1 при каждом сохранении. далее во время сохранения во время прошивки слота предметам заодно прошиваем и номер version , при входе на сервер во время сборки данных о названиях слотов и количества предметов в них заодно записываем значение version каждого слота, и финальное: при сохранении проверяем данные version из предметов и у слота на карте, не сходятся? тогда кумбек
×
×
  • Создать...