2016年3月17日木曜日

nms_retreatいじり

・テクスチャ置換
Hammer Editor内で置換するには、nmrihフォルダにファイルを配置する。
ゲーム内で置換するには、customフォルダに置く。もしくは.bsp にbspzipで追加(bspzip add)するか、pakrat等で追加する。確認時は、クライアント(ゲーム)のキャッシュを削除しないと反映されないっぽい(コマンドでテクスチャを更新してもいけるかも?)。

サイズが1024x512のvtfを2048x1024(2倍)にして同名ファイルで置換すると、普通に表示される(解像度を上げることが出来る)。つまりアスペクト比そのままなら解像度上げたり下げたり出来るっぽい。


・trigger_progress_use は、clip (Player clipで確認) の中にあるとプレイヤーが使えない

・random_spawner は clip (Player clipで確認) の中にあるとスポーンしない

・ゲーム中にprop_dynamic等がすぐ近くに居ても見る角度によって消えたり現れたりする
コンパイル時に、bsp Normal, VIS No, RAD No で発生。VIS Fast で解消したが、なぜ発生するかはわからない。

・light_dynamic
動くスポットライト光源。

LightBrightnessは6か8じゃないとダメらしい。デフォで0。
Maximum distanceは照らす対象との距離を考えて設定(この距離に照らす対象が入るようにする)。なお、マップ上(画面上)に黄色い線で範囲が表示されるのでそれでチェックすると良い。

向きはピッチはPitchで設定するっぽい。Pitch Yaw Rollは使わないようだ。なお、画面上の照らしている方向と設定値が一致しないことがあるので、この値をいじるときは注意が必要。ゲーム中にライトが点灯しない(地面を照らしていない)と思っていたら、実は点灯していて、下では無く横を照らしていたので気づかなかったっぽい。

というか、なんかやっぱり点かない。何が原因かさっぱり。
-------------------------------------------------------------------------
func_areaportal/func_areaportalwindowの作り方
nms_retreatでは今現在使っていないが、書いておく。なお、全てを把握してるわけじゃないし間違っている部分もあるかも。

■使用前に基本的な考え方

func_areaportal と func_areaportalwindow をまとめて areaportal と呼ぶ。

建物やトンネル等、穴があるモノ(穴をふさぐことで閉鎖空間になるもの)で使える。これを使うことでその穴から覗いて見える範囲以外は描画されないためfpsが上がるというものらしい。実際に使ってみた感じでは結構な効果があった。

積極的に使った方が良いが、ちょっとでも隙間があればLeakするので、複数のモノ(建物等)に一度に使わず、一つの建物に設置したら、bspのみでコンパイルして、Map→PointfileLordでLeakチェックすると効率的。Leakしていない時はPointfileが無いためファイル選択画面になり、LeakしているときはPointfileが読み込まれるという動作の違いでLeakしているかの判断がつく。

Leakしているなら、コンパイルログとマップをチェックしてLeak原因を直す。方法は後述。

ちなみに、ログを見てLeakチェックをすることもできるが、ログのLeakの文字はかなり見落としやすいのでおすすめしない。

もし、一つのモノ(建物等)毎にBSPコンパイルしてLeakチェックしないと、どのareaportalでLeakが発生したか特定するのはとても難しい。”Leakしたなら Map →PointfileLoadで赤線が表示されるからわかるじゃないか”と思うかもしれないが、AreaportalのLeakはHammer Editorがコンパイル中に落ちることもある。あとPointfileの赤線がAreaportalを指してくれるとは限らないと思う。とにかくLeakは何より優先して潰さないといけない(あらゆる問題を引き起こす)し、Areaportalはそれが発生しやすいし、そして、Areaportalの性質上原因特定が難しいことが多いので、繰り返すが、一つのモノ(建物等)毎にAreaportalを設置して、BSPコンパイルしてLeakチェックしなければならない。

