Лимит на ударный вертолёт

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
Привет, ребята! Как отключить ударный вертолёт пока на сервере не будет больше 10-16 человек ? Набирается 16 человек - можно летать на ударнике. Если меньше 16 и человек - ударник взять нельзя. Каким плагином и с каким скриптом это сделать ?
 

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
Я так понял надо заюзать Insane Limits


Disable Vehicles Based on Player Count
This limit will check the number of players in the server at specific intervals of time, and depending on how many players are there in the server, it will enable/disable vehicle spawn by changing the value of "vars.vehicleSpawnAllowed". This change is in effect immediately, no need to wait for next round. However, this only applies to attack vehicles. Transport vehicles will still spawn.


Set limit to evaluate OnInterval, and set action to None

Set first_check to use this Code snippet:

Code:
if (server.PlayerCount < 8 )
plugin.ServerCommand("vars.vehicleSpawnAllowed", "false");
else
plugin.ServerCommand("vars.vehicleSpawnAllowed", "true");

In this case, if number of players in the server falls below 8, vehicles are disabled. As soon as it goes to or over 8, vehicles are re-enabled. You may change this value as you see fit.

Also note that when you turn off vehicle spawn, your server may not be listed in Battlelog as Hard-core. Additionally, disabling vehicles can reportedly interfere with Battlelog's Quick Match option.
 

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
Есть такой вот код еще, но как его сделать что бы он работал от 1 до 16 человек. А с 16 человек на сервере - отключался ?

Procon Script for server admins
Just change the numbers to the max of kills per player in a round
This script kills the player after 10 kills in a chopper and warns them but after 13 kills it will kick them :

-----heli autokick.txt---------------------------------------------------------------------

####################################################
Heli autokick
####################################################

On Kill; Damage VehicleAir; Incr %viperkill%
On Kill; Damage VehicleAir; If %viperkill% == 1; PlayerSay %p%, you are limited to 10 attack heli kills per game!
On Kill; Damage VehicleAir; If %viperkill% == 5; PlayerSay %p%, you have 5 attack heli kills left for this game!
On Kill; Damage VehicleAir; If %viperkill% == 10; Say %p% has reached his attack heli kill limit of 10 for this round!
On Kill; Damage VehicleAir; If %viperkill% == 11; Kill; PlayerSay %p%, you've reached your attack heli kill limit, go on the ground or leave!
On Kill; Damage VehicleAir; If %viperkill% == 13; Kick You've reached your attack heli kill limit of 10 per round!

Found this on a live server some admin was using. Not good. Lets say I left this server and never played on it again.
 

Slawter

Support team
5 Сен 2014
22.652
876
Есть такой вот код еще, но как его сделать что бы он работал от 1 до 16 человек. А с 16 человек на сервере - отключался ?

Procon Script for server admins
Just change the numbers to the max of kills per player in a round
This script kills the player after 10 kills in a chopper and warns them but after 13 kills it will kick them :

-----heli autokick.txt---------------------------------------------------------------------

####################################################
Heli autokick
####################################################

On Kill; Damage VehicleAir; Incr %viperkill%
On Kill; Damage VehicleAir; If %viperkill% == 1; PlayerSay %p%, you are limited to 10 attack heli kills per game!
On Kill; Damage VehicleAir; If %viperkill% == 5; PlayerSay %p%, you have 5 attack heli kills left for this game!
On Kill; Damage VehicleAir; If %viperkill% == 10; Say %p% has reached his attack heli kill limit of 10 for this round!
On Kill; Damage VehicleAir; If %viperkill% == 11; Kill; PlayerSay %p%, you've reached your attack heli kill limit, go on the ground or leave!
On Kill; Damage VehicleAir; If %viperkill% == 13; Kick You've reached your attack heli kill limit of 10 per round!

Found this on a live server some admin was using. Not good. Lets say I left this server and never played on it again.
А вы его вообще проверяли? Он развер работает?

