public void HandleAccount(string packet)
{
string[] data = packet.Split('#');
string username = data[0];
string password = data[1].Substring(1);//Sub one, because as a const char '1'
var account = Database.Tables.AccountTable.GetAccountFromSQL(username);
if (account != null)
{
if (Utilities.Hash.CryptPass(this.EncryptKey, account.Password) == password)
{
this.Account = account;
Database.Tables.AccountTable.UpdateLogged(this.Account.Username, 1);
this.Send("Ad" + this.Account.Pseudo);
this.Send("Ac0");
this.Characters = Managers.MultiServerManager.GetCharactersInformations(this.Account);
Managers.MultiServerManager.SendServerState(this);
this.Send("AlK" + (this.Account.AdminLevel > 0 ? 1 : 0));
this.State = RealmState.SERVER_LIST;
Utilities.Logger.Infos("Client was logged with the account @'" + username + "'@");
lock (Managers.MultiServerManager.ConnectedAccounts)
{
if (Managers.MultiServerManager.ConnectedAccounts.Contains(account.Username))
{
Managers.MultiServerManager.Send(new Interop.Crystal.Packets.KickPlayerMessage(account.Username));
}
}
}
else
{
this.Send("AlEx");
Utilities.Logger.Error("Wrong password for account @'" + username + "'@");
}
}
else
{
this.Send("AlEx");
Utilities.Logger.Error("Can't found account @'" + username + "'@");
}
}