Ignore:
Timestamp:
Aug 26, 2014, 4:41:47 PM (10 years ago)
Author:
alloc
Message:

Fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/AdminToolsStuff.cs

    r128 r130  
    22using System.Collections.Generic;
    33
    4 public class AdminToolsStuff
     4namespace AllocsFixes
    55{
    6         public static string[] GetAllowedCommandsList (AdminTools admTools, string _steamID)
     6        public class AdminToolsStuff
    77        {
    8                 List<string> allowed = new List<string> ();
     8                public static string[] GetAllowedCommandsList (AdminTools admTools, string _steamID)
     9                {
     10                        List<string> allowed = new List<string> ();
    911
    10                 try {
    11                         AdminToolsClientInfo tmpInfo = admTools.GetClientCommandInfo (_steamID);
    12                         if (tmpInfo.SteamID == null || tmpInfo.SteamID.Length == 0)
    13                         {
    14                                 tmpInfo.PermissionLevel = 1000;
     12                        try {
     13                                AdminToolsClientInfo tmpInfo = admTools.GetClientCommandInfo (_steamID);
     14                                if (tmpInfo.SteamID == null || tmpInfo.SteamID.Length == 0) {
     15                                        tmpInfo.PermissionLevel = 1000;
     16                                }
     17
     18                                List<AdminToolsCommandPermissions> perms = admTools.commandPermissions;
     19                                ConsoleSdtd console = CommonMappingFunctions.GetGameManager ().m_GUIConsole;
     20
     21                                foreach (AdminToolsCommandPermissions atcp in perms) {
     22                                        if (tmpInfo.SteamID != null && tmpInfo.SteamID.Length > 0) {
     23                                                if ((atcp.PermissionLevel >= tmpInfo.PermissionLevel) || (atcp.PermissionLevel >= 1000)) {
     24                                                        addAllowed (console, allowed, atcp.Command);
     25                                                }
     26                                        } else {
     27                                                if (atcp.PermissionLevel >= 1000) {
     28                                                        addAllowed (console, allowed, atcp.Command);
     29                                                }
     30                                        }
     31                                }
     32
     33                                if (tmpInfo.PermissionLevel <= 0) {
     34                                        List<ConsoleCommand> commands = console.commands;
     35                                        foreach (ConsoleCommand c in commands) {
     36                                                if (!allowed.Contains (c.Names () [0])) {
     37                                                        if (!hasPermissionLevel (admTools, c.Names () [0])) {
     38                                                                addAllowed (console, allowed, c.Names () [0]);
     39                                                        }
     40                                                }
     41                                        }
     42                                }
     43
     44                        } catch (Exception e) {
     45                                Log.Out ("Error in GetAllowedCommandsList: " + e);
    1546                        }
    1647
     48
     49                        return allowed.ToArray ();
     50                }
     51
     52                private static bool hasPermissionLevel (AdminTools admTools, string cmd)
     53                {
    1754                        List<AdminToolsCommandPermissions> perms = admTools.commandPermissions;
    18                         ConsoleSdtd console = CommonMappingFunctions.GetGameManager ().m_GUIConsole;
    1955
    2056                        foreach (AdminToolsCommandPermissions atcp in perms) {
    21                                 if (tmpInfo.SteamID != null && tmpInfo.SteamID.Length > 0) {
    22                                         if ((atcp.PermissionLevel >= tmpInfo.PermissionLevel) || (atcp.PermissionLevel >= 1000)) {
    23                                                 addAllowed (console, allowed, atcp.Command);
    24                                         }
    25                                 } else {
    26                                         if (atcp.PermissionLevel >= 1000) {
    27                                                 addAllowed (console, allowed, atcp.Command);
     57                                foreach (string ccName in getAlternativeNames(cmd)) {
     58                                        if (atcp.Command.ToLower ().Equals (ccName)) {
     59                                                return true;
    2860                                        }
    2961                                }
    3062                        }
    31 
    32                         if (tmpInfo.PermissionLevel <= 0) {
    33                                 List<ConsoleCommand> commands = console.commands;
    34                                 foreach (ConsoleCommand c in commands) {
    35                                         if (!allowed.Contains (c.Names () [0])) {
    36                                                 if (!hasPermissionLevel (admTools, c.Names () [0])) {
    37                                                         addAllowed (console, allowed, c.Names () [0]);
    38                                                 }
    39                                         }
    40                                 }
    41                         }
    42 
    43                 } catch (Exception e) {
    44                         Log.Out ("Error in GetAllowedCommandsList: " + e);
     63                        return false;
    4564                }
    4665
    47 
    48                 return allowed.ToArray ();
    49         }
    50 
    51         private static bool hasPermissionLevel (AdminTools admTools, string cmd)
    52         {
    53                 List<AdminToolsCommandPermissions> perms = admTools.commandPermissions;
    54 
    55                 foreach (AdminToolsCommandPermissions atcp in perms) {
     66                private static void addAllowed (ConsoleSdtd console, List<string> list, string cmd)
     67                {
    5668                        foreach (string ccName in getAlternativeNames(cmd)) {
    57                                 if (atcp.Command.ToLower ().Equals (ccName)) {
    58                                         return true;
     69                                if (!list.Contains (ccName)) {
     70                                        list.Add (ccName);
    5971                                }
    6072                        }
    6173                }
    62                 return false;
    63         }
    6474
    65         private static void addAllowed (ConsoleSdtd console, List<string> list, string cmd)
    66         {
    67                 foreach (string ccName in getAlternativeNames(cmd)) {
    68                         if (!list.Contains (ccName)) {
    69                                 list.Add (ccName);
     75                private static string[] getAlternativeNames (string cmd)
     76                {
     77                        ConsoleCommand cc = CommonMappingFunctions.GetGameManager ().m_GUIConsole.getCommand (cmd);
     78                        if (cc != null) {
     79                                return cc.Names ();
     80                        } else {
     81                                return new string[]{cmd};
    7082                        }
    7183                }
    7284        }
    73 
    74         private static string[] getAlternativeNames (string cmd)
    75         {
    76                 ConsoleCommand cc = CommonMappingFunctions.GetGameManager ().m_GUIConsole.getCommand (cmd);
    77                 if (cc != null) {
    78                         return cc.Names ();
    79                 } else {
    80                         return new string[]{cmd};
    81                 }
    82         }
    8385}
    84 
Note: See TracChangeset for help on using the changeset viewer.