Created
September 17, 2010 09:29
-
-
Save kimoto/583969 to your computer and use it in GitHub Desktop.
cfg/consoleについての基礎(草稿)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//=============================================================== | |
// Title: cfg/consoleについての基礎(草稿) | |
// Author: KIMOTO | |
// Revision: 6 | |
// Memo: 誤字脱字や間違いがあれば気軽に連絡ください | |
//=============================================================== | |
//--------------------------------------------------------------- | |
// 更新履歴 | |
//--------------------------------------------------------------- | |
- 2011/07/05 KIMOTO(rev 6) | |
推敲、より分かりやすい表現へ変更 | |
- 2011/02/22 KIMOTO(rev 5) | |
bindの+/-コマンドの解説文の訂正 | |
- 2010/09/17 KIMOTO(rev 4) | |
bindの+/-コマンド例の修正 | |
- 2010/09/17 KIMOTO(rev 3) | |
いくつか項目追加 | |
- 2010/09/17 KIMOTO(rev 2) | |
頻出コマンドやコマンド例の整理 | |
- 2010/09/17 KIMOTO(rev 1) | |
未完成ながらとりあえず公開 | |
//--------------------------------------------------------------- | |
// 目次 | |
//--------------------------------------------------------------- | |
■初級編 コンソールと簡単なコマンドについての解説 | |
・コンソールとは何か | |
・コマンドとは何か | |
・cfgとは何か | |
・autoexec.cfgとは何か | |
・userconfig.cfgとは何か | |
・commandを実行する | |
・commandを連続的に複数実行させる | |
・aliasコマンド - 別名をつける | |
・bindコマンド - キー入力をしたときに何かをする | |
・waitコマンド - 一定時間待機する | |
■中級編 頻出コマンド解説 | |
・findコマンド - コマンドを探す | |
・helpコマンド - コマンドの使い方を調べる | |
・incrementvarコマンド - 変数の値を増やす | |
・toggleコマンド - ON/OFFを切り替える | |
・execコマンド - cfgファイルを読み込む | |
・sayコマンド - 全体チャットで発言する | |
・say_teamコマンド - ユーザーチャットで発言する | |
・+mouse_menuコマンド - マウスメニューを開く | |
・lastinv, nextinv, previnvコマンド - 武器を切り替える | |
・cl_interpコマンド - ラグ補正システムの設定 | |
■上級編 マニアックなコマンド解説 | |
・bindコマンド上級編(特別な意味を持つ+/-について) | |
・+lookspin(180度回転/反転) | |
■スクリプトサンプル紹介 | |
・Tankの岩投げ殴り | |
・Tankのジャンプ岩投げ殴り | |
・無限ライトチカチカスクリプト | |
・アイテムの名前を叫びつつアイテムを取る | |
・3点バースト/高速連射モード | |
■スクリプト作成FAQ | |
・キーを押したときと離したときに何かをしたい | |
・キーを押している間だけ何かを行いたい | |
・機能を切り替えたい(トグル/toggle) | |
・無限に何かを行いたい(ループ/loop) | |
・複数キー同時押しバインドの作り方 | |
//--------------------------------------------------------------- | |
// 初級編 コンソールと簡単なコマンドについての解説 | |
//--------------------------------------------------------------- | |
■コンソールとは何か | |
コンソールとは開発者用に用意された、文字により対話するためのインターフェースである | |
コンソールに何か文字列を入力するとSourceEngineがその文字列を読みとり | |
それが特定のキーワードに合致する場合は、それが実行されL4D世界に反映される | |
■コマンドとは何か | |
コンソールに文字列を入力した際に、それがあらかじめ定義されている特定のキーワードだった場合に | |
なんらかの作用がL4D世界に発生する、この時のキーワードのことをコマンドと呼ぶ | |
これは英語表記でcommand, 省略表記でcmdとよく表現されている | |
コマンドにはオプションとして値を加えることができる。 | |
たとえば | |
----------- | |
] echo 1 | |
----------- | |
という入力値があった場合 | |
echoがコマンド(command)であり、1が引数(argument)である | |
1はechoコマンドに渡される引数であり、「echoコマンドは引数をコンソールに出力する」という機能であるため | |
これはコンソールに1と出力される。これを一般的に"引数"と呼ぶ。 | |
英語表記でargument, 省略表記でargやargsとよく表現される | |
■cfgとは何か | |
cfgとはconfigの略であり、日本語でいうと設定ファイルのことである | |
L4Dは起動すると、cfg/autoexec.cfgが自動的に読み込まれるようになっている | |
そしてそれは先ほど説明した、コンソールにて一行ずつ読み込まれ評価されている(と考えるとよい) | |
■autoexec.cfgとは何か | |
L4D2の起動時に自動的に読み込まれるファイルであり、ファイルパスは次の場所にある | |
------------------------------- | |
./left4dead/cfg/autoexec.cfg | |
------------------------------- | |
■userconfig.cfgとは何か | |
通常、設定はcfg/autoexec.cfgに記述すればよいが、何か問題があったときに簡単に元に戻せるように | |
FPSゲーマーには自分独自の設定ファイルを作成する風習がある。 | |
そのファイル名がよくuserconfig.cfgと名付けられている。 | |
cfg/autoexec.cfgに | |
--------------------- | |
exec userconfig.cfg | |
--------------------- | |
このように記述し、自分独自の設定はuserconfig.cfgに書くという"風習がある" | |
強調しておくが、あくまでもuserconfig.cfgという名前にしなければならないというわけではないし | |
そもそもこのファイルを使う必要もない、autoexec.cfgにそのまま記述すればよい。 | |
がそういう風習があるというだけの話である。 | |
この名前はもちろん自由に変更可能であり | |
----------------------- | |
exec test.cfg | |
----------------------- | |
としておけばtest.cfgに自分独自の設定を記述することが可能である | |
execは引数に指定されたファイル名のcfgファイルをコンソールに読み込む、という機能がある | |
■commandを実行する | |
コンソールにcommandの名称を入力すると、その機能が実行される。構文は | |
----------------------- | |
command arguments... | |
----------------------- | |
でありargumentsは複数指定することが可能である。 | |
複数ある場合は空白で区切る必要がある。例を示す | |
----------------------------------------- | |
command argument1 argument2 argument3 | |
----------------------------------------- | |
またダブルコーテーション(")で囲むことによりひとつの塊であるということを処理系に指示することができる | |
----------------------------------------- | |
command "argument1 argument1" argument3 | |
----------------------------------------- | |
この場合、commandに渡される引数は、"argument1 argument1" と "argument3" の二つである | |
■commandを連続的に複数実行させる | |
----------------------- | |
command1; command2 | |
----------------------- | |
とセミコロンで区切ることにより、一行に複数のコマンドを入力することが出来る | |
こうしておくとたとえばcommand1を実行した後にcommand2を実行する等といったことが出来る | |
例を出すと | |
----------------------- | |
] echo 1; echo 2 | |
----------------------- | |
とコンソールに入力すると | |
------ | |
1 | |
2 | |
------ | |
といったようにコンソールに出力される | |
これは、waitコマンドを使用するとさらにわかりやすくなる | |
このwaitコマンドの詳細に関しては後述するが、簡単に言うと指定された時間が経過するまで待つ(wait)という機能である | |
----------------------- | |
] echo 1; wait 90; echo 2 | |
1 | |
2 | |
------ | |
↑この出力だけではわかりにくいが1が出力された後、すこし時間を置いて2が出力されるのがわかるだろうか | |
■ aliasコマンド | |
aliasというコマンドは、英語のaliasという単語そのものの機能/意味が割り当てられており | |
"コマンドに別の名称をつける"という機能である | |
構文は | |
----------------------- | |
alias 新しい名前 command... | |
----------------------- | |
である。commandは複数でもかまわない | |
※ただし複数である場合はダブルコーテーションで囲むことによりひとつの塊であるということを指示したほうがよい | |
たとえばaliasコマンドの使用例を出すと | |
------------------------------------------- | |
alias "notify_zombie" "echo zombies!" | |
------------------------------------------- | |
とすると以後notify_zombieと入力するだけで、"echo zombies!"と入力と同じことになる | |
実際に実行してみよう、以下の例が実際にこれを実行してみた例である | |
------------------------------------------- | |
] alias "notify_zombie" "echo zombies!" | |
] notify_zombie | |
zombies! | |
------------------------------------------- | |
もちろんセミコロンで複数のコマンドを1つのエイリアスにまとめることもできる | |
------------------------------------------- | |
] alias "test_alias" "echo 1; echo 2" | |
] test_alias | |
1 | |
2 | |
------------------------------------------- | |
これだけではaliasの価値がわかりにくいかもしれないので、より現実に沿った例を出す | |
たとえば通常感染者を10匹発生させたい場合、単純に考えると以下のようなコマンドでできる | |
---------------------------------------------------------------------------------------------------- | |
] z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn | |
---------------------------------------------------------------------------------------------------- | |
z_spawnとは、照準の位置に通常感染者を発生させるというコマンドである | |
これを毎回入力していると心が折れるので以下のようにエイリアスでひとつのコマンドにまとめる | |
---------------------------------------------------------------------------------------------------------- | |
] alias zombie_10piki "z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn;z_spawn" | |
---------------------------------------------------------------------------------------------------------- | |
このようにまとめておけばたとえば100匹通常感染者を生成したい場合は以下のようにするだけで出来る | |
これをz_spawnだけでやった時のことを考えると想像を絶する苦労がありそうだ | |
---------------------------------------------------------------------------------------------------------- | |
] alias zombie_100piki "zombie_10piki;zombie_10piki;zombie_10piki;zombie_10piki;zombie_10piki;zombie_10piki;zombie_10piki;zombie_10piki;zombie_10piki;zombie_10piki;" | |
---------------------------------------------------------------------------------------------------------- | |
■ bindコマンド | |
bindというコマンドは、コマンドとキー入力を対応させるためのコマンドである | |
構文は以下のようになる | |
-------------------- | |
bind キー コマンド | |
-------------------- | |
この場合、キーが入力されたときにコマンドが実行されるようになる | |
たとえば | |
-------------------- | |
] bind "k" "echo 1" | |
-------------------- | |
とすると、kキーが押されたときに"echo 1"というコマンドが実行される | |
echo 1は、1をコンソールに出力するという意味なのでコンソールに1と出力される | |
またbindコマンドは先ほど説明したaliasコマンドにより定義された"別名"を使用することも可能だ | |
これにより読みやすいcfgファイルを作成することが出来る。 | |
-------------------- | |
] alias test_alias "echo 1" | |
] bind "k" test_alias | |
] k | |
1 | |
-------------------- | |
出力結果は先ほどと同じようにコンソールに1と出力される | |
■ waitコマンド | |
-------------------- | |
wait 数値 | |
-------------------- | |
waitコマンドは指定された数値フレーム分待つという意味がある | |
wait 80であれば80フレーム経過するのを待つ | |
基本的に他のコマンドと組み合わせて使用する | |
------------------------- | |
] echo 1; wait 60; echo 1; | |
1 | |
1 | |
------------------------ | |
1とコンソールに出力された後、60フレーム後に再度1と出力される | |
GSD BBS ReaderにはFPSを固定化してくれる機能があるのでそれを利用すると | |
waitの時間が調整しやすくなる | |
たとえば60FPS固定にした場合 | |
---------------------------------------------------- | |
] echo 3; wait 60; echo 2; wait 60; echo 1; | |
3 | |
2 | |
1 | |
---------------------------------------------------- | |
このようにして、3, 2, 1と1秒ごとにカウントダウンするスクリプトを作成可能 | |
//--------------------------------------------------------------- | |
// 中級編 頻出コマンド解説 | |
//--------------------------------------------------------------- | |
■ findコマンド | |
-------------------- | |
find コマンド名 | |
-------------------- | |
findコマンドは指定された文字列が含まれるコマンドを検索し | |
一覧表示してくれるコマンドだ。たとえばfind echoとすると | |
echoという文字が含まれるコマンド、echoとsv_logechoが表示される | |
またコマンドの説明文の文字列からも検索してくれるのも便利でよい | |
コマンドをなんとなく覚えている時や、新しい面白いコマンドを探すときに便利 | |
またコマンドの説明も表示されるのもとても使いやすい | |
------------------------- | |
"echo" | |
server_can_execute | |
- Echo text to console. | |
"sv_logecho" = "1" | |
archive | |
- Echo log information to the console. | |
------------------------ | |
たとえばvalveがデバッグのために用意したcvarが知りたいときは | |
find debugとするだけで大体それっぽいのが見つかる | |
■ helpコマンド | |
-------------------- | |
help コマンド名 | |
-------------------- | |
コマンドの説明を表示、そのコマンドにて設定可能な最大値や最小値なども表示されるためとても参考になる | |
たとえば以下はcl_interpコマンドの説明文を表示してみた例 | |
-------------------- | |
] help cl_interp | |
"cl_interp" = "0.100000" ( def. "0.1" ) min. 0.000000 max. 0.500000 | |
client user | |
- Sets the interpolation amount (bounded on low side by server interp ratio settings). | |
-------------------- | |
def. "0.1" | |
cl_interpのデフォルト値は0.1であるということを意味している | |
min. 0.0000000 | |
cl_interpの最小値は0.0000000であるということを意味している | |
max. 0.5000000 | |
cl_interpの最大値は0.5000000であるということを意味している | |
■ incrementvarコマンド | |
-------------------- | |
incrementvar 変数名 最小値 最大値 増減値 | |
-------------------- | |
指定された変数の最小値と最大値までの範囲を、指定された増減値で繰り返させるというコマンド | |
incrementvar hoge 1 10 1とすれば | |
このコマンドを実行するたびにhoge変数の値が1から10まで1ずつ値が増えていって | |
10になったら次の実行では1になる | |
incrementvar hoge 10 1 -1とすれば | |
このコマンドを実行するたびにhoge変数の値が10から1まで1ずつ値が減っていって | |
10になったら次の実行では1になる | |
これを使うとnet_graphの切り替えbindを作ったり | |
glowing scriptを作成するときに簡潔なcfgを記述することが出来る | |
■ toggleコマンド | |
-------------------- | |
toggle cvar(変数名) | |
-------------------- | |
■ execコマンド | |
-------------------- | |
exec configファイル名 | |
-------------------- | |
外部のcfgファイルを読み込む | |
読み込まれるのは、left4dead/cfg/指定したファイル名.cfg | |
■ sayコマンド | |
-------------------- | |
say 文字列 | |
-------------------- | |
指定された文字列を全体チャットに書き込みます(発言します) | |
■ say_teamコマンド | |
-------------------- | |
say_team 文字列 | |
-------------------- | |
指定された文字列をチームチャットに書き込みます(発言します) | |
■ +mouse_menuコマンド | |
-------------------- | |
+mouse_menu マウスメニュー名 | |
-------------------- | |
指定されたマウスメニューを開きます | |
デフォルトだとQA(QA系ラジオメニュー)とOrders(報告系ラジオメニュー)しかありませんが | |
scripts/radialmenu.txtをいじると自分で追加/改造することが出来ます | |
■ lastinv, nextinv, previnv | |
武器持ち替えに関するコマンドです | |
-------------------- | |
lastinv = 最後に持っていた武器 | |
nextinv = 次の武器 | |
previnv = 前の武器 | |
-------------------- | |
slot1 ~ slot10で、任意のスロットの武器を装備可能です。 | |
L4D2ではそれぞれ以下のようになっています | |
-------------------- | |
slot1 = プライマリウェポン | |
slot2 = サブウェポン | |
slot3 = 火炎瓶/パイプボム/ブーマー汁 | |
slot4 = 救急キット | |
slot5 = ピル/アドレナリン | |
slot6 ~ slot10 = 未使用 | |
-------------------- | |
■ cl_interp | |
ラグ補正に関する設定を行います | |
デフォルトは0.1で、これは100ミリ秒間サーバーからのデータをバッファするということです。 | |
そのためクライアントに描画されるL4D世界は、100ミリ秒間サーバーよりも遅延しているということでもあります。 | |
この値の最小値はcl_interp_ratioとcl_updaterateとの関連性によって変わります。 | |
詳細については別の記事を記載する予定ですが、必ずしもこの値を小さくすれば良いというわけではありません。 | |
なぜならサーバーはユーザーのcl_interpの値に基づいてラグ補正を行っているからです | |
つまりcl_interpを単純に下げてほかのプレイヤーよりも優位に立とうとしても | |
下げた分だけサーバー側のラグ補正の仕組みによって時間が巻き戻され調整することにより、損をするようになっているということです | |
//--------------------------------------------------------------- | |
// 上級編 マニアックなコマンド解説 | |
//--------------------------------------------------------------- | |
■ 特別な意味を持つbindの+/-について | |
キーが押されている間なにかしたかったり、キーが話されたときに何かしたかった場合はこの項を読む必要がある。 | |
bindで指定する際の+と-には特別な意味があり | |
-------------------- | |
bind key +command | |
-------------------- | |
とすると、この例の場合では | |
該当するkeyが押されたときに+commandという名前のaliasが実行されて | |
該当するkeyが離されたときに-commandという名前のaliasが実行されるようになる | |
例をだすと | |
-------------------- | |
] bind "z" "+key" | |
] alias "+key" "echo press_key" // key押したとき | |
] alias "-key" "echo release_key" // key離したとき | |
-------------------- | |
この場合は、zキーを押したときに+keyが実行され | |
zキーを離すと-keyが実行される | |
ちなみにだが、bindに指定したコマンド名が | |
"+key" などと単一のものであった場合に限りこの機能が有効になるようで | |
"+key; wait"などと複数指定してあった場合は無効になってしまう | |
-------------------------- | |
] bind "z" "+key; wait" | |
------------------------- | |
となっていた場合、-keyが実行されることはないのだ! | |
■ +lookspin(180度回転/反転)コマンドについて | |
このコマンドは、その場で180度回転(反転)することができるコマンドである | |
通常のコマンドと同じような次のようなbindをすることで利用できる | |
------------------------- | |
] bind "z" "+lookspin" | |
------------------------- | |
このコマンドはxbox360のコントローラー(ほかのJoystickでもおそらく可能)を有効にしている | |
状態でなければ使用することができない | |
正直用途は少なく、反転ChargerやHunterの壁蹴りや生存者の殴りの効率化に利用できるくらいなのであまり使えない | |
//--------------------------------------------------------------- | |
// スクリプトサンプル紹介 | |
//--------------------------------------------------------------- | |
※waitを使っている箇所がいくつかあるが、この値はプレイしているゲーム環境の平均FPSによって変更する必要がある | |
私の環境は90FPSに固定化しているため、この記事に出てくるwaitはすべて90FPS向けのwait値となっている。 | |
この値はあなたの環境に合わせて変更しなければならないが、比例の式(小学校で習う)を利用すれば簡単に求めることが出来るので各自計算してほしい | |
■ Tankの岩投げ殴り(使ってないので未確認) | |
------------------------------------------------------------------------------------------------------ | |
alias "z_tank_iwanage_naguri" "+attack; +attack2; wait 25; -attack2; -attack;" | |
bind "MOUSE4" "z_tank_iwanage_naguri" | |
------------------------------------------------------------------------------------------------------ | |
■ Tankのジャンプ岩投げ殴り | |
------------------------------------------------------------------------------------------------------ | |
alias "z_tank_jump_iwanage_naguri" "+attack; +attack2; wait 5; +jump; wait 25; -jump; -attack2; -attack;" | |
bind "MOUSE4" "z_tank_jump_iwanage_naguri" | |
------------------------------------------------------------------------------------------------------ | |
■ 無限ライトチカチカスクリプト | |
-------------------------------------------------------- | |
alias r_flushR r_flush1 | |
alias r_flush1 "impulse 100; wait 5; r_flush2" | |
alias r_flush2 "impulse 100; wait 5; r_flushR" | |
alias "+r_flush" "alias r_flushR r_flush1; r_flushR" | |
alias "-r_flush" "alias r_flushR" // nop | |
alias "t_flush" "t_flush1" | |
alias "t_flush1" "+r_flush; alias t_flush t_flush2" | |
alias "t_flush2" "-r_flush; alias t_flush t_flush1" | |
bind "f" "t_flush" | |
-------------------------------------------------------- | |
■ アイテムの名前を叫びつつアイテムを取る | |
現在見ているものをRC(ラジオチャット/L4Dではキャラクターの発言)で発言するにはvocalize SmartLookコマンドを使用します。アイテムを拾う/使うには+useでOkです | |
-------------------------------------------- | |
bind "e" "+use_look" | |
alias "+use_look" "+use; vocalize SmartLook" | |
alias "-use_look" "-use" | |
-------------------------------------------- | |
■ 3点バースト/高速連射モード | |
-------------------------------------------------------- | |
// default -> quick fire -> 3 ten burst -> default | |
// quickfire | |
alias +quickfire "+rs" | |
alias "+rs" "alias reps +rsse;+rsse" | |
alias "+rsse" "+attack;wait 3;-rsse" | |
alias "-rsse" "-attack;wait 3;reps" | |
alias "reps" "+rsse" | |
alias -rs "alias reps none" | |
alias -quickfire "-rs" | |
//alias r_quickfireR r_quickfire1 | |
//alias r_quickfire1 "+attack; wait 3; r_quickfire2" | |
//alias r_quickfire2 "-attack; wait 3; r_quickfireR" | |
//alias "+r_quickfire" "alias r_quickfireR r_quickfire1; r_quickfireR" | |
//alias "-r_quickfire" "alias r_quickfireR" // nop | |
//bind "MOUSE1" "+r_quickfire" | |
// repeat 4 ten burst | |
alias "+burst" "+attack; wait 40; -attack" // 4 ten burst | |
alias "-burst" "-attack" // 4 ten burst | |
alias r_burstR r_burst1 | |
alias r_burst1 "+burst; wait 30; r_burst2" | |
alias r_burst2 "-burst; wait 30; r_burstR" | |
alias "+r_burst" "alias r_burstR r_burst1; r_burstR" | |
alias "-r_burst" "alias r_burstR" // nop | |
// toggle burst mode | |
alias "t_burst" "t_burst1" | |
alias "t_burst1" "bind MOUSE1 +quickfire; say_team quick fire mode; alias t_burst t_burst2" | |
alias "t_burst2" "bind MOUSE1 +r_burst; say_team 4 burst mode; alias t_burst t_burst3" | |
alias "t_burst3" "bind MOUSE1 +attack; say_team normal mode; alias t_burst t_burst1" | |
bind "g" "t_burst" | |
-------------------------------------------------------- | |
■ モロトフフェイント | |
モロトフを投げるフリをしてやっぱりやめる、という一連の流れをワンボタンで出来るようにしたもの | |
-------------------------------------------------------- | |
// molotov feint | |
alias "molotov_feint" "slot3; +attack; wait 200; -attack; lastinv;" | |
-------------------------------------------------------- | |
■ カウントダウンスクリプト | |
3, 2, 1とカウントダウンしてgoとチームチャットで発言するスクリプト | |
ボイスチャットのない野良で、マンホール降りるときなんかに使えるスクリプト | |
-------------------------------------------------------- | |
alias "countdown_rdy" "say_team countdown start; wait 90; wait 90; say_team 5; wait 90; say_team 4; wait 90; say_team 3; wait 90; say_team 2; wait 90; say_team 1; wait 90; say_team go" | |
-------------------------------------------------------- | |
■ くるくる回転スクリプト(AFK対策) | |
その場でくるくる回転するスクリプトです | |
AFKというのはAway from keyboard(キーボードからはなれている) | |
つまりどっか行っちゃったときに何の入力もないと休憩中状態になってしまうので | |
その対策のためにその場でくるくる回転するというスクリプトです。 | |
-------------------------------------------------------- | |
alias "t_kurukuru" "t_kurukuru1" | |
alias "t_kurukuru1" "+left; alias t_kurukuru t_kurukuru2" | |
alias "t_kurukuru2" "-left; alias t_kurukuru t_kurukuru1" | |
bind "h" "t_kurukuru" | |
-------------------------------------------------------- | |
+leftや+rightコマンドでマウスが動かせます | |
//--------------------------------------------------------------- | |
// スクリプト作成FAQ | |
//--------------------------------------------------------------- | |
■ キーを押したときと離したときに何かをしたい | |
bindの+/-機能を利用してください、この記事の別の項目にて詳細を記述しましたので | |
そちらを参照ください | |
■ キーを押している間だけ何かを行いたい | |
bindの+/-機能を利用してください、この記事の別の項目にて詳細を記述しましたので | |
そちらを参照ください | |
■ 機能を切り替えたい(トグル/toggle) | |
------------------------------------------------ | |
alias "t_item" "t_item1" | |
alias "t_item1" "alias t_item t_item1; say item1" | |
alias "t_item2" "alias t_item t_item2; say item2" | |
------------------------------------------------ | |
t_itemを実行するごとに、t_itemのaliasがt_item2, t_item1, t_item2...と変わっていきます | |
say item1とsay item2となっているところを変更すれば任意のコマンドをトグルで実行できます | |
以下は簡単な例ですがディレクターのON/OFFを切り替えるスクリプトです | |
------------------------------------------------ | |
alias "t_director" "t_director1" | |
alias "t_director1" "director_stop; say director stop; alias t_director t_director2" | |
alias "t_director2" "director_start; say director start; alias t_director t_director1" | |
------------------------------------------------ | |
t_directorをbindしたキーを押すごとにディレクターの有効/無効が切り替わります | |
■ 無限に何かを行いたい(ループ/loop) | |
まず無限ループを作成するとわかりやすいです | |
以下のようなaliasを作ると無限にコマンドを実行できます | |
loopというaliasの中でloopというaliasを実行してるので無限に実行されてしまうのです | |
------------------------------- | |
] alias loop "echo test!; loop" | |
] loop | |
test! | |
test! | |
test! | |
test! | |
.... | |
------------------------------- | |
このままだと無限に実行されてしまうため | |
どこかで終了条件を設定する必要があります、当たり前ですがそうしないと実用性が低いです | |
ここでは別のaliasを実行するとループがとまるように改造してみましょう | |
loop_stopという名前で作ってみましょう | |
noneというaliasと、loop_stopというaliasを追加することにします | |
noneは何も実行しないというaliasで、loop_stopでは、loopの中身をnoneに設定しています。 | |
loopの中でloopが実行されることにより、無限に続いていたループがあるので | |
それを断ち切るためにloopの中身を何もしないnoneに設定することにより終了させているのです。 | |
------------------------------- | |
] alias loop "echo test!; loop" | |
] alias none "" | |
] alias loop_stop "alias loop none" | |
test! | |
test! | |
test! | |
test! | |
] loop_stop | |
------------------------------- | |
次はこれをキーで制御出来るようにしてみましょう | |
キーを押している間だけ無限ループをさせて、離したときに終了するものです | |
キーを押している間だけ何かを実行するには、bindの+/-機能を利用します | |
bindについては別の項目で詳細を解説しているのでそちらを参照してください | |
---------------------------------------------------------------------------------------------------- | |
alias r_flushR r_flush1 | |
alias r_flush1 "impulse 100; wait 5; r_flush2" // impulse 100でライトON/OFFトグルできます | |
alias r_flush2 "impulse 100; wait 5; r_flushR" | |
alias "+r_flush" "alias r_flushR r_flush1; r_flushR" | |
alias "-r_flush" "alias r_flushR" // nop | |
---------------------------------------------------------------------------------------------------- | |
■ 複数キー同時押しバインドの作り方 | |
たとえばSHIFTキー+数字キー、の例で説明します | |
SHIFTキーを押している間だけ読み込まれる設定ファイルを作成しそこで既存のbindを上書きします | |
まず普通のuserconfig.cfgを作ります | |
次にSHIFTキー押している時だけ読み込まれるcfgを作ります。 | |
ここでは、shift_key.cfgとします | |
userconfig.cfgには以下を記述します | |
-------------------------------------------- | |
alias "+go_shift_mode" "exec shift_key" | |
alias "-go_shift_mode" "exec userconfig" | |
bind "SHIFT" "+go_shift_mode" | |
bind "1" "slot1" | |
bind "2" "slot2" | |
-------------------------------------------- | |
次に、shift_key.cfg | |
-------------------------------------------- | |
bind "1" "echo 1" | |
bind "2" "echo 2" | |
-------------------------------------------- | |
こんな感じです | |
念のため再度解説しておくとshiftキーを押したときに、+go_shift_modeが実行され | |
shift_key.cfgが読み込まれます。 | |
そしてbind "1"が上書きされますので、SHIFT+1のときは、shift_key.cfgのbind "1"が実行されます | |
shiftキーを離すと、-go_shift_modeが実行され、userconfig.cfgが実行されますので | |
普段のbind "1"は、userconfig.cfgのものになります。 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment