golandec писал(а): Объясню по подробнее, плагин должен служить тому когда сервер заполнен чтобы перенаправлял игроков на другой сервер
Модератор: Leonidddd
Fedcomp писал(а):RevCrew, Жду финальную версию плагина и после этого переведу в утвержденные. Когда определишься с финальной версией прикрепи .sma в первое сообщение.
Metral писал(а):Shel, зачем кикать человека, если можно просто заблокировать ему респаун?
#include <amxmodx>
// Закоментируйте, если не хотите чтобы в чат писалось сообщение
#define CHAT_MSG
#if defined CHAT_MSG
#include <ColorChat>
#endif
static const PLUGIN[] = "Anti Recconect"
static const VERSION[] = "1.0"
static const AUTHOR[] = "RevCrew"
#define ADMIN read_flags("s")
#define TIME 15
enum _:TrieType
{
TRIE_TYPE_ID = 0,
TRIE_TYPE_IP,
TRIE_END
}
new Trie: g_trie[TrieType];
enum _:PlayerParam
{
AUTHID[22],
IP[16]
}
public plugin_init()
{
register_plugin(PLUGIN,VERSION,AUTHOR);
for(new i; i < TRIE_END; i++)
g_trie[i] = TrieCreate();
}
public plugin_end()
{
for(new i; i < TrieType; i++)
TrieDestroy(g_trie[i])
}
public client_authorized(id)
{
new player[PlayerParam], time = 0;
get_user_authid(id, player[AUTHID], charsmax(player[AUTHID]));
get_user_ip(id, player[IP], charsmax(player[IP]), 1);
new name[32];
get_user_name(id, name, charsmax(name))
for(new i; i<TRIE_END; i++)
if(TrieGetCell(g_trie[i], player[i], time))
if(time - get_systime(0) > 0)
{
server_cmd("kick #%d ^" Anti Recconect (%d seconds left) ^"", get_user_userid(id),time - get_systime(0));
#if defined CHAT_MSG
client_print_color(0, RED, "^1[^3BlockRec^1] Player ^4%s^1 kicked. Reason: ^3Anti Reconnect", name);
#endif
client_cmd(id,"spk buttons/blip1.wav")
break;
}
else
TrieDeleteKey(g_trie[i], player[i])
}
public client_disconnect(id)
{
if(get_user_flags(id) & ADMIN)
return;
new player[PlayerParam]
get_user_authid(id, player[AUTHID], charsmax(player[AUTHID]));
get_user_ip(id, player[IP], charsmax(player[IP]), 1);
for(new i; i < TRIE_END; i++)
TrieSetCell(g_trie[i], player[i], get_systime(0) + TIME);
}
RevCrew писал(а):Собственно появилась проблема. При использовании CHAT_MSG, если перезаходить на сервер постоянно, то сервер крашится. Скиньте нормальный ColorCHat от темы
stock ChatColor(const id, const input[], any:...){
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color
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();
}
}
}
}
#include <amxmodx>
//#define CHAT_MSG
#if defined CHAT_MSG
#include <ColorChat>
#endif
static const PLUGIN[] = "Anti Recconect"
static const VERSION[] = "1.2"
static const AUTHOR[] = "RevCrew"
#define ADMIN read_flags("s")
#define TIME 15
enum
{
DETECT_TYPE_ID = 0,
DETECT_TYPE_IP
}
// Detect Type
new const DETECT_TYPE = DETECT_TYPE_IP
new Trie: g_trie;
public plugin_init()
{
register_plugin(PLUGIN,VERSION,AUTHOR);
g_trie = TrieCreate();
}
public plugin_end()
{
TrieDestroy(g_trie)
}
public client_authorized(id)
{
new Uid[26], time = 0;
if(DETECT_TYPE == DETECT_TYPE_IP)
get_user_ip(id, Uid, charsmax(Uid), 1);
else
get_user_authid(id, Uid, charsmax(Uid));
new name[32];
get_user_name(id, name, charsmax(name))
if( TrieGetCell(g_trie, Uid, time))
{
if(time - get_systime(0) > 0)
{
server_cmd("kick #%d ^" Anti Recconect (%d seconds left) ^"", get_user_userid(id),time - get_systime(0));
#if defined CHAT_MSG
client_print_color(0, RED, "^1[^3BlockRec^1] Player ^4%s^1 (^3%s^1) kicked. Reason: ^3Anti Reconnect", name, Uid);
client_cmd(id,"spk buttons/blip1.wav")
#endif
return;
}
TrieDeleteKey(g_trie, Uid);
}
}
public client_disconnect(id)
{
if(get_user_flags(id) & ADMIN)
return;
new Uid[26];
if(DETECT_TYPE == DETECT_TYPE_IP)
get_user_ip(id, Uid, charsmax(Uid), 1);
else
get_user_authid(id, Uid, charsmax(Uid));
TrieSetCell(g_trie, Uid, get_systime(0) + TIME);
}
Вернуться в Утвержденные плагины
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8