1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/core/smn_admin.cpp Thu Jan 25 00:17:32 2007 +0000
1.3 @@ -0,0 +1,206 @@
1.4 +#include "sm_globals.h"
1.5 +#include "AdminCache.h"
1.6 +#include "ForwardSys.h"
1.7 +
1.8 +static cell_t DumpAdminCache(IPluginContext *pContext, const cell_t *params)
1.9 +{
1.10 + g_Admins.DumpAdminCache(params[1], (params[2] == 1) ? true : false);
1.11 + return 1;
1.12 +}
1.13 +
1.14 +static cell_t AddCommandOverride(IPluginContext *pContext, const cell_t *params)
1.15 +{
1.16 + char *str;
1.17 +
1.18 + pContext->LocalToString(params[1], &str);
1.19 + g_Admins.AddCommandOverride(str, (OverrideType)params[2], (AdminFlag)params[3]);
1.20 +
1.21 + return 1;
1.22 +}
1.23 +
1.24 +static cell_t GetCommandOverride(IPluginContext *pContext, const cell_t *params)
1.25 +{
1.26 + char *cmd;
1.27 + AdminFlag flag;
1.28 +
1.29 + pContext->LocalToString(params[1], &cmd);
1.30 +
1.31 + if (!g_Admins.GetCommandOverride(cmd, (OverrideType)params[2], &flag))
1.32 + {
1.33 + return 0;
1.34 + }
1.35 +
1.36 + cell_t *addr;
1.37 + pContext->LocalToPhysAddr(params[3], &addr);
1.38 +
1.39 + *addr = (cell_t)flag;
1.40 +
1.41 + return 1;
1.42 +}
1.43 +
1.44 +static cell_t UnsetCommandOverride(IPluginContext *pContext, const cell_t *params)
1.45 +{
1.46 + char *cmd;
1.47 +
1.48 + pContext->LocalToString(params[1], &cmd);
1.49 +
1.50 + g_Admins.UnsetCommandOverride(cmd, (OverrideType)params[2]);
1.51 +
1.52 + return 1;
1.53 +}
1.54 +
1.55 +static cell_t CreateAdmGroup(IPluginContext *pContext, const cell_t *params)
1.56 +{
1.57 + char *str;
1.58 +
1.59 + pContext->LocalToString(params[1], &str);
1.60 +
1.61 + return g_Admins.AddGroup(str);
1.62 +}
1.63 +
1.64 +static cell_t FindAdmGroup(IPluginContext *pContext, const cell_t *params)
1.65 +{
1.66 + char *str;
1.67 +
1.68 + pContext->LocalToString(params[1], &str);
1.69 +
1.70 + return g_Admins.FindGroupByName(str);
1.71 +}
1.72 +
1.73 +static cell_t SetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params)
1.74 +{
1.75 + GroupId id = (GroupId)params[1];
1.76 + AdminFlag flag = (AdminFlag)params[2];
1.77 + bool enabled = params[3] ? 1 : 0;
1.78 +
1.79 + g_Admins.SetGroupAddFlag(id, flag, enabled);
1.80 +
1.81 + return 1;
1.82 +}
1.83 +
1.84 +static cell_t GetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params)
1.85 +{
1.86 + GroupId id = (GroupId)params[1];
1.87 + AdminFlag flag = (AdminFlag)params[2];
1.88 +
1.89 + return g_Admins.GetGroupAddFlag(id, flag) ? 1 : 0;
1.90 +}
1.91 +
1.92 +static cell_t SetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params)
1.93 +{
1.94 + GroupId id = (GroupId)params[1];
1.95 + ImmunityType type = (ImmunityType)params[2];
1.96 + bool enabled = params[3] ? 1 : 0;
1.97 +
1.98 + g_Admins.SetGroupGenericImmunity(id, type, enabled);
1.99 +
1.100 + return 1;
1.101 +}
1.102 +
1.103 +static cell_t GetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params)
1.104 +{
1.105 + GroupId id = (GroupId)params[1];
1.106 + ImmunityType type = (ImmunityType)params[2];
1.107 +
1.108 + return g_Admins.GetGroupGenericImmunity(id, type) ? 1 : 0;
1.109 +}
1.110 +
1.111 +static cell_t SetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params)
1.112 +{
1.113 + GroupId id = (GroupId)params[1];
1.114 + GroupId other_id = (GroupId)params[2];
1.115 +
1.116 + g_Admins.AddGroupImmunity(id, other_id);
1.117 +
1.118 + return 1;
1.119 +}
1.120 +
1.121 +static cell_t GetAdmGroupImmuneCount(IPluginContext *pContext, const cell_t *params)
1.122 +{
1.123 + GroupId id = (GroupId)params[1];
1.124 +
1.125 + return g_Admins.GetGroupImmunityCount(id);
1.126 +}
1.127 +
1.128 +static cell_t GetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params)
1.129 +{
1.130 + GroupId id = (GroupId)params[1];
1.131 +
1.132 + return g_Admins.GetGroupImmunity(id, params[2]);
1.133 +}
1.134 +
1.135 +static cell_t AddAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *params)
1.136 +{
1.137 + GroupId id = (GroupId)params[1];
1.138 + OverrideType type = (OverrideType)params[3];
1.139 + OverrideRule rule = (OverrideRule)params[4];
1.140 + char *cmd;
1.141 +
1.142 + pContext->LocalToString(params[2], &cmd);
1.143 +
1.144 + g_Admins.AddGroupCommandOverride(id, cmd, type, rule);
1.145 +
1.146 + return 1;
1.147 +}
1.148 +
1.149 +static cell_t GetAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *params)
1.150 +{
1.151 + GroupId id = (GroupId)params[1];
1.152 + OverrideType type = (OverrideType)params[3];
1.153 + OverrideRule rule;
1.154 + char *cmd;
1.155 +
1.156 + pContext->LocalToString(params[2], &cmd);
1.157 +
1.158 + if (!g_Admins.GetGroupCommandOverride(id, cmd, type, &rule))
1.159 + {
1.160 + return 0;
1.161 + }
1.162 +
1.163 + cell_t *addr;
1.164 + pContext->LocalToPhysAddr(params[4], &addr);
1.165 + *addr = (cell_t)rule;
1.166 +
1.167 + return 1;
1.168 +}
1.169 +
1.170 +static cell_t GetAdmGroupAddFlagBits(IPluginContext *pContext, const cell_t *params)
1.171 +{
1.172 + GroupId id = (GroupId)params[1];
1.173 + bool flags[AdminFlags_TOTAL];
1.174 + unsigned int num = g_Admins.GetGroupAddFlagBits(id, flags, AdminFlags_TOTAL);
1.175 + unsigned int i;
1.176 +
1.177 + cell_t *addr;
1.178 + pContext->LocalToPhysAddr(params[2], &addr);
1.179 +
1.180 + for (i=0;
1.181 + i < num && i < (unsigned int)params[3];
1.182 + i++)
1.183 + {
1.184 + addr[i] = flags[i] ? 1 : 0;
1.185 + }
1.186 +
1.187 + return i;
1.188 +}
1.189 +
1.190 +REGISTER_NATIVES(adminNatives)
1.191 +{
1.192 + {"DumpAdminCache", DumpAdminCache},
1.193 + {"AddCommandOverride", AddCommandOverride},
1.194 + {"GetCommandOverride", GetCommandOverride},
1.195 + {"UnsetCommandOverride", UnsetCommandOverride},
1.196 + {"CreateAdmGroup", CreateAdmGroup},
1.197 + {"FindAdmGroup", FindAdmGroup},
1.198 + {"SetAdmGroupAddFlag", SetAdmGroupAddFlag},
1.199 + {"GetAdmGroupAddFlag", GetAdmGroupAddFlag},
1.200 + {"SetAdmGroupImmunity", SetAdmGroupImmunity},
1.201 + {"GetAdmGroupImmunity", GetAdmGroupImmunity},
1.202 + {"SetAdmGroupImmuneFrom", SetAdmGroupImmuneFrom},
1.203 + {"GetAdmGroupImmuneFrom", GetAdmGroupImmuneFrom},
1.204 + {"GetAdmGroupImmuneCount", GetAdmGroupImmuneCount},
1.205 + {"AddAdmGroupCmdOverride", AddAdmGroupCmdOverride},
1.206 + {"GetAdmGroupCmdOverride", GetAdmGroupCmdOverride},
1.207 + {"GetAdmGroupAddFlagBits", GetAdmGroupAddFlagBits},
1.208 + {NULL, NULL},
1.209 +};