[0106] Fix some opcodes

Signed-off-by: Netcho <kkotlarski@abv.bg>
This commit is contained in:
Netcho 2012-08-16 21:06:17 +03:00 committed by Antz
parent fe0e119e13
commit 7ab30e619e
4 changed files with 53 additions and 49 deletions

View file

@ -742,26 +742,30 @@ void WorldSession::SendListInventory(ObjectGuid vendorguid)
VendorItemData const* vItems = pCreature->GetVendorItems();
VendorItemData const* tItems = pCreature->GetVendorTemplateItems();
if (!vItems && !tItems)
{
WorldPacket data(SMSG_LIST_INVENTORY, (8 + 1 + 1));
data << ObjectGuid(vendorguid);
data << uint8(0); // count==0, next will be error code
data << uint8(0); // "Vendor has no inventory"
SendPacket(&data);
return;
}
uint8 customitems = vItems ? vItems->GetItemCount() : 0;
uint8 numitems = customitems + (tItems ? tItems->GetItemCount() : 0);
uint8 count = 0;
WorldPacket data(SMSG_LIST_INVENTORY, (8 + 1 + numitems * 8 * 4));
data << ObjectGuid(vendorguid);
ObjectGuid Guid = vendorguid;
uint8 GuidMask[] = { 1, 0, 3, 6, 5, 2, 7, 4 };
uint8 GuidBytes[] = { 5, 4, 1, 0, 6, 2, 3, 7 };
size_t count_pos = data.wpos();
data << uint8(count); // placeholder, client limit 150 items (as of 3.3.3)
data.WriteGuidMask(Guid, GuidMask, 2);
data.WriteBits(numitems, 21);
data.WriteGuidMask(Guid, GuidMask, 5, 2);
for (uint32 i = 0; i < numitems; i++)
{
data.WriteBit(true);
data.WriteBit(true);
}
data.WriteGuidMask(Guid, GuidMask, 1, 7);
data.FlushBits();
float discountMod = _player->GetReputationPriceDiscount(pCreature);
@ -810,25 +814,25 @@ void WorldSession::SendListInventory(ObjectGuid vendorguid)
uint32 price = (crItem->ExtendedCost == 0 || pProto->Flags2 & ITEM_FLAG2_EXT_COST_REQUIRES_GOLD) ? uint32(floor(pProto->BuyPrice * discountMod)) : 0;
data << uint32(vendorslot + 1); // client size expected counting from 1
data << uint32(pProto->ItemId);
data << uint32(pProto->MaxDurability);
/*if (hasExtendedCost[vendorslot])
data << uint32(crItem->ExtendedCost);*/
data << uint32(itemId);
data << uint32(pProto->BuyCount);
data << uint32(price);
data << uint32(pProto->DisplayInfoID);
data << uint32(crItem->maxcount <= 0 ? 0xFFFFFFFF : pCreature->GetVendorItemCurrentCount(crItem));
data << uint32(price);
data << uint32(pProto->MaxDurability);
data << uint32(pProto->BuyCount);
data << uint32(crItem->ExtendedCost);
data << uint32(1);
}
}
}
if (count == 0)
{
data << uint8(0); // "Vendor has no inventory"
SendPacket(&data);
return;
}
data.WriteGuidBytes(Guid, GuidBytes, 5, 0);
data << uint8(0x74);
data.WriteGuidBytes(Guid, GuidBytes, 3, 5);
data.put<uint8>(count_pos, count);
SendPacket(&data);
}

View file

@ -1453,7 +1453,7 @@ void WorldSession::HandleSetRaidDifficultyOpcode(WorldPacket& recv_data)
if (pGroup->IsLeader(_player->GetObjectGuid()))
{
// the difficulty is set even if the instances can't be reset
//_player->SendDungeonDifficulty(true);
_player->SendDungeonDifficulty(true);
pGroup->ResetInstances(INSTANCE_RESET_CHANGE_DIFFICULTY, true, _player);
pGroup->SetRaidDifficulty(Difficulty(mode));
}

View file

