Пример #1
0
        public static void HandleLogin(Client client, Message message)
        {
            if (message.BytesAvaible >= 38)
            {
                var username = message.GetString(17);
                var unk      = message.GetShort();
                var password = message.GetString(17);

                var account = Account.getAccount(username, password);
                if (account != null)
                {
                    if (!account.isInGame && !account.isInLobby && !account.isInLobbyRoom)
                    {
                        var sessionKey = Functions.Random(17, false);
                        AccountTransition.addAccount(account, sessionKey);

                        client.account = account;

                        if (client.account.first_login == 1)
                        {
                            Log.WriteLog(Log.Type.Info, "{0} logged in with session key '{1}'", client.account.char_name, sessionKey);
                        }

                        if (client.account.char_rank == "Banned")
                        {
                            client.Send(new TM_SC_RESULT((byte)AuthenticationEnums.ResultId.msg_server_denied));
                        }
                        else
                        {
                            client.Send(new TS_SC_WE_LOGIN(sessionKey));

                            HandleServerList(client, message);
                            HandleSelectServer(client, message);
                        }
                    }
                    else
                    {
                        var thisMmoClient   = mmo.Server.clients.FirstOrDefault(x => x.account.char_name == client.account.char_name);
                        var thisLobbyClient = lobby.Server.clients.FirstOrDefault(x => x.account.char_name == client.account.char_name);

                        client.Disconnect();
                        thisMmoClient.Disconnect();
                        thisLobbyClient.Disconnect();

                        client.Send(new TM_SC_RESULT((byte)AuthenticationEnums.ResultId.msg_server_already_exist));
                        Log.WriteLog(Log.Type.Info, "'{0}:{1}' tried to connect on connected account '{2}:{3}'", client.Ip, client.Port, username.Replace("\0", string.Empty), password.Replace("\0", string.Empty));
                    }
                }
                else
                {
                    client.Send(new TM_SC_RESULT((byte)AuthenticationEnums.ResultId.msg_server_not_exist));
                    Log.WriteLog(Log.Type.Info, "'{0}:{1}' failed to connect with creds '{2}:{3}'", client.Ip, client.Port, username.Replace("\0", string.Empty), password.Replace("\0", string.Empty));
                }
            }
        }
Пример #2
0
 public static void HandleLogin(Client client, Message message)
 {
     if (message.BytesAvaible >= 17)
     {
         var sessionKey = message.GetString(17);
         var account    = AccountTransition.getAccount(sessionKey);
         if (account != null)
         {
             client.account    = account;
             client.sessionKey = sessionKey;
             client.Send(new BM_SC_LOGIN());
             client.Send(new BM_SC_PLAYER_CHARACTER_LIST(client.account.char_name, (short)client.account.first_login, client.account.char_type));
             Log.WriteLog(Log.Type.Info, "Loaded account Id:'{0}', Name:'{1}', SessionKey:'{2}'", client.account.char_id, client.account.char_name, client.sessionKey);
         }
         else
         {
             Log.WriteLog(Log.Type.Info, "Account for session key '{0}' cannot be found", sessionKey);
         }
     }
 }