Beispiel #1
0
 private void UserRejected(ulong steamId, JoinResult reason)
 {
     _userRejected.Invoke((MyDedicatedServerBase)MyMultiplayer.Static, steamId, reason);
 }
        private void UserRejected(ulong steamID, JoinResult reason)
        {
            m_pendingMembers.Remove(steamID);
            m_waitingForGroup.Remove(steamID);

            if (m_members.Contains(steamID))
            {
                RaiseClientLeft(steamID, ChatMemberStateChangeEnum.Disconnected);
            }
            else
            {
                SendJoinResult(steamID, reason);
            }
        }
Beispiel #3
0
 public JoinRsp(View v, Digest d, JoinResult result)
 {
     view       = v;
     digest     = d;
     joinResult = result;
 }
Beispiel #4
0
 public WaitingForGroup(ulong id, JoinResult response, ulong owner)
 {
     SteamId    = id;
     Response   = response;
     SteamOwner = owner;
 }
Beispiel #5
0
    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            if (!m_PlayerList.ContainsKey(m_MyPlayerID))
            {
                // not receive join
                return;
            }

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            RaycastHit hit = new RaycastHit();
            if (Physics.Raycast(ray, out hit))
            {
                // send to server my move
                GameObject       myPlayer        = m_PlayerList[m_MyPlayerID];
                PlayerController myPlayerControl = myPlayer.GetComponent <PlayerController>();
                Vector3          rayPos          = hit.point;

                Vector3 vector = transform.position - rayPos;
                Vector3 normal = vector.normalized;
                float   angle  = NormalAngle(normal);
                angle -= 90;
                try
                {
                    MoveRequest moveRequestPay = new MoveRequest();
                    moveRequestPay.m_PlayerID = myPlayerControl.m_PlayerID;
                    moveRequestPay.m_PosX     = rayPos.x;
                    moveRequestPay.m_PosY     = rayPos.y;
                    moveRequestPay.m_PosZ     = rayPos.z;
                    moveRequestPay.m_Angle    = angle;
                    moveRequestPay.m_Speed    = myPlayerControl.m_Speed;

                    string requestPayload = JsonFx.Json.JsonWriter.Serialize(moveRequestPay);

                    NetworkManager.GetInstance().SendPacket(PacketTypes.PKT_CS_MOVE, requestPayload);
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }
        }

        if (joinList.Count > 0)
        {
            JoinResult packet = joinList[0];
            //Debug.Log("X:"+packet.m_PosX+" Y:"+packet.m_PosY+" Z:"+ packet.m_PosZ);

            if (packet.m_PlayerID == -4444)
            {
                foreach (GameObject player in m_PlayerList.Values)
                {
                    Destroy(player);
                }

                m_PlayerList.Clear();
                joinList.RemoveAt(0);
                return;
            }


            Vector3 pos      = new Vector3(packet.m_PosX, packet.m_PosY, packet.m_PosZ);
            Vector3 rot      = new Vector3(0.0f, packet.m_Angle, 0.0f);
            float   speed    = packet.m_Speed;
            int     playerID = packet.m_PlayerID;

            GameObject       newPlayer        = Instantiate(m_PlayerObject, pos, Quaternion.Euler(rot)) as GameObject;
            PlayerController newPlayerControl = newPlayer.GetComponent <PlayerController>();

            newPlayerControl.m_Speed    = speed;
            newPlayerControl.m_PlayerID = playerID;

            m_PlayerList.Add(playerID, newPlayer);

            joinList.RemoveAt(0);
        }

        if (moveList.Count > 0)
        {
            MoveResult packet = moveList[0];

            try
            {
                GameObject       player        = m_PlayerList[packet.m_PlayerID];
                PlayerController playerControl = player.GetComponent <PlayerController>();
                playerControl.AddMoveResult(packet);
            }
            catch (Exception e)
            {
                //no character sync
                Debug.LogError(e);
            }
            moveList.RemoveAt(0);
        }
    }