■func_areaportal と func_areaportalwindowの違い
func_areaportal
ポータル(玄関)というだけあって、ドアのある(視界がさえぎるものがある)穴に使用する。ドアには名前を付け、そのドアの名前をfunc_areaportal の Named of Liked door に付ける。ドアが最初開いている場合は、Initial State を Open(閉じてるならClosed)を設定する。
ドアが閉まっている時は、ドアの向こう側は描画しないためfpsが減る。ドアが開いている時は当然ドアから見える部分を描画される。そのためにドアとのリンク設定する。
雨戸みたいなものがついていて閉じられる窓ならば、窓であっても func_areaportal を使う。

func_areaportalwindow
func_areaportalと違って、こちらは開きっぱなしの穴に使う。つまり窓みたいなもの。例えばドアが無い玄関も開きっぱなしなのでこちらを使う。func_areaportalはドアの開け閉めで描画が変化するが、こちらは距離で変化する。Fade Start Distance Fade End Distanceで、それぞれフェードアウトし始める距離、フェードアウトが完了する距離(確か真っ黒になる)を指定する。

距離の設定の例

・一番遠くからその窓が見える距離を調べる(マップ内で見たり、実際にマップ内を歩く)。それをFade End Distanceに設定する。

・窓から遠くまで離れて見て、窓の向こう側のものがほとんどわからないぐらいに(窓が画面上かなり小さく)なるなら、その距離をFade End Distanceを設定

ちなみに、Fade Start/End Distanceを設定しても、マップ中でその範囲が円で表示されたりしない(表示させる方法あるんだろうか?)のでとっても不便。

なお、他の設定値の意味は知らない(半透明じゃない時に使うとか?)。

■作成手順
1. デフォルトで右下にあるtextureでAreaportalのテクスチャを選択(参照→filterに"tool"で絞り込むとすぐ出る)
2. Areaportalを作る窓やドアをクリック
3. 左メニューのブロックツール(白い箱)でAreaportalを窓・ドアの内側に埋まるように作る。
具体的には2D画面でドラッグし、それを右クリックで作成。これで6面全てにAreaportalと書かれている半透明の箱(板)が出来る。
1.2.3 は別に順番は決まっていないが、この順番だとスムーズ。2.を行うと、Areaportal を作った時にそれと同じ大きさになるので楽。
4. Areaportalをクリックしてから ctrl+T →func_areaportal/func_areapotalwindow を選択し適用をクリック。各設定値を設定する。
5. 厚さを1ユニット?にして、窓やドアに埋め込む。埋め込む穴より大きめ(つまりAreaportalの端っこが建物等にめり込む)でも良い。自分はやったことがないが、他の人のマップを見ると、複数の穴を一枚のAreapotalで塞いでも良いようだ。そのマップでは、ある一面の壁にある複数の窓を一つのAreapotalで塞いでいた。
6. Areapotal をそのモノ(建物など)全ての穴(窓やドア)に設置したことを確認したら、BSPのみでNormalコンパイルする。コンパイルが終わったら Map→PointfileLordで実行。ファイル選択画面になったらLeakしていないので、それを閉じてセーブしておく。ファイル選択画面になっていなかったら、Leakを修正する。

■Leak修正方法
通常のLeak修正と変わらない。Leak は”漏れている”の意味。閉鎖していなければならないマップに隙間があったり、マップの一番外側の壁の外にエンティティがあったりすると発生する。Areaportalの場合は、Areaportalを設置した建物(等)に隙間があったりする場合に発生する。

PointfileLordしたことで、マップ内にLeakを表す赤い線が表示されているので、それでたどってLeak原因を特定する。

Leak元となっている部分は大体コンパイルログに載っている。
コンパイルログは、コンパイル時に左上に表示されている灰色背景の黒文字の画面。コンパイル後にどこかに消えた時は、F9(コンパイル画面)で再度表示される。または、マップ名.log ファイルにコンパイルする度に追記されている。追記なので、一番最後の方を見ないと意味が無い。ログをみなれていなくてややこしいと思ったら、ファイルを消して(もしくはな中身を空にしてセーブして)、再度BSPコンパイルすれば良い。

