<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.picnics.ru/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.picnics.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ox160d05d</id>
		<title>TZ WiKi - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.picnics.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ox160d05d"/>
		<link rel="alternate" type="text/html" href="http://wiki.picnics.ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Ox160d05d"/>
		<updated>2026-05-13T21:54:05Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://wiki.picnics.ru/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%A2%D0%97</id>
		<title>Протокол ТЗ</title>
		<link rel="alternate" type="text/html" href="http://wiki.picnics.ru/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%A2%D0%97"/>
				<updated>2015-03-23T08:03:22Z</updated>
		
		<summary type="html">&lt;p&gt;Ox160d05d: /* SH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В данной статье собрана информация по процессу обмена игрового сервера и клиента TimeZero. &lt;br /&gt;
&lt;br /&gt;
== Общие характеристики протокола&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
В игре используется протокол на основе XML, хотя в данный момент не соответствует стандарту в некоторых, довольно незначительных, деталях. При отправке данных на сервере происходит сжатие данных оригинальным методом. Некоторые наиболее часто повторяющиеся части пакетов заменяются на 2-х байтовые &amp;quot;коды&amp;quot;. Например фрамент «&amp;amp;nbsp;&amp;quot; damage=&amp;quot;» заменяется на последовательность байтов с кодами 0x01 и ASCII('p'). Весь обмен со всеми серверами происходит по протоколу TCP и порту 5190. Это относится только к &amp;quot;прямому&amp;quot; подключению к серверу, без использования прокси. Далее будет рассматриваться только такое подключение. Терминатор передачи-приёма - байт с кодом 0x00.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Процедура входа в игру  ==&lt;br /&gt;
&lt;br /&gt;
Клиент соединяется с сервером main.timezero.ru и отсылает пакет &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;LIST l=&amp;quot;$LOGIN$&amp;quot; /&amp;amp;gt; &amp;lt;/pre&amp;gt; &lt;br /&gt;
Где $LOGIN$ - это имя персонажа в TimeZero(впоследствии, вместо логина клиент стал отсылать просто &amp;quot;qwerty&amp;quot;). В ответ с сервера приходит ответ:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;LIST&amp;amp;gt;&amp;amp;lt;S host=&amp;quot;city1.timezero.ru&amp;quot; id=&amp;quot;1&amp;quot; first=&amp;quot;1&amp;quot; api=&amp;quot;city1.local&amp;quot;/&amp;amp;gt;&amp;amp;lt;S host=&amp;quot;city2.timezero.ru&amp;quot; id=&amp;quot;2&amp;quot; api=&amp;quot;city2.local&amp;quot;/&amp;amp;gt;&amp;amp;lt;/LIST&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Затем клиент закрывает соединение main.timezero.ru и последовательно пытается присоединиться к перечисленным в пакете LIST серверам.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
При соединении клиент ждёт прихода пакета вида&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;KEY s=&amp;quot;xkllcpsdqhayhsmkmgwldkaodaodrxjp&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Аттрибут s содержит ключ данного соединения с игрой. Он используется при шифровании пароля. Функция шифрования нестандартная. В клиенте код шифрования спрятан в &amp;quot;испорченном&amp;quot; байт-коде. Декомпиляция возможна только вручную, ни один известный автору декомпилятор не справился. &lt;br /&gt;
&lt;br /&gt;
В ответ клиент посылает пакет вида&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;LOGIN l=&amp;quot;%s&amp;quot; p=&amp;quot;%s&amp;quot; v=&amp;quot;%s&amp;quot; v2=&amp;quot;%s&amp;quot; lang=&amp;quot;%s&amp;quot; v3=&amp;quot;%s&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Атрибут l - это имя персонажа, p - пароль(захешированный функцией шифрования ключом), v - версия клиента(число, на момент написания - 101), v2 - версия клиента в виде &amp;quot;6.4.9(1.4.2)&amp;quot;, lang - язык(ru, en и т.п.), v3 - локальный IP адрес компьютера. &lt;br /&gt;
&lt;br /&gt;
В ответ клиент может получить следующие пакеты: &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;ERROR code=&amp;quot;%d&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;OK l=&amp;quot;%s&amp;quot; ses=&amp;quot;%s&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Вообще, пакет ERROR используется только при критических ошибках клиента и после его получения клиент обычно отсоединяется. В аттрибуте &amp;quot;code&amp;quot; содержится причина ошибки в виде числового кода: &lt;br /&gt;
&lt;br /&gt;
*1 - реконнект. Игрок находится на другом игровом сервере. Клиент отсоединяется и повторяет попытку соединится со следующим сервером в списке полученном в пакете LIST(что непонятно, можно в пакете LIST отдавать только один сервер, на котором игрок находится в данный момент);&lt;br /&gt;
*2 - неверный пароль;&lt;br /&gt;
*3 - персонажем зашли с другого компьютера;&lt;br /&gt;
*4 - персонаж заблокирован;&lt;br /&gt;
*5 - старая версия игры (аттрибут v в пакете LOGIN);&lt;br /&gt;
*6 - для входа необходим электронный ключ;&lt;br /&gt;
*7 - неверный электронный ключ;&lt;br /&gt;
*8 - открыто ещё одно окно с игрой (устарело?);&lt;br /&gt;
*9 - идёт обновление игры, сервер недоступен;&lt;br /&gt;
*10 - сервер перегружен;&lt;br /&gt;
*11 - язык клиента не соответствует языку сервера;&lt;br /&gt;
*12 - попытка соединения не удалась (вероятно, на стороне сервера произошла необработанная ошибка).&lt;br /&gt;
&lt;br /&gt;
Получение пакета OK означает, что вход осуществлён. В аттрибуте ses передаётся идентификатор игровой &amp;quot;сессии&amp;quot;. Он используется при установке соединения с чатом и будет описан позже. &lt;br /&gt;
&lt;br /&gt;
После этого начинается стандартный обмен.&lt;br /&gt;
&lt;br /&gt;
== Описание пакетов по группам  ==&lt;br /&gt;
&lt;br /&gt;
Для удобства разобъём все пакеты на группы. Во-первых, это пакеты от клиента серверу. Во-вторых от сервера клиенту. Так же пакеты разделим на категории. &lt;br /&gt;
&lt;br /&gt;
=== Клиент -&amp;amp;gt; Сервер  ===&lt;br /&gt;
&lt;br /&gt;
==== GETME  ====&lt;br /&gt;
&lt;br /&gt;
Запрос параметров игрока.&lt;br /&gt;
&lt;br /&gt;
==== GETINFO ====&lt;br /&gt;
&lt;br /&gt;
Запрос параметров другого персонажа.&lt;br /&gt;
&lt;br /&gt;
*login – логин запрашиваемого персонажа.&lt;br /&gt;
&lt;br /&gt;
==== GOBLD ====&lt;br /&gt;
&lt;br /&gt;
Переход в здание на локации (или выход из здания на улицу).&lt;br /&gt;
&lt;br /&gt;
*n – номер здания. Похоже, что номера присвоены зданиям в том порядке, в котором они создавались; на многих локациях не хватает промежуточных номеров между зданиями, что может указывать на некогда существовавшие там, но ныне удалённые постройки. Значение 0 указывает на улицу (выход из здания).&lt;br /&gt;
&lt;br /&gt;
==== GOLOC ====&lt;br /&gt;
&lt;br /&gt;
Переход на другую локацию. После перехода сервер присылает пакет вида &amp;lt;MYPARAM loc_time=&amp;quot;1338738646&amp;quot; /&amp;gt;. loc_time передаётся в t2, когда мы уходим с данной локации.&lt;br /&gt;
&lt;br /&gt;
*n – номер локации. Может принимать значения от 1 до 9, кроме 5 (это локация, в которой вы находитесь). Нумерация идёт построчно слева направо и сверху вниз. Например, для перехода на северо-запад n = 1, на север – n = 2 и т. д.&lt;br /&gt;
*d – запрос у сервера информации по требуемым локациям после перехода(здания, монстры и т.д.). Нумерация такая же, как и в n. К примеру, d=&amp;quot;147&amp;quot; означает, что сервер пришлёт информацию по локациям находящимся на северо-западе(1), западе(4) и юго-западе(7). Стоит заметить, что клиент хранит информацию о локациях, которые были запрошены ранее, потому, если клиенту известна информация о всех локациях вокруг той, в которую перешёл игрок - параметр d отсутствует;&lt;br /&gt;
*t1 – текущее время, перед переходом в выбранном направлении;&lt;br /&gt;
*t2 – время входа на локацию, с которой уходим.&lt;br /&gt;
&lt;br /&gt;
==== HD ====&lt;br /&gt;
&lt;br /&gt;
Запрос, связанный с шахтой (когда персонаж находится внутри неё).&lt;br /&gt;
&lt;br /&gt;
*go – указывается, если нужно перейти в другую штольню. Может принимать значения от 1 до 4: 1 – влево, 2 – вверх и далее по часовой.&lt;br /&gt;
*Другие параметры пока не обнаружены, но они обязаны быть.&lt;br /&gt;
&lt;br /&gt;
==== N ====&lt;br /&gt;
&lt;br /&gt;
Пустой запрос. Посылается серверу каждые 45 секунд бездействия для подтверждения того, что клиент всё ещё на линии.&lt;br /&gt;
&lt;br /&gt;
==== SH ====&lt;br /&gt;
&lt;br /&gt;
Запрос, связанный с магазином.&lt;br /&gt;
&lt;br /&gt;
*c – указывается при запросе товаров определённой категории. Значение параметра – идентификатор категории. Список идентификаторов:&lt;br /&gt;
**k – холодное оружие;&lt;br /&gt;
**p – пистолеты;&lt;br /&gt;
**v – винтовки/автоматы;&lt;br /&gt;
**w – тяжёлое оружие;&lt;br /&gt;
**e – энергетическое оружие;&lt;br /&gt;
**g – метательное оружие;&lt;br /&gt;
**m – боевые устройства;&lt;br /&gt;
**a – патроны;&lt;br /&gt;
**i – энергомодули;&lt;br /&gt;
**h – каски/береты;&lt;br /&gt;
**c – куртки/бронежилеты;&lt;br /&gt;
**l – нарукавники;&lt;br /&gt;
**t – брюки;&lt;br /&gt;
**b – обувь;&lt;br /&gt;
**f – гражданская одежда;&lt;br /&gt;
**q – комплекты;&lt;br /&gt;
**j – оборудование;&lt;br /&gt;
**d – медицина;&lt;br /&gt;
**s – ресурсы;&lt;br /&gt;
**y – крафт-реагенты;&lt;br /&gt;
**r – документы;&lt;br /&gt;
**z - прочее;&lt;br /&gt;
**0 – импланты;&lt;br /&gt;
**1 – мои вещи;&lt;br /&gt;
*s – параметр, отвечающий за фильтр, применяемый к вещам. Значение параметра может быть пяти видов:&lt;br /&gt;
**Пустое значение – фильтр не применяется, отображаются все товары категории;&lt;br /&gt;
**lvl:'''X'''-'''Y''' – фильтр по уровню. Отображаются только вещи, имеющие требование уровня от '''X''' до '''Y''';&lt;br /&gt;
**q:'''X'''-'''X''' – фильтр по качеству. Отображаются только вещи качеством не ниже '''X''' (забагованный фильтр);&lt;br /&gt;
**txt:'''STRING''' – фильтр по названию. Выводит только те вещи, в названии которых встречается строка '''STRING''';&lt;br /&gt;
**name:'''NAME''',type:'''X''',lvl:'''Y''' – фильтр выводит только товар конкретного типа. '''NAME''' - судя по всему, внутреннее название вещи, '''X''' – целое число (назначение неизвестно, но название намекает), '''Y''' – требование вещи по уровню (очевидно, применяется для того, чтобы отличать рарный товар вроде assault'a с требованием 5 уровня или hi-tech'а с требованием 7-го);&lt;br /&gt;
*p – параметр, содержащий номер запрашиваемой страницы. Нумерация начинается с нуля, так что отображаемая вам в магазине страница на единицу больше, чем та, что содержалась в запросе;&lt;br /&gt;
*au:'''X''' – фильтр товаров при запросе данных аукциона. &lt;br /&gt;
** X=1 - показывать только товары магазина&lt;br /&gt;
** X=2 - показывать только товары аукциона (можно сделать ставку)&lt;br /&gt;
** X=3 - показывать всё товары;&lt;br /&gt;
*buy – указывается при запросе на покупку товара. Содержит идентификатор конкретного товара в виде числа;&lt;br /&gt;
*count – количество товара, которое вы хотите купить (только если товар стакается);&lt;br /&gt;
*cost – цена товара, который вы хотите купить (за штуку);&lt;br /&gt;
*full – назначение неизвестно. Значение - целое число, посылается отдельно после покупки какой-либо вещи.&lt;br /&gt;
&lt;br /&gt;
==== CHAT ====&lt;br /&gt;
&lt;br /&gt;
Пустой запрос. В ответ сервер присылает адрес сервера чата вида &amp;lt;CHAT server=\&amp;quot;chat.timezero.ru\&amp;quot; /&amp;gt;. Стоит заметить, что ip-адрес домена chat.timezero.ru и main.timezero.ru совпадает.&lt;br /&gt;
&lt;br /&gt;
=== Сервер -&amp;amp;gt; Клиент  ===&lt;br /&gt;
&lt;br /&gt;
==== MYPARAM ====&lt;br /&gt;
&lt;br /&gt;
Содержит описание игрока, все перки, а также вещи. Список атрибутов, присылаемых в этом пакете сильно варьируется. Большая часть приходит на запрос от клиента к серверу &amp;lt;GETME /&amp;gt;, но во время игры они также приходят и по отдельности. Некоторые из них:&lt;br /&gt;
&lt;br /&gt;
*time - время на сервере в секундах;&lt;br /&gt;
*exp - опыт персонажа;&lt;br /&gt;
*HP - очки жизни персонажа;&lt;br /&gt;
*maxHP - максимальное число очков жизни персонажа;&lt;br /&gt;
*psy - очки пси;&lt;br /&gt;
*maxPsy - максимальное количество очков пси;&lt;br /&gt;
*bio - очки био;&lt;br /&gt;
*maxBio - максимальное количество очков био;&lt;br /&gt;
*pro - целое число, обозначающее профессию;&lt;br /&gt;
*uniquest - целое число, обозначающее профессию на которую персонаж обучается;&lt;br /&gt;
*str - сила персонажа;&lt;br /&gt;
*dex - ловкость персонажа;&lt;br /&gt;
*int - интуиция персонажа;&lt;br /&gt;
*pow - выносливость персонажа;&lt;br /&gt;
*acc - меткость персонажа;&lt;br /&gt;
*intel - интеллект персонажа;&lt;br /&gt;
*X - позиция по X координате;&lt;br /&gt;
*Y - позиция по Y координате;&lt;br /&gt;
*cup_0 - количество медных монет;&lt;br /&gt;
*cup_1 - не известно, всегда 0;&lt;br /&gt;
*cup_2 - не известно, всегда 0;&lt;br /&gt;
*silv - количество серебряных монет;&lt;br /&gt;
*gold - количество золотых монет;&lt;br /&gt;
*p78money - перк-монеты;&lt;br /&gt;
*marks - эргон;&lt;br /&gt;
*pve_points - очки pve;&lt;br /&gt;
*hz - тип здания, в котором находится персонаж. Если персонаж находится на улице, то этот атрибут не присылается (0 по умолчанию);&lt;br /&gt;
*gametips - подсказки, которые игрок предпочёл более не показывать;&lt;br /&gt;
*lastlogin - время предыдущего входа в игру, timestamp;&lt;br /&gt;
*virus - далеко не заражение вирусом X, показатель биологического заражения;&lt;br /&gt;
*sk[n] - навыки владения оружием. Где n - число. Например, sk1 отвечает за пистолет, sk3 за тяжёлое вооружение;&lt;br /&gt;
*siluet - образ тела персонажа. Тип, тело, голова, волосы, оттенок;&lt;br /&gt;
*man - единица, если играем за мужчину;&lt;br /&gt;
*o - относится к вещам в рюкзаке. В пакете присутствует несколько атрибутов &amp;quot;o&amp;quot;, каждый &amp;quot;o&amp;quot; относится к одному отдельному предмету. Включает в себя стоимость, название, очки действия на одевание и т.д.;&lt;br /&gt;
*loc_time - время на локации. Атрибут приходит при перемещении;&lt;br /&gt;
*id1 - вещественное число, назначение пока не выяснено;&lt;br /&gt;
*id2 - вещественное число, назначение пока не выяснено;&lt;br /&gt;
*hint - целое число, отвечает за сохранённую конфигурацию настроек в КПК;&lt;br /&gt;
*neednews - вероятно, указывает клиенту о надобности получения новостей. Название прозрачно, но точное назначение пока не выяснено;&lt;br /&gt;
*noduel - игнорировать вызовы на дуэль;&lt;br /&gt;
*gameflags - что-то связанное с настройками клиента;&lt;br /&gt;
*noUndress - с большей вероятностью не нулевой параметр означает пребывание на локации в которой нельзя переодеваться в бою(Батлзоны, Корал);&lt;br /&gt;
*ROOM - если персонаж в здании указывает на номер штольни(комнаты) в которой находится;&lt;br /&gt;
*loc_time - timestamp момента, когда можно будет перейти на другую локацию;&lt;br /&gt;
*list - список контактов;&lt;br /&gt;
*plist - список предметов на панели быстрого доступа;&lt;br /&gt;
*bsnow - значение равно 1 у персонажей начавших проходить квест &amp;quot;Первые хлопья тьмы&amp;quot;. При включении снега на локации у таких игроков он будет отображаться чёрным;&lt;br /&gt;
*ill - параметр указывающий на вирус Х. &amp;quot;-1&amp;quot;-имунка, &amp;quot;2&amp;quot;-синий;&lt;br /&gt;
*repPVE - значение репутации Tramps;&lt;br /&gt;
*repP - значение репутации Палачей;&lt;br /&gt;
&lt;br /&gt;
==== ERRGO ====&lt;br /&gt;
&lt;br /&gt;
Приходит от сервера в случае ошибки при попытке перемещения (запрос GOLOC).&lt;br /&gt;
&lt;br /&gt;
*code - код ошибки. &lt;br /&gt;
**8 - выход из этой локации временно закрыт. &lt;br /&gt;
**7 - недостаточно денег. &lt;br /&gt;
**6 - персонажи ниже 3-го уровня не могут покидать купол. &lt;br /&gt;
**5 - не прошло время ожидания на локации. &lt;br /&gt;
**4 - низкий уровень жизни. &lt;br /&gt;
**3 - персонаж перегружен. &lt;br /&gt;
**2 - персонаж в бою или в процессе обмена. &lt;br /&gt;
**1 - локация непроходима.&lt;br /&gt;
*t1 - то же значение, что было в пакете GOLOC&lt;br /&gt;
*t2 - то же значение, что было в пакете GOLOC&lt;br /&gt;
&lt;br /&gt;
==== GOBLD ====&lt;br /&gt;
&lt;br /&gt;
Приходит от сервера на запрос перехода в здание.&lt;br /&gt;
&lt;br /&gt;
*n - номер здания, в которое перешли. &amp;quot;0&amp;quot; означает улицу. По непонятной причине дублируется;&lt;br /&gt;
*hz - идентификатор типа здания(арсенал, арена, портал и т.д.). Значение &amp;quot;0&amp;quot; означает улицу;&lt;br /&gt;
*owner - Значение равно &amp;quot;1&amp;quot;, если в здание входит персонаж, имеющий ключ от данного; в противном случае значение равно &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== SPECIAL ====&lt;br /&gt;
&lt;br /&gt;
Пустой запрос. Назначение не известно.&lt;br /&gt;
&lt;br /&gt;
==== CLIENT_STATUS ====&lt;br /&gt;
&lt;br /&gt;
==== UPDATE_VER ====&lt;br /&gt;
&lt;br /&gt;
Точно назначение и действие не известно, хотя название довольно прозрачное. &lt;br /&gt;
&lt;br /&gt;
==== IMS ====&lt;br /&gt;
&lt;br /&gt;
Это пакет, содержащий телеграммы и сообщения о продаже вещей. Аттрибуты: &lt;br /&gt;
&lt;br /&gt;
*m - специальным образом отформатированные сообщения &lt;br /&gt;
*l - назначение неизвестно(FIXME).&lt;/div&gt;</summary>
		<author><name>Ox160d05d</name></author>	</entry>

	<entry>
		<id>http://wiki.picnics.ru/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%A2%D0%97</id>
		<title>Протокол ТЗ</title>
		<link rel="alternate" type="text/html" href="http://wiki.picnics.ru/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%A2%D0%97"/>
				<updated>2015-03-21T07:58:08Z</updated>
		
		<summary type="html">&lt;p&gt;Ox160d05d: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В данной статье собрана информация по процессу обмена игрового сервера и клиента TimeZero. &lt;br /&gt;
&lt;br /&gt;
== Общие характеристики протокола&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
В игре используется протокол на основе XML, хотя в данный момент не соответствует стандарту в некоторых, довольно незначительных, деталях. При отправке данных на сервере происходит сжатие данных оригинальным методом. Некоторые наиболее часто повторяющиеся части пакетов заменяются на 2-х байтовые &amp;quot;коды&amp;quot;. Например фрамент «&amp;amp;nbsp;&amp;quot; damage=&amp;quot;» заменяется на последовательность байтов с кодами 0x01 и ASCII('p'). Весь обмен со всеми серверами происходит по протоколу TCP и порту 5190. Это относится только к &amp;quot;прямому&amp;quot; подключению к серверу, без использования прокси. Далее будет рассматриваться только такое подключение. Терминатор передачи-приёма - байт с кодом 0x00.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Процедура входа в игру  ==&lt;br /&gt;
&lt;br /&gt;
Клиент соединяется с сервером main.timezero.ru и отсылает пакет &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;LIST l=&amp;quot;$LOGIN$&amp;quot; /&amp;amp;gt; &amp;lt;/pre&amp;gt; &lt;br /&gt;
Где $LOGIN$ - это имя персонажа в TimeZero(впоследствии, вместо логина клиент стал отсылать просто &amp;quot;qwerty&amp;quot;). В ответ с сервера приходит ответ:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;LIST&amp;amp;gt;&amp;amp;lt;S host=&amp;quot;city1.timezero.ru&amp;quot; id=&amp;quot;1&amp;quot; first=&amp;quot;1&amp;quot; api=&amp;quot;city1.local&amp;quot;/&amp;amp;gt;&amp;amp;lt;S host=&amp;quot;city2.timezero.ru&amp;quot; id=&amp;quot;2&amp;quot; api=&amp;quot;city2.local&amp;quot;/&amp;amp;gt;&amp;amp;lt;/LIST&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Затем клиент закрывает соединение main.timezero.ru и последовательно пытается присоединиться к перечисленным в пакете LIST серверам.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
При соединении клиент ждёт прихода пакета вида&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;KEY s=&amp;quot;xkllcpsdqhayhsmkmgwldkaodaodrxjp&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Аттрибут s содержит ключ данного соединения с игрой. Он используется при шифровании пароля. Функция шифрования нестандартная. В клиенте код шифрования спрятан в &amp;quot;испорченном&amp;quot; байт-коде. Декомпиляция возможна только вручную, ни один известный автору декомпилятор не справился. &lt;br /&gt;
&lt;br /&gt;
В ответ клиент посылает пакет вида&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;LOGIN l=&amp;quot;%s&amp;quot; p=&amp;quot;%s&amp;quot; v=&amp;quot;%s&amp;quot; v2=&amp;quot;%s&amp;quot; lang=&amp;quot;%s&amp;quot; v3=&amp;quot;%s&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Атрибут l - это имя персонажа, p - пароль(захешированный функцией шифрования ключом), v - версия клиента(число, на момент написания - 101), v2 - версия клиента в виде &amp;quot;6.4.9(1.4.2)&amp;quot;, lang - язык(ru, en и т.п.), v3 - локальный IP адрес компьютера. &lt;br /&gt;
&lt;br /&gt;
В ответ клиент может получить следующие пакеты: &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;ERROR code=&amp;quot;%d&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;OK l=&amp;quot;%s&amp;quot; ses=&amp;quot;%s&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Вообще, пакет ERROR используется только при критических ошибках клиента и после его получения клиент обычно отсоединяется. В аттрибуте &amp;quot;code&amp;quot; содержится причина ошибки в виде числового кода: &lt;br /&gt;
&lt;br /&gt;
*1 - реконнект. Игрок находится на другом игровом сервере. Клиент отсоединяется и повторяет попытку соединится со следующим сервером в списке полученном в пакете LIST(что непонятно, можно в пакете LIST отдавать только один сервер, на котором игрок находится в данный момент);&lt;br /&gt;
*2 - неверный пароль;&lt;br /&gt;
*3 - персонажем зашли с другого компьютера;&lt;br /&gt;
*4 - персонаж заблокирован;&lt;br /&gt;
*5 - старая версия игры (аттрибут v в пакете LOGIN);&lt;br /&gt;
*6 - для входа необходим электронный ключ;&lt;br /&gt;
*7 - неверный электронный ключ;&lt;br /&gt;
*8 - открыто ещё одно окно с игрой (устарело?);&lt;br /&gt;
*9 - идёт обновление игры, сервер недоступен;&lt;br /&gt;
*10 - сервер перегружен;&lt;br /&gt;
*11 - язык клиента не соответствует языку сервера;&lt;br /&gt;
*12 - попытка соединения не удалась (вероятно, на стороне сервера произошла необработанная ошибка).&lt;br /&gt;
&lt;br /&gt;
Получение пакета OK означает, что вход осуществлён. В аттрибуте ses передаётся идентификатор игровой &amp;quot;сессии&amp;quot;. Он используется при установке соединения с чатом и будет описан позже. &lt;br /&gt;
&lt;br /&gt;
После этого начинается стандартный обмен.&lt;br /&gt;
&lt;br /&gt;
== Описание пакетов по группам  ==&lt;br /&gt;
&lt;br /&gt;
Для удобства разобъём все пакеты на группы. Во-первых, это пакеты от клиента серверу. Во-вторых от сервера клиенту. Так же пакеты разделим на категории. &lt;br /&gt;
&lt;br /&gt;
=== Клиент -&amp;amp;gt; Сервер  ===&lt;br /&gt;
&lt;br /&gt;
==== GETME  ====&lt;br /&gt;
&lt;br /&gt;
Запрос параметров игрока.&lt;br /&gt;
&lt;br /&gt;
==== GETINFO ====&lt;br /&gt;
&lt;br /&gt;
Запрос параметров другого персонажа.&lt;br /&gt;
&lt;br /&gt;
*login – логин запрашиваемого персонажа.&lt;br /&gt;
&lt;br /&gt;
==== GOBLD ====&lt;br /&gt;
&lt;br /&gt;
Переход в здание на локации (или выход из здания на улицу).&lt;br /&gt;
&lt;br /&gt;
*n – номер здания. Похоже, что номера присвоены зданиям в том порядке, в котором они создавались; на многих локациях не хватает промежуточных номеров между зданиями, что может указывать на некогда существовавшие там, но ныне удалённые постройки. Значение 0 указывает на улицу (выход из здания).&lt;br /&gt;
&lt;br /&gt;
==== GOLOC ====&lt;br /&gt;
&lt;br /&gt;
Переход на другую локацию. После перехода сервер присылает пакет вида &amp;lt;MYPARAM loc_time=&amp;quot;1338738646&amp;quot; /&amp;gt;. loc_time передаётся в t2, когда мы уходим с данной локации.&lt;br /&gt;
&lt;br /&gt;
*n – номер локации. Может принимать значения от 1 до 9, кроме 5 (это локация, в которой вы находитесь). Нумерация идёт построчно слева направо и сверху вниз. Например, для перехода на северо-запад n = 1, на север – n = 2 и т. д.&lt;br /&gt;
*d – запрос у сервера информации по требуемым локациям после перехода(здания, монстры и т.д.). Нумерация такая же, как и в n. К примеру, d=&amp;quot;147&amp;quot; означает, что сервер пришлёт информацию по локациям находящимся на северо-западе(1), западе(4) и юго-западе(7). Стоит заметить, что клиент хранит информацию о локациях, которые были запрошены ранее, потому, если клиенту известна информация о всех локациях вокруг той, в которую перешёл игрок - параметр d отсутствует;&lt;br /&gt;
*t1 – текущее время, перед переходом в выбранном направлении;&lt;br /&gt;
*t2 – время входа на локацию, с которой уходим.&lt;br /&gt;
&lt;br /&gt;
==== HD ====&lt;br /&gt;
&lt;br /&gt;
Запрос, связанный с шахтой (когда персонаж находится внутри неё).&lt;br /&gt;
&lt;br /&gt;
*go – указывается, если нужно перейти в другую штольню. Может принимать значения от 1 до 4: 1 – влево, 2 – вверх и далее по часовой.&lt;br /&gt;
*Другие параметры пока не обнаружены, но они обязаны быть.&lt;br /&gt;
&lt;br /&gt;
==== N ====&lt;br /&gt;
&lt;br /&gt;
Пустой запрос. Посылается серверу каждые 45 секунд бездействия для подтверждения того, что клиент всё ещё на линии.&lt;br /&gt;
&lt;br /&gt;
==== SH ====&lt;br /&gt;
&lt;br /&gt;
Запрос, связанный с магазином.&lt;br /&gt;
&lt;br /&gt;
*c – указывается при запросе товаров определённой категории. Значение параметра – идентификатор категории. Список идентификаторов:&lt;br /&gt;
**k – холодное оружие;&lt;br /&gt;
**p – пистолеты;&lt;br /&gt;
**v – винтовки/автоматы;&lt;br /&gt;
**w – тяжёлое оружие;&lt;br /&gt;
**e – энергетическое оружие;&lt;br /&gt;
**g – метательное оружие;&lt;br /&gt;
**m – боевые устройства;&lt;br /&gt;
**a – патроны;&lt;br /&gt;
**i – энергомодули;&lt;br /&gt;
**h – каски/береты;&lt;br /&gt;
**c – куртки/бронежилеты;&lt;br /&gt;
**l – нарукавники;&lt;br /&gt;
**t – брюки;&lt;br /&gt;
**b – обувь;&lt;br /&gt;
**f – гражданская одежда;&lt;br /&gt;
**q – комплекты;&lt;br /&gt;
**j – оборудование;&lt;br /&gt;
**d – медицина;&lt;br /&gt;
**s – ресурсы;&lt;br /&gt;
**y – крафт-реагенты;&lt;br /&gt;
**r – документы;&lt;br /&gt;
**z - прочее;&lt;br /&gt;
**0 – импланты;&lt;br /&gt;
**1 – мои вещи;&lt;br /&gt;
*s – параметр, отвечающий за фильтр, применяемый к вещам. Значение параметра может быть пяти видов:&lt;br /&gt;
**Пустое значение – фильтр не применяется, отображаются все товары категории;&lt;br /&gt;
**lvl:'''X'''-'''Y''' – фильтр по уровню. Отображаются только вещи, имеющие требование уровня от '''X''' до '''Y''';&lt;br /&gt;
**q:'''X'''-'''X''' – фильтр по качеству. Отображаются только вещи качеством не ниже '''X''' (забагованный фильтр);&lt;br /&gt;
**txt:'''STRING''' – фильтр по названию. Выводит только те вещи, в названии которых встречается строка '''STRING''';&lt;br /&gt;
**name:'''NAME''',type:'''X''',lvl:'''Y''' – фильтр выводит только товар конкретного типа. '''NAME''' - судя по всему, внутреннее название вещи, '''X''' – целое число (назначение неизвестно, но название намекает), '''Y''' – требование вещи по уровню (очевидно, применяется для того, чтобы отличать рарный товар вроде assault'a с требованием 5 уровня или hi-tech'а с требованием 7-го);&lt;br /&gt;
*p – параметр, содержащий номер запрашиваемой страницы. Нумерация начинается с нуля, так что отображаемая вам в магазине страница на единицу больше, чем та, что содержалась в запросе;&lt;br /&gt;
*au – фильтр товаров при запросе данных аукциона. au=1 - показывать только товары магазина, au=2 - показывать только товары аукциона (ставка), au=3 - показывать всё ;&lt;br /&gt;
*buy – указывается при запросе на покупку товара. Содержит идентификатор конкретного товара в виде числа;&lt;br /&gt;
*count – количество товара, которое вы хотите купить (только если товар стакается);&lt;br /&gt;
*cost – цена товара, который вы хотите купить (за штуку);&lt;br /&gt;
*full – назначение неизвестно. Значение - целое число, посылается отдельно после покупки какой-либо вещи.&lt;br /&gt;
&lt;br /&gt;
==== CHAT ====&lt;br /&gt;
&lt;br /&gt;
Пустой запрос. В ответ сервер присылает адрес сервера чата вида &amp;lt;CHAT server=\&amp;quot;chat.timezero.ru\&amp;quot; /&amp;gt;. Стоит заметить, что ip-адрес домена chat.timezero.ru и main.timezero.ru совпадает.&lt;br /&gt;
&lt;br /&gt;
=== Сервер -&amp;amp;gt; Клиент  ===&lt;br /&gt;
&lt;br /&gt;
==== MYPARAM ====&lt;br /&gt;
&lt;br /&gt;
Содержит описание игрока, все перки, а также вещи. Список атрибутов, присылаемых в этом пакете сильно варьируется. Большая часть приходит на запрос от клиента к серверу &amp;lt;GETME /&amp;gt;, но во время игры они также приходят и по отдельности. Некоторые из них:&lt;br /&gt;
&lt;br /&gt;
*time - время на сервере в секундах;&lt;br /&gt;
*exp - опыт персонажа;&lt;br /&gt;
*HP - очки жизни персонажа;&lt;br /&gt;
*maxHP - максимальное число очков жизни персонажа;&lt;br /&gt;
*psy - очки пси;&lt;br /&gt;
*maxPsy - максимальное количество очков пси;&lt;br /&gt;
*bio - очки био;&lt;br /&gt;
*maxBio - максимальное количество очков био;&lt;br /&gt;
*pro - целое число, обозначающее профессию;&lt;br /&gt;
*uniquest - целое число, обозначающее профессию на которую персонаж обучается;&lt;br /&gt;
*str - сила персонажа;&lt;br /&gt;
*dex - ловкость персонажа;&lt;br /&gt;
*int - интуиция персонажа;&lt;br /&gt;
*pow - выносливость персонажа;&lt;br /&gt;
*acc - меткость персонажа;&lt;br /&gt;
*intel - интеллект персонажа;&lt;br /&gt;
*X - позиция по X координате;&lt;br /&gt;
*Y - позиция по Y координате;&lt;br /&gt;
*cup_0 - количество медных монет;&lt;br /&gt;
*cup_1 - не известно, всегда 0;&lt;br /&gt;
*cup_2 - не известно, всегда 0;&lt;br /&gt;
*silv - количество серебряных монет;&lt;br /&gt;
*gold - количество золотых монет;&lt;br /&gt;
*p78money - перк-монеты;&lt;br /&gt;
*marks - эргон;&lt;br /&gt;
*pve_points - очки pve;&lt;br /&gt;
*hz - тип здания, в котором находится персонаж. Если персонаж находится на улице, то этот атрибут не присылается (0 по умолчанию);&lt;br /&gt;
*gametips - подсказки, которые игрок предпочёл более не показывать;&lt;br /&gt;
*lastlogin - время предыдущего входа в игру, timestamp;&lt;br /&gt;
*virus - далеко не заражение вирусом X, показатель биологического заражения;&lt;br /&gt;
*sk[n] - навыки владения оружием. Где n - число. Например, sk1 отвечает за пистолет, sk3 за тяжёлое вооружение;&lt;br /&gt;
*siluet - образ тела персонажа. Тип, тело, голова, волосы, оттенок;&lt;br /&gt;
*man - единица, если играем за мужчину;&lt;br /&gt;
*o - относится к вещам в рюкзаке. В пакете присутствует несколько атрибутов &amp;quot;o&amp;quot;, каждый &amp;quot;o&amp;quot; относится к одному отдельному предмету. Включает в себя стоимость, название, очки действия на одевание и т.д.;&lt;br /&gt;
*loc_time - время на локации. Атрибут приходит при перемещении;&lt;br /&gt;
*id1 - вещественное число, назначение пока не выяснено;&lt;br /&gt;
*id2 - вещественное число, назначение пока не выяснено;&lt;br /&gt;
*hint - целое число, отвечает за сохранённую конфигурацию настроек в КПК;&lt;br /&gt;
*neednews - вероятно, указывает клиенту о надобности получения новостей. Название прозрачно, но точное назначение пока не выяснено;&lt;br /&gt;
*noduel - игнорировать вызовы на дуэль;&lt;br /&gt;
*gameflags - что-то связанное с настройками клиента;&lt;br /&gt;
*noUndress - с большей вероятностью не нулевой параметр означает пребывание на локации в которой нельзя переодеваться в бою(Батлзоны, Корал);&lt;br /&gt;
*ROOM - если персонаж в здании указывает на номер штольни(комнаты) в которой находится;&lt;br /&gt;
*loc_time - timestamp момента, когда можно будет перейти на другую локацию;&lt;br /&gt;
*list - список контактов;&lt;br /&gt;
*plist - список предметов на панели быстрого доступа;&lt;br /&gt;
*bsnow - значение равно 1 у персонажей начавших проходить квест &amp;quot;Первые хлопья тьмы&amp;quot;. При включении снега на локации у таких игроков он будет отображаться чёрным;&lt;br /&gt;
*ill - параметр указывающий на вирус Х. &amp;quot;-1&amp;quot;-имунка, &amp;quot;2&amp;quot;-синий;&lt;br /&gt;
*repPVE - значение репутации Tramps;&lt;br /&gt;
*repP - значение репутации Палачей;&lt;br /&gt;
&lt;br /&gt;
==== ERRGO ====&lt;br /&gt;
&lt;br /&gt;
Приходит от сервера в случае ошибки при попытке перемещения (запрос GOLOC).&lt;br /&gt;
&lt;br /&gt;
*code - код ошибки. &lt;br /&gt;
**8 - выход из этой локации временно закрыт. &lt;br /&gt;
**7 - недостаточно денег. &lt;br /&gt;
**6 - персонажи ниже 3-го уровня не могут покидать купол. &lt;br /&gt;
**5 - не прошло время ожидания на локации. &lt;br /&gt;
**4 - низкий уровень жизни. &lt;br /&gt;
**3 - персонаж перегружен. &lt;br /&gt;
**2 - персонаж в бою или в процессе обмена. &lt;br /&gt;
**1 - локация непроходима.&lt;br /&gt;
*t1 - то же значение, что было в пакете GOLOC&lt;br /&gt;
*t2 - то же значение, что было в пакете GOLOC&lt;br /&gt;
&lt;br /&gt;
==== GOBLD ====&lt;br /&gt;
&lt;br /&gt;
Приходит от сервера на запрос перехода в здание.&lt;br /&gt;
&lt;br /&gt;
*n - номер здания, в которое перешли. &amp;quot;0&amp;quot; означает улицу. По непонятной причине дублируется;&lt;br /&gt;
*hz - идентификатор типа здания(арсенал, арена, портал и т.д.). Значение &amp;quot;0&amp;quot; означает улицу;&lt;br /&gt;
*owner - Значение равно &amp;quot;1&amp;quot;, если в здание входит персонаж, имеющий ключ от данного; в противном случае значение равно &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== SPECIAL ====&lt;br /&gt;
&lt;br /&gt;
Пустой запрос. Назначение не известно.&lt;br /&gt;
&lt;br /&gt;
==== CLIENT_STATUS ====&lt;br /&gt;
&lt;br /&gt;
==== UPDATE_VER ====&lt;br /&gt;
&lt;br /&gt;
Точно назначение и действие не известно, хотя название довольно прозрачное. &lt;br /&gt;
&lt;br /&gt;
==== IMS ====&lt;br /&gt;
&lt;br /&gt;
Это пакет, содержащий телеграммы и сообщения о продаже вещей. Аттрибуты: &lt;br /&gt;
&lt;br /&gt;
*m - специальным образом отформатированные сообщения &lt;br /&gt;
*l - назначение неизвестно(FIXME).&lt;/div&gt;</summary>
		<author><name>Ox160d05d</name></author>	</entry>

	</feed>