Доброго времени суток, может кто-то настраивал снайперлимит, чтобы (одноразовые) тех кого убивает после каждого убийства сервер чтоб их кикало после например 5 убийства ?)
(true)
// Макс. кол-во слотов снайперов и ДМР на команду
int maxSnipers = 2;
// Установите кол-во убийств до временного бана
// Инфо: Если 3 игрок получит 2 предупреждения перед временным баном
int warnKick = 3;
// Разрешить резервным слотам юзать снайпрки и дмр
// 0 = нет | 1 = да
int vipAllowed = 1;
// Разрешить админам юзать снайперки и дмр
// 0 = нет | 1 = да
int adminAllowed = 1;
// Разрешить юзать снайпреки определенным игрокам
// уберить комментарий со строки ниже и вставьте нужные ники вместо Playername
//bool playerAllowed = (Regex.Match(kill.Name, @"(?:Playername1|Playername2|Playername3)", RegexOptions.IgnoreCase).Success);
//if (playerAllowed) return false;
// Запрещенные категории оружия
bool sniperLimit = (kill.Category == "SniperRifle" || kill.Category == "DMR");
// Разрешенные категории оружия
bool sniperAllowed = (kill.Category == "Handgun" || kill.Category == "Explosive" || kill.Weapon == "Melee" || Regex.Match(kill.Weapon, @"(?:Shorty)").Success);
// Разрешить всю технику
bool vehiclesAllowed = (Regex.Match(kill.Weapon, @"(?:Death|Roadkill|AMTRAC|Vehicle|Jeep|Growler|MRAP|Buggy|Venom|APC|Anti-Air|PGZ-95|HIMARS|MBT|Tank|Jet|Heli|AC-130|Lancer|Xian|Global|CB90|DV-15|RHIB|Bird)", RegexOptions.IgnoreCase).Success);
// Не менять
if (vipAllowed == 1) {
List<String> ReservervedSlots = plugin.GetReservedSlotsList();
if (ReservervedSlots.Contains(killer.Name)) return false;
}
if (adminAllowed == 1) {
bool isAdmin = false;
bool bKill = false;
bool bKick = false;
bool bBan = false;
bool bMove = false;
bool bLevel = false;
if (plugin.CheckAccount(player.Name, out bKill, out bKick, out bBan, out bMove, out bLevel)) {
if (bKill && bKick && bBan) return false;
}
}
String globalMessage = null;
String globalMessage2 = null;
String privateMessage = null;
String playerKey = "sl_" + killer.Name;
String factionName = null;
int warnings = 0;
int countSnipers = 0;
if (plugin.RoundData.issetInt(playerKey)) warnings = plugin.RoundData.getInt(playerKey);
if (!plugin.RoundData.issetInt("sniperSlots")) plugin.RoundData.setInt("sniperSlots", maxSnipers);
if (!plugin.RoundData.issetObject("slEntries1")) plugin.RoundData.setObject("slEntries1", new List<String>());
if (!plugin.RoundData.issetObject("slEntries2")) plugin.RoundData.setObject("slEntries2", new List<String>());
List<String> sniperTeam1 = (List<String>)plugin.RoundData.getObject("slEntries1");
List<String> sniperTeam2 = (List<String>)plugin.RoundData.getObject("slEntries2");
if (killer.TeamId == 1) countSnipers = sniperTeam1.Count;
else if (killer.TeamId == 2) countSnipers = sniperTeam2.Count;
if (server.GetFaction(player.TeamId) == 0) factionName = "US";
else if (server.GetFaction(player.TeamId) == 1) factionName = "RU";
else if (server.GetFaction(player.TeamId) == 2) factionName = "CN";
if (sniperTeam1.Contains(killer.Name) || sniperTeam2.Contains(killer.Name)) {
if (!sniperLimit && !sniperAllowed && !vehiclesAllowed) {
globalMessage = "(" + factionName + ") " + killer.Name + " has lost his SNIPER/DMR slot! (used "+ plugin.FriendlyWeaponName(kill.Weapon).Name + ")";
globalMessage2 = "(" + factionName + ") " + killer.Name + " has lost his SNIPER/DMR slot! (change team)";
privateMessage = "You have lost your SNIPER/DMR slot!";
if (killer.TeamId == 1 && sniperTeam1.Contains(killer.Name)) {
sniperTeam1.Remove(killer.Name);
plugin.SendTeamMessage(killer.TeamId, globalMessage);
plugin.PRoConChat("Sniperlimit > TeamSay > " + globalMessage);
plugin.SendPlayerYell(killer.Name, privateMessage, 10);
plugin.PRoConChat("Sniperlimit > PlayerYell[10] > " + killer.Name + " > " + privateMessage);
} else if (killer.TeamId == 1 && sniperTeam2.Contains(killer.Name)) {
sniperTeam2.Remove(killer.Name);
plugin.SendTeamMessage(2, globalMessage2);
plugin.PRoConChat("Sniperlimit > TeamSay > " + globalMessage2);
plugin.SendPlayerYell(killer.Name, privateMessage, 10);
plugin.PRoConChat("Sniperlimit > PlayerYell[10] > " + killer.Name + " > " + privateMessage);
} else if (killer.TeamId == 2 && sniperTeam2.Contains(killer.Name)) {
sniperTeam2.Remove(killer.Name);
plugin.SendTeamMessage(killer.TeamId, globalMessage);
plugin.PRoConChat("Sniperlimit > TeamSay > " + globalMessage);
plugin.SendPlayerYell(killer.Name, privateMessage, 10);
plugin.PRoConChat("Sniperlimit > PlayerYell[10] > " + killer.Name + " > " + privateMessage);
} else if (killer.TeamId == 2 && sniperTeam1.Contains(killer.Name)) {
sniperTeam1.Remove(killer.Name);
plugin.SendTeamMessage(1, globalMessage2);
plugin.PRoConChat("Sniperlimit > TeamSay > " + globalMessage2);
plugin.SendPlayerYell(killer.Name, privateMessage, 10);
plugin.PRoConChat("Sniperlimit > PlayerYell[10] > " + killer.Name + " > " + privateMessage);
}
return false;
}
return false;
} else if (sniperLimit) {
if (countSnipers < maxSnipers) {
if (killer.TeamId == 1) sniperTeam1.Add(killer.Name);
else if (killer.TeamId == 2) sniperTeam2.Add(killer.Name);
countSnipers += 1;
warnings = 0;
globalMessage = "(" + factionName + ") " + killer.Name + " has now a SNIPER/DMR Slot! (" + countSnipers + "/" + maxSnipers + ")";
privateMessage = "You have now a SNIPER/DMR slot! (" + countSnipers + "/" + maxSnipers + ")";
plugin.SendTeamMessage(killer.TeamId, globalMessage);
plugin.PRoConChat("Sniperlimit > TeamSay > " + globalMessage);
plugin.SendPlayerYell(killer.Name, privateMessage, 10);
plugin.PRoConChat("Sniperlimit > PlayerYell[10] > " + killer.Name + " > " + privateMessage);
return false;
} else {
if (limit.Activations(killer.Name, TimeSpan.FromSeconds(2)) > 1) return false;
warnings += 1;
plugin.RoundData.setInt(playerKey, warnings);
if (warnings <= (warnKick-1)) {
privateMessage = "You are killed by SNIPER/DMR LIMIT! Warning (" + warnings + "/" + warnKick +") Type !sinfo for more information";
plugin.SendPlayerMessage(killer.Name, privateMessage);
plugin.SendPlayerYell(killer.Name, privateMessage, 10);
plugin.KillPlayer(killer.Name, 1);
plugin.PRoConChat("Sniperlimit > PlayerSay/Yell[10] > " + killer.Name + " > " + privateMessage);
return false;
} else if (warnings == warnKick) {
globalMessage = "Timeban for ignoring warnings of SNIPER/DMR LIMIT!";
plugin.EABanPlayerWithMessage(EABanType.Name, EABanDuration.Temporary, killer.Name, 20, globalMessage);
return false;
}
}
}
return false;
List<String> sniperTeam = new List<string>();
int maxSnipers = 0;
String factionName = null;
Match sniperCommand = Regex.Match(player.LastChat, @"!sniper", RegexOptions.IgnoreCase);
Match sinfoCommand = Regex.Match(player.LastChat, @"!sinfo", RegexOptions.IgnoreCase);
if (plugin.RoundData.issetInt("sniperSlots")) maxSnipers = plugin.RoundData.getInt("sniperSlots");
if (!plugin.RoundData.issetObject("slEntries1")) plugin.RoundData.setObject("slEntries1", new List<String>());
if (!plugin.RoundData.issetObject("slEntries2")) plugin.RoundData.setObject("slEntries2", new List<String>());
List<String> sniperTeam1 = (List<String>)plugin.RoundData.getObject("slEntries1");
List<String> sniperTeam2 = (List<String>)plugin.RoundData.getObject("slEntries2");
if (player.TeamId == 1) sniperTeam = sniperTeam1;
else if (player.TeamId == 2) sniperTeam = sniperTeam2;
if (server.GetFaction(player.TeamId) == 0) factionName = "US";
else if (server.GetFaction(player.TeamId) == 1) factionName = "RU";
else if (server.GetFaction(player.TeamId) == 2) factionName = "CN";
List<String> showSniper = new List<String>();
if (sniperCommand.Success) {
if (sniperTeam.Count == 0) {
showSniper.Add("No SNIPERS/DMRS on your team (" + factionName + ")");
} else {
showSniper.Add("SNIPERS/DMRS on your team (" + factionName + "):");
foreach (string sniper in sniperTeam) {
showSniper.Add("Slot (" + (sniperTeam.IndexOf(sniper)+1) + "/" + maxSnipers + ") is " + sniper);
}
}
} else if (sinfoCommand.Success) {
showSniper.Add("First SNIPER/DMR kills get a slot");
showSniper.Add("You lose your slot with NON-SNIPER/DMR kill");
showSniper.Add("Allowed: SR/DMR, Handguns, Knifes, Explosives and Vehicles");
showSniper.Add("Type !sniper to show active slots");
}
foreach (string show in showSniper) {
plugin.SendPlayerMessage(player.Name, show);
plugin.PRoConChat("Sniperlimit > PlayerSay > " + show);
}
return false;
какие-то ошибки пишет, буду дома пробоватьага, отпишитесь как работает
ошибки выдает при вставке первого лимита CODE?какие-то ошибки пишет, буду дома пробовать
добавили кода 3 лимита не должно быть?
может быть, попробуйте удалить русское описание, или русифицируйте проконЭто наверное ошибки из-за того что у нас не русифицирован прокон
Там тема обсуждается через ProConRULZ, а тут нужно в плагине Insane limits решить проблему исключения "мастер оружия"Леха я тут порыл на досуге вот что пишут иностранцы по этому поводу BF4, BF3 ProconRulz - Sniper limiter v2.7 by Tarreltje - Page 29 могу ошибаться но сюдя по коду это из proconrulz нужно добавить пару строк которые исключают ганмастер из снайперлимита. В общем если в энгише шаришь поймешь. Надеюсь сработает)
Нашел решение этой проблемы?Как прописать чтобы на Мастер оружия не распространялся?
На мастере оружия этот скрипт не работает.Там тема обсуждается через ProConRULZ, а тут нужно в плагине Insane limits решить проблему исключения "мастер оружия"
Решение: это набор стандартный. Там и нет проблем. У вас вроде при Бене не было лимитов и запретов?Нашел решение этой проблемы?
Где не работает? в каком плагине?На мастере оружия этот скрипт не работает.
Именно в этом, даже команда ! snipers не активна. Вечером проверю, может и не этот.Где не работает? в каком плагине?
Новый бос, новые правила!)Решение: это набор стандартный. Там и нет проблем. У вас вроде при Бене не было лимитов и запретов?
Вечером проверю какой именно стоит. Но тут слот слетает за любое оружие и снаряжение)Новый бос, новые правила!)
Ок, ждуВечером проверю какой именно стоит. Но тут слот слетает за любое оружие и снаряжение)