На сколько знаю технику в БФ4 таким образом запретить нельзя, так как код оружия приходит как Missing, вот комментарий одного из разработчиков плагинов
Not Working:
  • ClanTag coz the server don't deliver it to PRoCon thx EA/DICE!!!.
  • Stats for tanks and other vehicles. thx EA/DICE!!!.
 

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
А вы его вообще проверяли? Он развер работает?

На сколько знаю технику в БФ4 таким образом запретить нельзя, так как код оружия приходит как Missing, вот комментарий одного из разработчиков плагинов
Not Working:
  • ClanTag coz the server don't deliver it to PRoCon thx EA/DICE!!!.
  • Stats for tanks and other vehicles. thx EA/DICE!!!.
Да, только что проверял, работает. Но написан он для ProconRulz
 

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
Да, только что проверял, работает. Но написан он для ProconRulz
Да проверял только что. Работает, но он написан для ProconRulz

А мне бы написанный в InsaneLimits как ограничивают дробовики, и грены. Только грену или дробовик заменить на "Gameplay/Vehicles/AH1Z/AH1Z" и дописать if (server.PlayerCount < 8 )
 

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
А вы его вообще проверяли? Он развер работает?

На сколько знаю технику в БФ4 таким образом запретить нельзя, так как код оружия приходит как Missing, вот комментарий одного из разработчиков плагинов
Not Working:
  • ClanTag coz the server don't deliver it to PRoCon thx EA/DICE!!!.
  • Stats for tanks and other vehicles. thx EA/DICE!!!.
Надо наверное просто попробовать, взять стандартный скрипт, на запрещение грен от сюда: Примеры Insane Limits - автоматические правила для сервера BF3, BF4, BFH

И для начала переписать его на запрет вертолётов вообще:

