Exemple #1
0
        private static void CallEvent(ServerRoles instance)
        {
            try
            {
                Player.UnverifiedPlayers.TryGetValue(instance._hub, out Player player);

                // Means the player connected before WaitingForPlayers event is fired
                // Let's call Joined event, since it wasn't called, to avoid breaking the logic of the order of event calls
                // Blame NorthWood
                if (player == null)
                {
                    Joined.CallEvent(instance._hub, out player);
                }

                PlayerAPI.Dictionary.Add(instance._hub.gameObject, player);
                player.IsVerified = true;
                player.RawUserId  = player.UserId.GetRawUserId();

                Log.SendRaw($"Player {player.Nickname} ({player.UserId}) ({player.Id}) connected with the IP: {player.IPAddress}", ConsoleColor.Green);

                PlayerEvents.OnVerified(new VerifiedEventArgs(player));
            }
            catch (Exception ex)
            {
                Log.Error($"{typeof(Verified).FullName}.{nameof(CallEvent)}:\n{ex}");
            }
        }
Exemple #2
0
        private Server _Connect(string sqlServer)
        {
            Server RetVal = new Server();

            if (ParamUserId == "")
            {
                RetVal.ConnectionContext.LoginSecure = true;
            }
            else
            {
                RetVal.ConnectionContext.LoginSecure = false;
                RetVal.ConnectionContext.Login       = ParamUserId;
                RetVal.ConnectionContext.Password    = ParamPassword;
            }

            StringBuilder LogText = new StringBuilder($"-- ##### Connecting to the server : {sqlServer} ##### ... :");

            try {
                IsSqlConnectionActive = true;
                foreach (ServerRole ServerRoleItem in RetVal.Roles)
                {
                    ServerRoles.Add(ServerRoleItem.Name);
                }
                LogText.Append("OK");
                return(RetVal);
            } catch (Exception ex) {
                IsSqlConnectionActive = false;
                LogText.Append($"FAILED : {ex.Message}");
                return(null);
            } finally {
                Log(LogText.ToString());
            }
        }
Exemple #3
0
        internal static void Prefix(ServerRoles __instance, ref string i)
        {
            Player pl = Player.List.Where(x => x.ServerRoles == __instance).FirstOrDefault();

            if (pl == null)
            {
                return;
            }
            if (!EventHandlers.Stats.TryGetValue(pl.UserId, out Stats imain))
            {
                return;
            }
            int    lvl   = imain.lvl;
            string pref  = $"{lvl} {Cfg.Lvl}";
            string admin = "";
            string your  = "";

            if (pl.Adminsearch())
            {
                admin = $"{pl.Group.BadgeText} | ";
            }
            if (i != "")
            {
                your = $" | {i}";
            }
            if (!i.Contains(pref))
            {
                i = $"{admin}{pref}{your}";
            }
        }
Exemple #4
0
        private void handler(AdminQueryEvent ev, string perm, bool hierarchy = false)
        {
            ServerRoles serverRoles = ((UnityEngine.GameObject)ev.Admin.GetGameObject()).GetComponent <ServerRoles>();

            PermissionsHandler permissionsHandler = ServerStatic.GetPermissionsHandler();

            if ((permissionsHandler.StaffAccess && serverRoles.Staff) || (permissionsHandler.ManagersAccess && serverRoles.RaEverywhere) || (permissionsHandler.BanningTeamAccess && serverRoles.RaEverywhere))
            {
                return;
            }

            Server server = PluginManager.Manager.Server;

            if (hierarchy && plugin.GetConfigBool("AP_HIERARCHY_ENABLE"))
            {
                bool isHigher = true;

                string[] queryArgs = ev.Query.Split(' ');

                if (queryArgs.Length > 1)
                {
                    List <Player> playerList = server.GetPlayers("");

                    string[] players = queryArgs[1].Split('.');
                    playerList = playerList.FindAll(p => {
                        if (Array.IndexOf(players, p.PlayerId.ToString()) > -1)
                        {
                            return(true);
                        }
                        return(false);
                    });

                    if (playerList.Count > 0)
                    {
                        foreach (Player player in playerList)
                        {
                            if (!checkHierarchy(ev.Admin, player))
                            {
                                isHigher = false;
                            }
                        }
                    }
                }

                if (!isHigher)
                {
                    ev.Successful = false;
                    ev.Handled    = true;
                    ev.Output     = "Player is higher rank than you!";
                }
            }

            if (!hasPerm(ev.Admin, ev.Admin.GetUserGroup().Name, perm))
            {
                ev.Successful = false;
                ev.Handled    = true;
                ev.Output     = "You Don't Have Permission to do that! You require the permission " + perm + "!";
            }
        }
