Пример #1
0
        public void OnLogin(GameMessage msg)
        {
            Login gmsg = msg as Login;

            if (!System.Text.RegularExpressions.Regex.IsMatch(gmsg.Username, @"^[a-zA-Z]+$")
                //|| !System.Text.RegularExpressions.Regex.IsMatch(gmsg.Password, @"^[a-zA-Z0-9]+$")
                || (gmsg.Username.Count() < 3 || gmsg.Password.Count() < 3))
            {
                Send(new GameOutMessage.WrongId().Compile());
                return;
            }

            var lowerU = gmsg.Username.ToLower();

            if (World.World.GetPlayer(lowerU) != null)
            {
                Send(new GameOutMessage.AlreadyOnline().Compile());
                return;
            }

            var resp = DB.Loader.LoadPlayer(gmsg.Username, lowerU, gmsg.Password);

            switch (resp.Reslt)
            {
            case DB.LoadPlayerResponse.Result.WrongPass:
                Send(new GameOutMessage.WrongId().Compile());
                break;

            case DB.LoadPlayerResponse.Result.Success:
                Send(new GameOutMessage.CloseLogin().Compile());
                Player          = resp.Player;
                Player.gameLink = this;
                Player.Link();
                World.World.Enter(Player);
                Player.OnFirstEnter();
                break;

            case DB.LoadPlayerResponse.Result.New:
                Send(new GameOutMessage.CloseLogin().Compile());
                resp.Player.Link();
                Player          = resp.Player;
                Player.gameLink = this;

                if (endPointIP.ToString().IndexOf("127.0.0.1") != -1)
                {
                    resp.Player.SetBeginnerGM();
                }
                else
                {
                    resp.Player.SetBeginner();
                }
                World.World.Enter(Player);
                Player.OnFirstEnter();
                break;
            }
        }
Пример #2
0
 public override void OnDisconnect()
 {
     if (System.Threading.Interlocked.CompareExchange(ref DisconnectedFlag, 2, 1) == 1)
     {
         if (Player != null)
         {
             DB.Loader.SavePlayer(Player);
             Player.Exit();
         }
         Player = null;
         RefDispose();
     }
 }