diff options
author | Vincent-Michael <Vincent_Michael@gmx.de> | 2015-04-10 22:28:16 +0200 |
---|---|---|
committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2015-04-10 22:28:16 +0200 |
commit | 0473b5371aa93f5c198cb88a5076c673b2cd5143 (patch) | |
tree | b08cbe09265f07eb2ed2518d4d35a8d72e6b58c0 /src | |
parent | 653954c14d6136295691e18d7e21918d46d0761f (diff) |
Core/Token: Fix freeze at opening game time windows
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/TokenHandler.cpp | 31 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 13 | ||||
-rw-r--r-- | src/server/game/Server/Packets/TokenPackets.cpp | 40 | ||||
-rw-r--r-- | src/server/game/Server/Packets/TokenPackets.h | 60 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 1 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 8 |
8 files changed, 158 insertions, 1 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 906a209ff84..2a6274ca0ca 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1107,6 +1107,8 @@ void WorldSession::SendFeatureSystemStatus() features.TwitterMsTillCanPost = 20; features.CfgRealmID = 2; features.CfgRealmRecID = 0; + features.TokenPollTimeSeconds = 300; + features.TokenRedeemIndex = 0; features.VoiceEnabled = false; features.BrowserEnabled = false; // Has to be false, otherwise client will crash if "Customer Support" is opened diff --git a/src/server/game/Handlers/TokenHandler.cpp b/src/server/game/Handlers/TokenHandler.cpp new file mode 100644 index 00000000000..6b2dd06a44b --- /dev/null +++ b/src/server/game/Handlers/TokenHandler.cpp @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "Common.h" +#include "TokenPackets.h" +#include "WorldSession.h" + +void WorldSession::HandleUpdateListedAuctionableTokens(WorldPackets::Token::UpdateListedAuctionableTokens& updateListedAuctionableTokens) +{ + WorldPackets::Token::UpdateListedAuctionableTokensResponse response; + + /// @todo: fix 6.x implementation + response.UnkInt = updateListedAuctionableTokens.UnkInt; + response.Result = TOKEN_RESULT_ERROR_DISABLED; + + SendPacket(response.Write()); +} diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 894e7624ca5..1ca4395c91c 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -4909,4 +4909,17 @@ enum DiminishingLevels DIMINISHING_LEVEL_TAUNT_IMMUNE = 4 }; +enum TokenResult +{ + TOKEN_RESULT_SUCCESS = 1, + TOKEN_RESULT_ERROR_DISABLED = 2, + TOKEN_RESULT_ERROR_OTHER = 3, + TOKEN_RESULT_ERROR_NONE_FOR_SALE = 4, + TOKEN_RESULT_ERROR_TOO_MANY_TOKENS = 5, + TOKEN_RESULT_SUCCESS_NO = 6, + TOKEN_RESULT_ERROR_TRANSACTION_IN_PROGRESS = 7, + TOKEN_RESULT_ERROR_AUCTIONABLE_TOKEN_OWNED = 8, + TOKEN_RESULT_ERROR_TRIAL_RESTRICTED = 9 +}; + #endif diff --git a/src/server/game/Server/Packets/TokenPackets.cpp b/src/server/game/Server/Packets/TokenPackets.cpp new file mode 100644 index 00000000000..4c466683ed3 --- /dev/null +++ b/src/server/game/Server/Packets/TokenPackets.cpp @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "TokenPackets.h" + +void WorldPackets::Token::UpdateListedAuctionableTokens::Read() +{ + _worldPacket >> UnkInt; +} + +WorldPacket const* WorldPackets::Token::UpdateListedAuctionableTokensResponse::Write() +{ + _worldPacket << UnkInt; + _worldPacket << Result; + _worldPacket << uint32(AuctionableTokenAuctionableList.size()); + for (AuctionableTokenAuctionable const& auctionableTokenAuctionable : AuctionableTokenAuctionableList) + { + _worldPacket << auctionableTokenAuctionable.UnkInt1; + _worldPacket << auctionableTokenAuctionable.UnkInt2; + _worldPacket << auctionableTokenAuctionable.UnkInt3; + _worldPacket << auctionableTokenAuctionable.UnkInt4; + _worldPacket << auctionableTokenAuctionable.UnkInt5; + } + + return &_worldPacket; +}
\ No newline at end of file diff --git a/src/server/game/Server/Packets/TokenPackets.h b/src/server/game/Server/Packets/TokenPackets.h new file mode 100644 index 00000000000..126fbe59982 --- /dev/null +++ b/src/server/game/Server/Packets/TokenPackets.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TokenPackets_h__ +#define TokenPackets_h__ + +#include "Packet.h" + +namespace WorldPackets +{ + namespace Token + { + class UpdateListedAuctionableTokens final : public ClientPacket + { + public: + UpdateListedAuctionableTokens(WorldPacket&& packet) : ClientPacket(CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST, std::move(packet)) { } + + void Read() override; + + uint32 UnkInt = 0; + }; + + class UpdateListedAuctionableTokensResponse final : public ServerPacket + { + public: + UpdateListedAuctionableTokensResponse() : ServerPacket(SMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST_RESPONSE, 12) { } + + WorldPacket const* Write() override; + + struct AuctionableTokenAuctionable + { + uint64 UnkInt1 = 0; + uint32 UnkInt2 = 0; + uint32 UnkInt3 = 0; + uint64 UnkInt4 = 0; + uint32 UnkInt5 = 0; + }; + + uint32 UnkInt = 0; // send CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST + uint32 Result = 0; + std::vector<AuctionableTokenAuctionable> AuctionableTokenAuctionableList; + }; + } +} + +#endif // TokenPackets_h__ diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index c0734b4b6d5..a3e268e5069 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -47,6 +47,7 @@ #include "Packets/ScenePackets.h" #include "Packets/SocialPackets.h" #include "Packets/TalentPackets.h" +#include "Packets/TokenPackets.h" #include "Packets/TradePackets.h" #include "Packets/TicketPackets.h" #include "Packets/VehiclePackets.h" @@ -806,7 +807,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_CLIENT_SETTINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateMissileTrajectory ); DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_RAID_TARGET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRaidTargetUpdateOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_HANDLER(CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Token::UpdateListedAuctionableTokens, &WorldSession::HandleUpdateListedAuctionableTokens); DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_WOW_TOKEN_COUNT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_UPGRADE_GARRISON, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_UPGRADE_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -1713,6 +1714,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_TASK_PROGRESS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WEEKLY_SPELL_USAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WORLD_STATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_ADD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_REMOVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 91cf55496e8..ab59edf68c0 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -1608,6 +1608,7 @@ enum OpcodeServer : uint32 SMSG_UPDATE_TASK_PROGRESS = 0x1317, SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x103A, SMSG_UPDATE_WORLD_STATE = 0x1DF1, + SMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST_RESPONSE = 0x1836, SMSG_USERLIST_ADD = 0x15F0, SMSG_USERLIST_REMOVE = 0x10E4, SMSG_USERLIST_UPDATE = 0x18EF, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index e2bdb791633..0efd326236c 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -428,6 +428,11 @@ namespace WorldPackets class SupportTicketSubmitComplaint; } + namespace Token + { + class UpdateListedAuctionableTokens; + } + namespace Trade { class AcceptTrade; @@ -1411,6 +1416,9 @@ class WorldSession void HandleScenePlaybackComplete(WorldPackets::Scenes::ScenePlaybackComplete& scenePlaybackComplete); void HandleScenePlaybackCanceled(WorldPackets::Scenes::ScenePlaybackCanceled& scenePlaybackCanceled); + // Token + void HandleUpdateListedAuctionableTokens(WorldPackets::Token::UpdateListedAuctionableTokens& updateListedAuctionableTokens); + void SendSpellCategoryCooldowns(); // Compact Unit Frames (4.x) |