1.1 --- a/plugins/admin-base.sp Mon Jan 29 19:34:28 2007 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,187 +0,0 @@
1.4 -#include <sourcemod>
1.5 -#include <textparse>
1.6 -
1.7 -public Plugin:myinfo =
1.8 -{
1.9 - name = "Admin Base",
1.10 - author = "AlliedModders LLC",
1.11 - description = "Reads admin files",
1.12 - version = "1.0.0.0",
1.13 - url = "http://www.sourcemod.net/"
1.14 -};
1.15 -
1.16 -#define LEVEL_STATE_NONE 0
1.17 -#define LEVEL_STATE_LEVELS 1
1.18 -#define LEVEL_STATE_FLAGS 2
1.19 -#define LEVEL_STATE_OVERRIDES 3
1.20 -
1.21 -
1.22 -/** Parser handles */
1.23 -new Handle:g_hLevelParser = INVALID_HANDLE;
1.24 -
1.25 -/** Parser states */
1.26 -new g_LevelState = LEVEL_STATE_NONE;
1.27 -
1.28 -/** Globals for levels */
1.29 -new AdminFlag:g_FlagLetters[26]; /* Maps the flag letters */
1.30 -new bool:g_ReadOverrides = false; /* Whether or not to read overrides */
1.31 -new bool:g_LoggedFileName = false; /* Whether or not the file name has been logged */
1.32 -
1.33 -
1.34 -public OnPluginStart()
1.35 -{
1.36 - g_hLevelParser = SMC_CreateParser();
1.37 - SMC_SetReaders(g_hLevelParser,
1.38 - ReadLevels_NewSection,
1.39 - ReadLevels_KeyValue,
1.40 - ReadLevels_EndSection);
1.41 -}
1.42 -
1.43 -LoadDefaultLetters()
1.44 -{
1.45 - g_FlagLetters['a'-'a'] = Admin_Reservation;
1.46 - g_FlagLetters['b'-'a'] = Admin_Kick;
1.47 - g_FlagLetters['c'-'a'] = Admin_Ban;
1.48 - g_FlagLetters['d'-'a'] = Admin_Unban;
1.49 - g_FlagLetters['e'-'a'] = Admin_Slay;
1.50 - g_FlagLetters['f'-'a'] = Admin_Changemap;
1.51 - g_FlagLetters['g'-'a'] = Admin_Convars;
1.52 - g_FlagLetters['h'-'a'] = Admin_Configs;
1.53 - g_FlagLetters['i'-'a'] = Admin_Chat;
1.54 - g_FlagLetters['j'-'a'] = Admin_Vote;
1.55 - g_FlagLetters['h'-'a'] = Admin_Password;
1.56 - g_FlagLetters['i'-'a'] = Admin_RCON;
1.57 - g_FlagLetters['j'-'a'] = Admin_Cheats;
1.58 - g_FlagLetters['z'-'a'] = Admin_Root;
1.59 -}
1.60 -
1.61 -public SMCResult:ReadLevels_NewSection(Handle:smc, const String:name[], bool:opt_quotes)
1.62 -{
1.63 - if (g_LevelState == LEVEL_STATE_NONE)
1.64 - {
1.65 - if (StrEqual(name, "Levels"))
1.66 - {
1.67 - g_LevelState = LEVEL_STATE_LEVELS;
1.68 - } else {
1.69 - /* :TODO: log error */
1.70 - }
1.71 - } else if (g_LevelState == LEVEL_STATE_LEVELS) {
1.72 - if (StrEqual(name, "Flags"))
1.73 - {
1.74 - g_LevelState = LEVEL_STATE_FLAGS;
1.75 - } else if (StrEqual(name, "Overrides")) {
1.76 - g_LevelState = LEVEL_STATE_OVERRIDES;
1.77 - } else {
1.78 - /* :TODO: log error */
1.79 - }
1.80 - } else {
1.81 - /* :TODO: Log error */
1.82 - }
1.83 -
1.84 - return SMCParse_Continue;
1.85 -}
1.86 -
1.87 -public SMCResult:ReadLevels_KeyValue(Handle:smc, const String:key[], const String:value[], bool:key_quotes, bool:value_quotes)
1.88 -{
1.89 - if (g_LevelState == LEVEL_STATE_FLAGS)
1.90 - {
1.91 - new chr = value[0];
1.92 -
1.93 - if (chr < 'a' || chr > 'z')
1.94 - {
1.95 - /* :TODO: log error */
1.96 - return SMCParse_Continue;
1.97 - }
1.98 -
1.99 - chr -= 'a';
1.100 -
1.101 - new AdminFlag:flag = Admin_None;
1.102 -
1.103 - if (StrEqual(key, "reservation"))
1.104 - {
1.105 - flag = Admin_Reservation;
1.106 - } else if (StrEqual(key, "kick")) {
1.107 - flag = Admin_Kick;
1.108 - } else if (StrEqual(key, "ban")) {
1.109 - flag = Admin_Ban;
1.110 - } else if (StrEqual(key, "unban")) {
1.111 - flag = Admin_Unban;
1.112 - } else if (StrEqual(key, "slay")) {
1.113 - flag = Admin_Slay;
1.114 - } else if (StrEqual(key, "changemap")) {
1.115 - flag = Admin_Changemap;
1.116 - } else if (StrEqual(key, "cvars")) {
1.117 - flag = Admin_Convars;
1.118 - } else if (StrEqual(key, "configs")) {
1.119 - flag = Admin_Configs;
1.120 - } else if (StrEqual(key, "chat")) {
1.121 - flag = Admin_Chat;
1.122 - } else if (StrEqual(key, "vote")) {
1.123 - flag = Admin_Vote;
1.124 - } else if (StrEqual(key, "password")) {
1.125 - flag = Admin_Password;
1.126 - } else if (StrEqual(key, "rcon")) {
1.127 - flag = Admin_RCON;
1.128 - } else if (StrEqual(key, "cheats")) {
1.129 - flag = Admin_Cheats;
1.130 - } else if (StrEqual(key, "root")) {
1.131 - flag = Admin_Root;
1.132 - } else {
1.133 - /* :TODO: log error */
1.134 - }
1.135 -
1.136 - g_FlagLetters[chr] = flag;
1.137 -
1.138 -
1.139 - } else if (g_LevelState == LEVEL_STATE_OVERRIDES) {
1.140 - if (!g_ReadOverrides)
1.141 - {
1.142 - return SMCParse_Continue;
1.143 - }
1.144 - }
1.145 -
1.146 - return SMCParse_Continue;
1.147 -}
1.148 -
1.149 -public SMCResult:ReadLevels_EndSection(Handle:smc)
1.150 -{
1.151 - if (g_LevelState == LEVEL_STATE_FLAGS)
1.152 - {
1.153 - g_LevelState = LEVEL_STATE_LEVELS;
1.154 - } else if (g_LevelState == LEVEL_STATE_OVERRIDES) {
1.155 - g_LevelState = LEVEL_STATE_OVERRIDES;
1.156 - } else if (g_LevelState == LEVEL_STATE_LEVELS) {
1.157 - g_LevelState = LEVEL_STATE_NONE;
1.158 - }
1.159 -}
1.160 -
1.161 -public OnRebuildAdminCache(cache_flags)
1.162 -{
1.163 - if (cache_flags & ADMIN_CACHE_OVERRIDES)
1.164 - {
1.165 - g_ReadOverrides = true;
1.166 - } else {
1.167 - g_ReadOverrides = false;
1.168 - }
1.169 -
1.170 - RefreshLevels();
1.171 -}
1.172 -
1.173 -RefreshLevels()
1.174 -{
1.175 - new String:path[PLATFORM_MAX_PATH];
1.176 -
1.177 - LoadDefaultLetters();
1.178 -
1.179 - BuildPath(Path_SM, path, sizeof(path), "configs/admin_levels.cfg");
1.180 -
1.181 - /* Set states */
1.182 - g_LevelState = LEVEL_STATE_NONE;
1.183 - g_LoggedFileName = false;
1.184 -
1.185 - new SMCError:err = SMC_ParseFile(g_hLevelParser, path);
1.186 - if (err != SMCError_Okay)
1.187 - {
1.188 - /* :TODO: log error */
1.189 - }
1.190 -}
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/plugins/admin-base/admin-base.sp Mon Jan 29 19:36:02 2007 +0000
2.3 @@ -0,0 +1,20 @@
2.4 +#include <sourcemod>
2.5 +#include <textparse>
2.6 +
2.7 +public Plugin:myinfo =
2.8 +{
2.9 + name = "Admin Base",
2.10 + author = "AlliedModders LLC",
2.11 + description = "Reads admin files",
2.12 + version = "1.0.0.0",
2.13 + url = "http://www.sourcemod.net/"
2.14 +};
2.15 +
2.16 +/** Various globals */
2.17 +new AdminFlag:g_FlagLetters[26]; /* Maps the flag letters */
2.18 +new bool:g_LoggedFileName = false; /* Whether or not the file name has been logged */
2.19 +
2.20 +public OnRebuildAdminCache(cache_flags)
2.21 +{
2.22 + RefreshLevels();
2.23 +}
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/plugins/admin-base/admin-levels.sp Mon Jan 29 19:36:02 2007 +0000
3.3 @@ -0,0 +1,145 @@
3.4 +#define LEVEL_STATE_NONE 0
3.5 +#define LEVEL_STATE_LEVELS 1
3.6 +#define LEVEL_STATE_FLAGS 2
3.7 +
3.8 +new Handle:g_hLevelParser = INVALID_HANDLE;
3.9 +new g_LevelState = LEVEL_STATE_NONE;
3.10 +
3.11 +InitializeLevelParser()
3.12 +{
3.13 + if (g_hLevelParser == INVALID_HANDLE)
3.14 + {
3.15 + g_hLevelParser = SMC_CreateParser();
3.16 + SMC_SetReaders(g_hLevelParser,
3.17 + ReadLevels_NewSection,
3.18 + ReadLevels_KeyValue,
3.19 + ReadLevels_EndSection);
3.20 + }
3.21 +}
3.22 +
3.23 +LoadDefaultLetters()
3.24 +{
3.25 + g_FlagLetters['a'-'a'] = Admin_Reservation;
3.26 + g_FlagLetters['b'-'a'] = Admin_Kick;
3.27 + g_FlagLetters['c'-'a'] = Admin_Ban;
3.28 + g_FlagLetters['d'-'a'] = Admin_Unban;
3.29 + g_FlagLetters['e'-'a'] = Admin_Slay;
3.30 + g_FlagLetters['f'-'a'] = Admin_Changemap;
3.31 + g_FlagLetters['g'-'a'] = Admin_Convars;
3.32 + g_FlagLetters['h'-'a'] = Admin_Configs;
3.33 + g_FlagLetters['i'-'a'] = Admin_Chat;
3.34 + g_FlagLetters['j'-'a'] = Admin_Vote;
3.35 + g_FlagLetters['h'-'a'] = Admin_Password;
3.36 + g_FlagLetters['i'-'a'] = Admin_RCON;
3.37 + g_FlagLetters['j'-'a'] = Admin_Cheats;
3.38 + g_FlagLetters['z'-'a'] = Admin_Root;
3.39 +}
3.40 +
3.41 +public SMCResult:ReadLevels_NewSection(Handle:smc, const String:name[], bool:opt_quotes)
3.42 +{
3.43 + if (g_LevelState == LEVEL_STATE_NONE)
3.44 + {
3.45 + if (StrEqual(name, "Levels"))
3.46 + {
3.47 + g_LevelState = LEVEL_STATE_LEVELS;
3.48 + } else {
3.49 + /* :TODO: log error */
3.50 + }
3.51 + } else if (g_LevelState == LEVEL_STATE_LEVELS) {
3.52 + if (StrEqual(name, "Flags"))
3.53 + {
3.54 + g_LevelState = LEVEL_STATE_FLAGS;
3.55 + } else {
3.56 + /* :TODO: log error */
3.57 + }
3.58 + } else {
3.59 + /* :TODO: Log error */
3.60 + }
3.61 +
3.62 + return SMCParse_Continue;
3.63 +}
3.64 +
3.65 +public SMCResult:ReadLevels_KeyValue(Handle:smc, const String:key[], const String:value[], bool:key_quotes, bool:value_quotes)
3.66 +{
3.67 + if (g_LevelState == LEVEL_STATE_FLAGS)
3.68 + {
3.69 + new chr = value[0];
3.70 +
3.71 + if (chr < 'a' || chr > 'z')
3.72 + {
3.73 + /* :TODO: log error */
3.74 + return SMCParse_Continue;
3.75 + }
3.76 +
3.77 + chr -= 'a';
3.78 +
3.79 + new AdminFlag:flag = Admin_None;
3.80 +
3.81 + if (StrEqual(key, "reservation"))
3.82 + {
3.83 + flag = Admin_Reservation;
3.84 + } else if (StrEqual(key, "kick")) {
3.85 + flag = Admin_Kick;
3.86 + } else if (StrEqual(key, "ban")) {
3.87 + flag = Admin_Ban;
3.88 + } else if (StrEqual(key, "unban")) {
3.89 + flag = Admin_Unban;
3.90 + } else if (StrEqual(key, "slay")) {
3.91 + flag = Admin_Slay;
3.92 + } else if (StrEqual(key, "changemap")) {
3.93 + flag = Admin_Changemap;
3.94 + } else if (StrEqual(key, "cvars")) {
3.95 + flag = Admin_Convars;
3.96 + } else if (StrEqual(key, "configs")) {
3.97 + flag = Admin_Configs;
3.98 + } else if (StrEqual(key, "chat")) {
3.99 + flag = Admin_Chat;
3.100 + } else if (StrEqual(key, "vote")) {
3.101 + flag = Admin_Vote;
3.102 + } else if (StrEqual(key, "password")) {
3.103 + flag = Admin_Password;
3.104 + } else if (StrEqual(key, "rcon")) {
3.105 + flag = Admin_RCON;
3.106 + } else if (StrEqual(key, "cheats")) {
3.107 + flag = Admin_Cheats;
3.108 + } else if (StrEqual(key, "root")) {
3.109 + flag = Admin_Root;
3.110 + } else {
3.111 + /* :TODO: log error */
3.112 + }
3.113 +
3.114 + g_FlagLetters[chr] = flag;
3.115 + }
3.116 +
3.117 + return SMCParse_Continue;
3.118 +}
3.119 +
3.120 +public SMCResult:ReadLevels_EndSection(Handle:smc)
3.121 +{
3.122 + if (g_LevelState == LEVEL_STATE_FLAGS)
3.123 + {
3.124 + g_LevelState = LEVEL_STATE_LEVELS;
3.125 + } else if (g_LevelState == LEVEL_STATE_LEVELS) {
3.126 + g_LevelState = LEVEL_STATE_NONE;
3.127 + }
3.128 +}
3.129 +
3.130 +RefreshLevels()
3.131 +{
3.132 + new String:path[PLATFORM_MAX_PATH];
3.133 +
3.134 + LoadDefaultLetters();
3.135 + InitializeLevelParser();
3.136 +
3.137 + BuildPath(Path_SM, path, sizeof(path), "configs/admin_levels.cfg");
3.138 +
3.139 + /* Set states */
3.140 + g_LevelState = LEVEL_STATE_NONE;
3.141 + g_LoggedFileName = false;
3.142 +
3.143 + new SMCError:err = SMC_ParseFile(g_hLevelParser, path);
3.144 + if (err != SMCError_Okay)
3.145 + {
3.146 + /* :TODO: log error */
3.147 + }
3.148 +}