예제 #1
0
파일: CoopKick.cs 프로젝트: K07H/The-Forest
 private static ulong GetSteamId(BoltEntity playerEntity)
 {
     if (playerEntity == null)
     {
         return(0UL);
     }
     return(CoopKick.GetSteamId(playerEntity.source));
 }
예제 #2
0
파일: CoopKick.cs 프로젝트: K07H/The-Forest
    public static void KickPlayer(ulong steamid, int duration = -1, string message = "HOST_KICKED_YOU")
    {
        BoltConnection connection;
        BoltEntity     playerEntity;

        MpPlayerList.GetConnectionAndEntity(steamid, out connection, out playerEntity);
        CoopKick.KickPlayer(connection, playerEntity, duration, message);
    }
예제 #3
0
파일: CoopKick.cs 프로젝트: K07H/The-Forest
 public static void UnBanPlayer(ulong steamId)
 {
     CoopKick.KickedPlayer kickedPlayer = CoopKick.Instance.kickedSteamIds.FirstOrDefault((CoopKick.KickedPlayer k) => k.SteamId == steamId);
     if (kickedPlayer != null)
     {
         CoopKick.Instance.kickedSteamIds.Remove(kickedPlayer);
         CoopKick.SaveList();
     }
 }
예제 #4
0
        /// <summary>
        /// Unbans the user
        /// </summary>
        public void Unban()
        {
            if (!IsBanned)
            {
                return;
            }

            CoopKick.UnBanPlayer(steamId);
        }
예제 #5
0
        /// <summary>
        /// Unbans the player
        /// </summary>
        /// <param name="id"></param>
        public void Unban(string id)
        {
            if (!IsBanned(id))
            {
                return;
            }

            CoopKick.UnBanPlayer(ulong.Parse(id));
        }
예제 #6
0
        public void Ban(ulong steamid)
        {
            BoltEntity entityFromSteamID = this.GetEntityFromSteamID(steamid);

            if (entityFromSteamID)
            {
                CoopKick.BanPlayer(entityFromSteamID);
                base.Invoke("Refresh", 0.1f);
            }
        }
예제 #7
0
        public void Kick(ulong steamid)
        {
            BoltEntity entityFromSteamID = this.GetEntityFromSteamID(steamid);

            if (entityFromSteamID)
            {
                CoopKick.KickPlayer(entityFromSteamID, -1, "Host kicked you from the game");
                base.Invoke("Refresh", 0.1f);
            }
        }
예제 #8
0
        /// <summary>
        /// Bans the player for the specified reason and duration
        /// </summary>
        /// <param name="id"></param>
        /// <param name="reason"></param>
        /// <param name="duration"></param>
        public void Ban(string id, string reason, TimeSpan duration = default(TimeSpan))
        {
            if (IsBanned(id))
            {
                return;
            }

            Scene.HudGui.MpPlayerList.Ban(Convert.ToUInt64(id));
            CoopKick.SaveList();
        }
예제 #9
0
파일: CoopKick.cs 프로젝트: K07H/The-Forest
 public static bool UnBanPlayer(string name)
 {
     CoopKick.KickedPlayer kickedPlayer = CoopKick.Instance.kickedSteamIds.FirstOrDefault((CoopKick.KickedPlayer k) => k.Name == name);
     if (kickedPlayer != null)
     {
         CoopKick.Instance.kickedSteamIds.Remove(kickedPlayer);
         CoopKick.SaveList();
         return(true);
     }
     return(false);
 }
예제 #10
0
        /// <summary>
        /// Unbans the user
        /// </summary>
        public void Unban()
        {
            // Check not banned
            if (!IsBanned)
            {
                return;
            }

            // Set to unbanned
            CoopKick.UnBanPlayer(steamId);
        }
예제 #11
0
        /// <summary>
        /// Unbans the user
        /// </summary>
        /// <param name="id"></param>
        public void Unban(string id)
        {
            // Check not banned
            if (!IsBanned(id))
            {
                return;
            }

            // Set to unbanned
            CoopKick.UnBanPlayer(ulong.Parse(id));
        }
예제 #12
0
        public void Ban(string reason, TimeSpan duration)
        {
            Scene.HudGui.MpPlayerList.Ban(steamId);
            CoopKick.SaveList();

            var entity = Scene.SceneTracker.allPlayerEntities.FirstOrDefault(e => e.source.RemoteEndPoint.SteamId.Id == steamId);

            if (entity != null)
            {
                CoopKick.KickPlayer(entity, (int)duration.TotalMinutes, reason);
            }
        }
