FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

cs講座4

///////////saiaKUNのパーフェクト最強cs講座////////////
はじまるよ!
###################################################
今回は、「フラグ立て」の具体例を紹介する。
要るものは
・サニービルダー
・saiaKUNs cleoのソースコード
以上
###################################################

ではまず「object」の「フラグ立て」について話す。
objectのフラグ立てには主に「耐性」を使う。耐性には、Bullet Proof:銃撃耐性、FireP:火炎耐性、ExplosionP:爆発耐性、CollisionP:衝突耐性、MeleeP:格闘耐性、の五種類があり、
09CA: set_object 0@ immunities BP 1 FP 1 EP 1 CP 1 MP 1
上のようなコードでつけたり消したりできる。そこらへんにあるobjectには「耐性が全くついてない」ので、作ったobjectに耐性をつけてやれば、同じmodelのobjectでも区別可能となる。ちなみに車や人にも同じ耐性がある。

////////////GL短縮版///////////////////////
:keycheck //始め
wait 0
gosub @colcheck //起爆プログラムへGO
if or
0965: actor $PLAYER_ACTOR swimming
0449: actor $PLAYER_ACTOR in_a_car
0118: actor $PLAYER_ACTOR dead
0741: (check) actor $PLAYER_ACTOR busted
0818: actor $PLAYER_ACTOR in_air //ちゃんと地に足をつけているか?色々大丈夫か?
then
else
if or
02D8: actor $PLAYER_ACTOR current_weapon == 25 //それっぽい武器を装備しているか?
02D8: actor $PLAYER_ACTOR current_weapon == 27
02D8: actor $PLAYER_ACTOR current_weapon == 30
02D8: actor $PLAYER_ACTOR current_weapon == 31
then
if and
00E1: player 0 pressed_key 6 //エイムと
00E1: player 0 pressed_key 16 //スプリント押してるか?
then
if
0491: actor $PLAYER_ACTOR has_weapon 16 //グレネード持ってるか?
then
jump @gosubs //発射プログラムへGO
end
end
end
end
jump @keycheck //はじめに戻る

////////////////ここからサブルーチン///////////////////
//grenadeのobjectにMPをつけて、撃ち出すプログラム。
:gosubs
0107: 1@ = create_object #grenade at 0.0 0.0 100.0
09CA: set_object 1@ immunities BP 1 FP 1 EP 1 CP 1 MP 1
0906: set_object 1@ mass_to 0.5 // float
0908: set_object 1@ turn_mass_to 0.5 // float
08D2: object 1@ scale_model 0.3
04D9: object 1@ set_scripted_collision_check 1
0382: set_object 1@ collision_detection 1
0177: set_object 1@ Z_angle_to 0.0
070A: AS_actor $PLAYER_ACTOR attach_to_object 1@ offset 0.0 0.0 0.0 on_bone 5 16 perform_animation "NULL" IFP_file "NULL" time 1
wait 0 // 1フレーム待つとアタッチが完了する。
070B: set_actor $PLAYER_ACTOR onbone_attached_object_operation 1 //コレで手のobjが動かせるようになる
0392: make_object 1@ moveable 1
//////////////////////velocity/////////////////
068D: get_camera_position_to 25@ 26@ 27@ //カメラの位置
068E: get_camera_target_point_to 28@ 29@ 30@ //カメラの焦点(距離は常に一定)
0063: 28@ -= 25@ // (float)
0063: 29@ -= 26@ // (float)
0063: 30@ -= 27@ // (float) XYZのベクトルを作る。
0013: 28@ *= 80.0
0013: 29@ *= 80.0
0013: 30@ *= 80.0 //適当な値を掛ける
//////////////////////////////////////////////
0381: throw_object 1@ velocity_in_direction 28@ 29@ 30@ //ブン投げる。オラァ!
01C4: remove_references_to_object 1@ //野生に返す
return

//存在する全てのobjectを監視して、それが「何かに接触」していて、かつ「MPのついた」「grenadeのobject」だったなら爆発させるプログラム。
:colcheck
0A8D: 0@ = read_memory 0xB7449C size 4 virtual_protect 0
000A: 0@ += 0x4
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
for 2@ = 0 to 89344 step 0x100
0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
000A: 0@ += 0x1
if and
0029: 1@ >= 0x00
001B: 0x80 > 1@
then
005A: 1@ += 2@ // (int)
if
03CA: (check) object 1@ exists
then
0A98: 3@ = object 1@ struct
000A: 3@ += 0x42
0A8D: 3@ = read_memory 3@ size 1 virtual_protect 0
if
08B7: test 3@ bit 5 // melee proofがついているか?
then
if
09CC: (check) object 1@ model_is #GRENADE //このobjectはgrenadeか?
then
if
04DA: (check) has_object 1@ collided //何かに接触しているか?
then
01BB: store_object 1@ position_to 25@ 26@ 27@
0108: destroy_object 1@
0948: create_explosion_at 25@ 26@ 27@ type 0 camera_shake 0
end
end
end
end
end
end
return
////////////////////////////////////////////////

※gosub @----で飛んだら、必ずreturnで戻ることイイネ?
コレでもグレネードランチャとして機能するはず。たぶん。実際のソースプログラムはTABで段がついてて、もっと分かりやすい。objectは爆発耐性がついてようが無かろうがあんまり関係ないが、人に爆発耐性つけてたりしたらプレイに影響がでてまずい。だから「花束とか」を持たすよ。

ああんひどうぃ記事・・・まあ見る人いないけどね!キラッミ☆
スポンサーサイト

コメントの投稿

非公開コメント

No title

トンカツ(smoke)ランチャーでも作ったらウケルカモネ。

人やパーティクルや車はセーブしても残らないらしい。

「flagging法(笑)」は「ローカル変数制限突破」によって淘汰される運命なのか・・・

No title

見てるよ…
すごく勉強になってるよ…
プロフィール

saiaKUN

Author:saiaKUN
GTASAはイイですよ。
うっぷん晴らしできるし。
MOD入れてSS撮るのも楽しい。
動画とってアップするのも良いし。
古いから軽いし。
私のcleoMODはリンクの一番上からgo。

最新記事
最新コメント
カテゴリ
FC2カウンター
フリーエリア
カレンダー
12 | 2019/01 | 02
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
リンク
見つけたら追加。みたいな?
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。