Leakログの例
ただし、これはAreapotalが原因でLeakしたログじゃないので少し違うと思う。が、基本は同じ。

0...1...2...3...4...5...6...7...8...9...10**** leaked ****
Entity chopper_entryexit_point (-257.00 -4489.00 1166.13) leaked!

leaked で Leakが発生しているのがわかる。
その次の行でLeak元の場所(座標)が記載されている。
この座標はコピーして、map→View→Go to Cordinate?(座標に移動の意味)に貼り付け、OKクリックでその座標に3D画面がジャンプする。2D画面もジャンプさせたければctrl+E。そこからたどっていけば、どこからLeak(漏れている)しているか大抵わかる。

なお、Leakはまったくマップに問題が無い場合でも発生することがある(本当勘弁して欲しいけど)。その場合は、セーブしてからHammer Editorを再起動してマップを読み込み、Pointfileをロードして、赤線が突き抜けている一番外側の壁(skybox等)を削除→Undo(元に戻す)→BSPコンパイルで直ると思う。

なお、このブログ内で、Leakをほとんどリアルタイムでチェックするバッチファイルを作って置いたので、Windowsならそれを使うとかなりLeakに悩まされる事が減ると思う。
-------------------------------------------------------------------------
・fog
env_fog_controllerで霧を使用する時、sky_cameraにも同様のパラメータがあるためそれも設定する。そうしないと、3Dskybox部分と色合い・明るさが合わずに不自然になる。

・Player spawn
プレイヤーは最初にスポーンする前は視点が0,0,0(ワールドの中心)になってるっぽい。
なので、マップ全体がそれより高い位置にあると、最初の視界が地面に埋まったりする。

・fade out/fade in
木は葉っぱ、幹の順にfade outする。
車は全体が薄くなって消えるっぽい。

・ゲームクラッシュ
overload_wave_controller の resupply_freq を 0 にするとsupplyが来る時にゲームがクラッシュする。最低値は1でよい(1で永遠にsupplyが繰り返される)。

・Leak
あるLeakが発生した時の現象。
車等のprop_dynamic/prop_staticが見る角度によって消えた。

・Leak
func_button で Leak が起こった
OnPressed brush_needfood texture decals/custom/mr_002
が、このボタンを消してコンパイルしてLeakが無くなった後、アンドゥでボタンを出してコンパイルしたらLeakが起こらなかった。バグだろうか。とにかく、自作のLeakバッチファイルに助けられた。

