Shop.dat это по сути кэш, его создает клиент после получения пакетов:
Код:
PROTOCOL_AUTH_SHOP_ITEMLIST_ACK // 1038
PROTOCOL_AUTH_SHOP_GOODSLIST_ACK // 1036
PROTOCOL_AUTH_SHOP_REPAIRLIST_ACK // 1070
PROTOCOL_AUTH_SHOP_MATCHINGLIST_ACK // 1040
И пересоздаёт его опять же при получении этих пакетов. Для этого клиент отправляет пакет
PROTOCOL_SHOP_GET_SAILLIST_REQ с md5 хеш-суммой файла Shop.dat, и если тот не совпадает, нужно обновлять.
Сервер считывает Items.xml и Goods.xml, создает связи, получает их md5 хеш, ну а дальше как описано выше. Не совпали - отправляем клиенту, совпали - ну и хорошо.