remove
powerd by nog twitter

エイリアスの作成ノウハウ

このページでは現行のバインダーで作れないようなコマンドを作成したい人のためのページです。

エイリアスとは

cfgファイルには様々なバインドや設定が書かれていますが、エイリアスという機能を使うと表記を簡潔にすることが出来ます。

例えば、以下のようなバインドが有ったとします。

例1:
bind "ENTER" "+attack;wait;wait;wait;wait;wait;-attack;wait;wait;wait;wait;wait;+attack;wait;wait;wait;wait;wait;-attack;wait;wait;wait;wait;wait;+attack;wait;wait;wait;wait;wait;-attack"

長くて訳が分かりませんね。これはENTERキーを押すたびに銃を3回撃つバインドなのですが、こんな表記がcfgファイル中にあふれたら混乱するのは目にみえています。

上のバインドを良く見ると、waitは必ず5階繰り返されていることが分かります。この場合、以下のように書き換えることが出来ます。

例2:
alias "W5" "wait;wait;wait;wait;wait"     // まとめたいコマンドを;で区切って記入
bind "ENTER" "+attack;W5;-attack;W5;+attack;W5;-attack;W5;+attack;W5;-attack"

だいぶすっきりしました。1行目でW5という文字にwaitを5回分割り当てて、2行目でそのW5をwait5回分の代わりに入れています。CS:Sはこれを1番目の例に解釈して実行してくれるのです。

これがエイリアスの基本的な機能です。

エイリアスの入れ子

エイリアスは入れ子にすることが出来ます。先ほどの例2をもう一度見てみましょう。

例2:
alias "W5" "wait;wait;wait;wait;wait"
bind "ENTER" "+attack;W5;-attack;W5;+attack;W5;-attack;W5;+attack;W5;-attack"

bindの行を見ると、+attack;W5;-attackが3箇所有ることが分かります。この部分をエイリアスにしてみましょう。

例3:
alias "W5" "wait;wait;wait;wait;wait"
alias "SHT" "+attack;W5;-attack"
bind "ENTER" "SHT;W5;SHT;W5;SHT;"

かなりすっきりしました。この場合CS:Sはbind行のSHTをalias "SHT"行の+attack;W5;-attackに置換し、bind行とalias "SHT"行のW5をwait;wait;wait;wait;waitに置換します。その結果、ENTERキーには例1と全く同じコマンドが割り当てられるわけです。

エイリアスを使うと修正が簡単

上の例1〜3は全て同じ機能ですが、修正の簡単さが異なります。例えば銃を撃つ間隔を4倍にしたいと思ったらどうなるでしょう。

修正前:銃を撃つ→5フレーム待つ→銃を撃つのを止める→5フレーム待つ→銃を撃つ→5フレーム待つ→銃を撃つのを止める→5フレーム待つ→銃を撃つ→5フレーム待つ→銃を撃つのを止める
修正後:銃を撃つ→5フレーム待つ→銃を撃つのを止める→20フレーム待つ→銃を撃つ→5フレーム待つ→銃を撃つのを止める→20フレーム待つ→銃を撃つ→5フレーム待つ→銃を撃つのを止める

例1の場合は-attackと+attackの間にあるwaitを一個ずつ書き加えなければなりません。追加するwaitは全部で30個になりますし、一目見てどこに加えるべきか分かりますか?。

例1を変更する場合。
bind "ENTER" "+attack;wait;wait;wait;wait;wait;-attack;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;+attack;wait;wait;wait;wait;wait;-attack;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;+attack;wait;wait;wait;wait;wait;-attack"

例2の場合はbind "ENTER"行の-attackと+attackの間にあるW5を4重にするだけです。新規に挿入するW5は6個所だけですが、挿入すべき位置(-attackと+attackの間)に少し迷います。

例2を変更する場合
alias "W5" "wait;wait;wait;wait;wait"
bind "ENTER" "+attack;W5;-attack;W5;W5;W5;W5;+attack;W5;-attack;W5;W5;W5;W5;+attack;W5;-attack"

例3の場合はbind "ENTER"行のW5を4重にするだけです。挿入するW5は6個所で、どこを修正するかも一目瞭然です。

例3を変更する場合
alias "W5" "wait;wait;wait;wait;wait"
alias "SHT" "+attack;W5;-attack"
bind "ENTER" "SHT;W5;W5;W5;W5;SHT;W5;W5;W5;W5;SHT"

自分でエイリアスを作るときは、なるべく元になるエイリアス(この場合はW5とSHT)を作って再利用するのが混乱しないコツです。

エイリアスの再利用

一度作成したエイリアスは、その行以降のaliasやbindで何度でも使うことが出来ます。

例4:
alias "W5" "wait;wait;wait;wait;wait"   // ←一度作成したW5コマンドは
alias "SHT" "+attack;W5;-attack"        // ここでも
bind "ENTER" "SHT;W5;SHT;W5;SHT"        // ここでも
bind "DELETE" "+jump;W5;W5;SHT;-jump"   // ここでも使える

先ほどの銃を撃つ間隔を4倍にする例で考えてみましょう。

例3を変更する場合
alias "W5" "wait;wait;wait;wait;wait"
alias "SHT" "+attack;W5;-attack"
bind "ENTER" "SHT;W5;W5;W5;W5;SHT;W5;W5;W5;W5;SHT"

これなら、W5を4回分つなげたW20を作るとすっきりしますね。

例3をさらに変更
alias "W5" "wait;wait;wait;wait;wait"   // waitを5回でW5
alias "W20" "W5;W5;W5;W5"               // W5を4回でW20(W5を再利用)
alias "SHT" "+attack;W5;-attack"        // 一回銃を撃つ動作(W5を再利用)
bind "ENTER" "SHT;W20;SHT;W20;SHT"      // 三回中を打つ動作(W5,W20,SHTを再利用)

