スポンサーサイト

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

いろいろ

もはや誰得かもしれませんがね

あ、私はプログラムなど詳しく知っているわけではありませんので
変な書き方をしている部分がたくさんあると思いますが許して下さい




■音の出し方

ダンスなどのBGM
0952: load_soundtrack 1
0006: 0@ = 0
0953: get_soundtrack_status_to 0@
while 0039: 0@ == 0
wait 0
end
0954: start_playing_loaded_soundtrack
0952で使えるのは1, 2, 3, 4, 8, 9, 10, 12, 13です

SFX
03CF: load_wav 17002 as 1
while 83D0: not wav 1 loaded
wait 0
end
03D1: play_wav 1
03CFの「17002」は音、「1」は格納する番号で、1~3が使えるようです。3は怪しい
音はかなりの種類があります。"sfx_dir"でググると分かります

人の声
09D5: unknown_get_actor 20@ unknown 286 flags 0 1 0 store_to 21@
getとか書いてありますが関係ないっぽいです。
20@:声を出させたい人
286:声の種類。20@が彼女ならば、喘ぎ声が出ます
0 1 0:最後の0を1にすると、声の遠近感がなくなります。
その前の2つは不明
21@:不明。とりあえず適当な変数をあてておきます
人によって、どんな声が出るかバラバラです
また、このコードを繰り返し使うと、違うセリフを言います




■壁での跳ね返りの表現(xy平面上)

荒っぽいです

:ikebi
wait 0
//move
0093: 17@ = integer 32@ to_float
0006: 32@ = 0
0013: 17@ *= 0.013
0400: store_coords_to 4@ 5@ 6@ from_object 20@ with_offset 0.0 17@ 0.0

gosub @bound

0087: 1@ = 4@ // (float)
0087: 2@ = 5@ // (float)
0087: 3@ = 6@ // (float)
if
03CA: object 20@ exists
then
01BC: put_object 20@ at 4@ 5@ 6@
end
jump @ikebi

:bound
if and
03CA: object 20@ exists
86BD: not no_obstacles_between 1@ 2@ 3@ and 4@ 5@ 3@ solid 1 car 0 actor 0 object 1 particle 0
then

0007: 13@ = 0.0
0007: 14@ = 0.0

0013: 17@ *= 1.6

for 30@ = 3 to 360 step 3
0093: 10@ = integer 30@ to_float
02F6: 11@ = cosine 10@ // (float)
02F7: 12@ = sine 10@ // (float)
006B: 11@ *= 17@ // (float)
006B: 12@ *= 17@ // (float)
005B: 11@ += 1@ // (float)
005B: 12@ += 2@ // (float)
if
06BD: no_obstacles_between 1@ 2@ 3@ and 11@ 12@ 3@ solid 1 car 0 actor 0 object 1 particle 0
then
0085: 8@ = 30@ // (int)
0085: 9@ = 30@ // (int)
000A: 9@ += 357
break
end
end

for 30@ = 8@ to 9@ step 3
0093: 10@ = integer 30@ to_float
02F6: 11@ = cosine 10@ // (float)
02F7: 12@ = sine 10@ // (float)
006B: 11@ *= 17@ // (float)
006B: 12@ *= 17@ // (float)
005B: 11@ += 1@ // (float)
005B: 12@ += 2@ // (float)
if
86BD: not no_obstacles_between 1@ 2@ 3@ and 11@ 12@ 3@ solid 1 car 0 actor 0 object 1 particle 0
then
005B: 13@ += 10@ // (float)
000B: 14@ += 1.0
end
end


0073: 13@ /= 14@ // (float)
000B: 13@ += -90.0
0176: 19@ = object 20@ Z_angle
000B: 19@ += 90.0

0013: 13@ *= -2.0
0063: 13@ -= 19@ // (float)
000B: 13@ += 90.0
0177: set_object 20@ Z_angle_to 13@
wait 0
0013: 17@ *= 0.625
0400: store_coords_to 4@ 5@ 6@ from_object 20@ with_offset 0.0 17@ 0.0
end
return


斜めの黒直線:壁

目の前にある壁の角度を取得するようなコードは無いので
86BDを使って無理矢理算出しています

図を書きましたが眠くなってきたのでこれでやめます




■アークサインの手抜き近似によるカメラ上下角取得

068D: get_camera_position_to 4@ 5@ 6@
068E: get_camera_target_point_to 11@ 12@ 13@
050A: 9@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 11@ 12@ 13@
0063: 6@ -= 13@ // (float)
if
0023: 0.1 > 9@
then
0007: 6@ = 0.0
else
0073: 6@ /= 9@ // (float)
0087: 4@ = 6@ // (float)
006B: 4@ *= 4@ // (float)
006B: 4@ *= 4@ // (float)
0087: 5@ = 4@ // (float)
006B: 4@ *= 4@ // (float)
006B: 4@ *= 4@ // (float)
006B: 4@ *= 4@ // (float)
006B: 4@ *= 4@ // (float)
0013: 4@ *= 0.3
0013: 5@ *= 0.1
005B: 6@ += 4@ // (float)
005B: 6@ += 5@ // (float)
0017: 6@ /= 3.1415926
0013: 6@ *= -180.0
end

上下70度ぐらいまで使えるっぽいですが
精密な角度取得が必要な場合は不向きです




■オブジェクトに速度をつけて移動させる時

(例)

:loop
wait 0
0381: throw_object 20@ velocity_in_direction 4@ 5@ 6@
jump @loop

と書くと何故か不安定になります。そこで

:loop
wait 0
if
03CA: object 20@ exists
then
0381: throw_object 20@ velocity_in_direction 4@ 5@ 6@
end
jump @loop

このように03CAを使って、オブジェクトが存在しているかどうか
一々判定させるようにすると安定するっぽいです

オブジェクトって消えたり出たりするんですかね





■煙について

095C: create_smoke_at 144@ 145@ 146@ velocity 147@ 148@ 149@ RGBA 150@ 151@ 152@ 153@ size 154@ last_factor 155@

144@、… :出現位置xyz
147@、… :流れる速度(ベクトル)xyz
150@、… :前から順に、色の成分RGB 153@は不透明度(4つとも0.0~1.0)
154@   :サイズ。ただし10.0より大きくはならない。20.0なんて書いても小さくされる
155@   :残存時間(単位は不明)。沢山出現させるときは~0.1ぐらいがいい所




■カスタムスレッド、sファイルについて

作り方(例)
まずはsファイルを作る

{$VERSION 3.1.0027}
{$CLEO .s}

//-------------MAIN---------------
thread 'hrtdn'

(処理)

0A93: end_custom_thread //終わらせる

などとしてコンパイルすればsファイルになります


呼び出し方(例)…ってかこれって呼び出しって言うのかな

0A92: create_custom_thread "hrtdn.s" -1 31@

"hrtdn.s":呼び出すsファイル
-1:呼び出したsファイルのローカル変数 0@ に初期的に代入される
31@:こっちは1@に代入される
以下同様に、変数や何やらを書いておけば、2@、3@、4@…に代入される




■ミッションのマーカー(スフィア)の出し方
ci1.jpg
の作成方法

:start
wait 0

if
00FF: actor $PLAYER_ACTOR sphere 1 in_sphere 2409.9 -1709.0 13.0 radius 1.0 1.0 2.0 on_foot
jf @start

//処理


変ですね。if文があるだけで、スフィアを表示させるコードがどこにもないように見えます。
実は、上記のようなループ構造を作り、ifの中に 00FF を入れると、それだけで
スフィアが作成されるんです。(00FFが実行されている限り)
$PLAYER_ACTOR : 検知する対象のアクター
sphere 1 : 1にすればマーカーが表示される。0だと見えない
in_sphere 2409.9 -1709.0 13.0 : 前から順に、表示する場所のxyz座標
radius 1.0 1.0 2.0 : マーカーの大きさ(x,y,z)
同じような使い方のコードは他にもいくつかあります。
SBのヘルプを見ればすぐ分かったのに…
スポンサーサイト
Secret

プロフィール

  • Author:KMMJ
  • GTASA用の各種MODをうpしています。半分ぐらい東方

最新記事

最新コメント

リンク

問題があればどこかにコメントをお願いします。

月別アーカイブ

検索フォーム

QRコード

QR

カテゴリ

カウンター

おしながき

それぞれ説明記事にリンクしています
◆スペカ再現
禁弾「カタディオプトリック」
「サブタレイニアンローズ」
夢符「封魔陣」
本能「イドの解放」
抑制「スーパーエゴ」
復燃「恋の埋火」
記憶「DNAの瑕」

毒符「ポイズンブレス」 別ver
凍符「パーフェクトフリーズ」
「嫌われ者のフィロソフィ」改
弾幕生成機

◆非スペカ
無意識
UFO(ヘリ)召喚
お空の核弾
つむじ風
エクステンドアイテム
ボムアイテム
ぬえの槍
6つのキノコ
フルパワーアイテム
パワーアップアイテム
点アイテム

打ち出の小槌

◆キャラ(東方とか)
6つのキノコお空
こいしちゃんのようなもの
にちょり
巨大キノコ
旧グラン 2
ゴリアテ人形
水橋パルスィ
水着パルスィ
アリス・マーガトロイド
ひゅnひゅn
フランドール・スカーレット
グランベル・スカーレット
九十九弁々
九十九八橋
堀川雷鼓
みすちー
メディスン・メランコリー
ミスティア・ローレライ
ミスティA

ちびメディ
スモちー

◆キャラ(その他)
まどか
ほむら
お菓子の魔女
アイテム人
ドクロちゃん
ゆっくりスモーク

◆その他武器
テニスのラケット
まどかの弓
ほむらの爆弾
アマゾンの箱
ミョルニル
エスカリボルグ

◆その他cs
無敵になるcs
車ロック解除cs
乗れない列車に乗るcs
スタントcs
バイクに追われるcs
ディルドで空を飛ぶcs
過密鉄道
例のコーヒー
トレーラー装着
創造する程度の能力
市民に襲われるcs
借金cs
海が熱湯化cs
物を持って投げるcs
市民コーヒー
地雷が設置されるcs
人無限生成cs
市民にかけられるcs
歩行者が飛ぶcs

◆ミッション(?)
逃げるミッション
3分でSFに行くミッション
6つのキノコを集めるミッション
バスミッション
バスミッション2

◆線路MOD
線路MOD①
線路MOD②
線路MOD③
線路作成cs

◆マップMOD(ipl)
テストその1
テストその2
Whetstone空港1 2
MOD線1
MOD線2
MOD線3
空中都市
MOD線4
MOD線5


◆マップMOD(dff)
魔理沙の家
守矢神社
巨大スモーク
巨大ゴリアテ人形
名も無き山
旧都(地霊殿)v0.3
旧都(地霊殿)v0.8
博麗神社
紅魔館
幻想郷(セット)
蜆(しじみ)岳
蜆岳+幻想郷

稼働率

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