public static void ProcessQuery(string q, CommandSender sender)
        {
            try
            {
                GameObject go = PlayerManager.players.Where(p => p.GetComponent <NicknameSync>().MyNick == sender.Nickname).FirstOrDefault();

                string[] query = q.Split(new char[] { ' ' });

                if (!q.ToUpper().Contains("SILENT"))
                {
                    if (go != null)
                    {
                        lastCommand = q;
                        PheggPlayer pheggPlayer = new PheggPlayer(go);

                        if (q.ToUpper().StartsWith("CASSIE"))
                        {
                            q = q.ToUpper() + " PITCH_1";
                        }

                        try
                        {
                            Base.Debug("Triggering AdminQueryEvent");
                            PluginManager.TriggerEvent <IEventHandlerAdminQuery>(new AdminQueryEvent(pheggPlayer, q));
                        }
                        catch (Exception e)
                        {
                            Base.Error($"Error triggering AdminQueryEvent: {e.InnerException}");
                        }

                        if (PluginManager.oldCommands.ContainsKey(query[0]))
                        {
#pragma warning disable CS0618 // Type or member is obsolete
                            PluginManager.TriggerCommand(PluginManager.oldCommands[query[0]], q, pheggPlayer.gameObject, sender);
#pragma warning restore CS0618 // Type or member is obsolete
                            return;
                        }
                        else
                        {
                            if (PluginManager.TriggerCommand(new CommandInfo(sender, pheggPlayer.gameObject, query[0], query)))
                            {
                                return;
                            }
                        }
                    }
                    else
                    {
                        if (PluginManager.TriggerConsoleCommand(new CommandInfo(sender, null, query[0], query)))
                        {
                            return;
                        }
                    }
                }
                orig_ProcessQuery(q, sender);
            }
            catch (Exception e)
            {
                Base.Error($"{e.Message}\n{e.StackTrace}\n{e.InnerException.Message}\n{e.InnerException.StackTrace}");
            }
        }
Пример #2
0
        private string KickCommand(string[] arg, JObject jObject)
        {
            if (arg.Count() < 4)
            {
                return($"```{arg[1]} [UserID] [Reason]```");
            }
            else if (!arg[2].Contains('@'))
            {
                return("Invalid UserID given");
            }

            string reason = string.Join(" ", arg.Skip(3));

            GameObject go = PlayerManager.players.Where(p => p.GetComponent <CharacterClassManager>().UserId == arg[2]).FirstOrDefault();


            if (go == null || go.Equals(default(GameObject)))
            {
                return($"Unable to find user `{arg[2]}` on the server!");
            }
            else
            {
                PheggPlayer player = new PheggPlayer(go);
                player.Kick(reason);

                return($"`{player.ToString()}` was kicked with reason {reason}!");
            }
        }
Пример #3
0
        public void cmd_ball(CommandInfo info)
        {
            Vector3 NULL_VECTOR = new Vector3(0, 0, 0);

            List <GameObject> playerList = GetPlayersFromString(info.commandArgs[1]);

            foreach (GameObject plr in playerList)
            {
                if (plr.GetComponent <CharacterClassManager>().CurClass == RoleType.Spectator)
                {
                    continue;
                }

                PheggPlayer pp = new PheggPlayer(plr);

                // Initialization
                GrenadeManager gm = pp.gameObject.GetComponent <GrenadeManager>();

                // Finalize creation & Spawn
                Grenade nade = Object.Instantiate <GameObject>(gm.availableGrenades[2].grenadeInstance).GetComponent <Grenade>();
                (nade).InitData(gm, NULL_VECTOR, NULL_VECTOR);
                NetworkServer.Spawn(nade.gameObject);
            }

            info.commandSender.RaReply(info.commandName.ToUpper() + $"#Spawned 018 on {(info.commandArgs[1] == "*" ? "All" : playerList.Count.ToString())} players", true, true, "");
        }
Пример #4
0
        public WarheadCancelEvent(PheggPlayer disabler = null)
        {
#pragma warning disable CS0612 // Type or member is obsolete
            Disablier = disabler;
#pragma warning restore CS0612 // Type or member is obsolete
            Disabler = disabler;
        }
Пример #5
0
 public PlayerDeathEvent(PheggPlayer player, PheggPlayer attacker, float damage, DamageTypes.DamageType damageType, PlayerStats.HitInfo info) : base(player)
 {
     Attacker   = attacker;
     Damage     = damage;
     DamageType = damageType;
     HitInfo    = info;
 }
Пример #6
0
 public PlayerBanEvent(PheggPlayer player, int duration, PheggPlayer admin = null, string reason = null)
 {
     Duration = duration;
     Player   = player;
     Admin    = admin;
     Reason   = reason;
 }