Exemple #5
0
        private static bool Prefix(ServerRoles __instance, UserGroup group)
        {
            var ev = new ChangingGroupEventArgs(API.Features.Player.Get(__instance.gameObject), group);

            Player.OnChangingGroup(ev);

            return(ev.IsAllowed);
        }
Exemple #6
0
        public static Npc CreateNPC(Vector3 pos, Vector2 rot, Vector3 scale, RoleType type = RoleType.ClassD, ItemType itemHeld = ItemType.None, string name = "(EMPTY)", string root_node = "default_node.yml")
        {
            GameObject obj =
                UnityEngine.Object.Instantiate(
                    NetworkManager.singleton.spawnPrefabs.FirstOrDefault(p => p.gameObject.name == "Player"));
            CharacterClassManager ccm = obj.GetComponent <CharacterClassManager>();

            pos = new Vector3(pos.x, pos.y - (1f - scale.y) * Plugin.Instance.Config.NpcSizePositionMultiplier, pos.z);

            obj.transform.localScale = scale;
            obj.transform.position   = pos;

            QueryProcessor processor = obj.GetComponent <QueryProcessor>();

            processor.NetworkPlayerId = QueryProcessor._idIterator++;
            processor._ipAddress      = "127.0.0.WAN";

            ccm.CurClass = type;
            obj.GetComponent <PlayerStats>().SetHPAmount(ccm.Classes.SafeGet(type).maxHP);

            obj.GetComponent <NicknameSync>().Network_myNickSync = name;

            ServerRoles roles = obj.GetComponent <ServerRoles>();

            roles.MyText  = "NPC";
            roles.MyColor = "red";

            NetworkServer.Spawn(obj);
            PlayerManager.AddPlayer(obj); //I'm not sure if I need this

            Player ply_obj = new Player(obj);

            Player.Dictionary.Add(obj, ply_obj);

            Player.IdsCache.Add(ply_obj.Id, ply_obj);

            Npc npcc = obj.AddComponent <Npc>();

            npcc.ItemHeld = itemHeld;
            npcc.RootNode = TalkNode.FromFile(Path.Combine(Config.NPCs_nodes_path, root_node));

            npcc.NPCPlayer.ReferenceHub.transform.localScale = scale;

            npcc.NPCPlayer.SessionVariables.Add("IsNPC", true);

            npcc.AttachedCoroutines.Add(Timing.CallDelayed(0.3f, () =>
            {
                npcc.NPCPlayer.ReferenceHub.playerMovementSync.OverridePosition(pos, 0, true);
                npcc.NPCPlayer.Rotations = rot;
            }));

            npcc.AttachedCoroutines.Add(Timing.CallDelayed(0.4f, () =>
            {
                npcc.FireEvent(new NPCOnCreatedEvent(npcc, null));
            }));

            return(npcc);
        }
Exemple #7
0
 public void RaLogin()
 {
     ServerRoles.RemoteAdmin     = true;
     ServerRoles.Permissions     = SynapseGroup.GetVanillaPermissionValue() | ServerRoles._globalPerms;
     ServerRoles.RemoteAdminMode = GlobalRemoteAdmin ? ServerRoles.AccessMode.GlobalAccess : ServerRoles.AccessMode.PasswordOverride;
     if (!ServerRoles.AdminChatPerms)
     {
         ServerRoles.AdminChatPerms = SynapseGroup.HasVanillaPermission(PlayerPermissions.AdminChat);
     }
     ServerRoles.TargetOpenRemoteAdmin(Connection, false);
 }
