BF3をプレイしていた頃はよく、北米の24/7 Noshahr Canals TDM 1000みたいな鯖で遊んでいたなと思う今日この頃・・・。
BF4のTDMってランク鯖だとチケット数400までしか設定できないので、物足りなさを感じていませんか?(DOMでいいとか言わないでさ)
コンクエストでやるくらいキルしたい!拠点制圧、防衛とか興味ない!俺、私はとにかくキルがしたいんだ!キルだけでチームに貢献したいんだ!
そんなあなたにこんなProconRulzのスクリプトを・・・。
仕様
コンクエストのチケット数が0になるか、このスクリプトのチケット数に達すかで勝敗を決めます。
TDMとしてやる場合のサーバーの推奨設定はラウンドが長くなるゲームモードでチケット数は多め。
CQ+TDM的な感じでも楽しめるかもしれませんね。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#サンプル1 On Spawn;ServerFirst;Set %ini_server_tickets% 1000;Set %ini_server_kill[1]% 0;Set %ini_server_kill[2]% 0;Set %ini_server_report% 0; On Kill;Incr %ini_server_kill[%ptk%]%;Incr %ini_server_report%; On Kill;If %ini_server_report% == 30;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;Set %ini_server_report% 0; On Kill; If %ini_server_kill[1]% >= %ini_server_tickets% - 50;Yell US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;If %ini_server_kill[1]% >= %ini_server_tickets% - 10;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%; If %ini_server_kill[2]% >= %ini_server_tickets% - 50;Yell US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;If %ini_server_kill[2]% >= %ini_server_tickets% - 10;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%; On Kill; If %ini_server_kill[1]% >= %ini_server_tickets%;Exec mapList.endRound 1; If %ini_server_kill[2]% >= %ini_server_tickets%;Exec mapList.endRound 2; |
サンプル1は蘇生を無視し、キル時にカウントします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#サンプル2 On Spawn;ServerFirst;Set %ini_server_tickets% 1000;Set %ini_server_kill[1]% 0;Set %ini_server_kill[2]% 0;Set %ini_server_report% 0; On Spawn;Not PlayerFirst;If %ptk% == 2;Incr %ini_server_kill[1]%;Incr %ini_server_report%; On Spawn;Not PlayerFirst;If %ptk% == 1;Incr %ini_server_kill[2]%;Incr %ini_server_report%; On Spawn;Not PlayerFirst;If %ini_server_report% == 30;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;Set %ini_server_report% 0; On Spawn;Not PlayerFirst; If %ini_server_kill[1]% >= %ini_server_tickets% - 50;Yell US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;If %ini_server_kill[1]% >= %ini_server_tickets% - 10;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%; If %ini_server_kill[2]% >= %ini_server_tickets% - 50;Yell US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;If %ini_server_kill[2]% >= %ini_server_tickets% - 10;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%; On Kill; If %ini_server_kill[1]% >= %ini_server_tickets% - 1;Incr %ini_server_kill[%ptk%]%;Both US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;Exec mapList.endRound 1; If %ini_server_kill[2]% >= %ini_server_tickets% - 1;Incr %ini_server_kill[%ptk%]%;Both US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;Exec mapList.endRound 2; |
サンプル2は蘇生を考慮し、スポン時にカウントします。
サンプル1解説
1行目
1 |
On Spawn;ServerFirst;Set %ini_server_tickets% 1000;Set %ini_server_kill[1]% 0;Set %ini_server_kill[2]% 0;Set %ini_server_report% 0; |
ここは初期設定で%ini_server_tickets%が勝利までの必要キル数。%ini_server_kill[1]%と%ini_server_kill[2]%は、各チームの合計キル数。[]内の数字はチームキー。%ini_server_report%はラウンド途中経過を報告するために必要な変数。これらを初期値にサーバー内で最初にスポンした時点で戻します。
2行目
1 |
On Kill;Incr %ini_server_kill[%ptk%]%;Incr %ini_server_report%; |
チームのキル数をIncrで%ini_server_kill[%ptk%]%へカウント。ラウンド途中経過の報告をするために、Incrで%ini_server_report%へカウント。
3行目
1 |
On Kill;If %ini_server_report% == 30;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;Set %ini_server_report% 0; |
3行目はチャットへラウンド途中経過を送信。ここでは、サーバー内合計キル数をみています。キルをしたら%ini_server_report%が30になりました→Sayで現在のキル数を表示→%ini_server_report%を0にリセットのループ。
4~6行目
1 2 |
On Kill; </code>If %ini_server_kill[1]% >= %ini_server_tickets% - 50;Yell US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;If %ini_server_kill[1]% >= %ini_server_tickets% - 10;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%; If %ini_server_kill[2]% >= %ini_server_tickets% - 50;Yell US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;If %ini_server_kill[2]% >= %ini_server_tickets% - 10;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%; |
ラウンド終盤、途中経過の頻度あげます。チームキル数がラウンド終了の設定値まで50になったらそれ以降のキルをトリガーにYellで報告。残り10になったらSayを追加。
7~9行目
1 2 3 |
On Kill; If %ini_server_kill[1]% >= %ini_server_tickets%;Exec mapList.endRound 1; If %ini_server_kill[2]% >= %ini_server_tickets%;Exec mapList.endRound 2; |
ここは、チーム合計キル数がラウンド終了設定値に達したらラウンド終了のコマンドを送信。ExecはProconからサーバーへ直接コマンドを送信するアクション。mapList.endRoundはラウンドを終了させるコマンドで、後ろの数値はチームキー。
(On Kill; If %ini_server_kill[%ptk%]% >= %ini_server_tickets%;Exec mapList.endRound %ptk%;で良いんじゃない?)
サンプル2解説
1行目はサンプル1と同じ
2~3行目
1 2 |
On Spawn;Not PlayerFirst;If %ptk% == 2;Incr %ini_server_kill[1]%;Incr %ini_server_report%; On Spawn;Not PlayerFirst;If %ptk% == 1;Incr %ini_server_kill[2]%;Incr %ini_server_report%; |
蘇生を考慮するためデス数をカウント、そのためOn KillではなくOn Spawnを使用。Not PlayerFirstをつけることによって最初のスポンはカウントしない。スポンしたらチーム2だった場合、チーム1の合計キル数にカウント。
4~6行目はサンプル1のOn KillをOn Spawn;Not PlayerFirst;に書き換えただけ。
7~9行目
1 2 3 |
On Kill; If %ini_server_kill[1]% >= %ini_server_tickets% - 1;Incr %ini_server_kill[%ptk%]%;Both US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;Exec mapList.endRound 1; If %ini_server_kill[2]% >= %ini_server_tickets% - 1;Incr %ini_server_kill[%ptk%]%;Both US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%;Exec mapList.endRound 2; |
最後はキルで締めたいため、ここはOn Killを使用。%ini_server_tickets% – 1;にしているのはスポンを利用してデス数をカウントをしているため。キルをしたら、敵チーム合計デス数が現在999で終了設定値1000から-1した999以上の数値の場合、敵チーム合計デス数に1加算、最終結果をBothを使い送信し、ラウンド終了コマンドを送信。
あと、途中経過を確認するコマンドなんかあってもいいですね。
1 |
On Say;Text !ticket;Say US %ini_server_kill[1]% / %ini_server_tickets%, RU %ini_server_kill[2]% / %ini_server_tickets%; |
※不具合があるかもしれません。導入する際は自己責任でお願いします。