・Leak
下記hidden3行を消したらLeakが直った。
hidden
{
solid
{
"id" "156"
side
{
"id" "157"


}
}

・Leak
prop_static のパトカーを prop_dynamic にしたら発生。元に戻してcompileでLeak無くなり、再度 prop_dynamic にしても発生しなかった。。。

・Leak
下記skyboxがLeakの大元の原因かもしれない
--------------------------------------------------------------
hidden
{
solid
{
"id" "156"
side
{
"id" "157"
"plane" "(-1792 -6688 1376) (-1792 -6688 -72) (-1792 -6652 -72)"
"material" "TOOLS/TOOLSSKYBOX"
"uaxis" "[0 1 0 0] 0.25"
"vaxis" "[0 0 -1 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "158"
"plane" "(1280 -6652 1376) (1280 -6652 -72) (1280 -6688 -72)"
"material" "TOOLS/TOOLSSKYBOX"
"uaxis" "[0 1 0 0] 0.25"
"vaxis" "[0 0 -1 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "159"
"plane" "(1280 -6688 1376) (1280 -6688 -72) (-1792 -6688 -72)"
"material" "TOOLS/TOOLSSKYBOX"
"uaxis" "[-1 0 0 0] 0.25"
"vaxis" "[0 0 -1 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "160"
"plane" "(-1792 -6652 1376) (-1792 -6652 -72) (1280 -6652 -72)"
"material" "TOOLS/TOOLSSKYBOX"
"uaxis" "[1 0 0 0] 0.25"
"vaxis" "[0 0 -1 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "161"
"plane" "(-1792 -6652 -72) (-1792 -6688 -72) (1280 -6688 -72)"
"material" "TOOLS/TOOLSSKYBOX"
"uaxis" "[0 -1 0 0] 0.25"
"vaxis" "[-1 0 0 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "162"
"plane" "(-1792 -6688 1376) (-1792 -6652 1376) (1280 -6652 1376)"
"material" "TOOLS/TOOLSSKYBOX"
"uaxis" "[0 1 0 0] 0.25"
"vaxis" "[-1 0 0 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
editor
{
"color" "0 204 189"
"visgroupshown" "1"
"visgroupautoshown" "1"
}
}

}

基本的にLeakしたら、ポイントファイルをロードして、コンパイルログ(Hammer Editor内のログか、マップ名.log)のLeak行の座標をコピー、View→座標に移動 でペーストして移動。
(AreaPortal等の)Leak原因がなさそうなら、セーブしてHammer Editorを再起動してロード、ポイントファイルロードして、
--------------------------------------------------------------

・Output で SetHealth <none> だと死ぬ
・trigger_hurtはDisableだとParent指定しても移動しない
・env_fireが表示されない→着火後、存在しないparentを設定していた
・env_fire
  点火:デフォルト状態で初回は Start Fire で良い。Disableで消したら Enable→Start Fire で再度着火。
消す:Disable(又は Enable→Start Fire→Disable)。Exitinguish は動作しない?→秒数指定で動作するっぽい。でも説明によると永久に消えるようなので、killで良い気がする
・hammer editorで開く時にクラッシュ(開いている時はクラッシュしなかったかも)
entity
{
"id" "78523"
"classname" "trigger_multiple"
"origin" "-371 614 80"
"spawnflags" "3"
"StartDisabled" "0"
"wait" "1"
connections
{
"OnStartTouch" "!activator,AddOutput,model models\nmr_zombie\bateman_infected.mdl,0,-1"
"OnStartTouch" "!activator,SetAnimation,crawl,1,-1"
"OnStartTouch" "!activator,SetDefaultAnimation,crawl,1,-1"
}

・炎で着火しNPC・プレイヤー等にダメージを与え、移動する TriggerHurt (着火する看板等)の作り方。
看板の中心にenv_fireを置く。env_fireは、Parentに看板を指定し、OnIgnite(着火時)でTriggerHurtをEnableするよう設定する。ちなみに、env_fireは炎に接すると自動的に着火する。
TriggerHurtを看板を覆うように設置し、必ずEnableにし、Parentに親Entity(看板等)を指定する
Logicautoでmapspawn時にTriggerHurtをDisableにする(こうしないと火をつけていないのにTriggerHurtによってダメージが発生する)。

・physics_cannister には、なぜか SetParent が設定出来る(表示上は設定できていないようにみえるが動作するようだ)。

・env_entity_makerの使い方(移動可能なスポーン)
1. スポーンさせたいEntityを置き、名前をつける
2. point_templeteに名前をつけ、TempleteXXに上記Entity名を記述
3. env_entity_maker に名前を付け、point_template_To_Spawnにtemplate名を記述
4. 2と3のEntityをほとんど重ねて、スポーンさせたい場所に置く。
5. スポーンする手段を作成。なんらかのEntityから env_entity_maker に対して ForceSpawn をOutput
6. スポーンしたEntityにParent設定させる手段を作成。なんらかのEntityから スポーンさせたいEntityに対して、setparent の output で移動する Entity に付加する

実際スポーンする場所は、env_entity_maker の位置に対する point_template の相対的な位置っぽい。そして、env_entity_maker にParent設定することで、スポーン位置を移動することが出来る(point_templateにはParent設定出来ない)。そのため、4. のように両Entityの位置を重ねている。
※今回はじめて使ったので間違っている部分があるかもしれない

参考 https://developer.valvesoftware.com/wiki/Respawning_Items

・math_counter の基本的な使い方

例:

整数の数値計算

overload_wave_controller の OnNewWave のoutput で math_counetr に Add 1 して、Math_counter の Maximum Legal Value を 10にし、Output で OnHitMax にすると、10WAVE目を検知出来る。さらに、Delay に30秒を指定すれば、10WAVE目でゾンビがある程度出現したタイミングで、脱出用ヘリを登場させたり出来る。
Overload wave_controllerのCustom Win による脱出イベントは、そのWAVEが終了した時にイベントが始まるため、ゾンビがほとんどいないため、緊張感に欠ける。それを避けることが出来る。

例えば3箇所に triggrer_multiple を置いて、それぞれがゾンビ(NPC)が存在する場合に math_counter に Add 1、存在しな場合に Subtract 1 をoutput、math_counter は数値が3になった時(3箇所にゾンビが存在)に、ピンチ救出用の手段を提供する

・math_counter や math_remap 等のとても便利な使い方

Output の OutValue は、現在持っている値と共にを出力する。動作するタイミングは持っている値が変化した時。
値が変化するのは Input のタイミング。値が変化したら随時動作させたい時に便利。

例1:生存人数表示

Trigger_multiple でプレイヤーが入ったらmath_counterに1をAdd、出たら1をsubtract する設定。
logic_case で、1~8の入力に対して、1~8の数字を表示する設定。
math_counter で OutValue logic_case名 InValue とする
これで、生存人数を(人数が変化するたびに)表示出来る。

例2:ゾンビのHP設定

ゾンビに名前を shambler01 とつける

Addoutput max_health 20000
これでHPのMAXを設定。SetHealthより先に実行すること。

OutValue shambler01 SetHealth <none>

これでそのゾンビのHP(ちなみにHP最大値ではない)を現在値で設定出来る。
<none>と設定することで、現在値をOutput出来る。

・math_counter の便利な使い方
Output の OnGetValue は GetValue のInputがあると動作する。
OutValue に似ているが、こちらは値を変化させないで動作させることが出来る。単純にmath_counterの現在値を利用したい時に便利

例:
logic_case の名前を case_Display にして、1の時「100」 2の時「200」 3の時「300」 と表示する設定
math_counter を OnGetValue case_Display InValule と設定
この数値を表示したいタイミングで、他のEntity から math_counter に Output で GetValue するとmath_counterが持っている値に応じて「100」「200」「300」の数値が表示される。

・infodecal も info_overlay も名前をつけると表示されなくなる


・Hammer Editorで時々、Entityのプロパティが表示されなくなることがあるが、多分それは igアイコンクリックした後、元に戻すのを忘れている

・point_template でスポーンする時、スポーン対象は画面上の見た通りの位置でスポーんされる

・HDRでコンパイルすると、オブジェクトが真っ白になって不自然
→light_environment の明るさ(default=200?)を減らす

・空用の、dome型のpropの画像の作り方
ドーム用の画像を拾ってくる。1024x1024 png
vtfedit起動→Import でpng読み込み
2箇所ともDXT1、その他は全てチェックを外して読み込み。
vtfでセーブ。以上。

・Resupply(ヘリの補給物資)のテストがしたい時は、overload_wave_controllerで、Resupply Freq. を1にすれば、1WAVE目が始まらず、ずっと補給物資が来る。ちなみに、この設定値を2にすれば、2WAVE目の直前(1WAVE目が終わった時)に最初の物資が来る。以後、2WAVE毎(次は4WAVEの直前)に物資が来る。

・trigger の OnTrigger と OnStartTouch の違い
OnStartTouch はタッチした時だけFire。その後、一度トリガーの外に出て再度タッチすれば再度Fireする。
OnTrigger はタッチした時+トリガー内にいる間にDelay Before Reset の度に繰り返しFireする。

・triggreのフラグ
多分自分が使うののは太文字くらい。
※ammoboxを検知する方法がわからない。filter使っても検知出来ない。

1 : Clients クライアント(プレイヤー)

2 : NPCs (NPC。ゾンビ)
4 : Pushables (押せるもの?多分prop_physicsとかprop_dynamic_override?)
8 : Physics Objects (prop_Physics?)
16 : Only player ally NPCs
32 : Only clients in vehicles
64 : Everything (not including physics debris) (physicsの破片以外全て(プレイヤーとか))512 : Only clients *not* in vehicles
1024 : Physics debris (physicsの破片)
2048 : Only NPCs in vehicles (respects player ally flag)
4096 : Disallow Bots
4096 : Correctly account for object mass (trigger_push used to assume 100Kg) and multiple component physobjs (car, blob...) (New with Alien Swarm)

------------------------------------------------------------------
・スポーン方法について

■class nameでスポーン。

class nameにあるアイテムはそれでスポーン出来る。ただし、一回のみ。繰り返しスポーンさせるには random_spawnerを使う。フラグのDisable Item Motionをチェックすると、動かなくなる(落下等しなくなる)。例えば、壁や木や人に刺さってる消防斧を表現する時等に使える。プレイヤーが拾った後は普通に使える。拾えないようにするなら、prop_dynamic等で表現すればよいだろう。

アイテム名の規則

fa_ = FireArm。火器。つまり銃。
item_ = 主に回復アイテム。無線機、マグライトもここ。
tool_ =ツール。消火器、溶接機、バリケード(ドアにある板を打ち付けられる場所)等。
exp_ = Explosion。爆発物
ammobox_ = 弾薬。チェーンソーの燃料やバリケード用の板もここ。
bow_deerhunter = 弓の矢。ammoboxに含まれそうだが、なぜかこれだけ命名規則から外れている。

■random_spawner

ammobox(弾薬、チェーンソーの燃料、フレアガンの弾)をスポーンさせるには必須。他にも、class name に無いアイテムはこれでスポーンさせる。例えば、item_gene_therapy(感染を完全に直す薬)等。こういうアイテムは現在(ver1.09.6)はスポーンclass name指定でスポーン出来ないが、いずれスポーン出来るようになると思われる。ただ、おそらくそうなってもrandom_spawnerでのスポーンを書き換える必要は多分無い。

指定するcl.ass name は Test Model(Hammer Editor内での表示アイテム)で探すと簡単。

スマートエディットでAdd押して、 key (名前)とvalue(出現率、%)を設定。
マップがスポーンした時(スタートした時)、スポーンする。ただし、フラグの Don't spawn on map start にチェックを入れると、マップスポーン時、スポーンしなくなる(Triggerされない限りスポーンしない)。また、point_templateで指定された場合も、マップスポーン時、フラグに関係なくスポーンしない。
単に好きなタイミングでスポーンさせるだけなら、random_spawnerを使う場合、point_templateは不要。もしスポーン場所を移動させるなら(多分) point_template が必要で、さらに env_entity_makerも必要。

■ゾンビのスポーン
方法としてはclass nameでスポーンに含まれるが、別記する

npc_nmrih_shamblerzombie
歩くゾンビ。這うゾンビ・軍人ゾンビも含まれる。それを指定して出現させる方法は知らない。
npc_nmrih_kidzombie
キッドゾンビ。男の子・女の子の2パターン
npc_nmrih_runnerzombie
ランナーゾンビ(走るゾンビ)。

下記2つは表示されない。多分使えない。
npc_national_guard
npc_national_guard_leader


・Property Nameの説明

FX Color(R G B) = 指定すると、ゾンビに色が付く。

Render Mode =描画モード。Don't Render(描画しない)にすると透明になる。

Target Path Corner = info_targetだったか?それを設置して、それの名前を指定すれば、(近くに敵(普通プレイヤー)がいない場合は)そこへ移動する。

フィルター(Filter)関係は以下(A. B.)2つ。
フィルターをイメージすると良い。つまり、絞り込みが出来る。設定したフィルターを通ったものだけが対象になる。
フィルターに共通する設定項目、Filter modeの説明
  Allow entities that match criteria  (指定したものにマッチするものだけを通す)
  Disallow entities that match criteria (指定したものにマッチしないものだけを通す。つまり逆)

A. Damage Filter = ダメージフィルター。ダメージを受ける対象を限定する
つまり、何によってダメージを受けるかとということ。
例:焼いてもダメージを受けない(焼く以外ならダメージ入る)
filter_damage_typeを作り、Nameに名前、Filter mode に Allow entities that match criteria(指定したダメージタイプだけ許可)、Damage Type に BURN(焼く) を指定して、このfilter type の名前をDamage Filterに指定する。
Damage Type が BLAST だと多分爆発。

B. Enemy Filter = 敵フィルター。敵となる対象を限定する
filter_enemy を使う。設定方法は、Damage Filterと同じような感じ。

・ゾンビを殺す方法
普通は、プレイヤーが素手・武器で殴ったり、銃で売ったり、炎で焼かれたり(ただし、普通の炎ではゾンビはなかなか焼かれない、その場でしばらく停止する必要があるっぽい)、爆発物でダメージを受ける。
その他には、他のEntityからKillをOutputすれば殺せる。試していないが、BecomeRagdoll(ラグドールになる) を送った場合も殺せるかも?
また、trigger_hurt(hurtは”傷つける”の意味)で、フラグの NPCs にチェックを入れてもダメージが入る(Client にチェック入れればプレイヤーにもダメージ入る)。その際は、Damage Type でダメージタイプが選べる。例えば、BURNを指定すると指定ダメージと共にゾンビが焼かれる。他にも色々なタイプがあるが、自分が試した感じでは、

上記設定を利用したボスキャラっぽいものの作り方。
ゾンビを透明にして名前(Name)を付けて、prop_dynamicで代わりのモデル(ボスキャラみたいなもの等)を表示して、それのParent(親)にゾンビを指定すれば、ボスキャラっぽいものが作れる(さらに、prop_dynamicに何かアニメーションさせるとよいだろう)。prop_dynamicはCollision(当たり判定部分)をNot Solidにすれば、当たり判定が無くなる。本体はゾンビなので、そちらは透明になっても当たり判定はあるので、普通に攻撃が当たるし、殺せる。ゾンビが死ぬと消えるので、ゾンビをParentとしているprop_dynamicも数秒で消える。
------------------------------------------------------------------

・random_spawner_controller
直接アイテムを指定しないと動作しないっぽい。anyとかammoとかのカテゴリ指定が動作しないっぽい。今のところ使いづらすぎて使いみちが無いような。

・Optimize
prop_staticなどで、
Start Fade Dist
End Fade Dist
で、設定距離になったらフェードアウトする設定が出来る。
End Fade Dist だけ設定したら、End Fade Dist に近い距離になったら車(prop_dynamic)が欠けて見えた。Start Fade Dist を 0 にしたら、どっかの値を持ってくるらしいが、それを設定してみたら、目の前にいるのに透け始めているのでやめた。自分的には、結局 End Fade Dist と同じ値を設定したらOK。

http://wikiwiki.jp/sourcesdk/?%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB%A4%CE%B9%E2%C2%AE%B2%BD%A4%C8%A5%D1%A5%D5%A5%A9%A1%BC%A5%DE%A5%F3%A5%B9%A4%CE%A5%A2%A5%C3%A5%D7%CA%FD%CB%A1

・skybox
hl2_misc_dir.vpk
にもある。

・env_sprite(ウィンカー等)を同タイミングで光らせる
env_spriteで光らせる。
前部も同じタイミングで光らせる(ウインカーだから)ためには
logic_timerで同期させなければならない
(env_spriteのslow_strobe?とかで点滅させても同期しない)

・func_occluder
の効果を見たい場合は、
cl_showfps 1 でfps 表示
r_occlusion 1 でオクルージョンオン 0 でOFF (コンソールに表示される)
r_visocclusion オクルージョンが白線、オクルージョンで隠されているものが緑線、オクルージョンで隠れていないものは赤線で表示される。


0 件のコメント:

コメントを投稿