ここではHUDのカスタマイズ方法を簡単に説明していきます。なお、この文章は以下のページを参考にしています。
WarsowではHUDは専用のスクリプトファイルによって作られています。なので、テキストエディターで編集することが可能で、かつ容易に編集することが出来ます。まずは、実際にHUDファイルがどのように構成されているかを見てみます。
HUDファイルは
C:\Program Files\Warsow 1.02\basewsw\data0_10.pk3 もしくは C:\Program Files (x86)\Warsow 1.02\basewsw\data0_10.pk3
のなかに格納されています。拡張子.pk3の実態はzipファイルなので、.zipとリネームして解凍すれば中身のHUDファイルを入手できます。
data0_10.pk3を別の場所、例えばデスクトップにコピーし、data0_10.pk3を選択、F2キーを押してファイル名を編集しましょう。
data0_10.pk3 → data0_10.zip
リネーム後、data0_10.zipを解凍してみましょう。中に沢山のファイルが入っていると思います。
data0_10\huds
この中にHUDに関するファイルが入っています。
default.hudを開いてみましょう。'include ***'とたくさん書かれていますね。これは
\basewsw\huds\inc\
以下に入っている.hudファイルを読み込んでいます。このようにHUDの定義は細かい.hudファイルを読み込むことで定義されています。これにより、 HUDの一部だけを変更するのが簡単になります。例えば、defaultの照準に、guwashiのHealth表示に…と言った組み合わせを容易に作れます(表示位置が重なった場合は、手直しが必要ですが…)。
では、実際にHUDを改造してみましょう。既存のHUDファイルを変更するのがお手軽です。
まずはわかりやすいclassic.hudを改造してみましょう。タイマーの表示場所を変えてみます。以下の通りにしてください。
clock.hudの編集は5,6行目の
setAlign #CENTER, #MIDDLE setCursor 402, 27
を
setAlign #LEFT, #TOP setCursor 30, 27
に変更します。
さらに33,34行目の
setAlign #CENTER, #MIDDLE setCursor 400, 25
を
setAlign #LEFT, #TOP setCursor 32, 25
これでタイマーの表示が左上に変更されました。Warsowを起動して、Player setupからHUDをtestに変更してみましょう。タイマーの位置が変わっていれば成功です。
では、編集したclockについて説明していきます。
1行目のif文は、現在のゲームモードがRaceで無いことを確認しています。Raceモードではタイマーは必要ない、ということです。
5行目のsetalign #LEFT #MIDDLE は場所を合わせる箇所を指定しています。Left topなので左上が座標の基準点になります。
6行目のsetCursor 30, 27は後の drawClock で書き込むタイマーをどの位置に描き込むかを指定しています。
34,35行目の2つ目のsetalignとsetCursorは、タイマーを2重に表示させ影を作り立体感を出す為です。この部分は無くても問題ありません。
9行目のdrawClockで実際にタイマーを描き出しています。
このように、HUDスクリプトは
というような手順で書かれています。
setalign と setCursor の、配置のサンプルを添付します。
if %RACE == 0 // レースモードでは表示しない // draws the backdrop shadow setFont "virtue_28" // ← フォントの指定 使えるフォントはdata0_10\fontsに格納されている setAlign #CENTER, #MIDDLE // 描き出す内容の基準点 setCursor 402, 27 // 描き出す座標の指定 setColor 0, 0, 0, 1 // 色の指定 RGBおよび透明度 setSize 32 32 // サイズの指定 縦 横 drawClock // 上記の設定に従いタイマーを描写する // change color according to item setColor 1, 1, 0.6, 1 if %PICKUP_ITEM == #ITEM_RED_ARMOR // レッドアーマーを拾った時にタイマーを赤色にする setColor 1, 0, 0, 1 // red endif if %PICKUP_ITEM == #ITEM_YELLOW_ARMOR // イエローアーマーを拾った時にタイマーを黄色にする setColor 1, 1, 0, 1 // yellow endif if %PICKUP_ITEM == #ITEM_GREEN_ARMOR // グリーンアーマーを拾った時にタイマーを緑色にする setColor 0, 1, 0, 1 // green endif if %PICKUP_ITEM == #ITEM_MEGA_HEALTH // メガヘルスを拾った時にタイマーを紫色にする setColor 1, 0, 1, 1 // magenta endif if %PICKUP_ITEM == #ITEM_QUAD // クアッドを拾った時にタイマーをオレンジ色にする setColor 1, 0.5, 0, 1 // orange endif if %PICKUP_ITEM == #ITEM_WARSHELL // ウォールシェルを拾った時にタイマーを水色にする setColor 0, 1, 1, 1 // lightblue endif // draws clock setAlign #CENTER, #MIDDLE setCursor 400, 25 setSize 32 32 drawClock // タイマーの影を表示 //draws Warmup if %MATCH_STATE == #MATCH_STATE_WARMUP // ウォームアップ中は画面上に Warumup と表示する setFont "virtue_12" setAlign #CENTER, #MIDDLE setCursor 400, 125 setColor 0.4, 1, 0.4, 0.5 drawstring Warmup endif endif
HUDスクリプトでは、仮想的に解像度800×600として記述し、位置の指定などはこの解像度を元に行います。
なので左上の座標は0,0 、右下は800,600になります。
この値で位置が決定された後、本来の解像度に自動的に変換されて表示されるので、実際の解像度とは関係しないので注意してください。