aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2011-11-28 15:59:49 +0000
committerNay <dnpd.dd@gmail.com>2011-11-28 15:59:49 +0000
commit699574267c15a525d3e47e62495c52159b8b2a3d (patch)
treea3b2a76d3a179bb192b8f99c12ca2d8f3c20ae7d
parentc1d6359218c117380173323df81aca634cd3fbe3 (diff)
Core/Chat: Fix most chat opcodes
TODO: Addon chat handling and some chat types (raid, bg, dnd, afk)
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp2
-rwxr-xr-xsrc/server/game/Miscellaneous/SharedDefines.h2
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/ChatHandler.cpp59
-rwxr-xr-xsrc/server/game/Server/Protocol/Opcodes.cpp24
-rwxr-xr-xsrc/server/game/Server/Protocol/Opcodes.h49
5 files changed, 104 insertions, 32 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index ea3600d006d..0bbf95fe890 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -7680,8 +7680,8 @@ void Player::DuelComplete(DuelCompleteType type)
{
data.Initialize(SMSG_DUEL_WINNER, (1+20)); // we guess size
data << uint8(type == DUEL_WON ? 0 : 1); // 0 = just won; 1 = fled
- data << duel->opponent->GetName();
data << GetName();
+ data << duel->opponent->GetName();
SendMessageToSet(&data, true);
}
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 8c4dba94201..a95f29c17d9 100755
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -2738,7 +2738,7 @@ enum WeatherType
enum ChatMsg
{
- CHAT_MSG_ADDON = 0xFFFFFFFF,
+ CHAT_MSG_ADDON = 0xFFFFFFFF, // -1
CHAT_MSG_SYSTEM = 0x00,
CHAT_MSG_SAY = 0x01,
CHAT_MSG_PARTY = 0x02,
diff --git a/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp b/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp
index 852549b3f53..3c8b1d8e033 100755
--- a/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp
@@ -65,10 +65,65 @@ bool WorldSession::processChatmessageFurtherAfterSecurityChecks(std::string& msg
void WorldSession::HandleMessagechatOpcode(WorldPacket & recv_data)
{
- uint32 type;
+ uint32 type = 0;
uint32 lang;
- recv_data >> type;
+ switch(recv_data.GetOpcode())
+ {
+ case CMSG_MESSAGECHAT_SAY:
+ type = CHAT_MSG_SAY;
+ break;
+ case CMSG_MESSAGECHAT_YELL:
+ type = CHAT_MSG_YELL;
+ break;
+ case CMSG_MESSAGECHAT_CHANNEL:
+ type = CHAT_MSG_CHANNEL;
+ break;
+ case CMSG_MESSAGECHAT_WHISPER:
+ type = CHAT_MSG_WHISPER;
+ break;
+ case CMSG_MESSAGECHAT_GUILD:
+ type = CHAT_MSG_GUILD;
+ break;
+ //case CMSG_MESSAGECHAT_OFFICER:
+ // type = CHAT_MSG_OFFICER;
+ // break;
+ //case CMSG_MESSAGECHAT_AFK:
+ // type = CHAT_MSG_AFK;
+ // break;
+ //case CMSG_MESSAGECHAT_DND:
+ // type = CHAT_MSG_DND;
+ // break;
+ case CMSG_MESSAGECHAT_EMOTE:
+ type = CHAT_MSG_EMOTE;
+ break;
+ case CMSG_MESSAGECHAT_PARTY:
+ type = CHAT_MSG_PARTY;
+ break;
+ //case CMSG_MESSAGECHAT_PARTY_LEADER:
+ // type = CHAT_MSG_PARTY_LEADER;
+ // break;
+ //case CMSG_MESSAGECHAT_RAID:
+ // type = CHAT_MSG_RAID;
+ // break;
+ //case CMSG_MESSAGECHAT_RAID_LEADER:
+ // type = CHAT_MSG_RAID_LEADER;
+ // break;
+ //case CMSG_MESSAGECHAT_BATTLEGROUND:
+ // type = CHAT_MSG_BATTLEGROUND;
+ // break;
+ //case CMSG_MESSAGECHAT_BATTLEGROUND_LEADER:
+ // type = CHAT_MSG_BATTLEGROUND_LEADER;
+ // break;
+ //case CMSG_MESSAGECHAT_RAID_WARNING:
+ // type = CHAT_MSG_RAID_WARNING;
+ // break;
+ default:
+ sLog->outDetail("HandleMessagechatOpcode : Unknown chat opcode (%u)", recv_data.GetOpcode());
+ recv_data.hexlike();
+ return;
+ }
+
recv_data >> lang;
if (type >= MAX_CHAT_MSG_TYPE)
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 05276094a25..89e26dbfef7 100755
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -191,8 +191,24 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_EVENT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(UMSG_UPDATE_GUILD, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
- //DEFINE_OPCODE_HANDLER(SMSG_MESSAGECHAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_ADDON_X, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_AFK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_BATTLEGROUND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_BATTLEGROUND_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_DND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_EMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_OFFICER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_PARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_PARTY_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_RAID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_RAID_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ //DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_RAID_WARNING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_SAY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_WHISPER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_YELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
+ DEFINE_OPCODE_HANDLER(SMSG_MESSAGECHAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_JOIN_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleJoinChannel );
//DEFINE_OPCODE_HANDLER(CMSG_LEAVE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLeaveChannel );
//DEFINE_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@@ -405,7 +421,7 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(SMSG_DUEL_OUTOFBOUNDS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_DUEL_INBOUNDS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_DUEL_COMPLETE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- //DEFINE_OPCODE_HANDLER(SMSG_DUEL_WINNER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_DUEL_WINNER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_DUEL_ACCEPTED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDuelAcceptedOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_DUEL_CANCELLED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDuelCancelledOpcode );
//DEFINE_OPCODE_HANDLER(SMSG_MOUNTRESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@@ -1010,7 +1026,7 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(MSG_RAID_READY_CHECK_FINISHED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRaidReadyCheckFinishedOpcode);
//DEFINE_OPCODE_HANDLER(CMSG_COMPLAIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleComplainOpcode );
//DEFINE_OPCODE_HANDLER(SMSG_COMPLAIN_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- //DEFINE_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_GM_SHOW_COMPLAINTS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//DEFINE_OPCODE_HANDLER(CMSG_GM_UNSQUELCH, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//DEFINE_OPCODE_HANDLER(CMSG_CHANNEL_SILENCE_VOICE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 21fa2b82b8b..9c74d58d374 100755
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -96,7 +96,7 @@ enum Opcodes
CMSG_CALENDAR_GUILD_FILTER = 0x00,
CMSG_CALENDAR_REMOVE_EVENT = 0x00,
CMSG_CALENDAR_UPDATE_EVENT = 0x5CD2,
- CMSG_CANCEL_AURA = 0x9c43,
+ CMSG_CANCEL_AURA = 0x9C43,
CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x5CEE,
CMSG_CANCEL_CAST = 0x00,
CMSG_CANCEL_CHANNELLING = 0xC8FE,
@@ -154,8 +154,8 @@ enum Opcodes
CMSG_DUEL_ACCEPTED = 0x00,
CMSG_DUEL_CANCELLED = 0x00,
CMSG_EJECT_PASSENGER = 0x00,
- CMSG_EQUIPMENT_SET_DELETE = 0x9cf2,
- CMSG_EQUIPMENT_SET_SAVE = 0x5e5f,
+ CMSG_EQUIPMENT_SET_DELETE = 0x9CF2,
+ CMSG_EQUIPMENT_SET_SAVE = 0x5E5F,
CMSG_EQUIPMENT_SET_USE = 0x4853,
CMSG_EMOTE = 0x9843,
CMSG_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x00,
@@ -181,14 +181,14 @@ enum Opcodes
CMSG_GM_INVIS = 0x00,
CMSG_GMRESPONSE_RESOLVE = 0x00,
CMSG_GMSURVEY_SUBMIT = 0x00,
- CMSG_GMTICKET_CREATE = 0x0a7b,
- CMSG_GMTICKET_DELETETICKET = 0x985f,
+ CMSG_GMTICKET_CREATE = 0x0A7B,
+ CMSG_GMTICKET_DELETETICKET = 0x985F,
CMSG_GMTICKET_GETTICKET = 0x00,
CMSG_GMTICKET_SYSTEMSTATUS = 0x4A7A,
CMSG_GMTICKET_UPDATETEXT = 0x8A7B,
CMSG_GM_NUKE = 0x00,
CMSG_GM_SET_SECURITY_GROUP = 0x00,
- CMSG_GM_REPORT_LAG = 0x9c6b,
+ CMSG_GM_REPORT_LAG = 0x9C6B,
CMSG_GOSSIP_HELLO = 0xAD3,
CMSG_GOSSIP_SELECT_OPTION = 0x984E,
CMSG_GRANT_LEVEL = 0x1CD6,
@@ -198,7 +198,7 @@ enum Opcodes
CMSG_GROUP_CHANGE_SUB_GROUP = 0x1AD2,
CMSG_GROUP_DECLINE = 0x00,
CMSG_GROUP_DISBAND = 0x00,
- CMSG_GROUP_INVITE = 0x00,
+ CMSG_GROUP_INVITE = 0xC88A,
CMSG_GROUP_RAID_CONVERT = 0xC85A,
CMSG_GROUP_SET_LEADER = 0xCEC7,
CMSG_GROUP_SWAP_SUB_GROUP = 0x5AD7,
@@ -274,7 +274,8 @@ enum Opcodes
CMSG_MESSAGECHAT_AFK = 0x00,
CMSG_MESSAGECHAT_BATTLEGROUND = 0x00,
CMSG_MESSAGECHAT_BATTLEGROUND_LEADER = 0x00,
- CMSG_MESSAGECHAT_ADDON = 0x24D9,
+ //CMSG_MESSAGECHAT_ADDON_GUILD = 0x24D9, // Not confirmed, new on 4.x
+ //CMSG_MESSAGECHAT_ADDON_WHISPER = 0x20C1, // Not confirmed, new on 4.x
CMSG_MESSAGECHAT_CHANNEL = 0x7459,
CMSG_MESSAGECHAT_DND = 0x00,
CMSG_MESSAGECHAT_EMOTE = 0x6449,
@@ -413,7 +414,7 @@ enum Opcodes
CMSG_SWAP_ITEM = 0xDED6,
CMSG_SWAP_INV_ITEM = 0x5CE7,
CMSG_TELEPORT_TO_UNIT = 0x8C72,
- CMSG_TEXT_EMOTE = 0x08d3,
+ CMSG_TEXT_EMOTE = 0x08D3,
CMSG_TIME_SYNC_RESP = 0x07A5,
CMSG_TAXICLEARALLNODES = 0x00,
CMSG_TAXIENABLEALLNODES = 0x00,
@@ -444,7 +445,7 @@ enum Opcodes
CMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x58F6,
CMSG_WORLD_TELEPORT = 0x00,
CMSG_WRAP_ITEM = 0x00,
- CMSG_ZONEUPDATE = 0x4ae2,
+ CMSG_ZONEUPDATE = 0x4AE2,
MSG_AUCTION_HELLO = 0x00,
MSG_CHANNEL_START = 0x00,
MSG_CHANNEL_UPDATE = 0x00,
@@ -460,23 +461,23 @@ enum Opcodes
MSG_LIST_STABLED_PETS = 0x88CA,
MSG_MINIMAP_PING = 0x00,
MSG_MOVE_FALL_LAND = 0x00a5,
- MSG_MOVE_HEARTBEAT = 0xb024,
+ MSG_MOVE_HEARTBEAT = 0xB024,
MSG_MOVE_HOVER = 0x00,
MSG_MOVE_JUMP = 0x9225,
MSG_MOVE_KNOCK_BACK = 0x00,
MSG_MOVE_ROOT = 0x00,
MSG_MOVE_SET_ALL_SPEED_CHEAT = 0x00,
- MSG_MOVE_SET_FACING = 0x02a4,
+ MSG_MOVE_SET_FACING = 0x02A4,
MSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x00,
MSG_MOVE_SET_FLIGHT_BACK_SPEED_CHEAT = 0x00,
MSG_MOVE_SET_FLIGHT_SPEED = 0x00,
MSG_MOVE_SET_FLIGHT_SPEED_CHEAT = 0x00,
- MSG_MOVE_SET_PITCH = 0xa7a5,
+ MSG_MOVE_SET_PITCH = 0xA7A5,
MSG_MOVE_SET_PITCH_RATE = 0x00,
MSG_MOVE_SET_RAW_POSITION_ACK = 0x00,
MSG_MOVE_SET_RUN_BACK_SPEED = 0x00,
MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT = 0x00,
- MSG_MOVE_SET_RUN_MODE = 0x21a4,
+ MSG_MOVE_SET_RUN_MODE = 0x21A4,
MSG_MOVE_SET_RUN_SPEED_CHEAT = 0x00,
MSG_MOVE_SET_RUN_SPEED = 0x00,
MSG_MOVE_SET_SWIM_BACK_SPEED = 0x00,
@@ -491,20 +492,20 @@ enum Opcodes
MSG_MOVE_START_ASCEND = 0x0624,
MSG_MOVE_START_DESCEND = 0x2624,
MSG_MOVE_STOP_ASCEND = 0x1125,
- MSG_MOVE_START_BACKWARD = 0x10a5,
- MSG_MOVE_START_FORWARD = 0xa0a4,
+ MSG_MOVE_START_BACKWARD = 0x10A5,
+ MSG_MOVE_START_FORWARD = 0xA0A4,
MSG_MOVE_START_PITCH_UP = 0x9524,
MSG_MOVE_START_PITCH_DOWN = 0x2025,
- MSG_MOVE_START_TURN_LEFT = 0x01a5,
- MSG_MOVE_START_TURN_RIGHT = 0xb6a4,
- MSG_MOVE_START_STRAFE_LEFT = 0xa024,
+ MSG_MOVE_START_TURN_LEFT = 0x01A5,
+ MSG_MOVE_START_TURN_RIGHT = 0xB6A4,
+ MSG_MOVE_START_STRAFE_LEFT = 0xA024,
MSG_MOVE_START_STRAFE_RIGHT = 0x9125,
- MSG_MOVE_START_SWIM = 0x85a4,
- MSG_MOVE_STOP = 0xa3a4,
+ MSG_MOVE_START_SWIM = 0x85A4,
+ MSG_MOVE_STOP = 0xA3A4,
MSG_MOVE_STOP_PITCH = 0x8425,
- MSG_MOVE_STOP_TURN = 0x90a4,
+ MSG_MOVE_STOP_TURN = 0x90A4,
MSG_MOVE_STOP_STRAFE = 0x0125,
- MSG_MOVE_STOP_SWIM = 0xb424,
+ MSG_MOVE_STOP_SWIM = 0xB424,
MSG_MOVE_TOGGLE_LOGGING = 0x00,
MSG_MOVE_TIME_SKIPPED = 0x00,
MSG_MOVE_TELEPORT = 0x00,
@@ -659,7 +660,7 @@ enum Opcodes
SMSG_DUEL_COMPLETE = 0x00,
SMSG_DUEL_COUNTDOWN = 0x00,
SMSG_DUEL_REQUESTED = 0x00,
- SMSG_DUEL_WINNER = 0x00,
+ SMSG_DUEL_WINNER = 0xDA52,
SMSG_DURABILITY_DAMAGE_DEATH = 0x00,
SMSG_ECHO_PARTY_SQUELCH = 0x00,
SMSG_EMOTE = 0xC67,