Русское сообщество по скриптингу

FakeIP

Утвержденные плагины для AMX Mod X администратором/модератором форума.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только работоспособных плагинов для AMX Mod X. Новые плагины нужно выкладывать в разделе "Новые плагины".

Re: FakeIP

Сообщение RevCrew » 05 мар 2016, 21:18

RevCrew писал(а):
//why static?

why not?

Код: Выделить всё
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <ColorChat>

#define PLUGIN "FakeIP"
#define VERSION "1.0"
#define AUTHOR "RevCrew"

const MAX_IP_FAKES = 4
const TIME = 1440
const IP_SIZE = 18 // Lyshe bol'she 4em men'she

new const PREFIX[] = "FakeIP"

new Trie:g_trie;

#define LOG_FILE "addons/amxmodx/logs/FakeIP.log"

public plugin_init() {
 
   register_plugin(PLUGIN, VERSION, AUTHOR)
   g_trie = TrieCreate();
}
public plugin_end()
   TrieDestroy(g_trie);

public client_connect(id)
{
   static ip[IP_SIZE]; get_user_ip(id, ip, sizeof(ip) - 1, .without_port=1)
   
   new cell = 1;
   if(TrieGetCell(g_trie, ip, cell))
   {
      cell ++;
      
      if(cell >MAX_IP_FAKES)
      {
         client_disconnect(id);
         client_print_color(0, RED, "^1[^3%s^1] IP [^3%s^1] banned for [^3%d^1] | Reason: [^4Limit IP Reached^1]",PREFIX, ip, TIME)
         log_to_file(LOG_FILE,"[%s] IP %s banned for %d.",PREFIX, ip, TIME)
         server_cmd("addip %d %s; wait;wait; writeip",TIME, ip)
         
         return;
      }
      
      TrieDeleteKey(g_trie, ip);
   }
   
   TrieSetCell(g_trie, ip, cell);
}

public client_disconnect(id)
{
   static ip[IP_SIZE]; get_user_ip(id, ip, sizeof(ip) - 1, .without_port=1);
   static cell
   if(TrieGetCell(g_trie, ip, cell))
   {
      cell --;
      TrieDeleteKey(g_trie, ip);
      
      if(cell < 1)
         return;
   }
   TrieSetCell(g_trie, ip, cell);
}


Добавлено спустя 40 секунд:
на самом деле Темыч сказал что static быстрее работают) :yahoo:


пробуй такой код
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: FakeIP

Сообщение RevCrew » 07 мар 2016, 00:17

все проверил, багов нет
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: FakeIP

Сообщение Fedcomp » 07 мар 2016, 11:59

Так какой вариант финальный?
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 815 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: FakeIP

Сообщение RevCrew » 07 мар 2016, 13:18

Fedcomp, вот

Код: Выделить всё
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <ColorChat>

#define PLUGIN "FakeIP"
#define VERSION "1.0"
#define AUTHOR "RevCrew"

const MAX_IP_FAKES = 4
const TIME = 1440
const IP_SIZE = 18 // Lyshe bol'she 4em men'she

new const PREFIX[] = "FakeIP"

new Trie:g_trie;

#define LOG_FILE "addons/amxmodx/logs/FakeIP.log"

// Debug on\Off
//#define DEBUG

#if defined DEBUG
   #define PRINT server_print
#endif

public plugin_init() {
 
   register_plugin(PLUGIN, VERSION, AUTHOR)
   g_trie = TrieCreate();
}
public plugin_end()
   TrieDestroy(g_trie);

public client_connect(id)
{
   static ip[IP_SIZE]; get_user_ip(id, ip, sizeof(ip) - 1, .without_port=1)
   
   new cell = 1;
   if(TrieGetCell(g_trie, ip, cell))
   {
      if(++cell >MAX_IP_FAKES)
      {
         client_disconnect(id);
         client_print_color(0, RED, "^1[^3%s^1] IP [^3%s^1] banned for [^3%d^1] | Reason: [^4Limit IP Reached^1]",PREFIX, ip, TIME)
         log_amx("[%s] IP %s banned for %d.",PREFIX, ip, TIME)
         server_cmd("addip %d %s; wait;wait; writeip",TIME, ip)
         
         
         
         return;
      }
      
      TrieDeleteKey(g_trie, ip);
   }
   
   #if defined DEBUG
      PRINT("[CON] IP [%s] CELL [%d]", ip,cell)
   #endif
   
   TrieSetCell(g_trie, ip, cell);
}

public client_disconnect(id)
{
   static ip[IP_SIZE]; get_user_ip(id, ip, sizeof(ip) - 1, .without_port=1);
   static cell
   if(TrieGetCell(g_trie, ip, cell))
   {
      TrieDeleteKey(g_trie, ip);
      
      if(--cell < 1)
         return;
   }
   
   #if defined DEBUG
      PRINT("[DISC] IP [%s] CELL [%d]", ip,cell)
   #endif
   TrieSetCell(g_trie, ip, cell);
}
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Пред.

Вернуться в Утвержденные плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5