2013年11月17日日曜日

CLEOについて その2 扱える変数について

さて、前回のCLEO関連の記事を私の想像以上に見てくれていたので下手ながら解説を少しづつしていこうと思います。

※注意今から言うことはCleo3 WikiOpecoder Wikiかなりふつう等のサイトでもでも解説されてたり、Opecoder Wikiに関してはMOD作りに必須な情報も載っているので一度見ることをお勧めします。




さて前回は開発ソフトに少し触れた程度で終わりましたので、今回は前回出したMODのソースを元に少しずつ解説しましょう。

まずこのソースの一番最初に書かれているこの2行について

--------------------------------------
{$VERSION 3.1.0027}
{$CLEO .cs}
--------------------------------------

このまず
{$VERSION 3.1.0027}
というのはSunny Builder(以下SB)のバージョンの指定見たいなものだともいますが
まあこれで書いておけば問題は無いと思います。

そして次の
{$CLEO .cs}
というのは、出力するスプリクトの種類を指定します。
CLEOのスプリクトを作りたいなら{$CLEO .cs}
CLEOのスプリクトから呼び出されるスプリクトを作りたいなら{$CLEO .s}
ミッションスプリクトを作りたいなら{$CLEO .cm}

と、いろいろありますが基本は{$CLEO .cs}でいいと思います。
{$CLEO .s}については少し触れようと思いますが{$CLEO .cm}に関しては全くわからないのであしからず。

まあ、なんだここまで言ってなんだけど・・・
この2行は決まり文句
て思っておくと楽だと思うね・・・

ということで次にいきましょう

-----------------------------------------------------------
//0@ CJのX座標
//1@ CJのY座標
//2@ CJのZ座標
//3@ CJのZアングル
//4@ CJの速度
//5@ CJの位置の地面の高さ
//6@
//7@
//8@
//9@
//10@ ↓ジョイスティック関連
//11@
//12@
//13@ ↑ジョイスティック関連
//14@
//15@
//16@
//17@
//18@
//19@
//20@   ニトロフラグ
//21@  ↓車のワープ座標
//22@
//23@  ↑車のワープ座標
//24@  車の速度
//25@  CJのメモリアドレス
//26@  CJの無敵フラグ
//27@  召喚するバイクの座標X
//28@  召喚するバイクの座標Y
//29@  召喚するバイクの座標Z
//30@  乗っている車のハンドル&召喚するバイク
//31@  コマンドチェック用
//32@  ニトロ連続使用不可用タイマー
//33@

---------------------------------------------------------

こちらはただ単にメモですが・・・
ここで出てくる5@とか21@とかについて触れましょう、そうするとこんなことをしてる理由がわかると思います
ここで出てくる数字の後に@がついてくるこれ、「変数」というものです。
そしてこれらすべて(数字の後に@が付いてる物)「ローカル変数」という分類に入ります。
ローカルがあるのならもちろん「グローバル変数」(こっちは$から始まる数列又は文字列)なんてのもあります。

今回はこの「変数」を中心に解説してみようとおもいます。

さてまず”グローバル”変数と”ローカル”変数と大きくなにが違うのかというと

・変数の数の多さ(グローバルのほうが圧倒的に多い)
・GTASAのゲーム本体が変数の中身を使用するかしないか
・他スプリクトと干渉するかしないか

この三つだと思います。
もう少し具体的にメリット デメリットをあげるなら

グローバル変数
メリット
・GTASAのゲーム本体だけでなく他のスプリクトに値を渡したり、もらいやすい(主にゲームから)
・かなり多くの変数を扱える
・変数の型が存在しない(intとかfloatとかcharとか)

デメリット
・ゲーム本体や他のスプリクトと干渉しやすく、下手に扱うとエラー落ちの原因にもなる

ローカル変数
メリット
・スプリクト内でだけの変数なので干渉の心配が無い
・変数の型が存在しない(intとかfloatとかcharとか)

デメリット
・他スプリクトに値を渡しにくい(渡せことは渡せる)
・変数の数が34しか無く、そのうち32@と33@はタイマー(後に説明)なので実質32しか変数として使えない

とま、私はこう考えてます。
実際のスプリクトを書くときにはこの変数をたとえば・・・・
-------------------------------------------------------
0172: 3@ = actor $PLAYER_ACTOR Z_angle
-------------------------------------------------------
こういう風に使ったりしていきます
この行の場合$PLAYER_ACTOR(こう書くと操作キャラを操作したり、座標をとったり出来る)
というグローバル変数から、Z_angleつまり向いてる方向を数字(0~359)で取得し
3@というローカル変数に代入しています。

どうでしょう?わかりますかね?
まあ、この説明でわからなくても実際に自分で作ったりしているうちに自分なりの解釈ができればいいと思います。
つまり、何を言いたいのかというと・・・

とにかく作ってみるべし!

まあ、作れるほどここで説明しているわけでもないけどね。ということで次回は簡単なCLEOスプリクトを動かしてみましょうか。

0 件のコメント:

コメントを投稿