Exemple #8
0
 private static bool RefreshPermission(ServerRoles __instance, bool disp = false)
 {
     try
     {
         var player = __instance.GetPlayer();
         player.RefreshPermission(disp);
     }
     catch (Exception e)
     {
         Logger.Get.Error($"Synapse-Permission: RefreshPermissionPatch failed!!\n{e}");
     }
     return(false);
 }
        public static bool Prefix(ref ServerRoles __instance, string i)
        {
            CharacterClassManager cmm = __instance.gameObject.GetComponent <CharacterClassManager>();

            if (cmm.NetworkIsVerified)
            {
                if (Player.Get(cmm.UserId).GlobalBadge.HasValue)
                {
                    Log.Warn("Changing a player's badge who has global badge is not allowed!");
                    return(false);
                }
            }
            return(true);
        }
Exemple #10
0
        public static void SetPermission(this Smod2.API.Player self, string color, string badge, double permission, bool cover, bool hidden, bool isStaff = false)
        {
            GameObject  player        = (GameObject)self.GetGameObject();
            ServerRoles ComponentRole = player.GetComponent <ServerRoles>();
            UserGroup   group         = new UserGroup();

            group.BadgeColor      = color;
            group.BadgeText       = badge;
            group.Permissions     = (ulong)permission;
            group.Cover           = cover;
            group.HiddenByDefault = hidden;
            ComponentRole.SetGroup(group, false, false, false);
            if (isStaff)
            {
                ComponentRole.Staff = true;
            }
        }
Exemple #11
0
        private static bool Prefix(ServerRoles __instance, UserGroup group)
        {
            try
            {
                var ev = new ChangingGroupEventArgs(API.Features.Player.Get(__instance.gameObject), group);

                Player.OnChangingGroup(ev);

                return(ev.IsAllowed);
            }
            catch (Exception e)
            {
                Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.ChangingGrounp: {e}\n{e.StackTrace}");

                return(true);
            }
        }
Exemple #12
0
        public static bool Prefix(ServerRoles __instance, UserGroup group)
        {
            if (EventPlugin.SetGroupEventDisable)
            {
                return(true);
            }

            try
            {
                bool allow = true;
                Events.InvokeSetGroup(__instance.gameObject, ref group, ref allow);
                return(allow);
            }
            catch (Exception e)
            {
                Log.Error($"SetGroup Error: {e}");
                return(true);
            }
        }
 /// <summary>
 /// Runs before the first update.
 /// </summary>
 private void Start()
 {
     _roles         = GetComponent <ServerRoles>();
     _nextCycle     = Time.time;
     _originalColor = _roles.NetworkMyColor;
 }
Exemple #14
0
 /// <summary>
 /// Callback for patching
 /// </summary>
 /// <param name="__instance"></param>
 private static void CallCmdServerSignatureCompletePostFix(ServerRoles __instance)
 {
     Instance.AddWelcomeController(__instance.gameObject);
 }
Exemple #15
0
 private static bool Prefix(ServerRoles __instance)
 {
     return(false);
 }
 public void Awake()
 {
     Roles         = GetComponent <ServerRoles>();
     NextCycle     = Time.time;
     OriginalColor = Roles.NetworkMyColor;
 }
Exemple #17
0
        private void CommandHandler(AdminQueryEvent ev)
        {
            ServerRoles serverRoles = ((UnityEngine.GameObject)ev.Admin.GetGameObject()).GetComponent <ServerRoles>();

            PermissionsHandler permissionsHandler = ServerStatic.GetPermissionsHandler();

            if ((permissionsHandler.StaffAccess && serverRoles.Staff) || (permissionsHandler.ManagersAccess && serverRoles.RaEverywhere) || (permissionsHandler.BanningTeamAccess && serverRoles.RaEverywhere))
            {
                return;
            }

            try
            {
                int pos = Array.IndexOf(plugin.GetConfigList("AP_COMMANDS_*"), ev.Admin.SteamId);

                if (pos > -1)
                {
                    return;
                }

                pos = Array.IndexOf(plugin.GetConfigList("AP_COMMANDS_*"), ev.Admin.GetUserGroup().Name);

                if (pos > -1)
                {
                    return;
                }

                Dictionary <string, string> dic = plugin.GetConfigDict("AP_COMMANDS");

                string listString;
                if (!dic.TryGetValue(ev.Query.Split(' ')[0].ToLower(), out listString))
                {
                    ev.Successful = false;
                    ev.Handled    = true;
                    ev.Output     = "You Don't Have Permission to do that!";
                    return;
                }

                string[] users = ParseCommaSeparatedString(listString);

                bool canDo = false;

                if (users.Length > 0)
                {
                    pos = Array.IndexOf(users, ev.Admin.SteamId);

                    if (pos > -1)
                    {
                        canDo = true;
                    }

                    pos = Array.IndexOf(users, ev.Admin.GetUserGroup().Name);

                    if (pos > -1)
                    {
                        canDo = true;
                    }
                }

                if (!canDo)
                {
                    ev.Successful = false;
                    ev.Handled    = true;
                    ev.Output     = "You Don't Have Permission to do that!";
                }
            }
            catch (Exception e)
            {
                plugin.Error(e.ToString());
                ev.Successful = false;
                ev.Handled    = true;
            }
        }
