PDA

Просмотр полной версии : Система пакетов Абисса


kamil
05.12.2008, 14:51
Здраствуйте. Разбираясь с программой и экспериментируя на абиссе возник вопрос...
Я попробовал сделать следующее, купил в магазине меч через клиента, потом беру этот пакет и отправляю его опять и почемуто тут происходит дисконект.

Както непонятно там дела обстоят с пакетами. У меня очень много пакетов unknown, и когда ставишь галку показывать только пакеты от клиента иногда в списке всетаки появляются пакеты от сервера и тоже типа unknown.

NLObP
05.12.2008, 15:20
У меня очень много пакетов unknown

Unknown - это неизвестный программе пакет(ы).
Вясни, что они из представляют и внеси в packets.ini их расшифровку.

wanick
05.12.2008, 15:28
мой совет тебе, по экспериментируй сперва с пакетами по проще
сесть/встать пакеты чата, побегать, таргеты

а потом уже и вопросы все отпадут

stixia
05.12.2008, 15:35
Народ а как изменить цену в этом пакете.Интерлюд.
A7 B9 04 00 00 03 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00

wanick
05.12.2008, 15:44
stixia, смотри структуру пакета

stixia
05.12.2008, 15:57
wanick,чёт я мало что понял из этого:
Tип: 0xA7 (RequestMultiSellChoose:)
Pазмер: 21+2

0002 d ListID: 1209 (0x000004B9)
0006 d EntryID: 3 (0x00000003)
000A d Amount: 1 (0x00000001)
000E h ench: 0 (0x0000)

kamil
06.12.2008, 02:46
Чтобы не плодить бесполезные темы продолжу спрашивать именно тут.

1) Сесть и встать пакетами получилось. Заметил такую странность. Допустим сел через клиента, встал через клиента, понял какие пакеты на сесть встать, отправил их же. Действительно садится и встает. Перезапускаю клиента (полностью выключил его) пробую делать тоже самое. Вижу что после перезапуска сесть встать осуществляется уже другими пакетами

2) Попробовал купить через клиента, а потом через пакеты.
На сервер идет два пакета по запросу на покупку 1го антидота:
Tип: 0x21 (RequestBypassToServer)
21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 31 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 30 00 00 00
-----------------------------
Tип: 0x1F (RequestBuyItem)
1F 44 94 D2 DC 01 00 00 00 27 07 00 00 01 00 00 00
-------------------------------------------
Вставляем, отправляем. Ничего не купленно. Пробуем еще раз купить через клиент. Пакет 0x21 (RequestBypassToServer) идет абсолютно такой же, а 0x1F (RequestBuyItem) вот такой:
1F 44 50 27 E1 01 00 00 00 27 07 00 00 01 00 00 00

Заметим что изменились 3 байта. И они меняются постоянно. Вот я и подумал, что может антидот не покупается именно изза этого изменения. Подскажите пожалуйста

NLObP
06.12.2008, 03:12
kamil, мой тебе совет, разберись сначала что такое ObjectId, ID и прочее. На allcheats.ru Sauron доступно объяснял.

by Sauron http://allcheats.ru

Любой предмет находится на сервере и только на нем.

Клиент только отображает то, что происходит на сервере, а так же передает ваши желания, что вы хотите сделать (идти, атаковать, выбросить предмет) а сервер уже принимает решение на основании информации находящейся ТОЛЬКО на сервере.

ItemID предмета - это грубо говоря номер предмета из списка, с описанием его характеристик. Это не 'физический' предмет, это только описание вида предмета.

ObjectID предмета - это некий назначенный номер 'физически' присутствующего предмета на сервере, клиент потом оперирует этим предметом с сервером посредством этого ObjectID.

Этот ObjectID клиент получает от сервера по спискам (отдельными пакетами, либо списком - не важно) где проходит информация о предмете и его назначенный ObjectID.
ObjectID назначается сервером, и меняется от сессии к сессии , а иногда и в процессе сессии (изменения/улучшения предмета).


ObjectID игровых, либо не игровых персонажей (PC, NPC) -
это тоже самое, назначенный сервером некий ObjectID по которому в последствии клиент и оперирует персонажем с сервером.
Все остальное действительно как и с ObjectID предметов.

Хочу сразу объяснить , что такое пакетные баги и почему они иногда перестают работать.

Пакетный протокол, как и любой протокол связи, имеет свои правила и свой формат, изначально обговоренные и прописанные в клиенте и на сервере.
Пакетные баги основаны на неполном контроле за форматом и правилами протокола на стороне сервера.
Фиксят эти баги путем навеса программ, которые позволяют более точно отслеживать формат и правила протокола, а при нарушении оных генерят событие, например бан или кик игрока.


Добавлено через 11 минут
Заметим что изменились 3 байта. И они меняются постоянно. Вот я и подумал, что может антидот не покупается именно изза этого изменения. Подскажите пожалуйста

Да, именно из-за этого. При составлении пакетов всегда существует конкретный алгоритм его составления. Для разных пакетов свой. В частности ObjectId, ListId - всё время меняются, их придумывает сервер, ItemId - постоянны.

PanAm
06.12.2008, 11:59
kamil, прочтите тему NLObP - Алгоритмы или описания последовательности действий (http://coderx.ru/showthread.php?t=398)
покупка состоит, из 6 шатов, на 4 вы получаете нужный ListID и на следующем спокойно покупаете.

Grinch
06.12.2008, 12:22
из 6 шатов, на 4 вы получаете нужный ListID и на следующем спокойно покупаете. только то что пришло в пакете с лист ид и только по той цене исключение с3 и крывые ява серверы

PanAm
06.12.2008, 12:23
оффтоп - на форуме сильно нехватает системы факов, нужно переработать довольно большое кол-во практически одинаковых тем с нубо-вопросами, и сделать обширный гайд, а потом на основе их - сделать и оффлайновую справку, систепу помощи для ПХ.

NLObP
06.12.2008, 14:43
PanAm, да, не хватает. Некому сделать или нет времени. Поможешь?

PanAm
06.12.2008, 15:45
да, на неделе наверно засяду, как время будет.

kamil
08.12.2008, 22:47
Спасибо всем большое за помощь... Да FAQ было бы вообще шикарно, тк данный продукт открывает огромные возможности, а хорошего описания именно начального этапа работы с ней нет