Beispiel #6
0
 public void Deserialize(CompactReader reader)
 {
     view       = reader.ReadObject() as View;
     digest     = reader.ReadObject() as Digest;
     joinResult = (JoinResult)reader.ReadObject();
 }
Beispiel #7
0
        //Largely copied from SE
        private void ValidateAuthTicketResponse(ulong steamID, AuthSessionResponseEnum response, ulong ownerSteamID)
        {
            _log.Info($"Server ValidateAuthTicketResponse ({response}), owner: {ownerSteamID}");

            if (steamID != ownerSteamID)
            {
                _log.Info($"User {steamID} is using a game owned by {ownerSteamID}. Tracking...");
                _gameOwnerIds[steamID] = ownerSteamID;

                if (MySandboxGame.ConfigDedicated.Banned.Contains(ownerSteamID))
                {
                    _log.Info($"Game owner {ownerSteamID} is banned. Banning and rejecting client {steamID}...");
                    UserRejected(steamID, JoinResult.BannedByAdmins);
                    BanPlayer(steamID);
                }
            }

            if (response == AuthSessionResponseEnum.OK)
            {
                if (MySession.Static.MaxPlayers > 0 && _members.Count - 1 >= MySession.Static.MaxPlayers)
                {
                    UserRejected(steamID, JoinResult.ServerFull);
                }
                else if (MySandboxGame.ConfigDedicated.Administrators.Contains(steamID.ToString()) /*|| MySandboxGame.ConfigDedicated.Administrators.Contains(MyDedicatedServerBase.ConvertSteamIDFrom64(steamID))*/)
                {
                    UserAccepted(steamID);
                }
                else if (MySandboxGame.ConfigDedicated.GroupID == 0)
                {
                    switch (MySession.Static.OnlineMode)
                    {
                    case MyOnlineModeEnum.PUBLIC:
                        UserAccepted(steamID);
                        break;

                    case MyOnlineModeEnum.PRIVATE:
                        UserRejected(steamID, JoinResult.NotInGroup);
                        break;

                    case MyOnlineModeEnum.FRIENDS:
                        //TODO: actually verify friendship
                        UserRejected(steamID, JoinResult.NotInGroup);
                        break;
                    }
                }
                else if (SteamServerAPI.Instance.GetAccountType(MySandboxGame.ConfigDedicated.GroupID) != AccountType.Clan)
                {
                    UserRejected(steamID, JoinResult.GroupIdInvalid);
                }
                else if (SteamServerAPI.Instance.GameServer.RequestGroupStatus(steamID, MySandboxGame.ConfigDedicated.GroupID))
                {
                    // Returns false when there's no connection to Steam
                    _waitingForGroup.Add(steamID);
                }
                else
                {
                    UserRejected(steamID, JoinResult.SteamServersOffline);
                }
            }
            else
            {
                JoinResult joinResult = JoinResult.TicketInvalid;
                switch (response)
                {
                case AuthSessionResponseEnum.AuthTicketCanceled:
                    joinResult = JoinResult.TicketCanceled;
                    break;

                case AuthSessionResponseEnum.AuthTicketInvalidAlreadyUsed:
                    joinResult = JoinResult.TicketAlreadyUsed;
                    break;

                case AuthSessionResponseEnum.LoggedInElseWhere:
                    joinResult = JoinResult.LoggedInElseWhere;
                    break;

                case AuthSessionResponseEnum.NoLicenseOrExpired:
                    joinResult = JoinResult.NoLicenseOrExpired;
                    break;

                case AuthSessionResponseEnum.UserNotConnectedToSteam:
                    joinResult = JoinResult.UserNotConnected;
                    break;

                case AuthSessionResponseEnum.VACBanned:
                    joinResult = JoinResult.VACBanned;
                    break;

                case AuthSessionResponseEnum.VACCheckTimedOut:
                    joinResult = JoinResult.VACCheckTimedOut;
                    break;
                }

                UserRejected(steamID, joinResult);
            }
        }