Exemple #18
0
        private void GiveHandler(AdminQueryEvent ev)
        {
            ServerRoles serverRoles = ((UnityEngine.GameObject)ev.Admin.GetGameObject()).GetComponent <ServerRoles>();

            PermissionsHandler permissionsHandler = ServerStatic.GetPermissionsHandler();

            if ((permissionsHandler.StaffAccess && serverRoles.Staff) || (permissionsHandler.ManagersAccess && serverRoles.RaEverywhere) || (permissionsHandler.BanningTeamAccess && serverRoles.RaEverywhere))
            {
                return;
            }

            Server server = PluginManager.Manager.Server;

            if (plugin.GetConfigBool("AP_HIERARCHY_ENABLE"))
            {
                bool isHigher = true;

                string[] queryArgs = ev.Query.Split(' ');

                if (queryArgs.Length > 1)
                {
                    List <Player> playerList = server.GetPlayers("");

                    string[] players = queryArgs[1].Split('.');
                    playerList = playerList.FindAll(p => {
                        if (Array.IndexOf(players, p.PlayerId.ToString()) > -1)
                        {
                            return(true);
                        }
                        return(false);
                    });

                    if (playerList.Count > 0)
                    {
                        foreach (Player player in playerList)
                        {
                            if (!checkHierarchy(ev.Admin, player))
                            {
                                isHigher = false;
                            }
                        }
                    }
                }

                if (!isHigher)
                {
                    ev.Successful = false;
                    ev.Handled    = true;
                    ev.Output     = "Player is higher rank than you!";
                }
            }

            string perm = "";

            string[] args = ev.Query.Split(' ');

            if (args.Length != 3)
            {
                return;
            }

            int itemCode;

            if (!Int32.TryParse(args[args.Length - 1], out itemCode))
            {
                return;
            }

            switch (itemCode)
            {
            case (int)ItemType.JANITOR_KEYCARD:
            case (int)ItemType.SCIENTIST_KEYCARD:
            case (int)ItemType.MAJOR_SCIENTIST_KEYCARD:
            case (int)ItemType.ZONE_MANAGER_KEYCARD:
            case (int)ItemType.GUARD_KEYCARD:
            case (int)ItemType.SENIOR_GUARD_KEYCARD:
            case (int)ItemType.CONTAINMENT_ENGINEER_KEYCARD:
            case (int)ItemType.MTF_LIEUTENANT_KEYCARD:
            case (int)ItemType.MTF_COMMANDER_KEYCARD:
            case (int)ItemType.FACILITY_MANAGER_KEYCARD:
            case (int)ItemType.CHAOS_INSURGENCY_DEVICE:
            case (int)ItemType.O5_LEVEL_KEYCARD:
                perm = "AP_RM_PLAYER_GIVE_KEYCARD";
                break;

            case (int)ItemType.RADIO:
            case (int)ItemType.COM15:
            case (int)ItemType.MEDKIT:
            case (int)ItemType.FLASHLIGHT:
            case (int)ItemType.WEAPON_MANAGER_TABLET:
            case (int)ItemType.DISARMER:
                perm = "AP_RM_PLAYER_GIVE_TOOL";
                break;

            case (int)ItemType.MICROHID:
            case (int)ItemType.E11_STANDARD_RIFLE:
            case (int)ItemType.P90:
            case (int)ItemType.MP4:
            case (int)ItemType.USP:
            case (int)ItemType.LOGICER:
                perm = "AP_RM_PLAYER_GIVE_WEAPON";
                break;

            case (int)ItemType.FRAG_GRENADE:
            case (int)ItemType.FLASHBANG:
                perm = "AP_RM_PLAYER_GIVE_GRENADE";
                break;

            case (int)ItemType.DROPPED_7:
            case (int)ItemType.DROPPED_9:
            case (int)ItemType.DROPPED_5:
                perm = "AP_RM_PLAYER_GIVE_AMMO";
                break;

            case (int)ItemType.COIN:
            case (int)ItemType.CUP:
                perm = "AP_RM_PLAYER_GIVE_OTHER";
                break;
            }

            if (!hasPerm(ev.Admin, ev.Admin.GetUserGroup().Name, perm))
            {
                ev.Successful = false;
                ev.Handled    = true;
                ev.Output     = "You Don't Have Permission to do that! You require the permission " + perm + "!";
            }
        }