예제 #13
0
		public void Kick(ulong steamid)
		{
			if (CoopPeerStarter.Dedicated && CoopSteamClientStarter.IsAdmin)
			{
				CoopAdminCommand.Send("kick", steamid.ToString());
			}
			else
			{
				CoopKick.KickPlayer(steamid, 1, "HOST_KICKED_YOU");
				base.Invoke("Refresh", 0.1f);
			}
		}
예제 #14
0
        /// <summary>
        /// Bans the user for the specified reason and duration
        /// </summary>
        /// <param name="id"></param>
        /// <param name="reason"></param>
        /// <param name="duration"></param>
        public void Ban(string id, string reason, TimeSpan duration = default(TimeSpan))
        {
            // Check if already banned
            if (IsBanned(id))
            {
                return;
            }

            // Ban and kick user
            Scene.HudGui.MpPlayerList.Ban(ulong.Parse(id));
            CoopKick.SaveList();
            //if (IsConnected) CoopKick.KickPlayer(entity, (int)duration.TotalMinutes, reason); // TODO: Implement if possible
        }
예제 #15
0
 public void Refresh()
 {
     CoopKick.CheckBanEndTimes();
     for (int i = this._grid.transform.childCount - 1; i >= 0; i--)
     {
         UnityEngine.Object.Destroy(this._grid.GetChild(i).gameObject);
     }
     for (int j = 0; j < CoopKick.Instance.KickedPlayers.Count; j++)
     {
         this.AddBannedPlayerRow(CoopKick.Instance.KickedPlayers[j]);
     }
     this._grid.repositionNow = true;
     this._playerCount.text   = CoopKick.Instance.KickedPlayers.Count <CoopKick.KickedPlayer>().ToString();
 }
예제 #16
0
        public bool IsSleeping => Scene.Atmosphere.Sleeping; // TODO: Fix

        #endregion

        #region Administration

        /// <summary>
        /// Bans the user for the specified reason and duration
        /// </summary>
        /// <param name="reason"></param>
        /// <param name="duration"></param>
        public void Ban(string reason, TimeSpan duration = default(TimeSpan))
        {
            if (IsBanned)
            {
                return;
            }

            Scene.HudGui.MpPlayerList.Ban(steamId);
            CoopKick.SaveList();
            if (IsConnected)
            {
                CoopKick.KickPlayer(entity, (int)duration.TotalMinutes, reason);
            }
        }
예제 #17
0
 private void AddBannedPlayerRow(CoopKick.KickedPlayer kicked)
 {
     BannedPlayerListRow bannedPlayerListRow = UnityEngine.Object.Instantiate<BannedPlayerListRow>(this._rowPrefab);
     bannedPlayerListRow.transform.parent = this._grid.transform;
     bannedPlayerListRow.transform.localPosition = Vector3.zero;
     bannedPlayerListRow.transform.localScale = Vector3.one;
     bannedPlayerListRow._nameLabel.text = kicked.Name;
     bannedPlayerListRow._durationLabel.text = ((kicked.BanEndTime != 0L) ? this.GetRemainingTime(kicked.BanEndTime) : "permanent");
     if (BoltNetwork.isServer)
     {
         EventDelegate eventDelegate = new EventDelegate(this, "UnBan");
         eventDelegate.parameters[0] = new EventDelegate.Parameter(kicked.SteamId);
         bannedPlayerListRow._unbanButton.onClick.Add(eventDelegate);
     }
 }
예제 #18
0
		public void Ban(ulong steamid)
		{
			if (CoopPeerStarter.Dedicated && CoopSteamClientStarter.IsAdmin)
			{
				CoopAdminCommand.Send("ban", steamid.ToString());
			}
			else
			{
				BoltConnection connection;
				BoltEntity playerEntity;
				MpPlayerList.GetConnectionAndEntity(steamid, out connection, out playerEntity);
				CoopKick.BanPlayer(connection, playerEntity);
				base.Invoke("Refresh", 0.1f);
			}
		}
예제 #19
0
        /// <summary>
        /// Unbans the player
        /// </summary>
        public void Unban()
        {
            if (!IsBanned)
            {
                return;
            }

            var kickedPlayer = CoopKick.Instance.kickedSteamIds.First(k => k.SteamId == steamId);

            if (kickedPlayer != null)
            {
                CoopKick.Instance.kickedSteamIds.Remove(kickedPlayer);
                CoopKick.SaveList();
            }
        }