@ -486,10 +486,10 @@ void InitializeOpcodes()
//OPCODE(CMSG_QUEST_CONFIRM_ACCEPT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept );
//OPCODE(SMSG_QUEST_CONFIRM_ACCEPT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_PUSHQUESTTOPARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePushQuestToParty );
//OPCODE(CMSG_LIST_INVENTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleListInventoryOpcode );
//OPCODE(SMSG_LIST_INVENTORY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSellItemOpcode );
//OPCODE(SMSG_SELL_ITEM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_LIST_INVENTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleListInventoryOpcode );
OPCODE(SMSG_LIST_INVENTORY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSellItemOpcode );
OPCODE(SMSG_SELL_ITEM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_BUY_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBuyItemOpcode );
//OPCODE(CMSG_BUY_ITEM_IN_SLOT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBuyItemInSlotOpcode );
OPCODE(SMSG_BUY_ITEM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@ -569,7 +569,7 @@ void InitializeOpcodes()
//OPCODE(MSG_SAVE_GUILD_EMBLEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSaveGuildEmblemOpcode );
//OPCODE(MSG_TABARDVENDOR_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTabardVendorActivateOpcode);
OPCODE(SMSG_PLAY_SPELL_VISUAL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_ZONEUPDATE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleZoneUpdateOpcode );
OPCODE(CMSG_ZONEUPDATE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleZoneUpdateOpcode );
//OPCODE(SMSG_PARTYKILLLOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_COMPRESSED_UPDATE_OBJECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@ -577,7 +577,7 @@ void InitializeOpcodes()
//OPCODE(CMSG_GM_NUKE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(MSG_RANDOM_ROLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode );
//OPCODE(SMSG_ENVIRONMENTALDAMAGELOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_CHANGEPLAYER_DIFFICULTY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
OPCODE(CMSG_CHANGEPLAYER_DIFFICULTY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(SMSG_RWHOIS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_LFG_PLAYER_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_LFG_TELEPORT_DENIED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@ -594,7 +594,7 @@ void InitializeOpcodes()
OPCODE(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateAccountData);
OPCODE(SMSG_UPDATE_ACCOUNT_DATA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_CLEAR_FAR_SIGHT_IMMEDIATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_CHANGEPLAYER_DIFFICULTY_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(SMSG_CHANGEPLAYER_DIFFICULTY_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_GM_TEACH, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(CMSG_GM_CREATE_ITEM_TARGET, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
OPCODE(CMSG_GMTICKET_GETTICKET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketGetTicketOpcode );
@ -636,9 +636,9 @@ void InitializeOpcodes()
//OPCODE(CMSG_GUILD_SET_OFFICER_NOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetOfficerNoteOpcode );
OPCODE(SMSG_LOGIN_VERIFY_WORLD, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_CLEAR_EXPLORATION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(CMSG_SEND_MAIL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSendMail );
//OPCODE(SMSG_SEND_MAIL_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_GET_MAIL_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGetMailList );
OPCODE(CMSG_SEND_MAIL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSendMail );
OPCODE(SMSG_SEND_MAIL_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_GET_MAIL_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGetMailList );
//OPCODE(SMSG_MAIL_LIST_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_BATTLEFIELD_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldListOpcode );
//OPCODE(SMSG_BATTLEFIELD_LIST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@ -877,7 +877,7 @@ void InitializeOpcodes()
//OPCODE(SMSG_GHOSTEE_GONE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_GM_UPDATE_TICKET_STATUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(SMSG_GM_TICKET_STATUS_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(MSG_SET_DUNGEON_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetDungeonDifficultyOpcode);
OPCODE(MSG_SET_DUNGEON_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetDungeonDifficultyOpcode);
//OPCODE(CMSG_GMSURVEY_SUBMIT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMSurveySubmitOpcode );
//OPCODE(SMSG_UPDATE_INSTANCE_OWNERSHIP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_IGNORE_KNOCKBACK_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );

View file

@ -471,10 +471,10 @@ enum Opcodes
CMSG_QUEST_CONFIRM_ACCEPT = 0x119C,
SMSG_QUEST_CONFIRM_ACCEPT = 0x119D,
CMSG_PUSHQUESTTOPARTY = 0x119E,
CMSG_LIST_INVENTORY = 0x119F,
SMSG_LIST_INVENTORY = 0x11A0,
CMSG_SELL_ITEM = 0x11A1,
SMSG_SELL_ITEM = 0x11A2,
CMSG_LIST_INVENTORY = 0x2806, // 4.3.4 15595
SMSG_LIST_INVENTORY = 0x7CB0, // 4.3.4 15595
CMSG_SELL_ITEM = 0x4E15, // 4.3.4 15595
SMSG_SELL_ITEM = 0x6105, // 4.3.4 15595
CMSG_BUY_ITEM = 0x0736, // 4.3.4 15595
CMSG_BUY_ITEM_IN_SLOT = 0x11A4,
SMSG_BUY_ITEM = 0x0F26, // 4.3.4 15595
@ -554,7 +554,7 @@ enum Opcodes
MSG_SAVE_GUILD_EMBLEM = 0x11F2,
MSG_TABARDVENDOR_ACTIVATE = 0x11F3,
SMSG_PLAY_SPELL_VISUAL = 0x55A5, // 4.3.4 15595
CMSG_ZONEUPDATE = 0x11F5,
CMSG_ZONEUPDATE = 0x4F37, // 4.3.4 15595
SMSG_PARTYKILLLOG = 0x11F6,
SMSG_COMPRESSED_UPDATE_OBJECT = 0x11F7,
SMSG_EXPLORATION_EXPERIENCE = 0x11F9,
@ -562,7 +562,7 @@ enum Opcodes
CMSG_GM_NUKE = 0x11FB,
MSG_RANDOM_ROLL = 0x11FC,
SMSG_ENVIRONMENTALDAMAGELOG = 0x11FD,
CMSG_CHANGEPLAYER_DIFFICULTY = 0x11FE,
CMSG_CHANGEPLAYER_DIFFICULTY = 0x6107, // 4.3.4 15595
SMSG_RWHOIS = 0x11FF,
SMSG_LFG_PLAYER_REWARD = 0x1200,
SMSG_LFG_TELEPORT_DENIED = 0x1201,
@ -579,7 +579,7 @@ enum Opcodes
CMSG_UPDATE_ACCOUNT_DATA = 0x4736, // 4.3.4 15595
SMSG_UPDATE_ACCOUNT_DATA = 0x6837, // 4.3.4 15595
SMSG_CLEAR_FAR_SIGHT_IMMEDIATE = 0x120E,
SMSG_CHANGEPLAYER_DIFFICULTY_RESULT = 0x120F,
SMSG_CHANGEPLAYER_DIFFICULTY_RESULT = 0x2217, // 4.3.4 15595
CMSG_GM_TEACH = 0x1210,
CMSG_GM_CREATE_ITEM_TARGET = 0x1211,
CMSG_GMTICKET_GETTICKET = 0x0326, // 4.3.4 15595
@ -621,9 +621,9 @@ enum Opcodes
CMSG_GUILD_SET_OFFICER_NOTE = 0x1236,
SMSG_LOGIN_VERIFY_WORLD = 0x2005, // 4.3.4 15595
CMSG_CLEAR_EXPLORATION = 0x1238,
CMSG_SEND_MAIL = 0x1239,
SMSG_SEND_MAIL_RESULT = 0x123A,
CMSG_GET_MAIL_LIST = 0x123B,
CMSG_SEND_MAIL = 0x0523, // 4.3.4 15595
SMSG_SEND_MAIL_RESULT = 0x4927, // 4.3.4 15595
CMSG_GET_MAIL_LIST = 0x4D37, // 4.3.4 15595
SMSG_MAIL_LIST_RESULT = 0x123C,
CMSG_BATTLEFIELD_LIST = 0x123D,
SMSG_BATTLEFIELD_LIST = 0x123E,
@ -697,7 +697,7 @@ enum Opcodes
CMSG_RESET_FACTION_CHEAT = 0x1282,
CMSG_AUTOSTORE_BANK_ITEM = 0x1283,
CMSG_AUTOBANK_ITEM = 0x1284,
MSG_QUERY_NEXT_MAIL_TIME = 0x1285,
MSG_QUERY_NEXT_MAIL_TIME = 0x0F04, // 4.3.4 15595
SMSG_RECEIVED_MAIL = 0x1286,
SMSG_RAID_GROUP_ONLY = 0x1287,
CMSG_SET_DURABILITY_CHEAT = 0x1288,
@ -862,7 +862,7 @@ enum Opcodes
SMSG_GHOSTEE_GONE = 0x1327,
CMSG_GM_UPDATE_TICKET_STATUS = 0x1328,
SMSG_GM_TICKET_STATUS_UPDATE = 0x1329,
MSG_SET_DUNGEON_DIFFICULTY = 0x132A,
MSG_SET_DUNGEON_DIFFICULTY = 0x4925, // 4.3.4 15595
CMSG_GMSURVEY_SUBMIT = 0x132B,
SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x132C,
CMSG_IGNORE_KNOCKBACK_CHEAT = 0x132D,