Ejemplo n.º 1
0
        public void OnConnectedClient(ref ConnectedClientDataMsg msg, MyNetworkClient sender)
        {
            MySandboxGame.Log.WriteLineAndConsole("Client connected: " + msg.Name + " (" + msg.SteamID.ToString() + ")");
            MyTrace.Send(TraceWindow.Multiplayer, "Client connected");

            if (MySandboxGame.IsGameReady && msg.SteamID != ServerId && MySteam.UserId != msg.SteamID && msg.Join)
            {
                var clientConnected = new MyHudNotification(MySpaceTexts.NotificationClientConnected, 5000, level: MyNotificationLevel.Important);
                clientConnected.SetTextFormatArguments(msg.Name);
                MyHud.Notifications.Add(clientConnected);
            }

            m_memberData[msg.SteamID] = new MyConnectedClientData()
            {
                Name    = msg.Name,
                IsAdmin = msg.IsAdmin
            };

            RaiseClientJoined(msg.SteamID);
        }
Ejemplo n.º 2
0
        void OnClientConnected(MyPacket packet)
        {
            ConnectedClientDataMsg msg = ReplicationLayer.OnClientConnected(packet);

            OnConnectedClient(ref msg);
        }
        public void SendPlayerData(string clientName)
        {
            ConnectedClientDataMsg msg = new ConnectedClientDataMsg();
            msg.SteamID = MySteam.UserId;
            msg.Name = clientName;
            msg.Join = true;

            var buffer = new byte[1024];
            uint length = 0;
            if (!MySteam.API.GetAuthSessionTicket(buffer, ref length))
            {
                MyGuiScreenMainMenu.UnloadAndExitToMenu();
                MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox(
                    messageCaption: MyTexts.Get(MySpaceTexts.MessageBoxCaptionError),
                    messageText: MyTexts.Get(MySpaceTexts.MultiplayerErrorConnectionFailed)));
                return;
            }

            msg.Token = new byte[length];
            Array.Copy(buffer, msg.Token, length);

            SyncLayer.SendMessageToServer(ref msg);
        }
        public void OnConnectedClient(ref ConnectedClientDataMsg msg, MyNetworkClient sender)
        {
            MySandboxGame.Log.WriteLineAndConsole("Client connected: " + msg.Name + " (" + msg.SteamID.ToString() + ")");
            MyTrace.Send(TraceWindow.Multiplayer, "Client connected");

            if (MySandboxGame.IsGameReady && msg.SteamID != ServerId && MySteam.UserId != msg.SteamID && msg.Join)
            {
                var clientConnected = new MyHudNotification(MySpaceTexts.NotificationClientConnected, 5000, level: MyNotificationLevel.Important);
                clientConnected.SetTextFormatArguments(msg.Name);
                MyHud.Notifications.Add(clientConnected);
            }

            m_memberData[msg.SteamID] = new MyConnectedClientData()
                {
                    Name = msg.Name,
                    IsAdmin = msg.IsAdmin
                };

            RaiseClientJoined(msg.SteamID);
        }
Ejemplo n.º 5
0
 void SendClientData(ulong steamTo, ulong connectedSteamID, string connectedClientName, bool join)
 {
     ConnectedClientDataMsg msg = new ConnectedClientDataMsg();
     msg.SteamID = connectedSteamID;
     msg.Name = connectedClientName;
     msg.IsAdmin = MySandboxGame.ConfigDedicated.Administrators.Contains(connectedSteamID.ToString()) || MySandboxGame.ConfigDedicated.Administrators.Contains(ConvertSteamIDFrom64(connectedSteamID));
     msg.Join = join;
     SyncLayer.SendMessage(ref msg, steamTo);
 }
Ejemplo n.º 6
0
        void OnConnectedClient(ref ConnectedClientDataMsg msg, MyNetworkClient sender)
        {
            MyLog.Default.WriteLineAndConsole("OnConnectedClient " + msg.Name + " attempt");
            System.Diagnostics.Debug.Assert(msg.Join);

            if (m_members.Contains(msg.SteamID))
            {
                MyLog.Default.WriteLineAndConsole("Already joined");
                SendJoinResult(msg.SteamID, JoinResult.AlreadyJoined);
                return;
            }

            if (MySandboxGame.ConfigDedicated.Banned.Contains(msg.SteamID))
            {
                MyLog.Default.WriteLineAndConsole("User is banned by admins");

                ulong adminID = 0;
                foreach (var user in m_memberData)
                {
                    if (user.Value.IsAdmin)
                    {
                        adminID = user.Key;
                        break;
                    }
                }

                if (adminID == 0 && MySandboxGame.ConfigDedicated.Administrators.Count > 0)
                {
                    adminID = ConvertSteamIDTo64(MySandboxGame.ConfigDedicated.Administrators[0]);
                }


                SendJoinResult(msg.SteamID, JoinResult.BannedByAdmins, adminID);
                return;
            }

            AuthSessionResponseEnum res = SteamSDK.SteamServerAPI.Instance.GameServer.BeginAuthSession(msg.SteamID, msg.Token);
            if (res != AuthSessionResponseEnum.k_EAuthSessionResponseOK)
            {
                MyLog.Default.WriteLineAndConsole("Authentication failed (" + res.ToString() + ")");
                SendJoinResult(msg.SteamID, JoinResult.TicketInvalid);
                return;
            }

            m_pendingMembers.Add(msg.SteamID, new MyConnectedClientData()
            {
                Name = msg.Name,
                IsAdmin = MySandboxGame.ConfigDedicated.Administrators.Contains(msg.SteamID.ToString()) || MySandboxGame.ConfigDedicated.Administrators.Contains(ConvertSteamIDFrom64(msg.SteamID)),
            });
        }
        void ClientConnected(VRage.MyPacket packet)
        {
            ConnectedClientDataMsg msg = ReplicationLayer.OnClientConnected(packet);

            OnConnectedClient(ref msg, msg.SteamID);
        }