===================================================================
--- src/arcemu-logonserver/AuthSocket.cpp (revision 2316)
+++ src/arcemu-logonserver/AuthSocket.cpp (working copy)
@@ -208,6 +208,11 @@
SendChallengeError(CE_ACCOUNT_CLOSED);
return;
}
+ else if(m_account->Banned == 2)
+ {
+ SendChallengeError(CE_PREORDER_TIME_LIMIT);
+ return;
+ }
else if(m_account->Banned > 0)
{
SendChallengeError(CE_ACCOUNT_FREEZED);
@@ -590,6 +595,11 @@
SendChallengeError(CE_ACCOUNT_CLOSED);
return;
}
+ else if(m_account->Banned == 2)
+ {
+ SendChallengeError(CE_PREORDER_TIME_LIMIT);
+ return;
+ }
else if(m_account->Banned > 0)
{
SendChallengeError(CE_ACCOUNT_FREEZED);
Index: src/arcemu-logonserver/AccountCache.cpp
===================================================================
--- src/arcemu-logonserver/AccountCache.cpp (revision 2316)
+++ src/arcemu-logonserver/AccountCache.cpp (working copy)
@@ -108,19 +108,19 @@
acct->AccountId = field[0].GetUInt32();
acct->AccountFlags = field[5].GetUInt8();
acct->Banned = field[6].GetUInt32();
- if ( (uint32)UNIXTIME > acct->Banned && acct->Banned != 0 && acct->Banned != 1) //1 = perm ban?
+ if ( (uint32)UNIXTIME > acct->Banned && acct->Banned != 0 && acct->Banned > 3) //1 = perm ban?
{
//Accounts should be unbanned once the date is past their set expiry date.
acct->Banned = 0;
//me go boom

- //printf("Account %s's ban has expired.\n",acct->UsernamePtr->c_str());
+ printf("Account %s's ban has expired.\n",acct->UsernamePtr->c_str());
sLogonSQL->Execute("UPDATE accounts SET banned = 0 WHERE acct=%u",acct->AccountId);
}
acct->SetGMFlags(GMFlags.c_str());
- acct->Locale[0] = 'e';
- acct->Locale[1] = 'n';
- acct->Locale[2] = 'U';
- acct->Locale[3] = 'S';
+ acct->Locale[0] = 'e';
+ acct->Locale[1] = 'n';
+ acct->Locale[2] = 'U';
+ acct->Locale[3] = 'S';
if(strcmp(field[7].GetString(), "enUS"))
{
// non-standard language forced
@@ -201,12 +201,12 @@
acct->AccountId = field[0].GetUInt32();
acct->AccountFlags = field[5].GetUInt8();
acct->Banned = field[6].GetUInt32();
- if ((uint32)UNIXTIME > acct->Banned && acct->Banned != 0 && acct->Banned != 1) //1 = perm ban?
+ if ((uint32)UNIXTIME > acct->Banned && acct->Banned != 0 && acct->Banned > 3) //1 = perm ban?
{
- //Accounts should be unbanned once the date is past their set expiry date.
- acct->Banned = 0;
+ //Accounts should be frozen once the date is past their set expiry date.
+ acct->Banned = 2;
sLog.outDebug("Account %s's ban has expired.",acct->UsernamePtr->c_str());
- sLogonSQL->Execute("UPDATE accounts SET banned = 0 WHERE acct=%u",acct->AccountId);
+ sLogonSQL->Execute("UPDATE accounts SET banned = 2 WHERE acct=%u",acct->AccountId); //expired ban -> freeze Account
}
acct->SetGMFlags(GMFlags.c_str());
if(strcmp(field[7].GetString(), "enUS"))
Btw: when a ban expires the account will get frozen with that patch. To change that see the comment in the patch!