Exemple #19
0
        /// <summary>
        /// Is run whenever a user joins the server (instead of pre-authenticates)
        /// </summary>
        /// <param name="gameObject"></param>
        public void SmartGuardDeepCheck(GameObject go)
        {
            try
            {
                if (!_enable)
                {
                    return;
                }

                CharacterClassManager            ccm = go.GetComponent <CharacterClassManager>();
                ServerRoles                      sr  = go.GetComponent <ServerRoles>();
                NicknameSync                     ns  = go.GetComponent <NicknameSync>();
                CustomLiteNetLib4MirrorTransport cln = go.GetComponent <CustomLiteNetLib4MirrorTransport>();

                string domain = ccm.UserId.Split('@')[1].ToLower();

                //Whitelist Check
                if (sr.BypassStaff && _skStaffGlobal)
                {
                    Base.SmartGuard("User is global staff. Skipping...");
                    return;
                }
                else if (sr.RemoteAdmin && _skStaffServer)
                {
                    Base.SmartGuard("User is server staff. Skipping...");
                    return;
                }
                else if (_uidWhitelist.Contains(ccm.UserId))
                {
                    Base.SmartGuard("User's UserId is whitelisted. Skipping...");
                }
                else if (_nameWhitelist.Contains(ns.MyNick))
                {
                    Base.SmartGuard("User's name is whitelisted (not recommended). Skipping...");
                    return;
                }

                //Blacklist Check
                if (_nameFilterSmart)
                {
                    string antil33t = _rgx.Replace(ns.MyNick.ToLower(), string.Empty);

                    foreach (KeyValuePair <string, string> pair in leetrules)
                    {
                        antil33t = antil33t.Replace(pair.Key, pair.Value);
                    }

                    if (_nameBlacklist.Contains(antil33t))
                    {
                        if (_banDurationOne == 0)
                        {
                            HandlePunishments(go, "Blacklisted name");
                            return;
                        }
                        else if (_banDurationOne > 0)
                        {
                            HandlePunishments(go, "Blacklisted name");
                            return;
                        }
                    }
                }
                else if (!_nameFilterSmart)
                {
                    if (_nameBlacklist.Contains(ns.MyNick.ToLower()))
                    {
                        if (_banDurationOne == 0)
                        {
                            HandlePunishments(go, "Blacklisted name");
                            return;
                        }
                        else if (_banDurationOne > 0)
                        {
                            HandlePunishments(go, "Blacklisted name");
                            return;
                        }
                    }
                }

                if (_uidBlacklist.Contains(ccm.UserId))
                {
                    if (_banDurationOne == 0)
                    {
                        HandlePunishments(go, "Blacklisted UID");
                    }
                    else if (_banDurationOne > 0)
                    {
                        HandlePunishments(go, "Blacklisted UID");
                    }
                }

                bool doContinue = true;

                if (domain == "discord")
                {
                    doContinue = CheckDiscord(go);
                }
                else if (domain == "steam")
                {
                    doContinue = CheckSteam(go);
                }

                if (!doContinue)
                {
                    return;
                }
            }
            catch (Exception e)
            {
                Base.Error(e.ToString());
            }
        }
        public IEnumerable <IResource> GetResources()
        {
            yield return(new ServerRolesContext(ServerRoles.EmptyToNull() ?? new[] { ServerRole.ContentManagement | ServerRole.ContentDelivery | ServerRole.Publishing | ServerRole.ContentIndexing }));

            var context      = new GenericSitecoreInformationContext(ServiceClient ?? DefaultServiceClient);
            var instanceName = InstanceName;

            if (!string.IsNullOrEmpty(instanceName))
            {
                context.InstanceName = instanceName;
            }

            var assemblies = Assemblies;

            if (assemblies != null)
            {
                context.Assemblies = new AssemblyFileCollection(assemblies);
            }

            var version = Version;

            if (version != null)
            {
                context.SetVersion(version);
            }

            var configuration = Configuration;

            if (configuration != null)
            {
                context.Configuration = configuration;
                context.WebConfigFile = configuration;
            }

            var include = IncludeFiles;

            if (include != null)
            {
                context.IncludeFiles = include;
            }

            var globalAsax = GlobalAsaxFile;

            if (globalAsax != null)
            {
                context.GlobalAsaxFile = globalAsax;
            }

            var pipelines = Pipelines;

            if (pipelines != null)
            {
                context.Pipelines = pipelines.ToDictionary(x => x.Name, x => x);
            }

            var defaultPipelines = DefaultPipelines;

            if (defaultPipelines != null)
            {
                context.DefaultsContext.Pipelines = defaultPipelines.ToDictionary(x => x.Name, x => x);
            }

            var installedModules = InstalledModules;

            if (installedModules != null)
            {
                context.ModulesInformation = new MockModulesContext(installedModules);
            }

            yield return(context);
        }