예제 #20
0
 public override void Connected(BoltConnection connection)
 {
     connection.SetCanReceiveEntities(false);
     if (CoopKick.IsBanned(connection.RemoteEndPoint.SteamId))
     {
         connection.Disconnect(new CoopKickToken
         {
             Banned      = true,
             KickMessage = "HOST_BANNED_YOU_PERMANANTLY"
         });
     }
     else
     {
         CoopServerInfo.Instance.entity.Freeze(false);
     }
 }
예제 #21
0
 public void Kick(ulong steamid)
 {
     if (CoopPeerStarter.Dedicated && CoopSteamClientStarter.IsAdmin)
     {
         CoopAdminCommand.Send("kick", steamid.ToString());
     }
     else
     {
         BoltEntity entityFromSteamID = MpPlayerList.GetEntityFromSteamID(steamid);
         if (entityFromSteamID)
         {
             CoopKick.KickPlayer(entityFromSteamID, -1, "HOST_KICKED_YOU");
             base.Invoke("Refresh", 0.1f);
         }
     }
 }
예제 #22
0
 public void KickByName(string name)
 {
     if (CoopPeerStarter.Dedicated && CoopSteamClientStarter.IsAdmin)
     {
         CoopAdminCommand.Send("kick", name);
     }
     else
     {
         BoltEntity entityFromName = MpPlayerList.GetEntityFromName(name, null);
         if (entityFromName)
         {
             CoopKick.KickPlayer(entityFromName, -1, "HOST_KICKED_YOU");
             base.Invoke("Refresh", 0.1f);
         }
     }
 }
예제 #23
0
 public void BanByName(string name)
 {
     if (CoopPeerStarter.Dedicated && CoopSteamClientStarter.IsAdmin)
     {
         CoopAdminCommand.Send("ban", name);
     }
     else
     {
         BoltEntity entityFromName = MpPlayerList.GetEntityFromName(name, null);
         if (entityFromName)
         {
             CoopKick.BanPlayer(entityFromName);
             base.Invoke("Refresh", 0.1f);
         }
     }
 }
예제 #24
0
 public void Ban(ulong steamid)
 {
     if (CoopPeerStarter.Dedicated && CoopSteamClientStarter.IsAdmin)
     {
         CoopAdminCommand.Send("ban", steamid.ToString());
     }
     else
     {
         BoltEntity entityFromSteamID = MpPlayerList.GetEntityFromSteamID(steamid);
         if (entityFromSteamID)
         {
             CoopKick.BanPlayer(entityFromSteamID);
             base.Invoke("Refresh", 0.1f);
         }
     }
 }
예제 #25
0
        /// <summary>
        /// Bans the user for the specified reason and duration
        /// </summary>
        /// <param name="reason"></param>
        /// <param name="duration"></param>
        public void Ban(string reason, TimeSpan duration = default(TimeSpan))
        {
            // Check already banned
            if (IsBanned)
            {
                return;
            }

            // Set to banned
            Scene.HudGui.MpPlayerList.Ban(steamId);
            CoopKick.SaveList();

            if (entity != null)
            {
                CoopKick.KickPlayer(entity, (int)duration.TotalMinutes, reason);
            }
        }
예제 #26
0
 public static void KickPlayer(BoltEntity playerEntity, int duration, string message = "HOST_KICKED_YOU")
 {
     if (BoltNetwork.isServer)
     {
         try
         {
             ulong num;
             if (SteamDSConfig.isDedicatedServer)
             {
                 if (SteamDSConfig.clientConnectionInfo.ContainsKey(playerEntity.source.ConnectionId))
                 {
                     num = SteamDSConfig.clientConnectionInfo[playerEntity.source.ConnectionId].m_SteamID;
                 }
                 else
                 {
                     num = 0UL;
                 }
             }
             else
             {
                 num = playerEntity.source.RemoteEndPoint.SteamId.Id;
             }
             if (duration >= 0 && num > 0UL && !CoopKick.IsBanned(num))
             {
                 CoopKick.Instance.kickedSteamIds.Add(new CoopKick.KickedPlayer
                 {
                     Name       = playerEntity.GetState <IPlayerState>().name,
                     SteamId    = num,
                     BanEndTime = ((duration <= 0) ? 0L : (DateTime.UtcNow.ToUnixTimestamp() + (long)duration))
                 });
                 CoopKick.SaveList();
             }
         }
         catch (Exception exception)
         {
             Debug.LogException(exception);
         }
         playerEntity.source.Disconnect(new CoopKickToken
         {
             KickMessage = message,
             Banned      = (duration == 0)
         });
     }
 }
