void OnServerLogin(NetworkConnection conn, LoginMsg message) { // correct version? if (message.version == Application.version) { // allowed account name? if (IsAllowedAccountName(message.account)) { // validate account info if (Database.singleton.TryLogin(message.account, message.password)) { // not in lobby and not in world yet? if (!AccountLoggedIn(message.account)) { // add to logged in accounts manager.lobby[conn] = message.account; // login successful Debug.Log("login successful: " + message.account); // notify client about successful login. otherwise it // won't accept any further messages. conn.Send(new LoginSuccessMsg()); // authenticate on server OnServerAuthenticated.Invoke(conn); } else { //print("account already logged in: " + message.account); <- don't show on live server manager.ServerSendError(conn, "already logged in", true); // note: we should disconnect the client here, but we can't as // long as unity has no "SendAllAndThenDisconnect" function, // because then the error message would never be sent. //conn.Disconnect(); } } else { //print("invalid account or password for: " + message.account); <- don't show on live server manager.ServerSendError(conn, "invalid account", true); } } else { //print("account name not allowed: " + message.account); <- don't show on live server manager.ServerSendError(conn, "account name not allowed", true); } } else { //print("version mismatch: " + message.account + " expected:" + Application.version + " received: " + message.version); <- don't show on live server manager.ServerSendError(conn, "outdated version", true); } }