Core/PacketIO: Updated and enabled RaF packets
This commit is contained in:
@@ -1033,20 +1033,22 @@ enum CharDeleteMethod
|
||||
|
||||
enum ReferAFriendError
|
||||
{
|
||||
ERR_REFER_A_FRIEND_NONE = 0x00,
|
||||
ERR_REFER_A_FRIEND_NOT_REFERRED_BY = 0x01,
|
||||
ERR_REFER_A_FRIEND_TARGET_TOO_HIGH = 0x02,
|
||||
ERR_REFER_A_FRIEND_INSUFFICIENT_GRANTABLE_LEVELS = 0x03,
|
||||
ERR_REFER_A_FRIEND_TOO_FAR = 0x04,
|
||||
ERR_REFER_A_FRIEND_DIFFERENT_FACTION = 0x05,
|
||||
ERR_REFER_A_FRIEND_NOT_NOW = 0x06,
|
||||
ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I = 0x07,
|
||||
ERR_REFER_A_FRIEND_SUMMON_LEVEL_MAX_I = 0x08,
|
||||
ERR_REFER_A_FRIEND_SUMMON_COOLDOWN = 0x09,
|
||||
ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S = 0x0A,
|
||||
ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL = 0x0B,
|
||||
ERR_REFER_A_FRIEND_NOT_IN_LFG = 0x0C,
|
||||
ERR_REFER_A_FRIEND_NO_XREALM = 0x0D
|
||||
ERR_REFER_A_FRIEND_NONE = 0,
|
||||
ERR_REFER_A_FRIEND_NOT_REFERRED_BY = 1,
|
||||
ERR_REFER_A_FRIEND_TARGET_TOO_HIGH = 2,
|
||||
ERR_REFER_A_FRIEND_INSUFFICIENT_GRANTABLE_LEVELS = 3,
|
||||
ERR_REFER_A_FRIEND_TOO_FAR = 4,
|
||||
ERR_REFER_A_FRIEND_DIFFERENT_FACTION = 5,
|
||||
ERR_REFER_A_FRIEND_NOT_NOW = 6,
|
||||
ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I = 7,
|
||||
ERR_REFER_A_FRIEND_NO_TARGET = 8,
|
||||
ERR_REFER_A_FRIEND_NOT_IN_GROUP = 9,
|
||||
ERR_REFER_A_FRIEND_SUMMON_LEVEL_MAX_I = 10,
|
||||
ERR_REFER_A_FRIEND_SUMMON_COOLDOWN = 11,
|
||||
ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL = 12,
|
||||
ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S = 13,
|
||||
ERR_REFER_A_FRIEND_NO_XREALM = 14,
|
||||
ERR_REFER_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 15
|
||||
};
|
||||
|
||||
enum PlayerRestState
|
||||
|
||||
@@ -20,18 +20,13 @@
|
||||
#include "ObjectMgr.h"
|
||||
#include "Opcodes.h"
|
||||
#include "Log.h"
|
||||
#include "ReferAFriendPackets.h"
|
||||
|
||||
void WorldSession::HandleGrantLevel(WorldPacket& recvData)
|
||||
void WorldSession::HandleGrantLevel(WorldPackets::RaF::GrantLevel& grantLevel)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: CMSG_GRANT_LEVEL");
|
||||
|
||||
ObjectGuid guid;
|
||||
recvData >> guid.ReadAsPacked();
|
||||
|
||||
Player* target = ObjectAccessor::GetObjectInWorld(guid, _player);
|
||||
Player* target = ObjectAccessor::GetObjectInWorld(grantLevel.Target, _player);
|
||||
|
||||
// check cheating
|
||||
/* TODO: 6.x update lfg system
|
||||
uint8 levels = _player->GetGrantableLevels();
|
||||
uint8 error = 0;
|
||||
if (!target)
|
||||
@@ -48,31 +43,28 @@ void WorldSession::HandleGrantLevel(WorldPacket& recvData)
|
||||
error = ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I;
|
||||
else if (target->GetGroup() != _player->GetGroup())
|
||||
error = ERR_REFER_A_FRIEND_NOT_IN_GROUP;
|
||||
else if (target->getLevel() >= GetMaxLevelForExpansion(target->GetSession()->GetExpansion()))
|
||||
error = ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL;
|
||||
|
||||
if (error)
|
||||
{
|
||||
WorldPacket data(SMSG_REFER_A_FRIEND_FAILURE, 24);
|
||||
data << uint32(error);
|
||||
WorldPackets::RaF::ReferAFriendFailure failure;
|
||||
failure.Reason = error;
|
||||
if (error == ERR_REFER_A_FRIEND_NOT_IN_GROUP)
|
||||
data << target->GetName();
|
||||
failure.Str = target->GetName();
|
||||
|
||||
SendPacket(&data);
|
||||
SendPacket(failure.Write());
|
||||
return;
|
||||
}*/
|
||||
}
|
||||
|
||||
WorldPacket data2(SMSG_PROPOSE_LEVEL_GRANT, 8);
|
||||
data2 << _player->GetPackGUID();
|
||||
target->GetSession()->SendPacket(&data2);
|
||||
WorldPackets::RaF::ProposeLevelGrant proposeLevelGrant;
|
||||
proposeLevelGrant.Sender = _player->GetGUID();
|
||||
target->SendDirectMessage(proposeLevelGrant.Write());
|
||||
}
|
||||
|
||||
void WorldSession::HandleAcceptGrantLevel(WorldPacket& recvData)
|
||||
void WorldSession::HandleAcceptGrantLevel(WorldPackets::RaF::AcceptLevelGrant& acceptLevelGrant)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: CMSG_ACCEPT_LEVEL_GRANT");
|
||||
|
||||
ObjectGuid guid;
|
||||
recvData >> guid.ReadAsPacked();
|
||||
|
||||
Player* other = ObjectAccessor::GetObjectInWorld(guid, _player);
|
||||
Player* other = ObjectAccessor::GetObjectInWorld(acceptLevelGrant.Granter, _player);
|
||||
if (!(other && other->GetSession()))
|
||||
return;
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* 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 "ReferAFriendPackets.h"
|
||||
|
||||
void WorldPackets::RaF::AcceptLevelGrant::Read()
|
||||
{
|
||||
_worldPacket >> Granter;
|
||||
}
|
||||
|
||||
void WorldPackets::RaF::GrantLevel::Read()
|
||||
{
|
||||
_worldPacket >> Target;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::RaF::ProposeLevelGrant::Write()
|
||||
{
|
||||
_worldPacket << Sender;
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::RaF::ReferAFriendFailure::Write()
|
||||
{
|
||||
_worldPacket << int32(Reason);
|
||||
// Client uses this sring only if Reason == ERR_REFER_A_FRIEND_NOT_IN_GROUP || Reason == ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S
|
||||
// but always reads it from packet
|
||||
_worldPacket.WriteBits(Str.length(), 6);
|
||||
_worldPacket.WriteString(Str);
|
||||
return &_worldPacket;
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* 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 ReferAFriendPackets_h__
|
||||
#define ReferAFriendPackets_h__
|
||||
|
||||
#include "Packets.h"
|
||||
#include "ObjectGuid.h"
|
||||
|
||||
namespace WorldPackets
|
||||
{
|
||||
namespace RaF
|
||||
{
|
||||
class AcceptLevelGrant final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
AcceptLevelGrant(WorldPacket&& packet) : ClientPacket(CMSG_ACCEPT_LEVEL_GRANT, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid Granter;
|
||||
};
|
||||
|
||||
class GrantLevel final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
GrantLevel(WorldPacket&& packet) : ClientPacket(CMSG_GRANT_LEVEL, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid Target;
|
||||
};
|
||||
|
||||
class ProposeLevelGrant final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
ProposeLevelGrant() : ServerPacket(SMSG_PROPOSE_LEVEL_GRANT, 16) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid Sender;
|
||||
};
|
||||
|
||||
class ReferAFriendFailure final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
ReferAFriendFailure() : ServerPacket(SMSG_REFER_A_FRIEND_FAILURE, 1 + 4) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
std::string Str;
|
||||
int32 Reason = 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif // ReferAFriendPackets_h__
|
||||
@@ -150,10 +150,6 @@ namespace WorldPackets
|
||||
class TradeUpdated final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
TradeUpdated() : ServerPacket(SMSG_TRADE_UPDATED) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
struct UnwrappedTradeItem
|
||||
{
|
||||
WorldPackets::Item::ItemInstance Item;
|
||||
@@ -176,6 +172,10 @@ namespace WorldPackets
|
||||
Optional<UnwrappedTradeItem> Unwrapped;
|
||||
};
|
||||
|
||||
TradeUpdated() : ServerPacket(SMSG_TRADE_UPDATED, 8 + 4 + 1 + 4 + 7 * sizeof(UnwrappedTradeItem) + 4 + 4 + 4 + 4) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint64 Gold = 0;
|
||||
uint32 CurrentStateIndex = 0;
|
||||
uint8 WhichPlayer = 0;
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "Packets/PetitionPackets.h"
|
||||
#include "Packets/QueryPackets.h"
|
||||
#include "Packets/QuestPackets.h"
|
||||
#include "Packets/ReferAFriendPackets.h"
|
||||
#include "Packets/SocialPackets.h"
|
||||
#include "Packets/TalentPackets.h"
|
||||
#include "Packets/TradePackets.h"
|
||||
@@ -144,7 +145,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(opcode, status, processing, WorldPacket, handler);
|
||||
|
||||
DEFINE_HANDLER(CMSG_ACCEPT_GUILD_INVITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Guild::AcceptGuildInvite, &WorldSession::HandleGuildAcceptInvite);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_LEVEL_GRANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptGrantLevel );
|
||||
DEFINE_HANDLER(CMSG_ACCEPT_LEVEL_GRANT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::RaF::AcceptLevelGrant, &WorldSession::HandleAcceptGrantLevel );
|
||||
DEFINE_HANDLER(CMSG_ACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Trade::AcceptTrade, &WorldSession::HandleAcceptTradeOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_WARGAME_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_ACTIVATE_TAXI, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode );
|
||||
@@ -400,7 +401,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_GM_TICKET_RESPONSE_RESOLVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Ticket::GMTicketResponseResolve, &WorldSession::HandleGMResponseResolve);
|
||||
DEFINE_HANDLER(CMSG_GM_TICKET_UPDATE_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Ticket::GMTicketUpdateText, &WorldSession::HandleGMTicketUpdateTextOpcode);
|
||||
DEFINE_HANDLER(CMSG_GOSSIP_SELECT_OPTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::GossipSelectOption, &WorldSession::HandleGossipSelectOptionOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_GRANT_LEVEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGrantLevel );
|
||||
DEFINE_HANDLER(CMSG_GRANT_LEVEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::RaF::GrantLevel, &WorldSession::HandleGrantLevel );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_ADD_BATTLENET_FRIEND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_HANDLER(CMSG_GUILD_ADD_RANK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildAddRank, &WorldSession::HandleGuildAddRank);
|
||||
DEFINE_HANDLER(CMSG_GUILD_ASSIGN_MEMBER_RANK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildAssignMemberRank, &WorldSession::HandleGuildAssignRank);
|
||||
@@ -1482,7 +1483,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRE_RESSURECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRINT_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROC_RESIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROPOSE_LEVEL_GRANT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROPOSE_LEVEL_GRANT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_LOG_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
@@ -1536,7 +1537,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_SPLIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECRUIT_A_FRIEND_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_EXPIRED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_FAILURE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_COMPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_SPELL_HISTORY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVE_ITEM_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
|
||||
@@ -347,6 +347,12 @@ namespace WorldPackets
|
||||
class QuestLogRemoveQuest;
|
||||
}
|
||||
|
||||
namespace RaF
|
||||
{
|
||||
class AcceptLevelGrant;
|
||||
class GrantLevel;
|
||||
}
|
||||
|
||||
namespace Social
|
||||
{
|
||||
class AddFriend;
|
||||
@@ -1296,8 +1302,8 @@ class WorldSession
|
||||
void HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTabText& packet);
|
||||
|
||||
// Refer-a-Friend
|
||||
void HandleGrantLevel(WorldPacket& recvData);
|
||||
void HandleAcceptGrantLevel(WorldPacket& recvData);
|
||||
void HandleGrantLevel(WorldPackets::RaF::GrantLevel& grantLevel);
|
||||
void HandleAcceptGrantLevel(WorldPackets::RaF::AcceptLevelGrant& acceptLevelGrant);
|
||||
|
||||
// Calendar
|
||||
void HandleCalendarGetCalendar(WorldPacket& recvData);
|
||||
|
||||
@@ -915,12 +915,12 @@ void World::LoadConfigSettings(bool reload)
|
||||
}
|
||||
m_int_configs[CONFIG_CURRENCY_CONQUEST_POINTS_ARENA_REWARD] *= 100; //precision mod
|
||||
|
||||
m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL] = sConfigMgr->GetIntDefault("RecruitAFriend.MaxLevel", 60);
|
||||
m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL] = sConfigMgr->GetIntDefault("RecruitAFriend.MaxLevel", 85);
|
||||
if (m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL] > m_int_configs[CONFIG_MAX_PLAYER_LEVEL])
|
||||
{
|
||||
TC_LOG_ERROR("server.loading", "RecruitAFriend.MaxLevel (%i) must be in the range 0..MaxLevel(%u). Set to %u.",
|
||||
m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL], 60);
|
||||
m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL] = 60;
|
||||
m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL], 85);
|
||||
m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL] = 85;
|
||||
}
|
||||
|
||||
m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL_DIFFERENCE] = sConfigMgr->GetIntDefault("RecruitAFriend.MaxDifference", 4);
|
||||
|
||||
Reference in New Issue
Block a user