・どう見られてるの? 第六章で作成したマグナムのクローン武器「ゲロ銃」、 クライアント視点の武器ビューモデルに関しては特に問題がないことは第七章でわかりました。 しかし、ゲロ銃使用中のあなたを他のプレイヤーが見た場合、どんなふうに見えるんでしょうね? |
||||||||||||||||||||||||
・Botを足してみよう さて、とりあえずserver.dllをビルドするための hl_sdkプロジェクト(第五章でソリューションを分離してからhl→hl_sdkに名前が変わっています) へ2つファイルを足してもらいます。 C:\Bodycon\src\dlls\hl2mp_dll 上記フォルダ下の hl2mp_bot_temp.cppと hl2mp_bot_temp.h この2つのファイルをVC++のソリューションエクスプローラのツリー上で以下のパスに該当するフォルダ下へドラッグ&ドロップします。 hl_sdk\Source Files\HL2MP (´・ω・`)追加で〜きた♪ 次は以下のように4箇所だけコードを書き換えましょう。 ☆追加したばかりのhl2mp_bot_temp.cppを開き、 24行目で以下の赤く記した部分の書き換えを行います。
☆hl2mp_client.cpp(ソリューションエクスプローラ上でhl2mp_bot_temp.cppの2つ下にあるよ)の 188行目で以下の赤く記した部分の書き換えを行います。
☆hl2mp_gamerules.cpp(ソリューションエクスプローラ上でhl2mp_client.cppの2つ下にあるよ)の 33行目で以下の赤く記した部分の書き換えを行います。
☆同じくhl2mp_gamerules.cppの831行目で以下の赤く記した部分の書き換えを行います。
書き換えましたか?今度はプロジェクトのプロパティページを開いて(第三章参照)、 元から書いてある設定へ更にプリプロセッサ定義の記述を追加します。 ・構成プロパティ−>C/C++−>コマンドライン [追加のオプション]内に以下の赤く示した記述を追加
上記が完了したらF7キーを押してserver.dllをビルドしましょう。 |
||||||||||||||||||||||||
・ウン命の出逢い ゲームを起動する前にテスト用の狭いマップ unko_test.bsp こいつをダウンロードしてMODのマップフォルダ下 C:\Program Files\Valve\Steam\SteamApps\SourceMods\Bodycon\maps にブチ込みます。 ブチ込んだらこのマップでゲームをスタート! (;゚Д゚)鬼ダサイ駄目マップキタコレ!! コンソールから以下のコマンドを実行します。
すると・・・ (´・ω・`)ズコーン!ビックリしたなあ、もう! 更にコンソールから以下のコマンドを実行したら上下左右向いたり、跳んだり、しゃがんだりしてみましょう。
(#゚Д゚)てめえ、俺の真似すんじゃねえバッキャロー!! |
||||||||||||||||||||||||
・あれれ? Botがモノマネモードに入ったら、ゲロ銃を選択してみます。 時々Botがゴネて武器を切り替えない時がありますが、しつこく選択しなおすとBotが根負けして ゲロ銃を選択してくれます(他の武器に切り替える場合も同様です)。 Botがゲロ銃を選択したらこのコマンドでモノマネモードを解除して近づいてみます。
・・・あれれ? (´・ω・`)なんか、その持ち方ヤバくない?手首だいじょぶ? ちなみに、こっちがガッポイライフル(AR2)の正しい持ち方。(モノマネモードの時は impulse 101 コマンドでBotにも武器、弾薬が支給されるので、色々遊んでみましょう) |
||||||||||||||||||||||||
・はやく直さないと 早急にこの問題を解決しなければ愛すべきガッポイの手首が折れてしまいます。単純に武器スクリプトファイル weapon_gero.txtのワールドモデル指定を
・・・そのとおり、駄目なんです。 ソースコード上のここに問題があります。
武器クラスのm_acttableメンバ変数には {[基本動作のアクティビティ], [基本動作を上書きするアクティビティ], [マルチプレイに関係なさそうなんで無視]} この組み合わせを単位として、武器を持った状態でのプレイヤーのアニメーションを決定するために 最低限7つの要素を用意しなければなりません。逆にこれを正しく指定しさえすればあとはValve提供の既存クラスが うまいことやってくれるので他に気にすることは何もありません。
(#゚Д゚)んじゃあゲロ銃クラスのm_acttableメンバの内容を ガッポイライフルのソースweapon_ar2.cppと同じように書き換えりゃ終わりじゃねーかバロー 確かにそれで正解なんですが、もうちょっと細かく探ってみましょう。 ゲロ銃は基本動作を以下のように上書きしています(ACT_RANGE_ATTACK1に対するACT_RANGE_ATTACK_PISTOLの指定はシカト、どうでもいい) これらのアクティビティはプレイヤーのモデルとどんな関係にあるんでしょうか? それはプレイヤーのモデルのQCファイルにヒントがあるかもしれません。以下のファイルを開いてみましょう。 C:\Program Files\Valve\Steam\SteamApps\××××\sourcesdk_content\hl2mp\modelsrc\Player\player_anims.qci ・・・と思ったらQCIファイルっすか?QCのインクルードファイルのような物と思っちゃっていいのかな? それはさておき、このファイルの中でゲロ銃使用中のプレイヤーが各動作のアニメーションに使用する アクティビティに割り当てられたシーケンスを抜き出してみまいた。表示の都合上、改行してる場所もありますが、 実際のQCでこんな改行は認められていないはずです。
これを見る限り、モデルデータの中からアニメーションの再生ポインタを見つける手順は武器のビューモデルと同じと考えてよいでしょう。 各動作をSDKのModelViewerで見るとゲロ銃を使う際のプレイヤーの動作はこんなふうに変更すると うまく行くと思うニャー(=・ω・=)。 で、その名前に該当する物をplayer_anims.qciから探すと
つまりゲロ銃で基本動作に上書きするアクティビティはこう変更すればいいんだニャー(=・ω・=)。 というわけでソースコードで問題のある個所を赤く示したように修正してserver.dllをビルドします。
|
||||||||||||||||||||||||
・ハッピーエンド もっかいゲームを起動して確認してみましょう。 (´・ω・`)ひゃっほう!その持ち方が正解だぜ! (´・ω・`)バーン!バーン! (※実際は bot_zombie 0 に戻してやらないとバンバンできません) |