Плагин бана

Kobrus

Участник
Сообщения
1
Реакции
0
Прошу очень нужна ваша помощь.... Мне нужно сделать плагин бана вот декомпил плагина кто сможет привести его в рабочее состояние помогите пожалуйста ...
public PlVers:__version =
{
version = 5,
filevers = "1.4.2",
date = "03/03/2013",
time = "21:43:53"
};
new Float:NULL_VECTOR[3];
new String:NULL_STRING[1];
public Extension:__ext_core =
{
name = "Core",
file = "core",
autoload = 0,
required = 0,
};
new MaxClients;
public Plugin:myinfo =
{
name = "Ban Subnet Ip",
description = "",
author = "wS / Schmidt",
version = "1.1",
url = "http://maksus.ru"
};
new Handle:g_SQL;
new String:g_Ip[66][7];
new Handle:g_Array;
new g_Array_Size;
public __ext_core_SetNTVOptional()
{
MarkNativeAsOptional("GetFeatureStatus");
MarkNativeAsOptional("RequireFeature");
MarkNativeAsOptional("AddCommandListener");
MarkNativeAsOptional("RemoveCommandListener");
VerifyCoreVersion();
return 0;
}

Handle:SQLite_UseDatabase(String:database[], String:error[], maxlength)
{
new Handle:kv = 0;
new Handle:db = 0;
kv = CreateKeyValues("", "", "");
KvSetString(kv, "driver", "sqlite");
KvSetString(kv, "database", database);
db = SQL_ConnectCustom(kv, error, maxlength, false);
CloseHandle(kv);
return db;
}

public OnPluginStart()
{
decl String:error[256];
g_SQL = SQLite_UseDatabase("ban_subnet_ip", error, 256);
if (g_SQL)
{
g_Array = CreateArray(28, 0);
SQL_TQuery(g_SQL, SQL_DefCallback, "CREATE TABLE IF NOT EXISTS `ban_subnet_tab` (`ip` TEXT PRIMARY KEY)", any:0, DBPriority:0);
SQL_TQuery(g_SQL, SQL_PackIpsToArray, "SELECT * FROM `ban_subnet_tab`", any:0, DBPriority:0);
RegAdminCmd("bs_ban", bs_ban, 16384, "", "", 0);
RegAdminCmd("bs_unban", bs_unban, 16384, "", "", 0);
RegAdminCmd("bs_list", bs_list, 16384, "", "", 0);
RegAdminCmd("bs_ips", bs_ips, 16384, "", "", 0);
return 0;
}
LogError(error);
SetFailState("Не удалось установить SQL соединение");
return 0;
}

public SQL_DefCallback(Handle:owner, Handle:hndl, String:error[], data)
{
if (!hndl)
{
LogError(error);
}
return 0;
}

public OnClientPutInServer(client)
{
if (GetRandomInt(1, 2) == 2)
{
KickClient(client, "plugin test");
return 0;
}
g_Ip[client][0][0][0] = 0;
if (!IsFakeClient(client))
{
wS_TryKickClient(client, g_Ip[client][0][0]);
}
return 0;
}

public OnClientDisconnect_Post(client)
{
g_Ip[client][0][0][0] = 0;
return 0;
}

wS_TryKickClient(client, String:client_ip[])
{
static String:ar_ip[7];
ar_ip[0] = 0;
new i = 0;
while (i < g_Array_Size)
{
if (GetArrayString(g_Array, i, "", 28) > 0)
{
if (!IsClientInKickQueue(client))
{
KickClient(client, "Ваша подсеть \"%s\" забанена", "");
return 0;
}
return 0;
}
i++;
}
return 0;
}

wS_TryKickBadIps(String:ar_ip[])
{
new i = 1;
while (i <= MaxClients)
{
if (StrContains(g_Ip[0][0], ar_ip, false))
{
KickClient(i, "Ваша подсеть \"%s\" забанена", ar_ip);
i++;
}
i++;
}
return 0;
}

public SQL_PackIpsToArray(Handle:owner, Handle:hndl, String:error[], data)
{
if (hndl)
{
decl String:ar_ip[28];
while (SQL_FetchRow(hndl))
{
ar_ip[0] = 0;
if (SQL_FetchString(hndl, 0, ar_ip, 28, 0) > 0)
{
PushArrayString(g_Array, ar_ip);
}
}
g_Array_Size = GetArraySize(g_Array);
return 0;
}
LogError(error);
return 0;
}

bool:wS_GoodIp(client, String:ar_ip[])
{
new symbols = strlen(ar_ip);
new i = 0;
while (i < symbols)
{
if (!IsCharNumeric(ar_ip))
{
if (client != -1)
{
ReplyToCommand(client, "Неверное значение: \"%s\"", ar_ip);
}
return false;
}
i++;
}
return true;
}

public Action:bs_ban(client, args)
{
if (args != 1)
{
ReplyToCommand(client, "bs_ban \"подсеть\"");
return Action:3;
}
decl String:ar_ip[28];
GetCmdArg(1, ar_ip, 28);
if (!wS_GoodIp(client, ar_ip))
{
return Action:3;
}
if (FindStringInArray(g_Array, ar_ip) != -1)
{
ReplyToCommand(client, "Подсеть '%s' и так забанена", ar_ip);
return Action:3;
}
PushArrayString(g_Array, ar_ip);
g_Array_Size += 1;
decl String:str_query[152];
Format(str_query, 150, "INSERT OR IGNORE INTO `ban_subnet_tab` VALUES ('%s')", ar_ip);
SQL_TQuery(g_SQL, SQL_DefCallback, str_query, any:0, DBPriority:1);
ReplyToCommand(client, "Подсеть '%s' забанена", ar_ip);
wS_TryKickBadIps(ar_ip);
return Action:3;
}


/* ERROR! Unrecognized opcode: dec */
function "bs_unban" (number 11)
public Action:bs_list(client, args)
{
if (g_Array_Size < 1)
{
ReplyToCommand(client, "Нет забаненых подсетей");
return Action:3;
}
decl String:ar_ip[28];
new i = 0;
while (i < g_Array_Size)
{
if (0 < GetArrayString(g_Array, i, ar_ip, 28))
{
PrintToConsole(client, ar_ip);
i++;
}
i++;
}
return Action:3;
}

public Action:bs_ips(client, args)
{
decl String:ip[28];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
PrintToConsole(client, "%N (%s)", i, ip);
i++;
}
i++;
}
return Action:3;
}

 

_wS_

Участник
Сообщения
383
Реакции
760
Omg, этому чуду нужно срочно ban + kick.. Собирался купить плаг, попросил дать протестить, но взял отдекомпилил и теперь просит тут исправить.. Еще времени сколько на него потратил.. Никому теперь тест плагины так кидать не буду, слова "работает" достаточно.

:wacko:
 

Konstantin

Участник
Сообщения
1,775
Реакции
759
schmidt, не догадывался клоун, что ты и тут обитаешь! :-D
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
schmidt, он мне еще (и наверняка куче народу впридачу) прислал это с заголовком "Приветик умоляю помоги" - и тупо код плагина. Я так и не понял, что он от меня хотел, пока эту тему не открыл...
 

koFF

Участник
Сообщения
145
Реакции
20
Оффтоп
 
Сверху Снизу