Здраствуйте. Разбираясь с программой и экспериментируя на абиссе возник вопрос...
Я попробовал сделать следующее, купил в магазине меч через клиента, потом беру этот пакет и отправляю его опять и почемуто тут происходит дисконект.
Както непонятно там дела обстоят с пакетами. У меня очень много пакетов unknown, и когда ставишь галку показывать только пакеты от клиента иногда в списке всетаки появляются пакеты от сервера и тоже типа unknown.
Чтобы не плодить бесполезные темы продолжу спрашивать именно тут.
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 байта. И они меняются постоянно. Вот я и подумал, что может антидот не покупается именно изза этого изменения. Подскажите пожалуйста
kamil, мой тебе совет, разберись сначала что такое ObjectId, ID и прочее. На allcheats.ru Sauron доступно объяснял.
Код:
by Sauron http://allcheats.ru
Любой предмет находится на сервере и только на нем.
Клиент только отображает то, что происходит на сервере, а так же передает ваши желания, что вы хотите сделать (идти, атаковать, выбросить предмет) а сервер уже принимает решение на основании информации находящейся ТОЛЬКО на сервере.
ItemID предмета - это грубо говоря номер предмета из списка, с описанием его характеристик. Это не 'физический' предмет, это только описание вида предмета.
ObjectID предмета - это некий назначенный номер 'физически' присутствующего предмета на сервере, клиент потом оперирует этим предметом с сервером посредством этого ObjectID.
Этот ObjectID клиент получает от сервера по спискам (отдельными пакетами, либо списком - не важно) где проходит информация о предмете и его назначенный ObjectID.
ObjectID назначается сервером, и меняется от сессии к сессии , а иногда и в процессе сессии (изменения/улучшения предмета).
ObjectID игровых, либо не игровых персонажей (PC, NPC) -
это тоже самое, назначенный сервером некий ObjectID по которому в последствии клиент и оперирует персонажем с сервером.
Все остальное действительно как и с ObjectID предметов.
Хочу сразу объяснить , что такое пакетные баги и почему они иногда перестают работать.
Пакетный протокол, как и любой протокол связи, имеет свои правила и свой формат, изначально обговоренные и прописанные в клиенте и на сервере.
Пакетные баги основаны на неполном контроле за форматом и правилами протокола на стороне сервера.
Фиксят эти баги путем навеса программ, которые позволяют более точно отслеживать формат и правила протокола, а при нарушении оных генерят событие, например бан или кик игрока.
Добавлено через 11 минут
Цитата:
Сообщение от kamil
Заметим что изменились 3 байта. И они меняются постоянно. Вот я и подумал, что может антидот не покупается именно изза этого изменения. Подскажите пожалуйста
Да, именно из-за этого. При составлении пакетов всегда существует конкретный алгоритм его составления. Для разных пакетов свой. В частности ObjectId, ListId - всё время меняются, их придумывает сервер, ItemId - постоянны.