aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2015-04-10 22:28:16 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2015-04-10 22:28:16 +0200
commit0473b5371aa93f5c198cb88a5076c673b2cd5143 (patch)
treeb08cbe09265f07eb2ed2518d4d35a8d72e6b58c0 /src/server/game
parent653954c14d6136295691e18d7e21918d46d0761f (diff)
Core/Token: Fix freeze at opening game time windows
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp2
-rw-r--r--src/server/game/Handlers/TokenHandler.cpp31
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h13
-rw-r--r--src/server/game/Server/Packets/TokenPackets.cpp40
-rw-r--r--src/server/game/Server/Packets/TokenPackets.h60
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h1
-rw-r--r--src/server/game/Server/WorldSession.h8
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)