예제 #27
0
        /// <summary>
        /// Bans the player for the specified reason and duration
        /// </summary>
        /// <param name="reason"></param>
        /// <param name="duration"></param>
        public void Ban(string reason, TimeSpan duration = default)
        {
            if (!IsBanned)
            {
                CoopKick.KickedPlayer kickedPlayer = new CoopKick.KickedPlayer
                {
                    Name       = Name,
                    SteamId    = steamId,
                    BanEndTime = duration.TotalMinutes <= 0 ? 0 : DateTime.UtcNow.ToUnixTimestamp() + (long)duration.TotalMinutes
                };
                CoopKick.Instance.kickedSteamIds.Add(kickedPlayer);
                CoopKick.SaveList();

                if (IsConnected)
                {
                    Kick(reason);
                }
            }
        }
예제 #28
0
파일: CoopKick.cs 프로젝트: K07H/The-Forest
    public static void CheckBanEndTimes()
    {
        bool flag = false;
        long num  = DateTime.UtcNow.ToUnixTimestamp();

        for (int i = CoopKick.Instance.kickedSteamIds.Count - 1; i >= 0; i--)
        {
            long banEndTime = CoopKick.Instance.kickedSteamIds[i].BanEndTime;
            if (banEndTime > 0L && banEndTime < num)
            {
                CoopKick.Instance.kickedSteamIds.RemoveAt(i);
                flag = true;
            }
        }
        if (flag)
        {
            CoopKick.SaveList();
        }
    }
예제 #29
0
파일: CoopKick.cs 프로젝트: K07H/The-Forest
 public static void KickPlayer(BoltConnection connection, BoltEntity playerEntity, int duration, string message = "HOST_KICKED_YOU")
 {
     if (!BoltNetwork.isServer)
     {
         return;
     }
     if (connection == null && playerEntity == null)
     {
         return;
     }
     if (connection == null)
     {
         connection = playerEntity.source;
     }
     try
     {
         ulong steamId = CoopKick.GetSteamId(connection);
         if (steamId == 0UL)
         {
             steamId = CoopKick.GetSteamId(playerEntity);
         }
         string name = (!(playerEntity == null)) ? playerEntity.GetState <IPlayerState>().name : steamId.ToString();
         if (duration >= 0 && steamId > 0UL && !CoopKick.IsBanned(steamId))
         {
             CoopKick.Instance.kickedSteamIds.Add(new CoopKick.KickedPlayer
             {
                 Name       = name,
                 SteamId    = steamId,
                 BanEndTime = ((duration <= 0) ? 0L : (DateTime.UtcNow.ToUnixTimestamp() + (long)duration))
             });
             CoopKick.SaveList();
         }
     }
     catch (Exception exception)
     {
         Debug.LogException(exception);
     }
     connection.Disconnect(new CoopKickToken
     {
         KickMessage = message,
         Banned      = (duration == 0)
     });
 }
예제 #30
0
        /// <summary>
        /// Bans the player for the specified reason and duration
        /// </summary>
        /// <param name="reason"></param>
        /// <param name="duration"></param>
        public void Ban(string reason, TimeSpan duration = default(TimeSpan))
        {
            // Check already banned
            if (IsBanned)
            {
                return;
            }

            // Set to banned
            Scene.HudGui.MpPlayerList.Ban(steamId);
            CoopKick.SaveList();

            var entity = Scene.SceneTracker.allPlayerEntities.FirstOrDefault(e => e.source.RemoteEndPoint.SteamId.Id == steamId);

            if (entity != null)
            {
                CoopKick.KickPlayer(entity, (int)duration.TotalMinutes, reason);
            }
        }
예제 #31
0
 public static void KickPlayer(BoltEntity playerEntity, int duration, string message = "Host kicked you from the game")
 {
     if (BoltNetwork.isServer)
     {
         if (duration >= 0 && !CoopKick.IsBanned(playerEntity.source.RemoteEndPoint.SteamId))
         {
             CoopKick.Instance.kickedSteamIds.Add(new CoopKick.KickedPlayer
             {
                 Name       = playerEntity.GetState <IPlayerState>().name,
                 SteamId    = playerEntity.source.RemoteEndPoint.SteamId.Id,
                 BanEndTime = (duration <= 0) ? 0L : (DateTime.UtcNow.ToUnixTimestamp() + (long)duration)
             });
             CoopKick.SaveList();
         }
         playerEntity.source.Disconnect(new CoopKickToken
         {
             KickMessage = message,
             Banned      = duration == 0
         });
     }
 }