Примеры Insane Limits - автоматические правила для сервера BF3, BF4, BFH

jadefox

Customer
21 Фев 2018
92
19
45
пытался слепить из нескольких плагинов один так и не вышло. хотел сделать плагин суммирующий и отображающий в чате количество хэдшотов подряд каждого игрока начиная например с пятого. можно ли это реализовать?
 
Запретить дробовики, C-4, RPG и M320 на TDM картах

1) Создайте новый лимит
2) Затем включите его, в графе limit_hide указав Show
3) Дайте любое название созданному лимиту в графе limit_name
4) В графе limit_evaluation укажите OnKill
5) В графе limit_first_check укажите Expression
7) В созданном поле limit_firstcheck_expression добавьте следующий код:
Код:
(Regex.Match(server.Gamemode, @"(?:TeamDeathMatch0)", RegexOptions.IgnoreCase).Success && Regex.Match(kill.Weapon, @"(M320|C4|M224|U_RPG7|Siaga20k|SPAS-12|USAS-12|M26Mass|M1014|jackhammer|DAO-12|870MCS|)", RegexOptions.IgnoreCase).Success)
Код:
(Regex.Match(server.Gamemode, @"(?:TeamDeathMatch0)", RegexOptions.IgnoreCase).Success && Regex.Match(kill.Weapon, @"(U_M320|U_C4|M224||U_M224|U_RPG-7|U_870|U_DAO12|U_DBV12|U_HAWK|U_M1014|U_M26Mass|U_QBS09|U_SAIGA_20K|U_SPAS12|U_USAS-12|U_USAS-12_Nightvision|U_USAS-12_SP|U_UTAS)", RegexOptions.IgnoreCase).Success)
(коды оружия если что берутся из файла BF3.def, который находится по \ProCon\Configs я не нашел там GP30, возможно его нельзя запретить)

8) В графе limit_second_check установите тригер на Code
и введите этот код в созданное поле limit_second_check_code:
Код:
String kCounter = killer.Name + "_TreatAsOne_Count";
TimeSpan time = TimeSpan.FromSeconds(5); // Activations within 5 seconds count as 1

int warnings = 0;
if (server.RoundData.issetInt(kCounter)) warnings = server.RoundData.getInt(kCounter);


String msg = "none";
if (warnings == 0) {
        msg = plugin.R("[ПРЕДУПРЕЖДЕНИЕ] %k_n% это оружие запрещено! Not use not allowed weapon"); // First warning message
        plugin.SendGlobalMessage(msg);
        plugin.SendPlayerYell(killer.Name, "ПРЕДУПРЕЖДЕНИЕ: Не используйте это оружие! Следующий раз Вы будете исключены с сервера! \nWARNING: Do not use explosive ! Next time you will kicked!", 15);
        plugin.PRoConChat("ADMIN > " + msg);
        plugin.PRoConEvent(msg, "Insane Limits");
        plugin.KillPlayer(killer.Name, 2);
        server.RoundData.setInt(kCounter, warnings+1);
        return false;
}

if (limit.Activations(killer.Name, time) > 1) return false;

if (warnings >= 1) {
        msg = plugin.R("[AUTO-ADMIN] %k_n% исключён с сервера. Причина: взрывчатку");
        plugin.SendGlobalMessage(msg);
        plugin.PRoConChat("ADMIN > " + msg);
        plugin.PRoConEvent(msg, "Insane Limits");
        plugin.KickPlayerWithMessage(killer.Name, msg);
}
server.RoundData.setInt(kCounter, warnings+1);
return false;
Что нужно изменить чтоб предупреждений с килом было 2, на 3й раз кик, при повторном соединении 1предупреждение после кик?????
 

Clin4

Customer
13 Авг 2018
225
12
39
Приветствую! Выявил причину не срабатывания лимитов.
1. Удалил через FTP плагин лимитов, установил по новой - не помогло.
2. Скачал чистый прокон новой версии, отключил хост сервера прокона, установил плагин и лимиты - не помогло.
3. Установил лимиты на старую версию прокона, подключился на прямую к серверу - заработало.
То есть получается дело в новой версии прокона (хотя на втором сервере все работает, непонятно почему не работает на первом).
Прошу откатить сервера на старую версию прокона для устранения проблемы. Хотя обновленная версию нравится больше, но робота лимитов важнее для сервера.
 

Slawter

Support team
5 Сен 2014
22.474
877
Как я понял речь идет о ServerID 90, я откатил его.

А вы видели, что у вас все там вот так Screenshot
какие то дублирующие папки, возможно это было изза этого. Я не знаю, почему Вы не обратили на это внимание.
 

Clin4

Customer
13 Авг 2018
225
12
39
Как я понял речь идет о ServerID 90, я откатил его.

А вы видели, что у вас все там вот так Screenshot
какие то дублирующие папки, возможно это было изза этого. Я не знаю, почему Вы не обратили на это внимание.
Да я видел дублирующие папки, но подумал что это Вы создали резервные копии, при обновлении прокона. Я их лично не создавал. Спасибо за откат, как проверю работу плагинов отпишусь.
 

Slawter

Support team
5 Сен 2014
22.474
877
Да я видел дублирующие папки, но подумал что это Вы создали резервные копии, при обновлении прокона. Я их лично не создавал. Спасибо за откат, как проверю работу плагинов отпишусь.
Нет, выполняется резервное копирование всех прокон серверов каждое Воскресенье автоматически, и хранится в другом месте. Из этого места я и выполнил откат.
 
  • Like
Реакции: Clin4
Нет, выполняется резервное копирование всех прокон серверов каждое Воскресенье автоматически, и хранится в другом месте. Из этого места я и выполнил откат.
По повуду моего вопроса выше, есть возможность помочь? Хотябы понять до первого кикак как увеличить лимит?
 

Slawter

Support team
5 Сен 2014
22.474
877
По повуду моего вопроса выше, есть возможность помочь? Хотябы понять до первого кикак как увеличить лимит?
Смотрите форум Procon Community - BFH/BF4/BF3/MoH Rcon Tool
я не знаю. Это надо сидеть, эксперементировать и ковырять скрипт. То что Вы просите слишком запутано и не понятно для меня.
 
  • Like
Реакции: kill_26ru

Clin4

Customer
13 Авг 2018
225
12
39
Нет, выполняется резервное копирование всех прокон серверов каждое Воскресенье автоматически, и хранится в другом месте. Из этого места я и выполнил откат.
Все работает как часы, спасибо!
 
Код:
String kCounter = killer.Name + "_TreatAsOne_Count";
TimeSpan time = TimeSpan.FromSeconds(5); // Активации в течение 5 секунд считаются за 1

int warnings = 0;
if (server.RoundData.issetInt(kCounter)) warnings = server.RoundData.getInt(kCounter);


String msg = "none";
if (warnings == 0) {
        msg = plugin.R("[ПРЕДУПРЕЖДЕНИЕ_1] %k_n% это оружие запрещено! Not use not allowed weapon"); // Первое предупреждающее сообщение
        plugin.SendGlobalMessage(msg);
        plugin.SendPlayerYell(killer.Name, "ПРЕДУПРЕЖДЕНИЕ: Не используйте это оружие! Узнать ограничения !rules \nWARNING_1: Do not use explosive ! Find out the limitation !rules", 10);
        plugin.PRoConChat("ADMIN > " + msg);
        plugin.PRoConEvent(msg, "Insane Limits");
        plugin.KillPlayer(killer.Name, 2);
        server.RoundData.setInt(kCounter, warnings+1);
        return false;
}
if (warnings == 1) {
        msg = plugin.R("[ПРЕДУПРЕЖДЕНИЕ_2] %k_n% это оружие запрещено! Not use not allowed weapon"); // Второе предупреждающее сообщение
        plugin.SendGlobalMessage(msg);
        plugin.SendPlayerYell(killer.Name, "ПРЕДУПРЕЖДЕНИЕ: Не используйте это оружие! Узнать ограничения !rules \nWARNING_2: Do not use explosive ! Find out the limitation !rules", 10);
        plugin.PRoConChat("ADMIN > " + msg);
        plugin.PRoConEvent(msg, "Insane Limits");
        plugin.KillPlayer(killer.Name, 2);
        server.RoundData.setInt(kCounter, warnings+1);
        return false;
}
if (warnings == 2) {
        msg = plugin.R("[ПРЕДУПРЕЖДЕНИЕ_3] %k_n% это оружие запрещено! Not use not allowed weapon"); // Третее предупреждающее сообщение
        plugin.SendGlobalMessage(msg);
        plugin.SendPlayerYell(killer.Name, "ПРЕДУПРЕЖДЕНИЕ: Не используйте это оружие! Следующий раз Вы будете исключены с сервера! \nWARNING_3: Do not use explosive ! Next time you will kicked!", 10);
        plugin.PRoConChat("ADMIN > " + msg);
        plugin.PRoConEvent(msg, "Insane Limits");
        plugin.KillPlayer(killer.Name, 2);
        server.RoundData.setInt(kCounter, warnings+1);
        return false;
}

if (limit.Activations(killer.Name, time) > 1) return false;

