fixed inheritance not being used in the base menu style when removing clients from the watch list
3 * ===============================================================
4 * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
5 * ===============================================================
7 * This file is not open source and may not be copied without explicit
8 * written permission of AlliedModders LLC. This file may not be redistributed
9 * in whole or significant part.
10 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
15 #include "sm_globals.h"
16 #include "AdminCache.h"
17 #include "ForwardSys.h"
19 static cell_t DumpAdminCache(IPluginContext *pContext, const cell_t *params)
21 g_Admins.DumpAdminCache((AdminCachePart)params[1], (params[2] == 1) ? true : false);
25 static cell_t AddCommandOverride(IPluginContext *pContext, const cell_t *params)
29 pContext->LocalToString(params[1], &str);
30 g_Admins.AddCommandOverride(str, (OverrideType)params[2], (AdminFlag)params[3]);
35 static cell_t GetCommandOverride(IPluginContext *pContext, const cell_t *params)
40 pContext->LocalToString(params[1], &cmd);
42 if (!g_Admins.GetCommandOverride(cmd, (OverrideType)params[2], &flags))
48 pContext->LocalToPhysAddr(params[3], &addr);
50 *addr = (cell_t)flags;
55 static cell_t UnsetCommandOverride(IPluginContext *pContext, const cell_t *params)
59 pContext->LocalToString(params[1], &cmd);
61 g_Admins.UnsetCommandOverride(cmd, (OverrideType)params[2]);
66 static cell_t CreateAdmGroup(IPluginContext *pContext, const cell_t *params)
70 pContext->LocalToString(params[1], &str);
72 return g_Admins.AddGroup(str);
75 static cell_t FindAdmGroup(IPluginContext *pContext, const cell_t *params)
79 pContext->LocalToString(params[1], &str);
81 return g_Admins.FindGroupByName(str);
84 static cell_t SetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params)
86 GroupId id = (GroupId)params[1];
87 AdminFlag flag = (AdminFlag)params[2];
88 bool enabled = params[3] ? 1 : 0;
90 g_Admins.SetGroupAddFlag(id, flag, enabled);
95 static cell_t GetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params)
97 GroupId id = (GroupId)params[1];
98 AdminFlag flag = (AdminFlag)params[2];
100 return g_Admins.GetGroupAddFlag(id, flag) ? 1 : 0;
103 static cell_t SetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params)
105 GroupId id = (GroupId)params[1];
106 ImmunityType type = (ImmunityType)params[2];
107 bool enabled = params[3] ? 1 : 0;
109 g_Admins.SetGroupGenericImmunity(id, type, enabled);
114 static cell_t GetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params)
116 GroupId id = (GroupId)params[1];
117 ImmunityType type = (ImmunityType)params[2];
119 return g_Admins.GetGroupGenericImmunity(id, type) ? 1 : 0;
122 static cell_t SetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params)
124 GroupId id = (GroupId)params[1];
125 GroupId other_id = (GroupId)params[2];
127 g_Admins.AddGroupImmunity(id, other_id);
132 static cell_t GetAdmGroupImmuneCount(IPluginContext *pContext, const cell_t *params)
134 GroupId id = (GroupId)params[1];
136 return g_Admins.GetGroupImmunityCount(id);
139 static cell_t GetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params)
141 GroupId id = (GroupId)params[1];
143 return g_Admins.GetGroupImmunity(id, params[2]);
146 static cell_t AddAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *params)
148 GroupId id = (GroupId)params[1];
149 OverrideType type = (OverrideType)params[3];
150 OverrideRule rule = (OverrideRule)params[4];
153 pContext->LocalToString(params[2], &cmd);
155 g_Admins.AddGroupCommandOverride(id, cmd, type, rule);
160 static cell_t GetAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *params)
162 GroupId id = (GroupId)params[1];
163 OverrideType type = (OverrideType)params[3];
167 pContext->LocalToString(params[2], &cmd);
169 if (!g_Admins.GetGroupCommandOverride(id, cmd, type, &rule))
175 pContext->LocalToPhysAddr(params[4], &addr);
176 *addr = (cell_t)rule;
181 static cell_t GetAdmGroupAddFlags(IPluginContext *pContext, const cell_t *params)
183 GroupId id = (GroupId)params[1];
184 return g_Admins.GetGroupAddFlags(id);
187 static cell_t RegisterAuthIdentType(IPluginContext *pContext, const cell_t *params)
190 pContext->LocalToString(params[1], &type);
192 g_Admins.RegisterAuthIdentType(type);
197 static cell_t CreateAdmin(IPluginContext *pContext, const cell_t *params)
200 pContext->LocalToString(params[1], &admin);
202 if (admin[0] == '\0')
207 return g_Admins.CreateAdmin(admin);
210 static cell_t GetAdminUsername(IPluginContext *pContext, const cell_t *params)
212 AdminId id = params[1];
214 const char *name = g_Admins.GetAdminName(id);
221 pContext->StringToLocalUTF8(params[2], params[3], name, &written);
226 static cell_t BindAdminIdentity(IPluginContext *pContext, const cell_t *params)
228 AdminId id = params[1];
231 pContext->LocalToString(params[2], &auth);
232 pContext->LocalToString(params[3], &ident);
234 return g_Admins.BindAdminIdentity(id, auth, ident);
237 static cell_t SetAdminFlag(IPluginContext *pContext, const cell_t *params)
239 AdminId id = params[1];
240 AdminFlag flag = (AdminFlag)params[2];
241 bool enabled = params[3] ? true : false;
243 g_Admins.SetAdminFlag(id, flag, enabled);
248 static cell_t GetAdminFlag(IPluginContext *pContext, const cell_t *params)
250 AdminId id = params[1];
251 AdminFlag flag = (AdminFlag)params[2];
252 AccessMode mode = (AccessMode)params[3];
254 return g_Admins.GetAdminFlag(id, flag, mode);
257 static cell_t GetAdminFlags(IPluginContext *pContext, const cell_t *params)
259 AdminId id = params[1];
260 AccessMode mode = (AccessMode)params[2];
262 return g_Admins.GetAdminFlags(id, mode);
265 static cell_t AdminInheritGroup(IPluginContext *pContext, const cell_t *params)
267 AdminId id = params[1];
268 GroupId gid = params[2];
270 return g_Admins.AdminInheritGroup(id, gid);
273 static cell_t GetAdminGroupCount(IPluginContext *pContext, const cell_t *params)
275 AdminId id = params[1];
277 return g_Admins.GetAdminGroupCount(id);
280 static cell_t GetAdminGroup(IPluginContext *pContext, const cell_t *params)
282 AdminId id = params[1];
283 unsigned int index = params[2];
287 if ((gid=g_Admins.GetAdminGroup(id, index, &name)) == INVALID_GROUP_ID)
297 pContext->StringToLocalUTF8(params[3], params[4], name, NULL);
302 static cell_t SetAdminPassword(IPluginContext *pContext, const cell_t *params)
304 AdminId id = params[1];
307 pContext->LocalToString(params[2], &password);
309 g_Admins.SetAdminPassword(id, password);
314 static cell_t GetAdminPassword(IPluginContext *pContext, const cell_t *params)
316 AdminId id = params[1];
317 const char *password = g_Admins.GetAdminPassword(id);
324 pContext->StringToLocalUTF8(params[2], params[3], password, NULL);
329 static cell_t FindAdminByIdentity(IPluginContext *pContext, const cell_t *params)
333 pContext->LocalToString(params[1], &auth);
334 pContext->LocalToString(params[2], &ident);
336 return g_Admins.FindAdminByIdentity(auth, ident);
339 static cell_t RemoveAdmin(IPluginContext *pContext, const cell_t *params)
341 AdminId id = params[1];
343 return g_Admins.InvalidateAdmin(id);
346 static cell_t FlagBitsToBitArray(IPluginContext *pContext, const cell_t *params)
348 FlagBits bits = (FlagBits)params[1];
349 bool array[AdminFlags_TOTAL];
351 unsigned int numWr = g_Admins.FlagBitsToBitArray(bits, array, AdminFlags_TOTAL);
353 pContext->LocalToPhysAddr(params[2], &addr);
356 for (i=0; i<numWr && i<(unsigned int)params[3]; i++)
358 addr[i] = array[i] ? 1 : 0;
364 static cell_t FlagBitArrayToBits(IPluginContext *pContext, const cell_t *params)
366 bool array[AdminFlags_TOTAL];
367 unsigned int num = ((unsigned int)params[2] > AdminFlags_TOTAL ? params[2] : AdminFlags_TOTAL);
370 pContext->LocalToPhysAddr(params[1], &addr);
372 for (unsigned int i=0; i<num; i++)
374 array[i] = addr[i] ? true : false;
377 return g_Admins.FlagBitArrayToBits(array, num);
380 static cell_t FlagArrayToBits(IPluginContext *pContext, const cell_t *params)
383 pContext->LocalToPhysAddr(params[1], &addr);
385 if (sizeof(AdminFlag) == sizeof(cell_t))
387 return g_Admins.FlagArrayToBits((const AdminFlag *)addr, params[2]);
389 AdminFlag flags[AdminFlags_TOTAL];
390 unsigned int num = ((unsigned)params[2] > AdminFlags_TOTAL ? AdminFlags_TOTAL : params[2]);
392 for (unsigned int i=0; i<num; i++)
394 flags[i] = (AdminFlag)addr[i];
396 return g_Admins.FlagArrayToBits(flags, num);
400 static cell_t FlagBitsToArray(IPluginContext *pContext, const cell_t *params)
403 pContext->LocalToPhysAddr(params[2], &addr);
405 if (sizeof(AdminFlag) == sizeof(cell_t))
407 return g_Admins.FlagBitsToArray(params[1], (AdminFlag *)addr, params[3]);
409 AdminFlag flags[AdminFlags_TOTAL];
410 unsigned int num = ((unsigned)params[2] > AdminFlags_TOTAL ? AdminFlags_TOTAL : params[2]);
411 num = g_Admins.FlagBitsToArray(params[1], flags, num);
413 for (unsigned int i=0; i<num; i++)
422 static cell_t CanAdminTarget(IPluginContext *pContext, const cell_t *params)
424 return g_Admins.CanAdminTarget(params[1], params[2]) ? 1 : 0;
427 static cell_t CreateAuthMethod(IPluginContext *pContext, const cell_t *params)
430 pContext->LocalToString(params[1], &name);
431 g_Admins.RegisterAuthIdentType(name);
436 REGISTER_NATIVES(adminNatives)
438 {"DumpAdminCache", DumpAdminCache},
439 {"AddCommandOverride", AddCommandOverride},
440 {"GetCommandOverride", GetCommandOverride},
441 {"UnsetCommandOverride", UnsetCommandOverride},
442 {"CreateAdmGroup", CreateAdmGroup},
443 {"FindAdmGroup", FindAdmGroup},
444 {"SetAdmGroupAddFlag", SetAdmGroupAddFlag},
445 {"GetAdmGroupAddFlag", GetAdmGroupAddFlag},
446 {"SetAdmGroupImmunity", SetAdmGroupImmunity},
447 {"GetAdmGroupImmunity", GetAdmGroupImmunity},
448 {"SetAdmGroupImmuneFrom", SetAdmGroupImmuneFrom},
449 {"GetAdmGroupImmuneFrom", GetAdmGroupImmuneFrom},
450 {"GetAdmGroupImmuneCount", GetAdmGroupImmuneCount},
451 {"AddAdmGroupCmdOverride", AddAdmGroupCmdOverride},
452 {"GetAdmGroupCmdOverride", GetAdmGroupCmdOverride},
453 {"GetAdmGroupAddFlags", GetAdmGroupAddFlags},
454 {"RegisterAuthIdentType", RegisterAuthIdentType},
455 {"CreateAdmin", CreateAdmin},
456 {"GetAdminUsername", GetAdminUsername},
457 {"BindAdminIdentity", BindAdminIdentity},
458 {"SetAdminFlag", SetAdminFlag},
459 {"GetAdminFlag", GetAdminFlag},
460 {"GetAdminFlags", GetAdminFlags},
461 {"AdminInheritGroup", AdminInheritGroup},
462 {"GetAdminGroupCount", GetAdminGroupCount},
463 {"GetAdminGroup", GetAdminGroup},
464 {"SetAdminPassword", SetAdminPassword},
465 {"GetAdminPassword", GetAdminPassword},
466 {"FindAdminByIdentity", FindAdminByIdentity},
467 {"RemoveAdmin", RemoveAdmin},
468 {"FlagBitsToBitArray", FlagBitsToBitArray},
469 {"FlagBitArrayToBits", FlagBitArrayToBits},
470 {"FlagArrayToBits", FlagArrayToBits},
471 {"FlagBitsToArray", FlagBitsToArray},
472 {"CanAdminTarget", CanAdminTarget},
473 {"CreateAuthMethod", CreateAuthMethod},
474 /* -------------------------------------------------- */