コード例 #1
0
ファイル: LPlayer.cs プロジェクト: oung/Py_Source_JP
        private void HandlePlayerLogin(Packet ClientPacket)
        {
            string Nickname, Auth1, Auth2;
            Byte   Code, Banned, FirstSet;
            int    UID;
            USP_LOGIN_SERVER_Result UspLoginServer = null;

            if (Program.Server.IsUnderMaintenance)
            {
                Send(new byte[] { 0x01, 0x00, 0xE3, 0x48, 0xD2, 0x4D, 0x00 });
                Disconnect();
                return;
            }

            if (!ClientPacket.ReadPStr(out string User))
            {
                return;
            }

            if (!ClientPacket.ReadPStr(out string Pwd))
            {
                return;
            }

            try
            {
                Auth1 = RandomAuth(7);
                Auth2 = RandomAuth(7);

                if (Pwd.Length == 32)
                {
                    var result = _db.USP_LOGIN_SERVER_US(User, Pwd, GetAddress, Auth1, Auth2).FirstOrDefault();
                    UspLoginServer = new USP_LOGIN_SERVER_Result
                    {
                        CODE     = result.CODE,
                        FirstSet = result.FirstSet,
                        Nickname = result.Nickname,
                        IDState  = result.IDState,
                        Logon    = result.Logon, UID = result.UID
                    };
                }
                if (Pwd.Length <= 32)
                {
                    UspLoginServer = _db.USP_LOGIN_SERVER(User, Pwd, GetAddress, Auth1, Auth2).FirstOrDefault();
                }
                Code = (byte)UspLoginServer.CODE;
                // {-- USER NOT FOUND --}
                var OUTCODE = (Code == 0) && (UspLoginServer.FirstSet == null);
                if (OUTCODE || Code == 5)
                {
                    Send(new byte[] { 0x01, 0x00, 0xE3, 0x6F, 0xD2, 0x4D, 0x00, });
                    Disconnect();
                    return;
                }

                // {-- PASSWORD ERROR --}
                if (Code == 6)
                {
                    Response.Clear();
                    Response.Write(new byte[] { 0x01, 0x00, 0xE3, 0x5B, 0xD2, 0x4D, 0x00, });
                    Send(Response.GetBytes());
                    Disconnect();
                    return;
                }

                Banned = (byte)UspLoginServer.IDState;

                if (Banned > 0)
                {
                    Response.Clear();
                    Response.Write(new byte[] { 0x01, 0x00, 0xE3, 0xF4, 0xD1, 0x4D, 0x00, });
                    Send(Response.GetBytes());
                    Disconnect();
                    return;
                }

                FirstSet = (byte)UspLoginServer.FirstSet;
                UID      = UspLoginServer.UID;
                Nickname = UspLoginServer.Nickname;


                this.SetLogin(User);
                this.SetUID(UID);
                this.SetNickname(Nickname);
                this.SetAUTH_KEY_1(Auth1);
                this.SetAUTH_KEY_2(Auth2);
                this.SetFirstLogin(FirstSet);

                // Server.AuthServer.Send(new PangyaAPI.Auth.AuthPacket() { ServerType = PangyaAPI.Auth.AuthClientTypeEnum.LoginServer,ID = PangyaAPI.Auth.AuthPacketEnum.RECEIVES_USER_UID, Message = new { ID = UID} }) ;

                if (UspLoginServer.Logon == 1)
                {
                    Send(new byte[] { 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 });
                    return;
                }

                if (string.IsNullOrEmpty(Nickname))
                {
                    Send(new byte[] { 0x01, 0x00, 0x0D8, 0x00, 0x00, 0x00, 0x00 });
                    return;
                }

                if (FirstSet == 0)
                {
                    Response.Clear();
                    Response.Write(new byte[] { 0x0F, 0x00, 0x00 });
                    Response.WritePStr(User);
                    Send(Response.GetBytes());

                    Response.Clear();
                    Response.Write(new byte[] { 0x01, 0x00 });
                    Response.WriteByte(0xD9);
                    Response.WriteUInt32(uint.MaxValue);
                    Send(Response.GetBytes());
                    return;
                }
            }
            catch
            {
                Send(new byte[] { 0x01, 0x00, 0xE3, 0x6F, 0xD2, 0x4D, 0x00, });
                Disconnect();
                return;
            }

            //new login
            if (GetFirstLogin == 1)
            {
                this.SendPlayerLoggedOnData();
            }
        }
