void WorldSession::HandleBlackMarketBidOpcode(WorldPacket& recvData) { ObjectGuid guid; uint32 itemid, id; uint64 price; recvData >> id >> itemid >> price; guid[0] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); guid[4] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); guid[7] = recvData.ReadBit(); guid[6] = recvData.ReadBit(); guid[1] = recvData.ReadBit(); guid[2] = recvData.ReadBit(); recvData.ReadByteSeq(guid[4]); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[6]); recvData.ReadByteSeq(guid[5]); recvData.ReadByteSeq(guid[7]); recvData.ReadByteSeq(guid[1]); recvData.ReadByteSeq(guid[0]); recvData.ReadByteSeq(guid[2]); //structure ok need implement database data SendBlackMarketBidResult(); SendBlackMarketRequestItemsResult(); }
void WorldSession::HandleBlackMarketBid(WorldPacket& recvData) { ObjectGuid guid; uint32 itemid, id; uint64 price; recvData >> id; recvData >> price; recvData >> itemid; guid[7] = recvData.ReadBit(); guid[4] = recvData.ReadBit(); guid[0] = recvData.ReadBit(); guid[2] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); guid[1] = recvData.ReadBit(); guid[6] = recvData.ReadBit(); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[7]); recvData.ReadByteSeq(guid[0]); recvData.ReadByteSeq(guid[1]); recvData.ReadByteSeq(guid[6]); recvData.ReadByteSeq(guid[5]); recvData.ReadByteSeq(guid[2]); recvData.ReadByteSeq(guid[4]); sLog->outDebug(LOG_FILTER_NETWORKIO, ">> HandleBid >> id : %u, price : %u, itemid : %u", id, price, itemid); uint64 npcGuid = uint64(guid); if (!price) return; Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(npcGuid, UNIT_NPC_FLAG_BLACK_MARKET); if (!creature) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: HandleBlackMarketBid - Unit (GUID: %u) not found or you can't interact with him.", uint32(GUID_LOPART(npcGuid))); return; } BMAuctionEntry *auction = sBlackMarketMgr->GetAuction(id); if (!auction) return; if(auction->bidder == GetPlayer()->GetGUIDLow()) // Trying to cheat return; if(auction->bid >= price && price != auction->bm_template->startBid) // Trying to cheat return; if(!GetPlayer()->ModifyMoney(-price)) return; // trying to cheat sBlackMarketMgr->UpdateAuction(auction, price, GetPlayer()); SendBlackMarketBidResult(); SendBlackMarketRequestItemsResult(); }