Optimized forwards, now paused functions are stored in a temp list so we dont have to check if they're runnable on each function execution.
2 * ===============================================================
3 * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
4 * ===============================================================
6 * This file is not open source and may not be copied without explicit
7 * written permission of AlliedModders LLC. This file may not be redistributed
8 * in whole or significant part.
9 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
14 #include "sm_globals.h"
15 #include "AdminCache.h"
16 #include "ForwardSys.h"
18 static cell_t DumpAdminCache(IPluginContext *pContext, const cell_t *params)
20 g_Admins.DumpAdminCache(params[1], (params[2] == 1) ? true : false);
24 static cell_t AddCommandOverride(IPluginContext *pContext, const cell_t *params)
28 pContext->LocalToString(params[1], &str);
29 g_Admins.AddCommandOverride(str, (OverrideType)params[2], (AdminFlag)params[3]);
34 static cell_t GetCommandOverride(IPluginContext *pContext, const cell_t *params)
39 pContext->LocalToString(params[1], &cmd);
41 if (!g_Admins.GetCommandOverride(cmd, (OverrideType)params[2], &flag))
47 pContext->LocalToPhysAddr(params[3], &addr);
54 static cell_t UnsetCommandOverride(IPluginContext *pContext, const cell_t *params)
58 pContext->LocalToString(params[1], &cmd);
60 g_Admins.UnsetCommandOverride(cmd, (OverrideType)params[2]);
65 static cell_t CreateAdmGroup(IPluginContext *pContext, const cell_t *params)
69 pContext->LocalToString(params[1], &str);
71 return g_Admins.AddGroup(str);
74 static cell_t FindAdmGroup(IPluginContext *pContext, const cell_t *params)
78 pContext->LocalToString(params[1], &str);
80 return g_Admins.FindGroupByName(str);
83 static cell_t SetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params)
85 GroupId id = (GroupId)params[1];
86 AdminFlag flag = (AdminFlag)params[2];
87 bool enabled = params[3] ? 1 : 0;
89 g_Admins.SetGroupAddFlag(id, flag, enabled);
94 static cell_t GetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params)
96 GroupId id = (GroupId)params[1];
97 AdminFlag flag = (AdminFlag)params[2];
99 return g_Admins.GetGroupAddFlag(id, flag) ? 1 : 0;
102 static cell_t SetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params)
104 GroupId id = (GroupId)params[1];
105 ImmunityType type = (ImmunityType)params[2];
106 bool enabled = params[3] ? 1 : 0;
108 g_Admins.SetGroupGenericImmunity(id, type, enabled);
113 static cell_t GetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params)
115 GroupId id = (GroupId)params[1];
116 ImmunityType type = (ImmunityType)params[2];
118 return g_Admins.GetGroupGenericImmunity(id, type) ? 1 : 0;
121 static cell_t SetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params)
123 GroupId id = (GroupId)params[1];
124 GroupId other_id = (GroupId)params[2];
126 g_Admins.AddGroupImmunity(id, other_id);
131 static cell_t GetAdmGroupImmuneCount(IPluginContext *pContext, const cell_t *params)
133 GroupId id = (GroupId)params[1];
135 return g_Admins.GetGroupImmunityCount(id);
138 static cell_t GetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params)
140 GroupId id = (GroupId)params[1];
142 return g_Admins.GetGroupImmunity(id, params[2]);
145 static cell_t AddAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *params)
147 GroupId id = (GroupId)params[1];
148 OverrideType type = (OverrideType)params[3];
149 OverrideRule rule = (OverrideRule)params[4];
152 pContext->LocalToString(params[2], &cmd);
154 g_Admins.AddGroupCommandOverride(id, cmd, type, rule);
159 static cell_t GetAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *params)
161 GroupId id = (GroupId)params[1];
162 OverrideType type = (OverrideType)params[3];
166 pContext->LocalToString(params[2], &cmd);
168 if (!g_Admins.GetGroupCommandOverride(id, cmd, type, &rule))
174 pContext->LocalToPhysAddr(params[4], &addr);
175 *addr = (cell_t)rule;
180 static cell_t GetAdmGroupAddFlagBits(IPluginContext *pContext, const cell_t *params)
182 GroupId id = (GroupId)params[1];
183 bool flags[AdminFlags_TOTAL];
184 unsigned int num = g_Admins.GetGroupAddFlagBits(id, flags, AdminFlags_TOTAL);
188 pContext->LocalToPhysAddr(params[2], &addr);
191 i < num && i < (unsigned int)params[3];
194 addr[i] = flags[i] ? 1 : 0;
200 REGISTER_NATIVES(adminNatives)
202 {"DumpAdminCache", DumpAdminCache},
203 {"AddCommandOverride", AddCommandOverride},
204 {"GetCommandOverride", GetCommandOverride},
205 {"UnsetCommandOverride", UnsetCommandOverride},
206 {"CreateAdmGroup", CreateAdmGroup},
207 {"FindAdmGroup", FindAdmGroup},
208 {"SetAdmGroupAddFlag", SetAdmGroupAddFlag},
209 {"GetAdmGroupAddFlag", GetAdmGroupAddFlag},
210 {"SetAdmGroupImmunity", SetAdmGroupImmunity},
211 {"GetAdmGroupImmunity", GetAdmGroupImmunity},
212 {"SetAdmGroupImmuneFrom", SetAdmGroupImmuneFrom},
213 {"GetAdmGroupImmuneFrom", GetAdmGroupImmuneFrom},
214 {"GetAdmGroupImmuneCount", GetAdmGroupImmuneCount},
215 {"AddAdmGroupCmdOverride", AddAdmGroupCmdOverride},
216 {"GetAdmGroupCmdOverride", GetAdmGroupCmdOverride},
217 {"GetAdmGroupAddFlagBits", GetAdmGroupAddFlagBits},