2014年3月20日木曜日

CLEOについて その3 簡単なCSを作ろう!

かなり前回から日が空いてしまいましたね。正直スマン。
さて今回は前回言いましたが、簡単なMODを組んでみましょう。

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

毎度のことだねホント



本題に入る前に、プログラミングは基本フリーズしたりでGTASAを強制終了させなければならない時があります。
その時にダイアログが出るといいですが、出ないパターンもあるのですこし
まずはShift + Ctrl + Escを押してみましょう。
するとタスクマネージャーが開くのでマウスかTabか方向キーを押してプロセスタブを選びましょう。
そしてリスト内からgtasa.exeというのを探しましょう。これを選択してプロセスの終了を選ぶと終了することができます。
マウスだと簡単ですがマウスが使えなくなるパターンも有りますのでキーボードのみでの操作も慣れておくといいかもしれません。

さて前置きはここまで、今回はタイトルに書いてますが簡単なCSを一つ作ってみましょう。

まずは手始めにCJの無敵化でもしてみましょう。

とにかくまずはSanny Builderを起動しましょう

この画面が出たら左上にある白い紙のようなアイコンをクリックして
こういう風にまっさらな画面になるようにしましょう

そしてここにこういう風に打ってみましょう

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
thread 'Test'

02AB: set_actor $PLAYER_ACTOR immunities BP 1 FP 1 EP 1 CP 1 MP 1

すこし説明しましょう

thread 'Test'

スレット名(GTASAのプログラム内での識別名)をここで決める
''で囲った中に半角英数(というか基本全角厳禁!)で名前を入れる。こいつは必ず必要でまた名前がだぶってしまうとエラーになるので注意!

02AB: set_actor $PLAYER_ACTOR immunities BP 1 FP 1 EP 1 CP 1 MP 1

$PLAYER_ACTOR(CJ)に属性耐性を付加する命令
それぞれ、銃撃、火炎、爆発、衝突、近接武器となっており 1だとその属性の攻撃を無効化します。
この場合すべての耐性が1なので無敵化します。

そしてF6を押してコンパイルしてエラーが出なかたら入れてみましょう
ちなみにF7を押すとGTASAのパス設定をしっかりしていると(インストール時にしたはず)
自動でCSをCLEOフォルダにコピーしてくれます。

そして早速動かしてみましょう。

あれ?動かないぞ?と思った人、それで正解です。これだとエラーになります。

というのもMODは基本ゲーム起動時、CLEOはセーブデータの読み込み時にデータを読み込み一斉に処理が始まります。
ということはもちろん、操作キャラであるCJもこの時に必要なデータをロードしています。
そんな時にCJに対して命令を出すと・・・・こうなります。
では、CJが出てきたであろう時間まで待ってみることにしましょう。
このプログラムで待つという命令は「wait」 + 数字 なので早速それを無敵化の命令前に入れてみましょう

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
thread 'Test'

wait 5000

02AB: set_actor $PLAYER_ACTOR immunities BP 1 FP 1 EP 1 CP 1 MP 1

ちなみにwaitの後の数字は何ms待つか?という意味なのでこの場合5000msつまり5秒待ちます。
これでコンパイルして実行してみましょう。

まあ、これでもまだフリーズするんですけどね。
というのも、CLEOの暗黙のルールである、とある命令が最後に抜けているからです。

ループ等で処理が終わらないようになってない限り
プログラムの最後に
004E: end_thread
と入れなければならないというルールがあります。

今回ループするわけでも無いので、最後にこれを入れないとエラーになってしまうわけです。
では、この命令を入れて実行してみましょう。

どうでしょう?しっかり5秒後に無敵化されてません?

とま、無事に無敵化することができたと思いますが、これだと本当に5秒後CJがいるのかわかりませんよね?もしかしたら5秒以上かかるかもしれません。
ということで次回があるなら条件の判断の仕方をやりたいと思います。

0 件のコメント:

コメントを投稿