1.1 --- a/configs/admin_levels.cfg Tue Feb 06 05:13:24 2007 +0000
1.2 +++ b/configs/admin_levels.cfg Tue Feb 06 05:48:52 2007 +0000
1.3 @@ -18,12 +18,18 @@
1.4 "slay" "e"
1.5 "changemap" "f"
1.6 "cvars" "g"
1.7 - "configs" "h"
1.8 + "config" "h"
1.9 "chat" "i"
1.10 "vote" "j"
1.11 "password" "k"
1.12 "rcon" "l"
1.13 "cheats" "m"
1.14 + "custom1" "n"
1.15 + "custom2" "o"
1.16 + "custom3" "p"
1.17 + "custom4" "q"
1.18 + "custom5" "r"
1.19 + "custom6" "s"
1.20
1.21 //Custom flags START
1.22 //Custom flags END
2.1 --- a/plugins/admin-flatfile/admin-flatfile.sp Tue Feb 06 05:13:24 2007 +0000
2.2 +++ b/plugins/admin-flatfile/admin-flatfile.sp Tue Feb 06 05:48:52 2007 +0000
2.3 @@ -11,6 +11,7 @@
2.4 };
2.5
2.6 /** Various globals */
2.7 +new bool:g_FlagsSet[26]; /* Maps whether flags are set */
2.8 new AdminFlag:g_FlagLetters[26]; /* Maps the flag letters */
2.9 new bool:g_LoggedFileName = false; /* Whether or not the file name has been logged */
2.10 new g_ErrorCount = 0;
3.1 --- a/plugins/admin-flatfile/admin-groups.sp Tue Feb 06 05:13:24 2007 +0000
3.2 +++ b/plugins/admin-flatfile/admin-groups.sp Tue Feb 06 05:48:52 2007 +0000
3.3 @@ -80,6 +80,10 @@
3.4 {
3.5 continue;
3.6 }
3.7 + if (!g_FlagsSet[value[i] - 'a'])
3.8 + {
3.9 + continue;
3.10 + }
3.11 flag = g_FlagLetters[value[i] - 'a'];
3.12 SetAdmGroupAddFlag(g_CurGrp, flag, true);
3.13 }
4.1 --- a/plugins/admin-flatfile/admin-levels.sp Tue Feb 06 05:13:24 2007 +0000
4.2 +++ b/plugins/admin-flatfile/admin-levels.sp Tue Feb 06 05:48:52 2007 +0000
4.3 @@ -9,6 +9,11 @@
4.4
4.5 LoadDefaultLetters()
4.6 {
4.7 + for (new i='t'; i<'z'; i++)
4.8 + {
4.9 + g_FlagsSet[i-'a'] = false;
4.10 + }
4.11 +
4.12 g_FlagLetters['a'-'a'] = Admin_Reservation;
4.13 g_FlagLetters['b'-'a'] = Admin_Kick;
4.14 g_FlagLetters['c'-'a'] = Admin_Ban;
4.15 @@ -19,9 +24,15 @@
4.16 g_FlagLetters['h'-'a'] = Admin_Config;
4.17 g_FlagLetters['i'-'a'] = Admin_Chat;
4.18 g_FlagLetters['j'-'a'] = Admin_Vote;
4.19 - g_FlagLetters['h'-'a'] = Admin_Password;
4.20 - g_FlagLetters['i'-'a'] = Admin_RCON;
4.21 - g_FlagLetters['j'-'a'] = Admin_Cheats;
4.22 + g_FlagLetters['k'-'a'] = Admin_Password;
4.23 + g_FlagLetters['l'-'a'] = Admin_RCON;
4.24 + g_FlagLetters['m'-'a'] = Admin_Cheats;
4.25 + g_FlagLetters['n'-'a'] = Admin_Custom1;
4.26 + g_FlagLetters['o'-'a'] = Admin_Custom2;
4.27 + g_FlagLetters['p'-'a'] = Admin_Custom3;
4.28 + g_FlagLetters['q'-'a'] = Admin_Custom4;
4.29 + g_FlagLetters['r'-'a'] = Admin_Custom5;
4.30 + g_FlagLetters['s'-'a'] = Admin_Custom6;
4.31 g_FlagLetters['z'-'a'] = Admin_Root;
4.32 }
4.33
4.34 @@ -103,11 +114,24 @@
4.35 flag = Admin_Cheats;
4.36 } else if (StrEqual(key, "root")) {
4.37 flag = Admin_Root;
4.38 + } else if (StrEqual(key, "custom1")) {
4.39 + flag = Admin_Custom1;
4.40 + } else if (StrEqual(key, "custom2")) {
4.41 + flag = Admin_Custom2;
4.42 + } else if (StrEqual(key, "custom3")) {
4.43 + flag = Admin_Custom3;
4.44 + } else if (StrEqual(key, "custom4")) {
4.45 + flag = Admin_Custom4;
4.46 + } else if (StrEqual(key, "custom5")) {
4.47 + flag = Admin_Custom5;
4.48 + } else if (StrEqual(key, "custom6")) {
4.49 + flag = Admin_Custom6;
4.50 } else {
4.51 LogLevelError("Unrecognized flag type: %s", key);
4.52 }
4.53
4.54 g_FlagLetters[chr] = flag;
4.55 + g_FlagsSet[chr] = true;
4.56 }
4.57
4.58 return SMCParse_Continue;
5.1 --- a/plugins/admin-flatfile/admin-overrides.sp Tue Feb 06 05:13:24 2007 +0000
5.2 +++ b/plugins/admin-flatfile/admin-overrides.sp Tue Feb 06 05:48:52 2007 +0000
5.3 @@ -50,24 +50,33 @@
5.4 return SMCParse_Continue;
5.5 }
5.6
5.7 - new AdminFlag:flag;
5.8 + new AdminFlag:array[AdminFlags_TOTAL];
5.9 + new flags_total;
5.10
5.11 - if (strlen(value) > 1)
5.12 + new len = strlen(value);
5.13 + for (new i=0; i<len; i++)
5.14 {
5.15 - LogOverrideError("Unrecognized access level: %s", value);
5.16 - return SMCParse_Continue;
5.17 + if (value[i] < 'a' || value[i] > 'z')
5.18 + {
5.19 + LogOverrideError("Invalid flag detected: %c", value[i]);
5.20 + continue;
5.21 + }
5.22 + new val = value[i] - 'a';
5.23 + if (!g_FlagsSet[val])
5.24 + {
5.25 + LogOverrideError("Invalid flag detected: %c", value[i]);
5.26 + continue;
5.27 + }
5.28 + array[flags_total++] = g_FlagLetters[val];
5.29 }
5.30
5.31 - if (value[0] >= 'a' && value[0] <= 'z')
5.32 - {
5.33 - flag = g_FlagLetters[value[0] - 'a'];
5.34 - }
5.35 + new flags = FlagArrayToBits(array, flags_total);
5.36
5.37 if (key[0] == '@')
5.38 {
5.39 - AddCommandOverride(key[1], Override_CommandGroup, FlagToBit(flag));
5.40 + AddCommandOverride(key[1], Override_CommandGroup, flags);
5.41 } else {
5.42 - AddCommandOverride(key, Override_Command, FlagToBit(flag));
5.43 + AddCommandOverride(key, Override_Command, flags);
5.44 }
5.45
5.46 return SMCParse_Continue;
6.1 --- a/plugins/include/admin.inc Tue Feb 06 05:13:24 2007 +0000
6.2 +++ b/plugins/include/admin.inc Tue Feb 06 05:48:52 2007 +0000
6.3 @@ -44,9 +44,10 @@
6.4 Admin_Custom5, /**< Fifth custom flag type */
6.5 Admin_Custom6, /**< Sixth custom flag type */
6.6 /* --- */
6.7 - AdminFlags_TOTAL,
6.8 };
6.9
6.10 +#define AdminFlags_TOTAL 21
6.11 +
6.12 /**
6.13 * These define bitwise values for bitstrings (numbers containing bitwise flags).
6.14 */