Пример #7
0
 public PlayerDeathEvent(GameObject plr, GameObject atr, PlayerStats.HitInfo info)
 {
     player   = new PheggPlayer(plr);
     attacker = new PheggPlayer(atr);
     //weapon = info.GetDamageType();
     hitInfo = info;
 }
Пример #8
0
        public new bool HurtPlayer(PlayerStats.HitInfo info, GameObject go)
        {
            if (!go.GetComponent <CharacterClassManager>().isLocalPlayer&& info.GetDamageType() != DamageTypes.None && !go.GetComponent <CharacterClassManager>().GodMode)
            {
                //if (Commands.CustomInternalCommands.nodamageplayers.ContainsKey(go.GetComponent<RemoteAdmin.QueryProcessor>().PlayerId))
                //    info.Amount = 0;

                PheggPlayer pPlayer   = new PheggPlayer(go);
                PlayerStats Pstats    = go.GetComponent <PlayerStats>();
                PheggPlayer pAttacker = null;

                if (info.GetPlayerObject() != null)
                {
                    pAttacker = new PheggPlayer(info.GetPlayerObject());
                }

                if (Pstats.Health - info.Amount < 1)
                {
                    try
                    {
                        Base.Debug("Triggering PlayerDeathEvent");
                        PluginManager.TriggerEvent <IEventHandlerPlayerDeath>(new PlayerDeathEvent(pPlayer, pAttacker, info.Amount, info.GetDamageType()));
                    }
                    catch (Exception e)
                    {
                        Base.Error($"Error triggering PlayerDeathEvent: {e.InnerException.ToString()}");
                    }
                }
                else
                {
                    try
                    {
                        Base.Debug("Triggering PlayerHurtEvent");
                        PluginManager.TriggerEvent <IEventHandlerPlayerHurt>(new PlayerHurtEvent(pPlayer, pAttacker, info.Amount, info.GetDamageType()));
                    }
                    catch (Exception e)
                    {
                        Base.Error($"Error triggering PlayerHurtEvent: {e.InnerException.ToString()}");
                    }
                }
            }

            return(orig_HurtPlayer(info, go));
        }
Пример #9
0
        private string BanCommand(string[] arg, JObject jObject)
        {
            if (arg.Count() < 5)
            {
                return($"```{arg[1]} [UserID/Ip] [Duration] [Reason]```");
            }

            bool validUID = arg[2].Contains('@');
            bool validIP  = IPAddress.TryParse(arg[2], out IPAddress ip);

            //BanDetails details;

            if (!validIP && !validUID)
            {
                return($"```diff\n- Invalid UserID or IP given```");
            }


            char unit = arg[3].ToString().Where(Char.IsLetter).ToArray()[0];

            if (!int.TryParse(new string(arg[3].Where(Char.IsDigit).ToArray()), out int amount) || !validUnits.Contains(unit) || amount < 1)
            {
                return("```diff\n- Invalid duration```");
            }

            TimeSpan duration = GetBanDuration(unit, amount);
            string   reason   = string.Join(" ", arg.Skip(4));


            int index;

            if (validUID)
            {
                index = PlayerManager.players.FindIndex(p => p.GetComponent <CharacterClassManager>().UserId == arg[2]);
            }
            else
            {
                index = PlayerManager.players.FindIndex(p => p.GetComponent <CharacterClassManager>().connectionToClient.address == arg[2]);
            }

            if (index > -1)
            {
                PheggPlayer player = new PheggPlayer(PlayerManager.players[index]);

                player.Ban(duration.Minutes, reason, jObject["Staff"].ToString(), true);
                player.Kick(reason);
            }
            else
            {
                BanHandler.IssueBan(new BanDetails
                {
                    OriginalName = "Offline player",
                    Id           = arg[2],
                    Issuer       = jObject["Staff"].ToString(),
                    IssuanceTime = DateTime.UtcNow.Ticks,
                    Expires      = DateTime.UtcNow.Add(duration).Ticks,
                    Reason       = reason
                }, (validUID ? BanHandler.BanType.UserId : BanHandler.BanType.IP));
            }

            return($"`{arg[2]}` was banned for {arg[3]} with reason {reason}!");
        }
Пример #10
0
 public PlayerEscapeEvent(PheggPlayer player, RoleType role, RoleType newrole, Team team) : base(player)
 {
     Role    = role;
     newRole = newrole;
     Team    = team;
 }
Пример #11
0
 public PlayerKickEvent(PheggPlayer player, PheggPlayer admin = null, string reason = null)
 {
     Player = player;
     Admin  = admin;
     Reason = reason;
 }
Пример #12
0
 public GlobalBanEvent(PheggPlayer player)
 {
     Player = player;
 }
Пример #13
0
 public RefreshAdminPermsEvent(PheggPlayer admin)
 {
     Admin = admin;
 }
