Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <httpx>
//#define USE_ADDIP_CMD
#define IP_LENGTH 16
#if !defined PLATFORM_MAX_PATH
#define PLATFORM_MAX_PATH 256
#endif
new g_szDataDir[PLATFORM_MAX_PATH];
new g_hVault = INVALID_HANDLE;
public plugin_init()
{
register_plugin("Proxy/VPN check", "2", "s7amb370");
register_concmd("proxy_acceptip", "cmdAcceptIP", ADMIN_LEVEL_G, "<ip_address>")
register_concmd("proxy_denyip", "cmdDenyIP", ADMIN_LEVEL_G, "<ip_address>")
}
public cmdDenyIP(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new szIP[32];
read_argv(1, szIP, charsmax(szIP))
#if defined USE_ADDIP_CMD
new data = nvault_get(g_hVault, szIP);
if(data && data == 2)
{
server_cmd("addip ^"%s^";writeip", szIp)
console_print(id, "[ProxyCheck] %s was added to banlist.", szIP);
}
#endif
console_print(id, "[ProxyCheck] %s is now blacklisted.", szIP);
nvault_set(g_hVault, szIP, "1");
return PLUGIN_HANDLED;
}
public cmdAcceptIP(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new szIP[32];
read_argv(1, szIP, charsmax(szIP))
#if defined USE_ADDIP_CMD
new data = nvault_get(g_hVault, szIP);
if(data && data == 1)
{
server_cmd("removeip ^"%s^";writeip", szIp)
console_print(id, "[ProxyCheck] %s was removed from banlist.", szIP);
}
#endif
console_print(id, "[ProxyCheck] %s is now whitelisted.", szIP);
nvault_set(g_hVault, szIP, "2");
return PLUGIN_HANDLED;
}
public plugin_cfg() {
g_hVault = nvault_open("proxycheck");
if(g_hVault == INVALID_HANDLE) {
set_fail_state("Error opening nVault!");
return;
}
get_localinfo("amxx_datadir", g_szDataDir, charsmax(g_szDataDir));
add(g_szDataDir, charsmax(g_szDataDir), "/proxycheck");
if(!dir_exists(g_szDataDir)) {
mkdir(g_szDataDir);
}
}
public client_putinserver(id) {
if(is_user_bot(id) || is_user_hltv(id) || get_user_flags(id) & ADMIN_LEVEL_D) {
return;
}
new szIP[IP_LENGTH];
get_user_ip(id, szIP, charsmax(szIP), .without_port = 1);
if(equal(szIP, "loopback")) {
return;
}
else {
new szIPcopy[IP_LENGTH];
copy(szIPcopy, charsmax(szIPcopy), szIP);
replace_all(szIPcopy, charsmax(szIPcopy), ".", " ");
new szFields[4][4];
parse(szIPcopy, szFields[0], charsmax(szFields[]),
szFields[1], charsmax(szFields[]),
szFields[2], charsmax(szFields[]),
szFields[3], charsmax(szFields[]));
new address = (str_to_num(szFields[0]) << 24) |
(str_to_num(szFields[1]) << 16) |
(str_to_num(szFields[2]) << 8) |
(str_to_num(szFields[3]));
// Ignore private IPv4 address spaces
if((address & 0xFF000000) == 0x0A000000 || //10.0.0.0/8
(address & 0xFFF00000) == 0xAC100000 || //172.16.0.0/12
(address & 0xFFFF0000) == 0xC0A80000) //192.168.0.0/16
{
return;
}
}
new data = nvault_get(g_hVault, szIP);
if(data) {
if(data == 1) {
punish_player(id);
}
return;
}
new szFile[PLATFORM_MAX_PATH];
formatex(szFile, charsmax(szFile), "%s/check_%s.txt", g_szDataDir, szIP);
if(!file_exists(szFile)) {
new szRequest[68];
formatex(szRequest, charsmax(szRequest), "http://proxy.mind-media.com/block/proxycheck.php?ip=%s", szIP);
HTTPX_Download(szRequest, szFile, "DownloadComplete", _, _, REQUEST_GET);
}
}
public DownloadComplete(const download, const error) {
new szFile[PLATFORM_MAX_PATH];
HTTPX_GetFilename(download, szFile, charsmax(szFile));
if(!error) {
new file = fopen(szFile, "r");
if(file) {
new data[2];
fgets(file, data, charsmax(data));
if(data[0] == 'Y' || data[0] == 'N') {
new pos_start = strfind(szFile, "check_", false, strlen(g_szDataDir));
new pos_end = (pos_start == -1) ? -1 : strfind(szFile, ".txt", false, (pos_start += 6));
if(pos_end != -1) {
new szIP[IP_LENGTH];
add(szIP, charsmax(szIP), szFile[pos_start], pos_end - pos_start);
if(data[0] == 'Y') {
new id = find_player("d", szIP);
if(id) {
punish_player(id);
}
nvault_set(g_hVault, szIP, "1");
#if defined USE_ADDIP_CMD
server_cmd("addip 0 %s;wait;writeip", szIP);
#endif
}
else {
nvault_set(g_hVault, szIP, "2");
}
}
}
fclose(file);
}
}
delete_file(szFile);
}
punish_player(id) {
server_cmd("kick #%d ^"Proxy&VPN not allowed here for unregistered players! Register^"", get_user_userid(id));
}
Дори и да ти се добави кода, който искаш няма пак да работи плъгина напротив няма да се компилира, затова ползвай този код, който ти предоставих там я има въпросната функция