Что нужно изменить чтоб предупреждений с килом было 2, на 3й раз кик, при повторном соединении 1предупреждение после кик?????Запретить дробовики, 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)
(коды оружия если что берутся из файла BF3.def, который находится по \ProCon\Configs я не нашел там GP30, возможно его нельзя запретить)Код:(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)
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предупреждение после кик?????
Да я видел дублирующие папки, но подумал что это Вы создали резервные копии, при обновлении прокона. Я их лично не создавал. Спасибо за откат, как проверю работу плагинов отпишусь.Как я понял речь идет о ServerID 90, я откатил его.
А вы видели, что у вас все там вот так Screenshot
какие то дублирующие папки, возможно это было изза этого. Я не знаю, почему Вы не обратили на это внимание.
Нет, выполняется резервное копирование всех прокон серверов каждое Воскресенье автоматически, и хранится в другом месте. Из этого места я и выполнил откат.Да я видел дублирующие папки, но подумал что это Вы создали резервные копии, при обновлении прокона. Я их лично не создавал. Спасибо за откат, как проверю работу плагинов отпишусь.
По повуду моего вопроса выше, есть возможность помочь? Хотябы понять до первого кикак как увеличить лимит?Нет, выполняется резервное копирование всех прокон серверов каждое Воскресенье автоматически, и хранится в другом месте. Из этого места я и выполнил откат.
Смотрите форум Procon Community - BFH/BF4/BF3/MoH Rcon ToolПо повуду моего вопроса выше, есть возможность помочь? Хотябы понять до первого кикак как увеличить лимит?
Все работает как часы, спасибо!Нет, выполняется резервное копирование всех прокон серверов каждое Воскресенье автоматически, и хранится в другом месте. Из этого места я и выполнил откат.
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;
Не знаю в чем беда, но лимиты в бф3 перестали работать. Изначально при установке работали как положено, но через время перестали. Лимиты укомплектованы и не слетают при перезапуске прокона. Возможно это из-за беспорядка вызванного дублирующими папками, хотя в бф4 все работает отлично. Пробовал подкл. на прямую, установил там лимиты, но они так же не срабатывают. В принципе на данный момент обхожусь без них, но все же интересно из-за чего они не работают.Как я понял речь идет о ServerID 90, я откатил его.
А вы видели, что у вас все там вот так Screenshot
какие то дублирующие папки, возможно это было из-за этого. Я не знаю, почему Вы не обратили на это внимание.
Нашлась причина отключения лимитов. Оказалось, лимиты не хотят работать при откл. PB. Вкл. PB, заработалиНе знаю в чем беда, но лимиты в бф3 перестали работать. Изначально при установке работали как положено, но через время перестали. Лимиты укомплектованы и не слетают при перезапуске прокона. Возможно это из-за беспорядка вызванного дублирующими папками, хотя в бф4 все работает отлично. Пробовал подкл. на прямую, установил там лимиты, но они так же не срабатывают. В принципе на данный момент обхожусь без них, но все же интересно из-за чего они не работают.
(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;
А Можно вывести что бы писалось не только в чат а и в центр экрана, я пробовал заменить GlobalSay на Yell он мне начал выдавать ошибкуСообщения за убийство с Ножа
Это популярный лимит, на автоматизацию сообщения "ЗАРЕЗАЛ", когда игроки убивают с помощью ножа.
В графе limit_evaluation укажите OnKill
Установите Action на Say (в чат) Yell (в центр экрана)
В графе limit_first_check укажите Expression
В графе say или yell_messageКод:Regex.Match(kill.Weapon, "(Melee|Knife)").Success
Код:%k_n% ЗАРЕЗАЛ %v_n%
Это автоматическое сообщение за убийство ножа, с небольшой кастомизацией сообщения для разных категорий игроков.
1. Например для админов или для девушек отдельное сообщение
2. Для VIP игроков (тех кто находится в списке ReservedSlotList.txt)
3. Для простых игроков просто ЗАРЕЗАЛ
В графе limit_evaluation укажите OnKill
В графе limit_first_check укажите Expression
В графе limit_second_check укажите CodeКод:(Regex.Match(kill.Weapon, "(Melee|Knife)").Success)
Код: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;