頭に+や-が付いているコマンドを使うときの注意

コンソールコマンドの一覧を見ると、コマンドの中に頭に+や-が付いているコマンドがあります。これらのコマンドはバインドされたキーが押されたときに+の付いたコマンドが実行され、キーを放した時に-の付いたコマンドが実行されます。

例5;
bind "MOUSE1" "+attack"

このようなバインドがされている場合、マウスを左クリックするとクリックしている間攻撃を続け、放すと攻撃を止めます。

ここで、以下のようなエイリアスを作ってみます。

例6:
alias "SHT" "+attack"

このエイリアスをバインドして実行すると、一度攻撃を始めたら止まらなくなってしまいます!これは、SHTというコマンドに+や-が付いていないため、SHTが実行されると+attackがずっと有効になってしまうからです。

こうならないように、+で始まるコマンドを使うためには必ず-で始まる同じ名前のコマンドを付けてやって、動作を終わらせてやらなければなりません。

例6の修正
alias "SHT" "+attack;-attack"   // 攻撃をして、すぐ止める

頭に+や-が付いているエイリアスを作る

ボタン一つでしゃがみジャンプをするなど、キーを押したら始まってキーを放したら止まるエイリアスを作るには、どうしたら良いでしょう。

この場合は、頭に+/-の付いた対になるエイリアスを作らなければなりません。

例7:
alias +CJUMP "+jump; +duck"    // +CJUMPに割り当てられたキーが押されたら、ジャンプして(+jump)しゃがむ(+duck)
alias -CJUMP "-jump; -duck"    // +CJUMPに割り当てられたキーが放されたら、ジャンプを止めて(-jump)しゃがみもやめる(-duck)
bind "ENTER" "+CJUMP"          // ENTERキーを押すと+CJUMPが実行され、しゃがみジャンプが出来る。放すと-CJUMPが実行される

エイリアスの再割り当て(トグルキーの作成)

トグル対応でないコマンドを使ってトグル対応のコマンドを作成したいときは、エイリアスの再割り当てを行います。

例8:
alias "WALKTOGGLE" "WALK"                      // WALKTOGGLEというエイリアスにWALKというエイリアスを割り当てる
alias "WALK" "alias WALKTOGGLE RUN; +speed"    // WALKTOGGLEというエイリアスにRUNというエイリアスを割り当て、歩行キーを押したままの状態にする
alias "RUN" "alias WALKTOGGLE WALK; -speed"    // WALKTOGGLEというエイリアスにWALKというエイリアスを割り当て、歩行キーを放したままの状態にする
bind "ENTER" "WALKTOGGLE"                      // ENTERキーにWALKTOGGLEコマンドをバインド

このエイリアスがどのような動きをするか、順を追って見てみましょう。

初期状態では歩くキーは放された状態になっており、ENTERキーにはWALKがバインドされています。

bind "ENTER" "WALKTOGGLE"                    // ENTERキーにWALKTOGGLEコマンドがバインドされている
               ↓
bind "ENTER" "WALK"                          // WALKTOGGLEエイリアスの中身はWALK
               ↓
bind "ENTER" "alias WALKTOGGLE RUN; +speed"  // WALKエイリアスの中身はalias WALKTOGGLE RUN; +speed
                                             // つまり、次にENTERキーを押したときに以下の2つのコマンドが実行される
                                             // alias WALKTOGGLE RUN    WALKTOGGLEエイリアスの内容をRUNに変える
                                             // +speed                  歩行キーを押しっぱなしの状態にする

ENTERキーを押すと、歩行キーは押されたままの状態になり、さらにENTERキーのバインドがRUNに変更されます。この時プレイヤーは移動時に歩いて移動します。

bind "ENTER" "WALKTOGGLE"                    // ENTERキーにWALKTOGGLEコマンドがバインドされている
               ↓
bind "ENTER" "RUN"                           // WALKTOGGLEエイリアスの中身はRUNに変更された
               ↓
bind "ENTER" "alias WALKTOGGLE WALK; -speed" // WALKエイリアスの中身はalias WALKTOGGLE WALK; -speed
                                             // つまり、次にENTERキーを押したときに以下の2つのコマンドが実行される
                                             // alias WALKTOGGLE WALK   WALKTOGGLEエイリアスの内容をWALKに変える
                                             // -speed                  歩行キーを放した状態にする

もう一度ENTERキーを押すと、歩くキーは放された状態になり、さらにENTERキーのバインドがWALKに変更されます。この時プレイヤーは移動時に走って移動します。

bind "ENTER" "WALKTOGGLE"                    // ENTERキーにWALKTOGGLEコマンドがバインドされている
               ↓
bind "ENTER" "WALK"                          // WALKTOGGLEエイリアスの中身はWALKに変更された
               ↓
bind "ENTER" "alias WALKTOGGLE RUN; +speed"  // WALKエイリアスの中身はalias WALKTOGGLE RUN; +speed
                                             // つまり、次にENTERキーを押したときに以下の2つのコマンドが実行される
                                             // alias WALKTOGGLE RUN    WALKTOGGLEエイリアスの内容をRUNに変える
                                             // +speed                  歩行キーを押しっぱなしの状態にする

このように、エイリアスの内容を書き換えるように設定することでトグル機能を持たせることが出来ます。工夫すれば2つの機能切り替えだけでなく、多数の機能を切り替えるコマンドだって作成可能なのです。

参考文献

Counter-Script.net


このサイトの情報は、全て自己責任でご利用ください。

2004/11/04 shitabirame: the newbie Counter-Strike player