![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Level 6 ![]() ![]() Класс: Разведчик Арфистов Характер: True Neutral Раса: Животное ![]() |
Проблема такова:
По необъяснимой причине время встает на определенной временной отметке и сдвигаться не собирается. Сам по себе вызов дм команды "dm_settime" сдвигает часы сразу на сутки, а часы за вычетом 1-2 часов(с этими нюансами пока что не было времени плотно разобраться, просто примерно так) от заданного смещения. Изменение часов с помощью скриптовых команд так же двигают сутки, оставляя час неизменным. Запуск сервера на моей локальной машине с измененым временем стартайма ранее давал положительный результат, но на сервере все снова вставало на круги своя. После моих попыток разобраться с проблемой и решить ее различными методами, смена стартайма прекратила как-то влиять на зависание времени и на моей локальной машине. На сервере ранее использовался механизм реального времени, основаный на восстановлении текущего времени из базы мускула. Теперь по некоторым причинам мускул отрублен, поэтому используется стандартная база нвн. Механизм восстановления времени отлажен, ошибок и зацикливаний в нем нет. Врубание\отрубание системы рестора времени влияния не оказывает - время стабильно виснет. Версия: 1.67 Размер модуля: 50+мб(разбить, чтоли?) Вот такие пироги... Кто встречался с подобным и как разруливал данную ситуацию? |
![]() |
![]()
Сообщение
#2
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Проблема у нас всплыла в лесном модуле (IMG:style_emoticons/kolobok_light/smile.gif) Связано однозначно с недостатком ресурсов, но удивительно, что все остальное работает очень шустро. В общем, я чуть пошаманил, и кажется нашел выход. Сейчас мод последние 12 игровых часов исправно переключает часы, хотя время клиента отстает где-то на минутку (полчаса) от серверного. Но это имхо нестрашно уже.
Причем у нас ситуация была совсем кошмар - время менялось только раз - при запуске мода скриптом синхронизации с бд (IMG:style_emoticons/kolobok_light/smile.gif) Дальше стояло наглухо. Я продолжу тест, но вообще направление фикса верное, так что проблема решаема. Я делал это через модульный псевдохертбит. Вот кусочек: Neverwinter Script // Аптайм, кратный 6, делим на 120 с остатком. Время нельзя двигать назад, установка текущего скорее всего этим и является (отсюда +1 милисекунда), поэтому новый день и прибавлялся (здесь - нет). Проблем с точностью здесь не будет, т.к. скрипт все равно срабатывает не каждые 6 сек. Погрешности бывают до 1.3 сек (!), обычно - пара милисекунд.// Остаток 0 будет раз в 2 минуты (игровой час) - 120, 240, 360 секунд... if (nUptime % 120 == 0) { /* ...вырезано...*/ // --- // Вручную меняем время // --- // Получим int nHour = GetTimeHour(); int nMinute = GetTimeMinute(); int nSecond = GetTimeSecond(); int nMillisecond = GetTimeMillisecond(); // Ставим время SetTime(nHour, nMinute, nSecond, ++nMillisecond); /* ...вырезано...*/ } Кстати, если интересно. В игре только часы виртуальные и настраиваются в опциях, минуты/секунды реальные. Т.е. при стандартной раскладке в часе игры 2 и реальные, и игровые минуты (IMG:style_emoticons/kolobok_light/smile.gif) Так: 1ч 0м -> 1ч 1м -> 2ч 0м ->... (IMG:style_emoticons/kolobok_light/smile.gif) |
![]() ![]() |
Текстовая версия | Сейчас: 17th June 2025 - 03:09 |