Exemple #21
0
        static private void GlobalModWarning()
        {
            int Rect2Order = 0;

            GUI.color = Color.red;
            // if (PlayerList.anyAdminOnServer)
            //  {
            //    GUI.Label(new Rect(Screen.width - 300, RectOrder * 20 + 10, 500, 30), "Admin is on");
            //     RectOrder++;
            //  }

            foreach (var player in GameObject.FindGameObjectsWithTag("Player"))
            {
                ServerRoles           SR       = player.GetComponent <ServerRoles>();
                NicknameSync          nickname = player.GetComponent <NicknameSync>();
                PermissionsHandler    pm       = player.GetComponent <PermissionsHandler>();
                CharacterClassManager ccm      = player.GetComponent <CharacterClassManager>();
                SteamManager          SM       = player.GetComponent <SteamManager>();


                if (_isGlobalMod(ccm.SteamId))
                {
                    WarningMessage = nickname.myNick + " is a global moderator !!";
                }



                try
                {
                    if (pm.ManagersAccess)
                    {
                        GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " has global Managers Access");
                    }
                }
                catch { }



                try
                {
                    if (SR.Permissions != 0)
                    {
                        GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " has permission number " + SR.Permissions);
                        Rect2Order++;
                    }
                }
                catch { }



                if (SR.RaEverywhere)
                {
                    GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " is global admin");
                    Rect2Order++;
                }
                if (SR.Staff)
                {
                    GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " is staff");
                    Rect2Order++;
                }

                if ((bool)SR.GetType().GetField("OverwatchEnabled", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(SR))
                {
                    GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " has entered Overwatch Mode!!");
                }
            }
        }
