Aura.Msgr.Network.Send.LoginR C# (CSharp) Метод

LoginR() публичный статический Метод

public static LoginR ( MsgrClient client, LoginResult result ) : void
client MsgrClient
result LoginResult
Результат void
		public static void LoginR(MsgrClient client, LoginResult result)
		{
			var packet = new Packet(Op.Msgr.LoginR, 0);
			packet.PutInt((int)result);
			if (result == LoginResult.Okay)
			{
				packet.PutInt(client.User.Id);
				packet.PutString(client.User.FullName);
				packet.PutString(client.User.Nickname);
				packet.PutUInt((uint)client.User.ChatOptions);
				packet.PutByte((byte)client.User.Status);
			}

			client.Send(packet);
		}

Usage Example

Пример #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);
        }