Add support for recruit-a-friend XP and reputation multipliers.

More research needs to be done to implement summoning and granting levels.

--HG--
branch : trunk
This commit is contained in:
silinoron
2010-08-17 19:18:09 -07:00
parent 8c4c5aef8b
commit d6fe4b23e9
10 changed files with 169 additions and 45 deletions
+4 -4
View File
@@ -46,16 +46,16 @@
#include "Transport.h"
/// WorldSession constructor
WorldSession::WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale) :
WorldSession::WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter) :
m_muteTime(mute_time), _player(NULL), m_Socket(sock),_security(sec), _accountId(id), m_expansion(expansion),
m_sessionDbcLocale(sWorld.GetAvailableDbcLocale(locale)), m_sessionDbLocaleIndex(sObjectMgr.GetIndexForLocale(locale)),
_logoutTime(0), m_inQueue(false), m_playerLoading(false), m_playerLogout(false), m_playerRecentlyLogout(false), m_playerSave(false),
m_latency(0), m_TutorialsChanged(false), m_timeOutTime(0)
m_latency(0), m_TutorialsChanged(false), m_timeOutTime(0), recruiterId(recruiter)
{
if (sock)
{
m_Address = sock->GetRemoteAddress ();
sock->AddReference ();
m_Address = sock->GetRemoteAddress();
sock->AddReference();
ResetTimeOutTime();
LoginDatabase.PExecute("UPDATE account SET online = 1 WHERE id = %u;", GetAccountId());
}
+4 -1
View File
@@ -129,7 +129,7 @@ class WorldSession
{
friend class CharacterHandler;
public:
WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale);
WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter);
~WorldSession();
bool PlayerLoading() const { return m_playerLoading; }
@@ -306,6 +306,8 @@ class WorldSession
return false;
}
// Recruit-A-Friend Handling
uint32 GetRecruiterId() { return recruiterId; }
public: // opcodes handlers
@@ -826,6 +828,7 @@ class WorldSession
uint32 m_Tutorials[8];
bool m_TutorialsChanged;
AddonsList m_addonsList;
uint32 recruiterId;
ACE_Based::LockedQueue<WorldPacket*, ACE_Thread_Mutex> _recvQueue;
};
#endif
+5 -2
View File
@@ -829,7 +829,8 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
"s, " //5
"expansion, " //6
"mutetime, " //7
"locale " //8
"locale, " //8
"recruiter " //9
"FROM account "
"WHERE username = '%s'",
safe_account.c_str());
@@ -898,6 +899,8 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
if (locale >= MAX_LOCALE)
locale = LOCALE_enUS;
uint32 recruiter = fields[9].GetUInt32();
// Checks gmlevel per Realm
result =
LoginDatabase.PQuery ("SELECT "
@@ -989,7 +992,7 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
safe_account.c_str());
// NOTE ATM the socket is single-threaded, have this in mind ...
ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), expansion, mutetime, locale), -1);
ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), expansion, mutetime, locale, recruiter), -1);
m_Crypt.Init(&K);