Пример #14
0
 public PlayerLeaveEvent(PheggPlayer player) : base(player)
 {
     Name      = player.name;
     UserID    = player.userId;
     IpAddress = player.ipAddress;
 }
Пример #15
0
 public PlayerThrowGrenadeEvent(PheggPlayer player, Grenades.GrenadeSettings settings) : base(player)
 {
     Name    = player.name;
     Grenade = settings.apiName;
 }
Пример #16
0
 public AdminQueryEvent(PheggPlayer admin, string query)
 {
     Admin = admin;
     Query = query;
 }
Пример #17
0
 public PlayerReportEvent(PheggPlayer reporter, PheggPlayer target, string reason) : base(reporter)
 {
     Reporter = reporter;
     Target   = target;
     Reason   = reason;
 }
Пример #18
0
 public PlayerEvent(PheggPlayer player)
 {
     this.player = player;
 }
Пример #19
0
 public PlayerDeathEvent(PheggPlayer player, PheggPlayer attacker, float damage, DamageTypes.DamageType damageType) : base(player)
 {
     Attacker   = attacker;
     Damage     = damage;
     DamageType = damageType;
 }
Пример #20
0
        public new bool HurtPlayer(HitInfo info, GameObject go, bool noTeamDamage = false, bool IsValidDamage = true)
        {
            try
            {
                if (isLocalPlayer || !NetworkServer.active || go == null)
                {
                    try
                    {
                        return(orig_HurtPlayer(info, go, noTeamDamage, IsValidDamage));
                    }
                    catch (Exception e)
                    {
                        Base.Error(e.ToString());
                        return(orig_HurtPlayer(info, go, noTeamDamage, IsValidDamage));
                    }
                }

                PheggPlayer player = new PheggPlayer(go);
                if (player == null)
                {
                    try
                    {
                        return(orig_HurtPlayer(info, go, noTeamDamage, IsValidDamage));
                    }
                    catch (Exception e)
                    {
                        Base.Error(e.ToString());
                        return(orig_HurtPlayer(info, go, noTeamDamage, IsValidDamage));
                    }
                }

                if (player.refHub.characterClassManager.isLocalPlayer || info.GetDamageType() == DamageTypes.None || player.refHub.characterClassManager.GodMode)
                {
                    return(orig_HurtPlayer(info, go, noTeamDamage, IsValidDamage));
                }

                PheggPlayer attacker = null;
                try { attacker = new PheggPlayer(info.GetPlayerObject()); }
                catch { }

                if (FFDetector.FFDetector.DetectorEnabled)
                {
                    FFDetector.FFDetector.CalculateFF(go, info, out info.Amount);
                }

                bool IsKill = info.Amount >= player.health;
                if (info.Amount > 0)
                {
                    if (IsKill && info.Amount > 0)
                    {
                        try
                        {
                            Base.Debug("Triggering PlayerDeathEvent");
                            PluginManager.TriggerEvent <IEventHandlerPlayerDeath>(new PlayerDeathEvent(player, attacker, info.Amount, info.GetDamageType(), info));
                        }
                        catch (Exception e)
                        {
                            Base.Error($"Error triggering PlayerDeathEvent: {e.InnerException}");
                        }
                    }
                    else
                    {
                        try
                        {
                            Base.Debug("Triggering PlayerHurtEvent");
                            PluginManager.TriggerEvent <IEventHandlerPlayerHurt>(new PlayerHurtEvent(player, attacker, info.Amount, info.GetDamageType(), info));
                        }
                        catch (Exception e)
                        {
                            Base.Error($"Error triggering PlayerHurtEvent: {e.InnerException}");
                        }
                    }
                }

                bool result = orig_HurtPlayer(info, go, noTeamDamage, IsValidDamage);

                if (player == null)
                {
                    return(result);
                }

                if (PMConfigFile.enable008 && (info.GetDamageType() == DamageTypes.Scp0492 || info.GetDamageType() == DamageTypes.Poison))
                {
                    if (IsKill)
                    {
                        player.roleType = RoleType.Scp0492;
                    }

                    else if (info.GetDamageType() == DamageTypes.Scp0492)
                    {
                        CustomEffects.SCP008 effect = player.refHub.playerEffectsController.GetEffect <CustomEffects.SCP008>();

                        if (effect == null || !effect.Enabled)
                        {
                            player.gameObject.GetComponent <PlayerEffectsController>().EnableEffect <CustomEffects.SCP008>(300f, false);
                        }

                        else
                        {
                            player.refHub.playerEffectsController.GetEffect <CustomEffects.SCP008>().intensity++;
                        }
                    }
                }

                return(result);
            }
            catch (Exception)
            {
                return(orig_HurtPlayer(info, go));
            }
        }
Пример #21
0
 public PlayerSpawnEvent(PheggPlayer player, RoleType role, Team team) : base(player)
 {
     Role = role;
     Team = team;
 }