if (warnings >= 3) {
        msg = plugin.R("[AUTO-ADMIN] %k_n% исключён с сервера. Причина: Использование запрешённого оружия!");
        plugin.SendGlobalMessage(msg);
        plugin.PRoConChat("ADMIN > " + msg);
        plugin.PRoConEvent(msg, "Insane Limits");
        plugin.KickPlayerWithMessage(killer.Name, msg);
}
server.RoundData.setInt(kCounter, warnings+1);
return false;
 

Clin4

Customer
13 Авг 2018
225
12
39
Как я понял речь идет о ServerID 90, я откатил его.

А вы видели, что у вас все там вот так Screenshot
какие то дублирующие папки, возможно это было из-за этого. Я не знаю, почему Вы не обратили на это внимание.
Не знаю в чем беда, но лимиты в бф3 перестали работать. Изначально при установке работали как положено, но через время перестали. Лимиты укомплектованы и не слетают при перезапуске прокона. Возможно это из-за беспорядка вызванного дублирующими папками, хотя в бф4 все работает отлично. Пробовал подкл. на прямую, установил там лимиты, но они так же не срабатывают. В принципе на данный момент обхожусь без них, но все же интересно из-за чего они не работают.
 

Clin4

Customer
13 Авг 2018
225
12
39
Не знаю в чем беда, но лимиты в бф3 перестали работать. Изначально при установке работали как положено, но через время перестали. Лимиты укомплектованы и не слетают при перезапуске прокона. Возможно это из-за беспорядка вызванного дублирующими папками, хотя в бф4 все работает отлично. Пробовал подкл. на прямую, установил там лимиты, но они так же не срабатывают. В принципе на данный момент обхожусь без них, но все же интересно из-за чего они не работают.
Нашлась причина отключения лимитов. Оказалось, лимиты не хотят работать при откл. PB. Вкл. PB, заработали :)
 

Slawter

Support team
5 Сен 2014
22.474
877
По просьбам

Запрет оружия только на карте метро и локер режим захват в BF4
Код:
(Regex.Match(server.MapFileName, @"(?:XP0_Metro|MP_Prison)", RegexOptions.IgnoreCase).Success &&
Regex.Match(kill.Weapon, @"(U_M320_3GL|U_M320_HE|U_M320_LVG|U_M320_SHG|U_NLAW|U_RPG7|U_SerbuShorty|U_XM25|U_SRAW
)", RegexOptions.IgnoreCase).Success &&
Regex.Match(server.Gamemode, @"(Conquest)").Success)

Код:
String kCounter = killer.Name + "_TreatAsOne_Count";
TimeSpan time = TimeSpan.FromSeconds(5); // Activations within 5 seconds count as 1

int warnings = 0;
if (server.RoundData.issetInt(kCounter)) warnings = server.RoundData.getInt(kCounter);


String msg = "none";
if (warnings == 0) {
        msg = plugin.R("[АВТО-АДМИН] %k_n% исключён за использование %w_n% След.раз кик!"); // Первое предупреждающее сообщение
        plugin.SendGlobalMessage(msg);
        plugin.PRoConChat("ADMIN > " + msg);
        plugin.PRoConEvent(msg, "Insane Limits");
        plugin.KillPlayer(killer.Name, 2);
        server.RoundData.setInt(kCounter, warnings+1);
        return false;
}

if (limit.Activations(killer.Name, time) > 1) return false;

if (warnings >= 1) {
        msg = plugin.R("[АВТО-АДМИН] %k_n% исключен за использование %w_n%");
        plugin.SendGlobalMessage(msg);
        plugin.PRoConChat("ADMIN > " + msg);
        plugin.PRoConEvent(msg, "Insane Limits");
        plugin.KickPlayerWithMessage(killer.Name, msg);
}
server.RoundData.setInt(kCounter, warnings+1);
return false;
 
  • Like
Реакции: Mechanik5050

Mechanik5050

Customer
4 Мар 2020
11
1
38
Сообщения за убийство с Ножа

Это популярный лимит, на автоматизацию сообщения "ЗАРЕЗАЛ", когда игроки убивают с помощью ножа.

В графе limit_evaluation укажите OnKill
Установите Action на Say (в чат) Yell (в центр экрана)
В графе limit_first_check укажите Expression
Код:
Regex.Match(kill.Weapon, "(Melee|Knife)").Success
В графе say или yell_message
Код:
%k_n% ЗАРЕЗАЛ %v_n%

Это автоматическое сообщение за убийство ножа, с небольшой кастомизацией сообщения для разных категорий игроков.
1. Например для админов или для девушек отдельное сообщение
2. Для VIP игроков (тех кто находится в списке ReservedSlotList.txt)
3. Для простых игроков просто ЗАРЕЗАЛ

