English
ゲームのバランスを崩しかねない存在。
それは通称「芋」
その芋虫たちがスナイパーライフルを捨て、前線に加わることにより多少は改善されることを期待したい。
しかし、状況によりスナイパーライフルを使用した方が良い場面もあることは間違いない。
そんな時、既存のSniperLimitはスロット制を採用しているのが一般的なため、使うべきプレイヤーが使えないことが多々あります。
そこでこんなのを考えてInsane Limitsで作ってみました! (DandZ鯖で使用したPassiveSniperLimitの進化版的なやつ)
スナイパーライフルが使用できる条件としてサーバー内の平均スコア、キル数、SPM、KPMを採用します。(コードをコメントアウトするなり削除して簡単に変更可能です。)
劣勢側チームは優勢側チームと比較し、すべてが下回る傾向があるため必然的に劣勢側のスナイパーが少なくなり積極的なプレイが期待できるはず・・・。
- 仕様
- ラウンド開始、180秒後から制限開始(変更可)
- スナイパーライフルでキルイベント発生で発動
- バトルピックアップ(対物ライフル)は除外(武器コード追加で対応可)
- サーバー内平均スコア以下で管理者キル(該当箇所修正、削除で変更可)
- サーバー内平均キル数以下で管理者キル(該当箇所修正、削除で変更可)
- サーバー内平均SPM以下で管理者キル(該当箇所修正、削除で変更可)
- サーバー内平均KPM以下で管理者キル(該当箇所修正、削除で変更可)
以下コード
Limit 1.
Set limit to evaluate OnKill
Set action to None
Set first_check to this Expression:
1 |
Regex.Match(kill.Weapon, @"(U_CS-LR4|U_M40A5|U_Scout|U_SV98|U_JNG90|U_SRS|U_M98B|U_M200|U_L96A1|U_GOL|U_FY-JS|U_SR338|U_CS5)", RegexOptions.IgnoreCase).Success |
Set second_check to this Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
double timeToStartLimit = 180; // Seconds. double avgKills = Math.Ceiling(server.KillsRound / server.PlayerCount); double avgKpm = Math.Round((server.KillsRound / server.PlayerCount) / (server.TimeRound / 60), 2, MidpointRounding.AwayFromZero); double avgScore = Math.Ceiling((team1.ScoreRound + team2.ScoreRound + team3.ScoreRound + team4.ScoreRound) / server.PlayerCount); double avgSpm = Math.Ceiling(((team1.ScoreRound + team2.ScoreRound + team3.ScoreRound + team4.ScoreRound) / server.PlayerCount) / (server.TimeRound / 60)); if (server.TimeRound >= timeToStartLimit) { if (avgKills >= player.KillsRound || avgScore >= player.ScoreRound || avgKpm >= player.KpmRound || avgSpm >= player.SpmRound) { plugin.KillPlayer(player.Name, 1); plugin.SendPlayerMessage(player.Name, plugin.R("%p_n% killed by imoiper limit. If you want to use a SniperRifle, please play more aggressively.")); //plugin.ConsoleWrite(player.Name + " playerKills/ServerAvgKills " + player.KillsRound + " / " + avgKills + " playerScore/ServerAvgScore " + player.ScoreRound + " / " + avgScore); //plugin.ConsoleWrite(player.Name + " playerKpm/ServerAvgKpm " + Math.Round(player.KpmRound, 2, MidpointRounding.AwayFromZero) + " / " + avgKpm + " playerSpm/ServerAvgSpm " + Math.Ceiling(player.SpmRound) + " / " + avgSpm); } } else { if (avgKills >= player.KillsRound || avgScore >= player.ScoreRound || avgKpm >= player.KpmRound || avgSpm >= player.SpmRound) { plugin.SendPlayerMessage(player.Name, plugin.R("[imoiper limit] %p_n% You do not meet the conditions. Please play aggressively.")); } } return false; |
Limit 2 (in-game command “!sniper”)
Set limit to evaluate OnAnyChat
Set action to None
Set first_check to this Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
double avgKills = Math.Ceiling(server.KillsRound / server.PlayerCount); double avgKpm = Math.Round((server.KillsRound / server.PlayerCount) / (server.TimeRound / 60), 2, MidpointRounding.AwayFromZero); double avgScore = Math.Ceiling((team1.ScoreRound + team2.ScoreRound + team3.ScoreRound + team4.ScoreRound) / server.PlayerCount); double avgSpm = Math.Ceiling(((team1.ScoreRound + team2.ScoreRound + team3.ScoreRound + team4.ScoreRound) / server.PlayerCount) / (server.TimeRound / 60)); if(player.LastChat.StartsWith("!sniper")) { if (avgKills >= player.KillsRound || avgScore >= player.ScoreRound || avgKpm >= player.KpmRound || avgSpm >= player.SpmRound) { plugin.KillPlayer(player.Name, 1); plugin.SendPlayerMessage(player.Name, plugin.R("%p_n% Currently you are NOT allowed to use SniperRifles. Please play more aggressively.")); plugin.SendPlayerMessage(player.Name, player.Name + " YourKills/ServerAvgKills " + player.KillsRound + " / " + avgKills + ", YourScore/ServerAvgScore " + player.ScoreRound + " / " + avgScore); plugin.SendPlayerMessage(player.Name, player.Name + " YourKPM/ServerAvgKPM " + Math.Round(player.KpmRound, 2, MidpointRounding.AwayFromZero) + " / " + avgKpm + ", YourSPM/ServerAvgSPM " + Math.Ceiling(player.SpmRound) + " / " + avgSpm); } else { plugin.SendPlayerMessage(player.Name, plugin.R("%p_n% Currently you are allowed to use sniper rifles. Please keep aggressive play.")); } } return false; |
もしDMRも制限に追加したい場合は、下記武器コードをLimit 1. first_check の Expressionに追加して下さい。
If you want to add DMR to your limit, please add this weapon code.
1 |
U_GalilACE53|U_M39EBR|U_MK11|U_QBU88|U_RFB|U_SCAR-HSV|U_SKS|U_SVD12 |
The word “imo” is derived from the fact that the player who is in a lie down on the ground looks like a “green caterpillar” during the game of “BF1942” released in 2002.
In other words, “imo” refers to a “camper”.
“芋虫” = “green caterpillar”
“芋虫” -> “imo-mushi” ->”imo”
“imo” = “camper”
- Specification of this limit.
- Round start, start limit after 180 seconds (can be changed)
- Sniper rifle kills trigger.
- Battle pickup (Anti-material rifle) is excluded (can cope by additional weapon code)
- Admin kill players below the server’s “average score”.(Can be changed by correcting or deleting the relevant part)
- Admin kill players below the server’s “average kills”.(Can be changed by correcting or deleting the relevant part)
- Admin kill players below the server’s “average SPM”.(Can be changed by correcting or deleting the relevant part)
- Admin kill players below the server’s “average KPM”.(Can be changed by correcting or deleting the relevant part)
テストしてないので不具合等ありましたらTwitterかDiscordで連絡下さい。