AlliedModders Donor
Join Date: Dec 2015
Location: Germany
|
07-25-2016
, 12:52
Re: IP Blocking Easy Plugin?
|
#6
|
Quote:
#include <amxmodx>
#define CHECK_TIME 30 // Timpul in secunde, pentru a tasta captcha in chat. Nu trebuie sa fie mai mic de 15.
#define IMMUNITY_FLAGS ADMIN_IMMUNITY // Jucatorii cu acest flag vor trece peste verificare.
#define DARK_SCREEN // Ecran negru in momentul verificarii. Comentati acest define daca nu aveti nevoie de aceasta optiune.
//#define HLTV_BOT_KICK // Kick HLTV sau Server Bots
//#define BLOCK_VOICE // Blocheaza microfonul, daca nu a trecut verificarea. Atentie nu folositi aceasta optiune daca aveti alte pluginuri care lucreaza cu voicechat
#define CHECK_ALWAYS // Dezactiveaza salvarea datelor intr-un fisier, si verifica clientul la fiecare conectare. Comentati acest define daca nu aveti nevoie de aceasta optiune.
new Captcha[33];
#if defined BLOCK_VOICE
#include <fakemeta>
#define GetBit(%1,%2) (%1 & (1 << (%2 & 31)))
#define SetBit(%1,%2) %1 |= (1 << (%2 & 31))
#define ResetBit(%1,%2) %1 &= ~(1 << (%2 & 31))
new g_bBlockVoice;
#endif
#if !defined CHECK_ALWAYS
new Trie:RealPlayers, f, szName[33][32], szSteamID[33][25], iFile[64];
#endif
#if defined DARK_SCREEN
new mScreenFade;
#endif
public plugin_init()
{
#define VERSION "1.5"
register_plugin("Captcha", VERSION, "Factor");
#if !defined CHECK_ALWAYS
formatex(iFile, charsmax(iFile), "addons/amxmodx/data/[Captcha %s] RealPlayers.ini", VERSION);
RealPlayers = TrieCreate();
new buff[64], g_szName[32], g_szSteamID[25];
f = fopen(iFile, "a+");
if(!f) set_fail_state(iFile);
while(!feof(f))
{
fgets(f, buff, charsmax(buff));
trim(buff);
if(!buff[0] || buff[0] == ';') continue;
parse(buff, g_szName, charsmax(g_szName), g_szSteamID, charsmax(g_szSteamID));
TrieSetString(RealPlayers, g_szName, g_szSteamID);
}
fclose(f);
#endif
register_cvar("Captcha", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
register_clcmd("chooseteam", "ChooseTeam_Hook"), register_clcmd("jointeam", "ChooseTeam_Hook"), register_clcmd("joinclass", "ChooseTeam_Hook"), register_clcmd("menuselect", "ChooseTeam_Hook");
register_clcmd("say", "Say_Hook"), register_clcmd("say_team", "Say_Hook");
#if defined BLOCK_VOICE
register_forward(FM_Voice_SetClientListening, "fwdSetClientListening", false);
#endif
#if defined DARK_SCREEN
mScreenFade = get_user_msgid("ScreenFade");
#endif
}
public Say_Hook(client)
{
if(Captcha[client] != 1)
{
static szMessage[16]; // [7] optimal
read_args(szMessage, 15), remove_quotes(szMessage), trim(szMessage);
if(str_to_num(szMessage) == Captcha[client])
{
Captcha[client] = 1;
remove_task(client);
show_menu(client, 0, "^n", 1);
engclient_cmd(client, "jointeam", "0");
#if !defined CHECK_ALWAYS
TrieSetString(RealPlayers, szName[client], szSteamID[client]);
f = fopen(iFile, "a+");
fprintf(f, "^n^"%s^" ^"%s^"", szName[client], szSteamID[client]);
fclose(f);
#endif
#if defined BLOCK_VOICE
ResetBit(g_bBlockVoice, client);
#endif
#if defined DARK_SCREEN
message_begin(MSG_ONE_UNRELIABLE, mScreenFade, _, client);
write_short(1<<0);
write_short(1<<0);
write_short(1<<1);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(0);
message_end();
#endif
}
else KickPlayer(client);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public client_putinserver(client)
{
#if !defined HLTV_BOT_KICK
if(is_user_bot(client) || is_user_hltv(client)) return;
#endif
#if !defined CHECK_ALWAYS
static Steamid[25];
get_user_name(client, szName[client], charsmax(szName));
get_user_authid(client, szSteamID[client], charsmax(szSteamID));
if(TrieGetString(RealPlayers, szName[client], Steamid, charsmax(Steamid)) && equal(Steamid, szSteamID[client]) || user_with_immunity(client) || is_user_steam(client))
#else
if(user_with_immunity(client) || is_user_steam(client))
#endif
{
Captcha[client] = 1;
return;
}
set_msg_block(114, BLOCK_ONCE), set_msg_block(96, BLOCK_ONCE);
set_task(1.0, "CheckClient", client);
#if defined BLOCK_VOICE
SetBit(g_bBlockVoice, client);
#endif
}
public CheckClient(client)
{
if(float(CHECK_TIME) >= 15.0) set_task(float(CHECK_TIME), "KickPlayer", client);
else set_task(15.0, "KickPlayer", client);
GenerateCaptcha(client);
#if defined DARK_SCREEN
message_begin(MSG_ONE_UNRELIABLE, mScreenFade, _, client);
write_short(1<<0);
write_short(1<<0);
write_short(1<<2);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(255);
message_end();
#endif
}
public client_disconnect(client)
{
Captcha[client] = 0;
remove_task(client);
}
public ChooseTeam_Hook(client)
{
if(Captcha[client] != 1)
{
GenerateCaptcha(client);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public GenerateCaptcha(client)
{
static Text_Menu[156];
Captcha[client] = random_num(1000, 9999);
formatex(Text_Menu, charsmax(Text_Menu), "\r[Captcha]\w Verificare fake players.^nTasteaza \y%d\w in chat pentru a intra pe server.", Captcha[client]);
client_print(client, print_chat, "[Captcha] O noua captcha a fost generata.", VERSION);
show_menu(client, MENU_KEY_0, Text_Menu);
}
public KickPlayer(client) server_cmd("kick ^"#%d^" ^"Nu ai trecut verificarea fake players. Incearca din nou.^"", get_user_userid(client));
#if defined BLOCK_VOICE
public fwdSetClientListening(receiver, sender)
{
if(receiver != sender && GetBit(g_bBlockVoice, sender))
{
engfunc(EngFunc_SetClientListening, receiver, sender, false);
forward_return(FMV_CELL, false);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
#endif
#if !defined CHECK_ALWAYS
public plugin_end() TrieDestroy(RealPlayers);
#endif
bool:user_with_immunity(client)
{
if(get_user_flags(client) & IMMUNITY_FLAGS) return true;
return false;
}
stock is_user_steam(client)
{
static dp_pointer;
if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", client);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? 1 : 0;
}
return 0;
}
|
DONT WORK !
To the second how to edit it ?
Quote:
#include <amxmodx>
new const colors[] =
{
"188.212.104.101",
"connect 188.212.104.101"
}
public plugin_init()
{
register_plugin("Block symbols", "1.0", "SpeeD")
register_clcmd("say","handle_say")
register_clcmd("say_team","handle_say")
}
public handle_say(id)
{
static arg[256]
read_args(arg, charsmax(arg))
remove_quotes(arg)
trim(arg)
for(new i = 0; i < charsmax(colors); i++)
{
if(containi(arg, colors[i]) != -1)
{
ColorMessage(id, "Your message can't be^x04 colored")
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
stock ColorMessage(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
if (id) players[0] = id; else get_players(players , count , "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE , get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
|
Quote:
"188.212.104.101",
"connect 188.212.104.101"
|
?????????
|
|