Beispiel #8
0
    public override void OnJoinedRoom()
    {
        Debug.Log("Room Joined");

        _joinResult = JoinResult.Succeeded;
    }
Beispiel #9
0
 public void Deserialize(CompactReader reader)
 {
     view = reader.ReadObject() as View;
     digest = reader.ReadObject() as Digest;
     joinResult = (JoinResult)reader.ReadObject();
 }
        public void SendJoinResult(ulong sendTo, JoinResult joinResult, ulong adminID = 0)
        {
            JoinResultMsg msg = new JoinResultMsg();
            msg.JoinResult = joinResult;
            msg.Admin = adminID;

            ReplicationLayer.SendJoinResult(ref msg,sendTo);
        }
Beispiel #11
0
 public JoinRsp(View v, Digest d, JoinResult result)
 {
     view = v;
     digest = d;
     joinResult = result;
 }
        private static void UserRejected(ulong steamId, JoinResult joinResult)
        {
            MethodInfo userRejectedMethod = typeof(MyDedicatedServerBase).GetMethod("UserRejected", BindingFlags.NonPublic | BindingFlags.Instance);

            userRejectedMethod.Invoke(MyMultiplayer.Static, new object[] { steamId, joinResult });
        }
Beispiel #13
0
        void PacketHandler.Run(int cridential, string payload)
        {
            JoinResult joinResult = JsonFx.Json.JsonReader.Deserialize <JoinResult>(payload);

            PlayerManager.GetInstance().AddNewPlayer(joinResult);
        }
        public void SendJoinResult(ulong sendTo, JoinResult joinResult, ulong adminID = 0)
        {
            JoinResultMsg msg = new JoinResultMsg();
            msg.JoinResult = joinResult;
            msg.Admin = adminID;

            SendControlMessage(sendTo, ref msg);
        }
