Ммммм, любимые темы взаимодействия сервер-клиент. А "датамайнеры" из оригинального поста проверяли это по факту? Я сейчас я могу написать маленький скрипт, который разрешит трейдить персональные вещи любому игроку. Почти как артмани. Вопрос - а мне сервер это позволит сделать, даже если я положу предмет в ячейку без всяких ограничений?
Расскажу, как это работает и почему используется время компьютера в данной конкретной ситуации. Для всех, даже тех, кто незнаком с программированием. Итак, у нас есть параметры предмета, которые лежат на сервере, прочность, статы и так далее. Их много, в том числе и внутренних, например флаги, для различных внутренних (серверных) и внешних (клиентских) свойств, типа голубой надписи о рефанде или розовой о трансмоге.
Но есть несколько параметров, которые синхронизированы и на клиенте, и на сервере. Например, та же прочность. Когда изменяется прочность предмета, то сервер "обновляет" этот параметр через специальное сообщение SMSG_OBJECT_UPDATE. Сообщения или пакет, это данные, передаваемые между сервером и клиентом, по-простому. В обе стороны. Буква (S)MSG показывает направление сервер->клиент, буква (C)MSG показывает направление клиент->сервер. Для разных целей. Например, отобразить награду за квест, когда на клиенте открывается окно квеста.
Но вернемся к рефанду. Надпись о времени создается
клиентом и таймер нарисован исключительно
клиентом. Сервер о нем не знает, точнее он знает дату создания предмета (появления у игрока в инвентаре) и может сам прибавить 8 часов или сколько там. Невозможность передавать предмет (например положить его в окно торговли) тоже первично контролируется клиентом. См.выше начало моего поста, когда я писал что могу разрешить себе ложить любые предметы в окно торговли. Собственно главный вопрос - а если так выставить время, можно ли реально задержать на неделю передачу. Или ты будешь иметь красивую голубую надпись о миллионе дней, а фактически сервер тебе не даст трейдить?
Почему так сделано? Тултип предмета отрисовывается с частотой ФПС, если мы будем отправлять 60 пакетов в секунду, запрашивая сервер о времени, например, как сделано с квестовой наградой, то после даже 100 игроков сервер повиснет, не справившись с объемом трафика. Кстати, все таймеры, что видите на клиенте, например таймер в достижениях на время, тоже исключительно рисуется клиентом.
правда дальше 1 января 1994 г. открутить его нельзя.
Можно. Нужно использовать WinAPI специальные.