コード例 #2
0
        private void HandlePlayerLogin(Packet ClientPacket)
        {
            string Nickname, Auth1, Auth2;
            Byte   Code, Banned, FirstSet;
            int    UID;
            USP_LOGIN_SERVER_Result UspLoginServer = null;

            if (Program.Server.OpenServer == false)
            {
                HandleLoginMessage(LoginMessageEnum.ServerInMaintenance);
                WriteConsole.WriteLine("[LOGIN_SERVER]: Server is down for Maintenance");
                Disconnect();
                return;
            }

            if (!ClientPacket.ReadPStr(out string User))
            {
                return;
            }

            if (!ClientPacket.ReadPStr(out string Pwd))
            {
                return;
            }

            try
            {
                Auth1 = RandomAuth(7);
                Auth2 = RandomAuth(7);

                if (Pwd.Length == 32)
                {
                    var result = _db.USP_LOGIN_SERVER_US(User, Pwd, GetAddress, Auth1, Auth2).FirstOrDefault();
                    UspLoginServer = new USP_LOGIN_SERVER_Result
                    {
                        CODE     = result.CODE,
                        FirstSet = result.FirstSet,
                        Nickname = result.Nickname,
                        IDState  = result.IDState,
                        Logon    = result.Logon,
                        UID      = result.UID
                    };
                }
                if (Pwd.Length < 32)
                {
                    UspLoginServer = _db.USP_LOGIN_SERVER(User, Pwd, GetAddress, Auth1, Auth2).FirstOrDefault();
                }
                Code = (byte)UspLoginServer.CODE;
                // {-- USER NOT FOUND --}
                var OUTCODE = (Code == 0) && (UspLoginServer.FirstSet == null);
                if (OUTCODE || Code == 5)
                {
                    HandleLoginMessage(LoginMessageEnum.InvalidoUsernameOuSenha);
                    Disconnect();
                    return;
                }

                // {-- PASSWORD ERROR --}
                if (Code == 6)
                {
                    HandleLoginMessage(LoginMessageEnum.InvalidoIdPw);

                    Disconnect();
                    return;
                }

                Banned = (byte)UspLoginServer.IDState;

                if (Banned > 0)
                {
                    HandleLoginMessage(LoginMessageEnum.Banido);
                    Disconnect();
                    return;
                }

                FirstSet = (byte)UspLoginServer.FirstSet;
                UID      = UspLoginServer.UID;
                Nickname = UspLoginServer.Nickname;


                this.SetLogin(User);
                this.SetUID(UID);
                this.SetNickname(Nickname);
                this.SetAUTH_KEY_1(Auth1);
                this.SetAUTH_KEY_2(Auth2);
                this.SetFirstLogin(FirstSet);

                if (UspLoginServer.Logon == 1)
                {
                    HandleLoginMessage(LoginMessageEnum.UsuarioEmUso);
                    return;
                }

                if (string.IsNullOrEmpty(Nickname))
                {
                    Send(new byte[] { 0x01, 0x00, 0x0D8, 0x00, 0x00, 0x00, 0x00 });
                    HandleLoginMessage(LoginMessageEnum.CreateNickName_US);
                    return;
                }

                if (FirstSet == 0)
                {
                    Response.Clear();
                    Response.Write(new byte[] { 0x0F, 0x00, 0x00 });
                    Response.WritePStr(User);
                    Send(Response.GetBytes());

                    HandleLoginMessage(LoginMessageEnum.CreateNickName);
                    return;
                }
            }
            catch
            {
                HandleLoginMessage(LoginMessageEnum.InvalidoIdPw);
                Disconnect();
                return;
            }

            //new login
            if (GetFirstLogin == 1)
            {
                this.SendPlayerLoggedOnData();
            }
        }