|
dvander@336
|
1 |
#if defined _admin_included |
|
dvander@336
|
2 |
#endinput |
|
dvander@336
|
3 |
#endif |
|
dvander@336
|
4 |
#define _admin_included |
|
dvander@336
|
5 |
|
|
dvander@336
|
6 |
enum AdminFlag |
|
dvander@336
|
7 |
{ |
|
dvander@336
|
8 |
Admin_None = 0, /* Unused */ |
|
dvander@336
|
9 |
Admin_Reservation, /* Reserved slot */ |
|
dvander@336
|
10 |
Admin_Kick, /* Kick another user */ |
|
dvander@336
|
11 |
Admin_Ban, /* Ban another user */ |
|
dvander@336
|
12 |
Admin_Unban, /* Unban another user */ |
|
dvander@336
|
13 |
Admin_Slay, /* Slay/kill/damage another user */ |
|
dvander@336
|
14 |
Admin_Changemap, /* Change the map */ |
|
dvander@336
|
15 |
Admin_Convars, /* Change basic convars */ |
|
dvander@336
|
16 |
Admin_Configs, /* Change configs */ |
|
dvander@336
|
17 |
Admin_Chat, /* Special chat privileges */ |
|
dvander@336
|
18 |
Admin_Vote, /* Special vote privileges */ |
|
dvander@336
|
19 |
Admin_Password, /* Set a server password */ |
|
dvander@336
|
20 |
Admin_RCON, /* Use RCON */ |
|
dvander@336
|
21 |
Admin_Cheats, /* Change sv_cheats and use its commands */ |
|
dvander@336
|
22 |
/* --- */ |
|
dvander@336
|
23 |
AdminFlags_TOTAL, |
|
dvander@336
|
24 |
}; |
|
dvander@336
|
25 |
|
|
dvander@336
|
26 |
enum OverrideType |
|
dvander@336
|
27 |
{ |
|
dvander@336
|
28 |
Override_Command = 1, /* Command */ |
|
dvander@336
|
29 |
Override_CommandGroup, /* Command group */ |
|
dvander@336
|
30 |
}; |
|
dvander@336
|
31 |
|
|
dvander@336
|
32 |
enum OverrideRule |
|
dvander@336
|
33 |
{ |
|
dvander@336
|
34 |
Command_Deny = 0, |
|
dvander@336
|
35 |
Command_Allow = 1, |
|
dvander@336
|
36 |
}; |
|
dvander@336
|
37 |
|
|
dvander@336
|
38 |
enum ImmunityType |
|
dvander@336
|
39 |
{ |
|
dvander@336
|
40 |
Immunity_Default = 1, /* Immune from everyone with no immunity */ |
|
dvander@336
|
41 |
Immunity_Global, /* Immune from everyone (except root admins) */ |
|
dvander@336
|
42 |
}; |
|
dvander@336
|
43 |
|
|
dvander@336
|
44 |
/** Note: Groups are not Handles, nor are they indexes */ |
|
dvander@336
|
45 |
enum GroupId |
|
dvander@336
|
46 |
{ |
|
dvander@336
|
47 |
INVALID_GROUP_ID = -1, |
|
dvander@336
|
48 |
}; |
|
dvander@336
|
49 |
|
|
dvander@336
|
50 |
#define ADMIN_CACHE_OVERRIDES (1<<0) |
|
dvander@336
|
51 |
#define ADMIN_CACHE_ADMINS (1<<1) |
|
dvander@336
|
52 |
#define ADMIN_CACHE_GROUPS ((1<<2)|ADMIN_CACHE_ADMINS) |
|
dvander@336
|
53 |
|
|
dvander@336
|
54 |
/** |
|
dvander@336
|
55 |
* Called when part of the admin cache needs to be rebuilt. |
|
dvander@336
|
56 |
* @note Groups should always be rebuilt before admins. |
|
dvander@336
|
57 |
* |
|
dvander@336
|
58 |
* @param cache_flags Flags for which cache to dump. |
|
dvander@336
|
59 |
*/ |
|
dvander@336
|
60 |
forward OnRebuildAdminCache(cache_flags); |
|
dvander@336
|
61 |
|
|
dvander@336
|
62 |
/** |
|
dvander@336
|
63 |
* Tells the admin system to dump a portion of the cache. |
|
dvander@336
|
64 |
* |
|
dvander@336
|
65 |
* @param cache_flags Flags for which cache to dump. Specifying groups also dumps admins. |
|
dvander@336
|
66 |
* @param rebuild If true, the rebuild forwards will fire. |
|
dvander@336
|
67 |
* @noreturn |
|
dvander@336
|
68 |
*/ |
|
dvander@336
|
69 |
native DumpAdminCache(cache_flags, bool:rebuild); |
|
dvander@336
|
70 |
|
|
dvander@336
|
71 |
/** |
|
dvander@336
|
72 |
* Adds a global command flag override. Any command registered with this name |
|
dvander@336
|
73 |
* will assume the new flag. This is applied retroactively as well. |
|
dvander@336
|
74 |
* |
|
dvander@336
|
75 |
* @param cmd String containing command name (case sensitive). |
|
dvander@336
|
76 |
* @param type Override type (specific command or group). |
|
dvander@336
|
77 |
* @param flag New admin flag. |
|
dvander@336
|
78 |
* @noreturn |
|
dvander@336
|
79 |
*/ |
|
dvander@336
|
80 |
native AddCommandOverride(const String:cmd[], OverrideType:type, AdminFlag:flag); |
|
dvander@336
|
81 |
|
|
dvander@336
|
82 |
/** |
|
dvander@336
|
83 |
* Returns a command override. |
|
dvander@336
|
84 |
* |
|
dvander@336
|
85 |
* @param cmd String containing command name (case sensitive). |
|
dvander@336
|
86 |
* @param type Override type (specific command or group). |
|
dvander@336
|
87 |
* @param pFlag By-reference cell to store the flag (undefined if not found). |
|
dvander@336
|
88 |
* @return True if there is an override, false otherwise. |
|
dvander@336
|
89 |
*/ |
|
dvander@336
|
90 |
native bool:GetCommandOverride(const String:cmd[], OverrideType:type, &AdminFlag:flag); |
|
dvander@336
|
91 |
|
|
dvander@336
|
92 |
/** |
|
dvander@336
|
93 |
* Unsets a command override. |
|
dvander@336
|
94 |
* |
|
dvander@336
|
95 |
* @param cmd String containing command name (case sensitive). |
|
dvander@336
|
96 |
* @param type Override type (specific command or group). |
|
dvander@336
|
97 |
* @noreturn |
|
dvander@336
|
98 |
*/ |
|
dvander@336
|
99 |
native UnsetCommandOverride(const String:cmd[], OverrideType:type); |
|
dvander@336
|
100 |
|
|
dvander@336
|
101 |
/** |
|
dvander@336
|
102 |
* Adds a new group. Name must be unique. |
|
dvander@336
|
103 |
* |
|
dvander@336
|
104 |
* @param group_name String containing the group name. |
|
dvander@336
|
105 |
* @return A new group id, INVALID_GROUP_ID if it already exists. |
|
dvander@336
|
106 |
*/ |
|
dvander@336
|
107 |
native GroupId:CreateAdmGroup(const String:group_name[]); |
|
dvander@336
|
108 |
|
|
dvander@336
|
109 |
/** |
|
dvander@336
|
110 |
* @brief Finds a group by name. |
|
dvander@336
|
111 |
* |
|
dvander@336
|
112 |
* @param group_name String containing the group name. |
|
dvander@336
|
113 |
* @return A group id, or INVALID_GROUP_ID if not found. |
|
dvander@336
|
114 |
*/ |
|
dvander@336
|
115 |
native FindAdmGroup(const String:group_name[]); |
|
dvander@336
|
116 |
|
|
dvander@336
|
117 |
/** |
|
dvander@336
|
118 |
* Adds or removes a flag from a group's flag set. |
|
dvander@336
|
119 |
* @note These are called "add flags" because they add to a user's flags. |
|
dvander@336
|
120 |
* |
|
dvander@336
|
121 |
* @param id Group id. |
|
dvander@336
|
122 |
* @param flag Admin flag to toggle. |
|
dvander@336
|
123 |
* @param enabled True to set the flag, false to unset/disable. |
|
dvander@336
|
124 |
* @noreturn |
|
dvander@336
|
125 |
*/ |
|
dvander@336
|
126 |
native SetAdmGroupAddFlag(GroupId:id, AdminFlag:flag, bool:enabled); |
|
dvander@336
|
127 |
|
|
dvander@336
|
128 |
/** |
|
dvander@336
|
129 |
* Gets the set value of an add flag on a group's flag set. |
|
dvander@336
|
130 |
* @note These are called "add flags" because they add to a user's flags. |
|
dvander@336
|
131 |
* |
|
dvander@336
|
132 |
* @param id Group id. |
|
dvander@336
|
133 |
* @param flag Admin flag to retrieve. |
|
dvander@336
|
134 |
* @return True if enabled, false otherwise, |
|
dvander@336
|
135 |
*/ |
|
dvander@336
|
136 |
native bool:GetAdmGroupAddFlag(GroupId:id, AdminFlag:flag); |
|
dvander@336
|
137 |
|
|
dvander@336
|
138 |
/** |
|
dvander@336
|
139 |
* Returns the flag set that is added to a user from their group. |
|
dvander@336
|
140 |
* @note These are called "add flags" because they add to a user's flags. |
|
dvander@336
|
141 |
* |
|
dvander@336
|
142 |
* @param id GroupId of the group. |
|
dvander@336
|
143 |
* @param flags Array to store flags in. |
|
dvander@336
|
144 |
* @param total Total number of flags that can be stored in the array (AdminFlags_TOTAL, usually). |
|
dvander@336
|
145 |
* @return Number of flags that were written to the array. |
|
dvander@336
|
146 |
*/ |
|
dvander@345
|
147 |
native GetAdmGroupAddFlagBits(GroupId:id, bool:flags[], total); |
|
dvander@336
|
148 |
|
|
dvander@336
|
149 |
/** |
|
dvander@336
|
150 |
* Toggles a generic immunity type. |
|
dvander@336
|
151 |
* |
|
dvander@336
|
152 |
* @param id Group id. |
|
dvander@336
|
153 |
* @param type Generic immunity type. |
|
dvander@336
|
154 |
* @param enabled True to enable, false otherwise. |
|
dvander@336
|
155 |
* @noreturn |
|
dvander@336
|
156 |
*/ |
|
dvander@336
|
157 |
native SetAdmGroupImmunity(GroupId:id, ImmunityType:type, bool:enabled); |
|
dvander@336
|
158 |
|
|
dvander@336
|
159 |
/** |
|
dvander@336
|
160 |
* Returns whether or not a group has global immunity. |
|
dvander@336
|
161 |
* |
|
dvander@336
|
162 |
* @param id Group id. |
|
dvander@336
|
163 |
* @param type Generic immunity type. |
|
dvander@336
|
164 |
* @return True if the group has this immunity, false otherwise. |
|
dvander@336
|
165 |
*/ |
|
dvander@336
|
166 |
native bool:GetAdmGroupImmunity(GroupId:id, ImmunityType:type); |
|
dvander@336
|
167 |
|
|
dvander@336
|
168 |
/** |
|
dvander@336
|
169 |
* Adds immunity to a specific group. |
|
dvander@336
|
170 |
* |
|
dvander@336
|
171 |
* @param id Group id. |
|
dvander@336
|
172 |
* @param other_id Group id to receive immunity to. |
|
dvander@336
|
173 |
* @noreturn |
|
dvander@336
|
174 |
*/ |
|
dvander@336
|
175 |
native SetAdmGroupImmuneFrom(GroupId:id, GroupId:other_id); |
|
dvander@336
|
176 |
|
|
dvander@336
|
177 |
/** |
|
dvander@336
|
178 |
* Returns the number of specific group immunities. |
|
dvander@336
|
179 |
* |
|
dvander@336
|
180 |
* @param id Group id. |
|
dvander@336
|
181 |
* @return Number of group immunities. |
|
dvander@336
|
182 |
*/ |
|
dvander@336
|
183 |
native GetAdmGroupImmuneCount(GroupId:id); |
|
dvander@336
|
184 |
|
|
dvander@336
|
185 |
/** |
|
dvander@336
|
186 |
* Returns a group that this group is immune to given an index. |
|
dvander@336
|
187 |
* |
|
dvander@336
|
188 |
* @param id Group id. |
|
dvander@336
|
189 |
* @param number Index from 0 to N-1, from GetAdmGroupImmuneCount(). |
|
dvander@336
|
190 |
* @return GroupId that this group is immune to, or INVALID_GROUP_ID on failure. |
|
dvander@336
|
191 |
*/ |
|
dvander@336
|
192 |
native GroupId:GetAdmGroupImmuneFrom(GroupId:id, number); |
|
dvander@336
|
193 |
|
|
dvander@336
|
194 |
/** |
|
dvander@336
|
195 |
* Adds a group-specific override type. |
|
dvander@336
|
196 |
* |
|
dvander@336
|
197 |
* @param id Group id. |
|
dvander@336
|
198 |
* @param name String containing command name (case sensitive). |
|
dvander@336
|
199 |
* @param type Override type (specific command or group). |
|
dvander@336
|
200 |
* @param rule Override allow/deny setting. |
|
dvander@336
|
201 |
* @noreturn |
|
dvander@336
|
202 |
*/ |
|
dvander@336
|
203 |
native AddAdmGroupCmdOverride(GroupId:id, const String:name[], OverrideType:type, OverrideRule:rule); |
|
dvander@336
|
204 |
|
|
dvander@336
|
205 |
/** |
|
dvander@336
|
206 |
* Retrieves a group-specific command override. |
|
dvander@336
|
207 |
* |
|
dvander@336
|
208 |
* @param id Group id. |
|
dvander@336
|
209 |
* @param name String containing command name (case sensitive). |
|
dvander@336
|
210 |
* @param type Override type (specific command or group). |
|
dvander@336
|
211 |
* @param rule Optional pointer to store allow/deny setting. |
|
dvander@336
|
212 |
* @return True if an override exists, false otherwise. |
|
dvander@336
|
213 |
*/ |
|
dvander@336
|
214 |
native bool:GetAdmGroupCmdOverride(GroupId:id, const String:name[], OverrideType:type, &OverrideRule:rule); |