Exemple #22
0
        private void KickBanHandler(AdminQueryEvent ev)
        {
            ServerRoles serverRoles = ((UnityEngine.GameObject)ev.Admin.GetGameObject()).GetComponent <ServerRoles>();

            PermissionsHandler permissionsHandler = ServerStatic.GetPermissionsHandler();

            if ((permissionsHandler.StaffAccess && serverRoles.Staff) || (permissionsHandler.ManagersAccess && serverRoles.RaEverywhere) || (permissionsHandler.BanningTeamAccess && serverRoles.RaEverywhere))
            {
                return;
            }

            Server server = PluginManager.Manager.Server;

            if (plugin.GetConfigBool("AP_HIERARCHY_ENABLE"))
            {
                bool isHigher = true;

                string[] queryArgs = ev.Query.Split(' ');

                if (queryArgs.Length > 1)
                {
                    List <Player> playerList = server.GetPlayers("");

                    string[] players = queryArgs[1].Split('.');
                    playerList = playerList.FindAll(p => {
                        if (Array.IndexOf(players, p.PlayerId.ToString()) > -1)
                        {
                            return(true);
                        }
                        return(false);
                    });

                    if (playerList.Count > 0)
                    {
                        foreach (Player player in playerList)
                        {
                            if (!checkHierarchy(ev.Admin, player))
                            {
                                isHigher = false;
                            }
                        }
                    }
                }

                if (!isHigher)
                {
                    ev.Successful = false;
                    ev.Handled    = true;
                    ev.Output     = "Player is higher rank than you!";
                }
            }

            if (plugin.GetConfigBool("AP_DISABLE"))
            {
                bool isHigher = true;

                string[] queryArgs = ev.Query.Split(' ');

                if (queryArgs.Length > 1)
                {
                    List <Player> playerList = new List <Player>();

                    foreach (string plyID in queryArgs[1].Split('.'))
                    {
                        playerList.AddRange(server.GetPlayers(plyID));
                    }

                    if (playerList.Count > 0)
                    {
                        foreach (Player player in playerList)
                        {
                            if (!checkHierarchy(ev.Admin, player))
                            {
                                isHigher = false;
                            }
                        }
                    }
                }

                if (!isHigher)
                {
                    ev.Successful = false;
                    ev.Handled    = true;
                    ev.Output     = "Player is higher rank than you!";
                }
            }

            string perm = "";

            string[] args = ev.Query.Split(' ');

            if (args.Length < 3)
            {
                return;
            }

            int time = Int32.Parse(args[args.Length - 1]);

            if (time <= 0)
            {
                perm = "AP_RM_PLAYER_KICK";
            }
            else if (time > 0 && time < 60)
            {
                perm = "AP_RM_PLAYER_MINUTES";
            }
            else if (time > 59 && time < 1440)
            {
                perm = "AP_RM_PLAYER_HOURS";
            }
            else if (time > 1439 && time < 525600)
            {
                perm = "AP_RM_PLAYER_DAYS";
            }
            else if (time > 525599)
            {
                perm = "AP_RM_PLAYER_YEARS";
            }
            else
            {
                ev.Successful = false;
                ev.Handled    = true;
                return;
            }

            if (!hasPerm(ev.Admin, ev.Admin.GetUserGroup().Name, perm))
            {
                ev.Successful = false;
                ev.Handled    = true;
                ev.Output     = "You Don't Have Permission to do that! You require the permission " + perm + "!";
            }
        }
Exemple #23
0
 internal static void Prefix(ServerRoles __instance, ref string i)
 {
     if (i == "default")
     {
         Player pl = Player.List.Where(x => x.ServerRoles == __instance).FirstOrDefault();
         if (pl == null)
         {
             return;
         }
         if (!EventHandlers.Stats.TryGetValue(pl.UserId, out Stats imain))
         {
             return;
         }
         int    lvl   = imain.lvl;
         string color = i;
         if (lvl == 1)
         {
             color = "green";
         }
         else if (lvl == 2)
         {
             color = "crimson";
         }
         else if (lvl == 3)
         {
             color = "cyan";
         }
         else if (lvl == 4)
         {
             color = "deep_pink";
         }
         else if (lvl == 5)
         {
             color = "yellow";
         }
         else if (lvl == 6)
         {
             color = "orange";
         }
         else if (lvl == 7)
         {
             color = "lime";
         }
         else if (lvl == 8)
         {
             color = "pumpkin";
         }
         else if (lvl == 9)
         {
             color = "red";
         }
         else if (lvl >= 10 && 20 >= lvl)
         {
             color = "green";
         }
         else if (lvl >= 20 && 30 >= lvl)
         {
             color = "crimson";
         }
         else if (lvl >= 30 && 40 >= lvl)
         {
             color = "cyan";
         }
         else if (lvl >= 40 && 50 >= lvl)
         {
             color = "deep_pink";
         }
         else if (lvl >= 50 && 60 >= lvl)
         {
             color = "yellow";
         }
         else if (lvl >= 60 && 70 >= lvl)
         {
             color = "orange";
         }
         else if (lvl >= 70 && 80 >= lvl)
         {
             color = "lime";
         }
         else if (lvl >= 80 && 90 >= lvl)
         {
             color = "pumpkin";
         }
         else if (lvl >= 90 && 100 >= lvl)
         {
             color = "red";
         }
         else if (lvl >= 100)
         {
             color = "red";
         }
         i = color;
     }
 }