Фикс DDos конфига.
|
|
horr0r
|
Дата: Пятница, 25.07.2014, 20:27:22 | Сообщение # 16 |
|
Сообщений: 149
Репутация: 40 [ +/- ]
|
|
Tokami, а какой тогда смысл?) Если антифлудер блочит абсолютно все консольные команды?)
Сообщение отредактировал horr0r - Пятница, 25.07.2014, 20:27:43 |
|
| |
Tokami
|
Дата: Пятница, 25.07.2014, 20:55:32 | Сообщение # 17 |
|
Сообщений: 238
Репутация: 19 [ +/- ]
|
|
horr0r, ксожелению не все есть команда которую не заблочишь лаги проверили они чуть хуже чем от buy но тоже бесят))Добавлено (25.07.2014, 20:45:37) --------------------------------------------- И еще вот кто создатель настоящих лагов кто нашел команду buy и тд)) http://www.youtube.com/user/madzal777 Добавлено (25.07.2014, 20:55:32) --------------------------------------------- Naykon а теперь чисто для тебя вот тебе видио про твой сервер http://www.youtube.com/watch?v=tz_26RthMD0&index=15&list=UUkC5L8N1fonHGQUnvywKu5Q Я уже его испытвал работает на 50% серверах))
|
|
| |
EGOR9514
|
Дата: Суббота, 26.07.2014, 01:48:27 | Сообщение # 18 |
|
Сообщений: 6
Репутация: 0 [ +/- ]
|
|
Короче, плагин кикает, если написать в консоль хотя бы раз buy. :DD
Сообщение отредактировал EGOR9514 - Суббота, 26.07.2014, 01:48:46 |
|
| |
horr0r
|
Дата: Суббота, 26.07.2014, 13:53:42 | Сообщение # 19 |
|
Сообщений: 149
Репутация: 40 [ +/- ]
|
|
EGOR9514, если ты мертвый или в спектаторах, то да. А так, тебе нужно написать buy более 4 раз за 0.1 секунды.
|
|
| |
Meow_1337
|
Дата: Суббота, 26.07.2014, 16:49:28 | Сообщение # 20 |
|
Сообщений: 207
Репутация: 11 [ +/- ]
|
|
а не легче поставить SMAC? Запрещает клиенту писать exec в консоле, как то так.
|
|
| |
horr0r
|
Дата: Суббота, 26.07.2014, 18:01:10 | Сообщение # 21 |
|
Сообщений: 149
Репутация: 40 [ +/- ]
|
|
Meow_1337, какая разница? Если "exec" внутриклиентская команда, ее можно написать еще до захода на сервер.
|
|
| |
KAYF
|
Дата: Понедельник, 28.07.2014, 13:34:52 | Сообщение # 22 |
|
Сообщений: 1
Репутация: 0 [ +/- ]
|
|
horr0r, плагин кикает тех у кого автозакуп стоит. Как сделать что бы не кикало у кого автозакуп. Поставил макс число попыток 10, всё равно кикает.
|
|
| |
Loco
|
Дата: Понедельник, 28.07.2014, 19:53:19 | Сообщение # 23 |
|
Сообщений: 42
Репутация: 0 [ +/- ]
|
|
Насчет buy, bunny_on помогает forlix floodcheck (блочит)
|
|
| |
horr0r
|
Дата: Суббота, 02.08.2014, 05:59:23 | Сообщение # 24 |
|
Сообщений: 149
Репутация: 40 [ +/- ]
|
|
KAYF, завтра пофикшу, если реально найду).
|
|
| |
ALЬTAIR
|
Дата: Суббота, 02.08.2014, 10:02:54 | Сообщение # 25 |
|
Сообщений: 7
Репутация: 0 [ +/- ]
|
|
Зачем изобретать велосипед если можно просто поставить smac_commands!Добавлено (02.08.2014, 10:02:54) --------------------------------------------- Зачем изобретать велосипед если можно просто поставить smac_commands!
|
|
| |
sssw
|
Дата: Суббота, 02.08.2014, 12:08:50 | Сообщение # 26 |
|
Сообщений: 123
Репутация: 14 [ +/- ]
|
|
Вот как я калякал в черновике.
Код #include <sourcemod>
#define MAX_CONVARS 1024 #define MAX_LEGHT 256
new String:map[MAX_CONVAR][MAX_LEGHT+2]; new cursor=0;
AddToMapStrings( String:address, value ) { new leght = strlen(address); strcopy( map[cursor++], leght, address );
map[cursor-1][leght+2] = value; }
public OnPluginStart() { new String:cmdbuffer[256]; new bool:IsCommand = false; new Handle:cursor = FindFirstConCommand(cmdbuffer, 256, IsCommand);
if (cursor == INVALID_HANDLE) return;
do { if (!IsCommand) continue;
new Handle:hConVar = FindConVar(cmdbuffer);
if (hConVar == INVALID_HANDLE) continue;
AddToMapStrings( cmdbuffer, hConVar ); } while( FindNextConComman (cursor, cmdbuffer, 256, IsCommand) );
}
#define MAX_CMD_RULE 10; #define MAX_PEDIOD 4.0
new CmdFrame[MAX_CONVARS]; new Float:LastCall[MAX_CONVARS];
public Action:OnClientCommand(client, args); { decl String:cmd[256];
GetCmdArg(0, cmd, 256);
new Handle:convar = GetConVarHandleFromMap( cmd );
if ( CmdFrame[convar] >= MAX_CMD_RULE ) { KickClient( client, "You're client corupted" ); return Plugin_Handled; }else { CmdFrame[convar]++; new Float:time = GetGameTime(); if (LastCall[convar] > time+MAX_PEDIOD) CmdFrame[convar] = 0; LastCall[convar] = time; } return Plugin_Continue; }
GetConVarHandleFromMap( String:cmd[] ) { for (new i=0;i<=MAX_CONVAR; i++) { if (StrEqua( cmd, map[i] )) { return (map[i][strlen(map[i])]+2); } } }
Можно сделать по шустрей, нужно написать контейнер для строк, перебор это плохо.
Сообщение отредактировал sssw - Суббота, 02.08.2014, 12:14:00 |
|
| |
_wS_
|
Дата: Воскресенье, 03.08.2014, 04:04:03 | Сообщение # 27 |
|
Чет вы сильно усложняете =) Я вот так сделал и норм:
Код new g_CmdCount[MAXPLAYERS + 1]; new Float:g_fLastCmdTime[MAXPLAYERS + 1];
public OnClientConnected(client) { g_CmdCount[client] = 0; g_fLastCmdTime[client] = 0.0; }
public Action:OnClientCommand(client, args) { if (g_CmdCount[client]++ == 0) { g_fLastCmdTime[client] = GetGameTime(); } else if (g_CmdCount[client] > 25) { if ((GetGameTime() - g_fLastCmdTime[client]) < 3.0) { KickClient(client, "bb"); return Plugin_Stop; } g_CmdCount[client] = 0; g_fLastCmdTime[client] = 0.0; } return Plugin_Continue; } Себе сейчас поставлю. 25 и 3.0 уже на свой вкус меняется.
|
|
| |
sssw
|
Дата: Воскресенье, 03.08.2014, 08:53:14 | Сообщение # 28 |
|
Сообщений: 123
Репутация: 14 [ +/- ]
|
|
20 CmdCount * 5 BadPlayers = 100 BadCmdCount; )
|
|
| |
_wS_
|
Дата: Воскресенье, 03.08.2014, 13:15:10 | Сообщение # 29 |
|
Ну так оно же считает отдельно для каждого игрока. Если использовал больше 25 команд, хотя еще не прошло 3 сек, значит парень флудит командами.
|
|
| |
_wS_
|
Дата: Понедельник, 04.08.2014, 17:48:05 | Сообщение # 30 |
|
Эта версия получше (ловит больше команд).
Код #pragma semicolon 1 #include <sourcemod>
new g_CmdCount[MAXPLAYERS + 1]; new Float:g_fFirstCmdTime[MAXPLAYERS + 1];
public OnPluginStart() { AddCommandListener(CommandListener_CallBack); }
public OnClientConnected(client) { g_CmdCount[client] = 0; g_fFirstCmdTime[client] = 0.0; }
public Action:CommandListener_CallBack(client, const String:command[], argc) { if (client < 1) return Plugin_Continue;
if (g_CmdCount[client]++ == 0) { g_fFirstCmdTime[client] = GetGameTime(); } else if (g_CmdCount[client] > 25) { if ((GetGameTime() - g_fFirstCmdTime[client]) < 2.1) { KickClient(client, "=] "); return Plugin_Stop; } g_CmdCount[client] = 0; g_fFirstCmdTime[client] = 0.0; }
return Plugin_Continue; } В тп стима еще написал о проблеме, не знаю в курсе они или нет, ибо все равно от таких защиток пользы мало, т.к. есть команды, которые SM ловить просто не может и 'дос' работает. Надеяться остается на Valve, а пока (уже наверно давно) любой школьник может заставить любой сервер лагать (omg). За v34 молчу, там кошмар наверн вобще
Гости не могут скачивать файлы
|
|
|
| |