В графе limit_evaluation укажите OnKill
В графе limit_first_check укажите Expression
Код:
(Regex.Match(kill.Weapon, "(Melee|Knife)").Success)
В графе limit_second_check укажите Code
Код:
Dictionary<String, String> pkmData = new Dictionary<String, String>();

// Добавьте специфические сообщения с помощью pkmData.Add("Имя", "Сообщение");

pkmData.Add("-XL-Timm", "%k_fn%: из России с любовью %v_n% Спасибо за Жетон =)");

pkmData.Add("little_t1ger", "Девушка **%k_fn%** СОРВАЛА ЖЕТОН с НУБА %v_n%");

pkmData.Add("iSMALLMONKEYi", "Админша **%k_fn%** СРЕЗАЛА ЖЕТОН НУБА %v_n%");


// ---------------------------------------------------------------------------------------------------------------------------- //

String[] pkmMsgs = { "", "", "" };

String pkmOut = "";

// ---------------------------------------------------------------------------------------------------------------------------- //



List<String> ReservervedSlots = plugin.GetReservedSlotsList();

String[] adm = {

"-XL-Timm",

"iSMALLMONKEYi",

"little_t1ger"};

int g = 0;

int f = 0;

bool isadm = false;





if (!server.Data.getBool(killer.Name))            //Если игрок до этого еще никого не резал, то его счетчик переводится в 0

    {

    server.Data.setInt(killer.Name, 0);

    server.Data.setBool(killer.Name, true);

    }



f = server.Data.getInt(killer.Name);

server.Data.setInt(killer.Name, (f + 1));





// Check if the killer has a personalized knife messages

if (pkmData.TryGetValue(killer.Name.Trim(), out pkmOut))

{

// Killer has a personalized kill message

pkmMsgs[1] = plugin.R(pkmOut);

    for (int i = 0; i < pkmMsgs.Length; i++)

    {

    plugin.SendGlobalMessage(pkmMsgs[i] + " (" + (server.Data.getInt(killer.Name)).ToString() + ")");

    }

}

else

{

    for (g = 0; g < adm.Length; g++)

    {

    if (killer.Name == adm[g].ToString()) { isadm = true; }

    }



    if (ReservervedSlots.Contains(killer.Name) && !isadm)

    {



    plugin.SendGlobalMessage(" ");

    plugin.SendGlobalMessage("oxxxxxxxxxxxxxxx{VIP]::::::::::::::::::::::::::::::::::> **" +killer.Name+ "** ПОСАДИЛ НА НОЖ " +victim.Name+ "." + " (" + (server.Data.getInt(killer.Name)).ToString() + ")");

    plugin.SendGlobalMessage(" ");

    plugin.SendPlayerYell(victim.Name, "\noxxxxxxxxxxxxxxx{VIP]::::::::::::::::::::::::::::::::::>" + "\n" + "\nВАС ПОДРЕЗАЛ VIP **" + killer.Name + "**", 10);



    }

    else

    {

    // Killer is a guest and get's a generic knife message

    pkmMsgs[0] = plugin.R("%k_fn%: ЗАРЕЗАЛ %v_n%! (" + (server.Data.getInt(killer.Name)).ToString() + ")");

    plugin.SendGlobalMessage(pkmMsgs[0]);

    }



}



return false;
А Можно вывести что бы писалось не только в чат а и в центр экрана, я пробовал заменить GlobalSay на Yell он мне начал выдавать ошибку
 

Clin4

Customer
13 Авг 2018
225
12
39
Всем привет! После того как начал арендовать сервер в бф3 в режиме схватка отрядов, а как вы знаете в этом режиме есть бмп, от которой у всех постоянно бомбит. Я начал активно искать как ее отключить, да разработчики предоставили такую возможность с помощью переключения присета на "только пехота", но как многие знают если это сделать, то сервер не попадает под стандартные преднастройки поиска серверов. Так что для меня был приоритет найти способ отключения с помощью скрипта. В какой то момент я уже смерился с тем, что это невозможно ограничить с помощью кода. Но вчера копался в адкатсе, заинтересовался позицией "С31" где был прописан скрип, вкл. его и к моей большой радости этот скрипт начал убивать игроков которые используют бмп. Единственный минус в том, что после определенного количества убийств (не считал сколько) игрока банет перманентно , это конечно мне не подходит и я решил перенести "ROADKILL|Death" в лимиты и это сработало. Не знаю будет это работать в других режимах не пробовал, скорее всего да, но это будет распространятся полностью на всю технику в том же захвате. Ограничивать определенную технику например самолеты или вертолеты по прежнему не доступно. В общем всем тем кто хотел ограничить использование техники и сделать из нее такси :) на своем сервере без изменения присета игры, вот вам способ как это сделать.
1590134333712.png
1590133656679.png