Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Устройство внутриигрового магазина PointBlank и PiercingBlow 3.0+
#1
В данной теме разберём серверные и клиентские пакеты, а так же структуру кеша магазина.

Структура серверных пакетов магазина

Для построения списка товаров, предметов и их связей используются пакеты:

PROTOCOL_AUTH_SHOP_ITEMLIST_ACK (1038)
PROTOCOL_AUTH_SHOP_GOODSLIST_ACK (1036)
PROTOCOL_AUTH_SHOP_REPAIRLIST_ACK (1070)
PROTOCOL_AUTH_SHOP_MATCHINGLIST_ACK (1040)

Начиная с 3 версии клиент стал кешировать полученные данные в файл Shop.dat.

Структура кеша Shop.dat

Код:
// int уникальный идентификатор магазина
// int количество товаров
// int количество предметов
// int количество восстанавливаемых предметов
// int количество связей

// byte[количество товаров * 58]
// byte[количество предметов * 11]
// byte[количество восстанавливаемых предметов * 16]
// byte[количество связей * 16]

Для проверки актуальности данных клиент отправляет пакет PROTOCOL_SHOP_GET_SAILLIST_REQ (1029) c md5 хешем файла Shop.dat и в ответ ожидает PROTOCOL_SHOP_GET_SAILLIST_ACK (1030) со следующей структурой:

Код:
bool // true если кеш отличается от актуального
int // дата последней проверки в формате yyMMddhhmm

Если хеш отличается, то необходимо отправить 4 пакета описанные ранее.

Примеры работы с данными

Рассмотрим пример добавления товара включающем в себя SG 550 Ext. с ограничением по количеству боёв. Я буду использовать json, вы же можете использовать xml или базу данных.

Класс Item и необходимые пречисления
Классы Goods, GoodsItemMatching и перечисления
Items.json
Goods.json

Обратите внимание на идентификатор товара (10300101), он состоит из ItemId * 100 + n (есть исключения, но об этом как-то в другой раз), это необходимо для группировки предметов, дальше вы поймёте о чём я.

После отправки пакетов в магазине появится 1 товар на 100 боёв стоимостью в 10000 очков.

[Изображение: PBShop-1.png]

Теперь разберёмся с группировкой. Если добавить второй товар с идентификатором 10300102 и тем же предметом, но отличающимся ценой или количеством, то у пользователя появится возможность выбора предмета:

Goods.json

Результат.

[Изображение: PBShop-2.png]

Также вместо количества боёв - мы может указать количество дней в секундах (86400 * n дней), ниже в примере предмет на 7 дней.

Items.json
Goods.json

[Изображение: PBShop-Donat-7d.png]

Пока всё, буду дописывать по мере появления желания. kappa

Появились вопросы и дополнения касательно магазина PB - пожалуйста, пишите их в этой теме.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  To dumb pointblank.exe TomCodder 1 3,078 11-04-2023, 09:15 PM
Последний пост: sanglovepb22
  Share PointBlank Emulator v3.24 + Source :) UNKOWN 10 9,746 11-26-2022, 03:32 PM
Последний пост: kisswdev
  PointBlank\PiercingBlow. CreateMutex Awiion 22 13,133 11-28-2019, 07:03 AM
Последний пост: 0xByte
  А как сейчас делать Дамп PointBlank? 3romba 10 3,435 03-18-2019, 02:15 PM
Последний пост: zOne62
  I have a some question for pointblank tools 0hLovely 0 1,429 07-13-2018, 04:08 AM
Последний пост: 0hLovely
  How to edit file pointblank th bmzproject 0 1,686 05-23-2018, 04:05 PM
Последний пост: bmzproject
  Items PointBlank? Codex1to 5 2,226 02-12-2018, 10:00 PM
Последний пост: Boris2105
  [Point Blank]Someone can help me DUMP PointBlank.exe Exile03 3 2,575 05-12-2017, 05:21 AM
Последний пост: TheBestGuy
  PointBlank ongame udp3 server Comandante9901 3 4,563 12-04-2016, 05:39 PM
Последний пост: Awiion

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)