LoginR() public static method

public static LoginR ( MsgrClient client, LoginResult result ) : void
client MsgrClient
result LoginResult
return void
示例#1
0
        public void Login(MsgrClient client, Packet packet)
        {
            var unkString   = packet.GetString();
            var entityId    = packet.GetLong();
            var entityName  = packet.GetString();
            var server      = packet.GetString();
            var channelName = packet.GetString();
            var accountId   = packet.GetString();
            var sessionKey  = packet.GetLong();
            var unkLong     = packet.GetLong();
            var unkInt      = packet.GetInt();

            // Check session
            if (!MsgrServer.Instance.Database.CheckSession(accountId, sessionKey))
            {
                Log.Warning("Someone tried to login with invalid session (Account: {0}).", accountId);
                client.Kill();
                return;
            }

            // Check if pet
            if (entityId >= MabiId.Pets)
            {
                Send.LoginR(client, LoginResult.Pet);
                return;
            }

            // Check character
            if (!MsgrServer.Instance.Database.AccountHasCharacter(accountId, entityId, server))
            {
                Log.Warning("User '{0}' tried to login with invalid character.", accountId);
                client.Kill();
                return;
            }

            // Get contact
            // If no contact with this data exists in the db yet it's created,
            // this way we don't have to worry about creating contacts for existing
            // characters and the msgr server can operate independently.
            client.User = MsgrServer.Instance.Database.GetOrCreateContact(accountId, entityId, entityName, server, channelName);
            if (client.User == null)
            {
                Log.Warning("Failed to get or create contact for user '{0}'.", accountId);
                Send.LoginR(client, LoginResult.Fail);
                return;
            }

            client.User.Client = client;

            Log.Info("User '{0}' logged in as '{1}'.", client.User.AccountId, client.User.FullName);

            Send.LoginR(client, LoginResult.Okay);

            MsgrServer.Instance.UserManager.Add(client.User);
        }