|
dvander@370
|
1 |
/** |
|
dvander@370
|
2 |
* =============================================================== |
|
dvander@370
|
3 |
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. |
|
dvander@370
|
4 |
* =============================================================== |
|
dvander@370
|
5 |
* |
|
dvander@370
|
6 |
* This file is not open source and may not be copied without explicit |
|
dvander@370
|
7 |
* written permission of AlliedModders LLC. This file may not be redistributed |
|
dvander@370
|
8 |
* in whole or significant part. |
|
dvander@370
|
9 |
* For information, see LICENSE.txt or http://www.sourcemod.net/license.php |
|
dvander@370
|
10 |
* |
|
dvander@370
|
11 |
* Version: $Id$ |
|
dvander@370
|
12 |
*/ |
|
dvander@370
|
13 |
|
|
dvander@337
|
14 |
#include "sm_globals.h" |
|
dvander@337
|
15 |
#include "AdminCache.h" |
|
dvander@337
|
16 |
#include "ForwardSys.h" |
|
dvander@337
|
17 |
|
|
dvander@337
|
18 |
static cell_t DumpAdminCache(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
19 |
{ |
|
dvander@337
|
20 |
g_Admins.DumpAdminCache(params[1], (params[2] == 1) ? true : false); |
|
dvander@337
|
21 |
return 1; |
|
dvander@337
|
22 |
} |
|
dvander@337
|
23 |
|
|
dvander@337
|
24 |
static cell_t AddCommandOverride(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
25 |
{ |
|
dvander@337
|
26 |
char *str; |
|
dvander@337
|
27 |
|
|
dvander@337
|
28 |
pContext->LocalToString(params[1], &str); |
|
dvander@337
|
29 |
g_Admins.AddCommandOverride(str, (OverrideType)params[2], (AdminFlag)params[3]); |
|
dvander@337
|
30 |
|
|
dvander@337
|
31 |
return 1; |
|
dvander@337
|
32 |
} |
|
dvander@337
|
33 |
|
|
dvander@337
|
34 |
static cell_t GetCommandOverride(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
35 |
{ |
|
dvander@337
|
36 |
char *cmd; |
|
dvander@337
|
37 |
AdminFlag flag; |
|
dvander@337
|
38 |
|
|
dvander@337
|
39 |
pContext->LocalToString(params[1], &cmd); |
|
dvander@337
|
40 |
|
|
dvander@337
|
41 |
if (!g_Admins.GetCommandOverride(cmd, (OverrideType)params[2], &flag)) |
|
dvander@337
|
42 |
{ |
|
dvander@337
|
43 |
return 0; |
|
dvander@337
|
44 |
} |
|
dvander@337
|
45 |
|
|
dvander@337
|
46 |
cell_t *addr; |
|
dvander@337
|
47 |
pContext->LocalToPhysAddr(params[3], &addr); |
|
dvander@337
|
48 |
|
|
dvander@337
|
49 |
*addr = (cell_t)flag; |
|
dvander@337
|
50 |
|
|
dvander@337
|
51 |
return 1; |
|
dvander@337
|
52 |
} |
|
dvander@337
|
53 |
|
|
dvander@337
|
54 |
static cell_t UnsetCommandOverride(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
55 |
{ |
|
dvander@337
|
56 |
char *cmd; |
|
dvander@337
|
57 |
|
|
dvander@337
|
58 |
pContext->LocalToString(params[1], &cmd); |
|
dvander@337
|
59 |
|
|
dvander@337
|
60 |
g_Admins.UnsetCommandOverride(cmd, (OverrideType)params[2]); |
|
dvander@337
|
61 |
|
|
dvander@337
|
62 |
return 1; |
|
dvander@337
|
63 |
} |
|
dvander@337
|
64 |
|
|
dvander@337
|
65 |
static cell_t CreateAdmGroup(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
66 |
{ |
|
dvander@337
|
67 |
char *str; |
|
dvander@337
|
68 |
|
|
dvander@337
|
69 |
pContext->LocalToString(params[1], &str); |
|
dvander@337
|
70 |
|
|
dvander@337
|
71 |
return g_Admins.AddGroup(str); |
|
dvander@337
|
72 |
} |
|
dvander@337
|
73 |
|
|
dvander@337
|
74 |
static cell_t FindAdmGroup(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
75 |
{ |
|
dvander@337
|
76 |
char *str; |
|
dvander@337
|
77 |
|
|
dvander@337
|
78 |
pContext->LocalToString(params[1], &str); |
|
dvander@337
|
79 |
|
|
dvander@337
|
80 |
return g_Admins.FindGroupByName(str); |
|
dvander@337
|
81 |
} |
|
dvander@337
|
82 |
|
|
dvander@337
|
83 |
static cell_t SetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
84 |
{ |
|
dvander@337
|
85 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
86 |
AdminFlag flag = (AdminFlag)params[2]; |
|
dvander@337
|
87 |
bool enabled = params[3] ? 1 : 0; |
|
dvander@337
|
88 |
|
|
dvander@337
|
89 |
g_Admins.SetGroupAddFlag(id, flag, enabled); |
|
dvander@337
|
90 |
|
|
dvander@337
|
91 |
return 1; |
|
dvander@337
|
92 |
} |
|
dvander@337
|
93 |
|
|
dvander@337
|
94 |
static cell_t GetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
95 |
{ |
|
dvander@337
|
96 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
97 |
AdminFlag flag = (AdminFlag)params[2]; |
|
dvander@337
|
98 |
|
|
dvander@337
|
99 |
return g_Admins.GetGroupAddFlag(id, flag) ? 1 : 0; |
|
dvander@337
|
100 |
} |
|
dvander@337
|
101 |
|
|
dvander@337
|
102 |
static cell_t SetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
103 |
{ |
|
dvander@337
|
104 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
105 |
ImmunityType type = (ImmunityType)params[2]; |
|
dvander@337
|
106 |
bool enabled = params[3] ? 1 : 0; |
|
dvander@337
|
107 |
|
|
dvander@337
|
108 |
g_Admins.SetGroupGenericImmunity(id, type, enabled); |
|
dvander@337
|
109 |
|
|
dvander@337
|
110 |
return 1; |
|
dvander@337
|
111 |
} |
|
dvander@337
|
112 |
|
|
dvander@337
|
113 |
static cell_t GetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
114 |
{ |
|
dvander@337
|
115 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
116 |
ImmunityType type = (ImmunityType)params[2]; |
|
dvander@337
|
117 |
|
|
dvander@337
|
118 |
return g_Admins.GetGroupGenericImmunity(id, type) ? 1 : 0; |
|
dvander@337
|
119 |
} |
|
dvander@337
|
120 |
|
|
dvander@337
|
121 |
static cell_t SetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
122 |
{ |
|
dvander@337
|
123 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
124 |
GroupId other_id = (GroupId)params[2]; |
|
dvander@337
|
125 |
|
|
dvander@337
|
126 |
g_Admins.AddGroupImmunity(id, other_id); |
|
dvander@337
|
127 |
|
|
dvander@337
|
128 |
return 1; |
|
dvander@337
|
129 |
} |
|
dvander@337
|
130 |
|
|
dvander@337
|
131 |
static cell_t GetAdmGroupImmuneCount(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
132 |
{ |
|
dvander@337
|
133 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
134 |
|
|
dvander@337
|
135 |
return g_Admins.GetGroupImmunityCount(id); |
|
dvander@337
|
136 |
} |
|
dvander@337
|
137 |
|
|
dvander@337
|
138 |
static cell_t GetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
139 |
{ |
|
dvander@337
|
140 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
141 |
|
|
dvander@337
|
142 |
return g_Admins.GetGroupImmunity(id, params[2]); |
|
dvander@337
|
143 |
} |
|
dvander@337
|
144 |
|
|
dvander@337
|
145 |
static cell_t AddAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
146 |
{ |
|
dvander@337
|
147 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
148 |
OverrideType type = (OverrideType)params[3]; |
|
dvander@337
|
149 |
OverrideRule rule = (OverrideRule)params[4]; |
|
dvander@337
|
150 |
char *cmd; |
|
dvander@337
|
151 |
|
|
dvander@337
|
152 |
pContext->LocalToString(params[2], &cmd); |
|
dvander@337
|
153 |
|
|
dvander@337
|
154 |
g_Admins.AddGroupCommandOverride(id, cmd, type, rule); |
|
dvander@337
|
155 |
|
|
dvander@337
|
156 |
return 1; |
|
dvander@337
|
157 |
} |
|
dvander@337
|
158 |
|
|
dvander@337
|
159 |
static cell_t GetAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
160 |
{ |
|
dvander@337
|
161 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
162 |
OverrideType type = (OverrideType)params[3]; |
|
dvander@337
|
163 |
OverrideRule rule; |
|
dvander@337
|
164 |
char *cmd; |
|
dvander@337
|
165 |
|
|
dvander@337
|
166 |
pContext->LocalToString(params[2], &cmd); |
|
dvander@337
|
167 |
|
|
dvander@337
|
168 |
if (!g_Admins.GetGroupCommandOverride(id, cmd, type, &rule)) |
|
dvander@337
|
169 |
{ |
|
dvander@337
|
170 |
return 0; |
|
dvander@337
|
171 |
} |
|
dvander@337
|
172 |
|
|
dvander@337
|
173 |
cell_t *addr; |
|
dvander@337
|
174 |
pContext->LocalToPhysAddr(params[4], &addr); |
|
dvander@337
|
175 |
*addr = (cell_t)rule; |
|
dvander@337
|
176 |
|
|
dvander@337
|
177 |
return 1; |
|
dvander@337
|
178 |
} |
|
dvander@337
|
179 |
|
|
dvander@337
|
180 |
static cell_t GetAdmGroupAddFlagBits(IPluginContext *pContext, const cell_t *params) |
|
dvander@337
|
181 |
{ |
|
dvander@337
|
182 |
GroupId id = (GroupId)params[1]; |
|
dvander@337
|
183 |
bool flags[AdminFlags_TOTAL]; |
|
dvander@337
|
184 |
unsigned int num = g_Admins.GetGroupAddFlagBits(id, flags, AdminFlags_TOTAL); |
|
dvander@337
|
185 |
unsigned int i; |
|
dvander@337
|
186 |
|
|
dvander@337
|
187 |
cell_t *addr; |
|
dvander@337
|
188 |
pContext->LocalToPhysAddr(params[2], &addr); |
|
dvander@337
|
189 |
|
|
dvander@337
|
190 |
for (i=0; |
|
dvander@337
|
191 |
i < num && i < (unsigned int)params[3]; |
|
dvander@337
|
192 |
i++) |
|
dvander@337
|
193 |
{ |
|
dvander@337
|
194 |
addr[i] = flags[i] ? 1 : 0; |
|
dvander@337
|
195 |
} |
|
dvander@337
|
196 |
|
|
dvander@337
|
197 |
return i; |
|
dvander@337
|
198 |
} |
|
dvander@337
|
199 |
|
|
dvander@337
|
200 |
REGISTER_NATIVES(adminNatives) |
|
dvander@337
|
201 |
{ |
|
dvander@337
|
202 |
{"DumpAdminCache", DumpAdminCache}, |
|
dvander@337
|
203 |
{"AddCommandOverride", AddCommandOverride}, |
|
dvander@337
|
204 |
{"GetCommandOverride", GetCommandOverride}, |
|
dvander@337
|
205 |
{"UnsetCommandOverride", UnsetCommandOverride}, |
|
dvander@337
|
206 |
{"CreateAdmGroup", CreateAdmGroup}, |
|
dvander@337
|
207 |
{"FindAdmGroup", FindAdmGroup}, |
|
dvander@337
|
208 |
{"SetAdmGroupAddFlag", SetAdmGroupAddFlag}, |
|
dvander@337
|
209 |
{"GetAdmGroupAddFlag", GetAdmGroupAddFlag}, |
|
dvander@337
|
210 |
{"SetAdmGroupImmunity", SetAdmGroupImmunity}, |
|
dvander@337
|
211 |
{"GetAdmGroupImmunity", GetAdmGroupImmunity}, |
|
dvander@337
|
212 |
{"SetAdmGroupImmuneFrom", SetAdmGroupImmuneFrom}, |
|
dvander@337
|
213 |
{"GetAdmGroupImmuneFrom", GetAdmGroupImmuneFrom}, |
|
dvander@337
|
214 |
{"GetAdmGroupImmuneCount", GetAdmGroupImmuneCount}, |
|
dvander@337
|
215 |
{"AddAdmGroupCmdOverride", AddAdmGroupCmdOverride}, |
|
dvander@337
|
216 |
{"GetAdmGroupCmdOverride", GetAdmGroupCmdOverride}, |
|
dvander@337
|
217 |
{"GetAdmGroupAddFlagBits", GetAdmGroupAddFlagBits}, |
|
dvander@337
|
218 |
{NULL, NULL}, |
|
dvander@337
|
219 |
}; |