武器を自由に取り出しできるようにする

 

必要そうな関数

  • GetPlayerPos
    プレイヤーの現在地座標を取得
  • AddStaticPickup
    指定した座標に指定した武器を出す
  • GetPlayerName
    プレイヤーの名前を取得
  • SendClientMessageToAll
    全体にメッセージウィンドウからメッセージを送信
 

作成手順

これは完全に私の作成手順です。まったくの無知な状態からのスタートでしたので何度も失敗してやっと動作したと言うものです。「こう動かしたほうが効率的だろう。」といった意見は大歓迎ですので掲示板などでお知らせください。今回は座標指定の勉強も兼ねているのでAddStaticPickup関数を使って作ります。

さて、武器を出現させるのに必要な情報は「座標と武器の種類、出現方法」です。まずは武器を出現させる関数のみを使用して動作を確認してみましょう。

ゲーム内で「Tキー」を押すと出てくるチャットウィンドウに「/save」と入力すると"GTA San Andreas/savedpositions.txt"にあるテキストファイルに以下の様なコードが書き込まれていると思います。これは「/save」コマンドを使用した時点でのあなたのキャラクターの状態を示しています。

AddPlayerClass(267,2381.3745,2804.2793,10.8203,76.4626,0,0,0,0,0,0);

太字で示した2番目から4番目の引数が順にx,y,zの座標となっています。次に、出現させる武器の種類ですが、こちらに記載してあるので確認してください。

さて、次に武器の出現です。使用する関数はAddStaticPickupで、引数は以下の通りです。

AddStaticPickup(モデルID, ピックアップタイプ, X座標, Y座標, Z座標);

ピックアップタイプは今回は2にしておきましょう。XYZ座標は先ほど記録したものを使用します。モデルIDは武器の種類です。今回は「minigun(model ID : 362)」を使います。

AddStaticPickup(362, 2, 2381.3745, 2804.2793, 10.8203);

一応これでコードの完成です。これをOnGameModeInit()関数内に入れておきましょう。

コンパイルして実行してみましょう。指定した座標にアイテムがあれば成功です。

しかし、これはただの武器設置であって「アイテムを自由に取り出す」ではありませんよね。

 

コマンドを入力したらアイテムを出す

Tキーを押してチャットウィンドウが出てきますが、そこに「/wp」と入力したら特定のアイテムが出現するようにします。ユーザが発言したときのコールバック関数はOnPlayerCommandTextですのでそこにコードを書き入れます。

strcmp関数は第一引数と第二引数の文字列の比較をしてくれるものです。第三引数は大文字と小文字を区別するかどうか、第四引数は何文字目まで比較するかです。今回はチャットウィンドウに入力されたの先頭の文字列が「/wp」かどうかを判定しています。

if文ですので、「/wp」が入力された場合のみ以下の処理が行われます。if構文内の処理はコマンドを入力した人のキャラクターの座標を取得して、その場所に武器を設置するというものです。

これで武器出しは完成しましたね。しかし、これでは出したい武器を自由に出すことができません。次は出したい武器を自由に出せるようにしましょう。

 

このカテゴリのその他の記事