def send_inventory_list(self, world_session): vendor_data, session = WorldDatabaseManager.creature_get_vendor_data(self.entry) item_count = len(vendor_data) if vendor_data else 0 data = pack( '<QB', self.guid, item_count ) if item_count == 0: data += pack('<B', 0) else: for vendor_data_entry in vendor_data: data += pack( '<7I', 1, # mui vendor_data_entry.item, vendor_data_entry.item_template.display_id, 0xFFFFFFFF if vendor_data_entry.maxcount <= 0 else vendor_data_entry.maxcount, vendor_data_entry.item_template.buy_price, 0, # durability 0, # stack count ) world_session.enqueue_packet(ItemManager(item_template=vendor_data_entry.item_template).query_details()) session.close() world_session.enqueue_packet(PacketWriter.get_packet(OpCode.SMSG_LIST_INVENTORY, data))
def send_inventory_list(self, world_session): vendor_data, session = WorldDatabaseManager.creature_get_vendor_data(self.entry) item_count = len(vendor_data) if vendor_data else 0 data = pack( '<QB', self.guid, item_count ) if item_count == 0: data += pack('<B', 0) else: for count, vendor_data_entry in enumerate(vendor_data): data += pack( '<7I', count + 1, # m_muid, acts as slot counter. vendor_data_entry.item, vendor_data_entry.item_template.display_id, 0xFFFFFFFF if vendor_data_entry.maxcount <= 0 else vendor_data_entry.maxcount, vendor_data_entry.item_template.buy_price, vendor_data_entry.item_template.max_durability, # Max durability (not implemented in 0.5.3). vendor_data_entry.item_template.buy_count # Stack count. ) world_session.enqueue_packet(ItemManager(item_template=vendor_data_entry.item_template).query_details()) session.close() world_session.enqueue_packet(PacketWriter.get_packet(OpCode.SMSG_LIST_INVENTORY, data))