EXPRESSION BF4
(Regex.Match(kill.Weapon, @"(Gameplay/Vehicles/AH1Z/AH1Z)", RegexOptions.IgnoreCase) - В BF4.def в \ProCon\Configs код вертолёта же есть. Значит плагин должен понимать такой лимит.


Limit_second_check
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;
 
Последнее редактирование:

Slawter

Support team
5 Сен 2014
22.652
876
Надо наверное просто попробовать, взять стандартный скрипт, на запрещение грен от сюда: Примеры Insane Limits - автоматические правила для сервера BF3, BF4, BFH

И для начала переписать его на запрет вертолётов вообще:

EXPRESSION BF4
Regex.Match(kill.Weapon, @"(Gameplay/Vehicles/AH1Z/AH1Z)", RegexOptions.IgnoreCase) - В BF4.def в \ProCon\Configs код вертолёта же есть. Значит плагин должен понимать такой лимит.


Limit_second_check
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;
Вы проверьте, если вот так будет работать, то я добавлю туда проверку кол-ва игроков.
Просто на сколько знаю на технику так не работает. Вот в чем дело.
 

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
Вы проверьте, если вот так будет работать, то я добавлю туда проверку кол-ва игроков.
Просто на сколько знаю на технику так не работает. Вот в чем дело.
Работает все. Создаем новый лимит:
В Lemit_Evalution ставим OnKill

В Limit_First_check выбираем вкладку "Expression" и вбиваем следующий код "Regex.Match(kill.Weapon, @"(Gameplay/Vehicles/AH1Z/AH1Z)", RegexOptions.IgnoreCase).Success"

В Limit_seccond_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% вертолёт запрещен! Пока на сервере не будет 16 игроков! Don`t use attack helicopter if players on server less than 16"); // First warning message
plugin.SendGlobalMessage(msg);
plugin.SendPlayerYell(killer.Name, "ПРЕДУПРЕЖДЕНИЕ: Не используйте вертолёт! Следующий раз Вы будете исключены с сервера! \nWARNING: Do not use attack helicopter ! 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;
"

Видео:

Осталось добавить строку с игроками когда этот лимит будет работать а когда отключаться. Можно еще оповещалку текстовую в чат. Когда лимит включен а когда отключен.
 
Последнее редактирование:

Slawter

Support team
5 Сен 2014
22.652
876
Попробуйте этот 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) && (server.PlayerCount < 16)) {
msg = plugin.R("[ПРЕДУПРЕЖДЕНИЕ] %k_n% вертолёт запрещен! Пока на сервере не будет 16 игроков! Don`t use attack helicopter if players on server less than 16"); // First warning message
plugin.SendGlobalMessage(msg);
plugin.SendPlayerYell(killer.Name, "ПРЕДУПРЕЖДЕНИЕ: Не используйте вертолёт! Следующий раз Вы будете исключены с сервера! \nWARNING: Do not use attack helicopter ! 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) && (server.PlayerCount < 16)) {
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;
 

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
Попробуйте этот 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) && (server.PlayerCount < 16)) {
msg = plugin.R("[ПРЕДУПРЕЖДЕНИЕ] %k_n% вертолёт запрещен! Пока на сервере не будет 16 игроков! Don`t use attack helicopter if players on server less than 16"); // First warning message
plugin.SendGlobalMessage(msg);
plugin.SendPlayerYell(killer.Name, "ПРЕДУПРЕЖДЕНИЕ: Не используйте вертолёт! Следующий раз Вы будете исключены с сервера! \nWARNING: Do not use attack helicopter ! 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) && (server.PlayerCount < 16)) {
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;
Ок, спс. Попробую завтра, убегать надо щас уже. Отпишу сюда в ветку, когда попробую.
 

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
Попробуйте этот 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) && (server.PlayerCount < 16)) {
msg = plugin.R("[ПРЕДУПРЕЖДЕНИЕ] %k_n% вертолёт запрещен! Пока на сервере не будет 16 игроков! Don`t use attack helicopter if players on server less than 16"); // First warning message
plugin.SendGlobalMessage(msg);
plugin.SendPlayerYell(killer.Name, "ПРЕДУПРЕЖДЕНИЕ: Не используйте вертолёт! Следующий раз Вы будете исключены с сервера! \nWARNING: Do not use attack helicopter ! 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) && (server.PlayerCount < 16)) {
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;
Проверил все, все работает как надо. Убивает на первый раз, если используешь ударник, и на второй раз кикает. Если на сервере меньше 16 игроков. Как становится 16 - лимит на ударник отключается.

Тим, слушай а как сделать тоже самое, такой же лимит но не по игрокам а по тикитам ? К примеру что бы отключать ударник на 300 тикитах до окончания раунда ?
 

Slawter

Support team
5 Сен 2014
22.652
876
Проверил все, все работает как надо. Убивает на первый раз, если используешь ударник, и на второй раз кикает. Если на сервере меньше 16 игроков. Как становится 16 - лимит на ударник отключается.

Тим, слушай а как сделать тоже самое, такой же лимит но не по игрокам а по тикитам ? К примеру что бы отключать ударник на 300 тикитах до окончания раунда ?
Думаю можно. Посмотрим.
 

Spartan-117th

Добрый админ
12 Фев 2017
1.139
57
34
Попробуйте в В Limit_First_check в "Expression" вбить следующий код
Код:
(Regex.Match(kill.Weapon, @"(Gameplay/Vehicles/AH1Z/AH1Z)", RegexOptions.IgnoreCase).Success  && ((server.RemainTickets(0)<300) || (server.RemainTickets(1)<300) || (server.RemainTickets(2)<300)))
 

II-_A-1_3-V_-II

Младший сержант
28 Апр 2019
13
0
39
Попробуйте в В Limit_First_check в "Expression" вбить следующий код
Код:
(Regex.Match(kill.Weapon, @"(Gameplay/Vehicles/AH1Z/AH1Z)", RegexOptions.IgnoreCase).Success  && ((server.RemainTickets(0)<300) || (server.RemainTickets(1)<300) || (server.RemainTickets(2)<300)))
Попробую на днях, спасибо. Отпишу как и что когда попробую.