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; } }
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(); } }