protected void HdlLogin(BBMessage msg, NetConnection sender) { // Test if login is possible if (PList.GetPlayer(msg.PlayerCarac.Nick, null) != null) { // No : player already exists BBMessage msg_back = new BBMessage(); msg_back.MsgNoLogin("Player \"" + msg.PlayerCarac.Nick + "\" already exists"); Server.SendMessage(msg_back.GetNetMessage(), sender, NetChannel.ReliableUnordered); // And close the connection sender.Disconnect("Player \"" + msg.PlayerCarac.Nick + "\" already exists, Login refused"); } else { if ((msg.Param1 == null) || (msg.Param1 != BBMessage.Version)) { BBMessage msg_back1 = new BBMessage(); string str = msg.Param1; if (str == null) str = "No version"; msg_back1.MsgNoLogin("Player \"" + msg.PlayerCarac.Nick + "\" , Login refused. Version Serveur = " + BBMessage.Version + " Version Client = " + str); Server.SendMessage(msg_back1.GetNetMessage(), sender, NetChannel.ReliableUnordered); //sender.Disconnect("Player \"" + msg.PlayerCarac.Nick + "\" , Login refused. Version Serveur = " + BBMessage.Version + " Version Client = " + msg.Param1.ToString()); } else { // Yes : Add the player to the list and send OK // Now add the player to our list int id = PList.CreatePlayer(msg.PlayerCarac, sender); Log.Info("Player added : " + msg.PlayerCarac.Nick + ", " + id); // Send OK msg.MsgOkLogin(id); Server.SendMessage(msg.GetNetMessage(), sender, NetChannel.ReliableUnordered); // Send connection of other clients to our new client IDictionaryEnumerator en = PList.GetPlayerEnum(); BBMessage msg_notice; while (en.MoveNext()) { if (((Player)en.Value).Carac.ActorID != id) { msg_notice = new BBMessage(); msg_notice.MsgAddPlayer((Player)en.Value, false); Server.SendMessage(msg_notice.GetNetMessage(), sender, NetChannel.ReliableUnordered); } } // Notify other clients BBMessage msg_back = new BBMessage(); msg_back.MsgAddPlayer(PList.GetPlayer(id), true); BroadcastMsgExcept(msg_back.GetNetMessage(), NetChannel.ReliableUnordered, id); // Notify NotifyClientConnected(id); } } }