Beispiel #15
0
 private void UserRejected(ulong steamId, JoinResult reason)
 {
     typeof(MyDedicatedServerBase).GetMethod("UserRejected", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(MyMultiplayer.Static, new object[] { steamId, reason });
 }
Beispiel #16
0
        static void Main(string[] args)
        {
            Console.WriteLine(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
            Console.ReadLine();


            Uri r1URI = new Uri("tcp://127.0.0.1:50006");
            Uri r2URI = new Uri("tcp://127.0.0.1:50007");
            Uri r3URI = new Uri("tcp://127.0.0.1:50008");

            RaftServer r1 = new RaftServer(r1URI, 1, 20);
            RaftServer r2 = new RaftServer(r2URI, 1, 20);
            RaftServer r3 = new RaftServer(r3URI, 1, 20);

            List <Uri> list = new List <Uri>();

            list.Add(r1URI);
            list.Add(r2URI);
            list.Add(r3URI);

            r1.Start(list);
            r2.Start(list);
            r3.Start(list);


            Task.Run(() => {
                Uri clientURL = new Uri("tcp://127.0.0.1:50009");
                Hub hub       = new Hub(list, clientURL, new SimpleGame());


                hub.OnStart += (stage) =>
                {
                    global::System.Console.WriteLine("GAME STARTING IN CLIENT");
                };

                try
                {
                    JoinResult result = hub.Join("TESTE");
                }
                catch (InvalidUsernameException exc)
                {
                }
            });


            /*
             *  Timer tmr = new Timer();
             *
             *  tmr.Interval = 5000; // 0.1 second
             *  tmr.Elapsed += (object sender, ElapsedEventArgs e) =>
             *  {
             *      bool accepted;
             *      int commitedAt;
             *      r1.OnCommand(new RaftCommand() { Name = "TEste1" }, out accepted, out commitedAt);
             *      r2.OnCommand(new RaftCommand() { Name = "TEste2" }, out accepted, out commitedAt);
             *      r3.OnCommand(new RaftCommand() { Name = "TEste3" }, out accepted, out commitedAt);
             *      r1.OnCommand(new RaftCommand() { Name = "TEste4" }, out accepted, out commitedAt);
             *      r2.OnCommand(new RaftCommand() { Name = "TEste5" }, out accepted, out commitedAt);
             *      r3.OnCommand(new RaftCommand() { Name = "TEste6" }, out accepted, out commitedAt);
             *  }; // We'll write it in a bit
             *
             *  tmr.Start(); // The countdown is launched!
             */

            /* Uri uri = new Uri();
             * Server.Server server = new Server.Server();
             * Server.Server server2 = new Server.Server(new Uri("tcp:3002"), new Uri("tcp:3001"));
             * Server.Server server3 = new Server.Server(new Uri("tcp:3003"), new Uri("tcp:3001"));
             * Console.ReadLine();*/
            Console.ReadLine();
        }
        void GameServer_ValidateAuthTicketResponse(ulong steamID, SteamSDK.AuthSessionResponseEnum response, ulong steamOwner)
        {
            MyLog.Default.WriteLineAndConsole("Server ValidateAuthTicketResponse (" + response.ToString() + "), owner: " + steamOwner.ToString());

            if (response == AuthSessionResponseEnum.OK)
            {
                if (MemberLimit > 0 && m_members.Count - 1 >= MemberLimit) // Unfortunately, DS counds into the members, so subtract it
                {
                    UserRejected(steamID, JoinResult.ServerFull);
                }
                else if (m_groupId == 0 || MySandboxGame.ConfigDedicated.Administrators.Contains(steamID.ToString()) || MySandboxGame.ConfigDedicated.Administrators.Contains(ConvertSteamIDFrom64(steamID)))
                {
                    UserAccepted(steamID);
                }
                else if (SteamServerAPI.Instance.GetAccountType(m_groupId) != AccountType.Clan)
                {
                    UserRejected(steamID, JoinResult.GroupIdInvalid);
                }
                else if (SteamServerAPI.Instance.GameServer.RequestGroupStatus(steamID, m_groupId))
                {
                    // Returns false when there's no connection to Steam
                    m_waitingForGroup.Add(steamID);
                }
                else
                {
                    UserRejected(steamID, JoinResult.SteamServersOffline);
                }
            }
            else
            {
                JoinResult joinResult = JoinResult.TicketInvalid;
                switch (response)
                {
                case AuthSessionResponseEnum.AuthTicketCanceled:
                    joinResult = JoinResult.TicketCanceled;
                    break;

                case AuthSessionResponseEnum.AuthTicketInvalidAlreadyUsed:
                    joinResult = JoinResult.TicketAlreadyUsed;
                    break;

                case AuthSessionResponseEnum.LoggedInElseWhere:
                    joinResult = JoinResult.LoggedInElseWhere;
                    break;

                case AuthSessionResponseEnum.NoLicenseOrExpired:
                    joinResult = JoinResult.NoLicenseOrExpired;
                    break;

                case AuthSessionResponseEnum.UserNotConnectedToSteam:
                    joinResult = JoinResult.UserNotConnected;
                    break;

                case AuthSessionResponseEnum.VACBanned:
                    joinResult = JoinResult.VACBanned;
                    break;

                case AuthSessionResponseEnum.VACCheckTimedOut:
                    joinResult = JoinResult.VACCheckTimedOut;
                    break;
                }

                UserRejected(steamID, joinResult);
            }
        }
Beispiel #18
0
    public override void OnJoinRoomFailed(short returnCode, string message)
    {
        Debug.Log(message);

        _joinResult = JoinResult.Failed;
    }
Beispiel #19
0
 public void AddNewPlayer(JoinResult packet)
 {
     joinList.Add(packet);
     Debug.Log("AddNewPlayer!:" + packet.m_PlayerID);
 }