今更なオブリビオンブログ
おもにMOD関連のメモを書いていくと思います、MODをいじったり、作ってるのが楽しいです。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

本につけられているスクリプト
MODを作るときに参考になりそうなヴァニラのスクリプトをメモしておきます。
以下は、暗殺ギルドの指令書についているスクリプトです。

Scriptname Dark10OrdersScript

short Read

begin OnEquip player

if Read == 0
 ;SetStage Dark09RetirementFin 30
 set Dark09RetirementFIN.orders to 1
 set Read to 1
endif 
 
end


まず一文目はスクリプトの名前になります。

二文目ではReadという名前の変数を宣言してます。

三文目で、このアイテムをプレイヤーが使ったとき(装備したとき)に実行される事が分かります。

次のif関数がありますが、条件の中はReadが0の時で、その中の処理でReadに1を入れているため、このif関数は
一回だけ実行をさせるための物である事が分かります。
で、その実行の中身は
 ;SetStage Dark09RetirementFin 30
 set Dark09RetirementFIN.orders to 1
ですが、「;」がある行はコメント欄で、実行されないため実質下の

 set Dark09RetirementFIN.orders to 1

を一回実行させるためのものになっています。
この一文の意味は、Dark09RetirementFIN.ordersと言う変数に1を入れるというものですが、
Readと違ってどこにも宣言がされていません。

この関数がどこから来たかと言うと、これは実はDark09RetirementFINと言う名前のクエストで宣言されている関数になります。
クエストで宣言して実行してある関数は「クエスト名.変数名」と書くことで使えます。




ちなみにそのクエストのスクリプトは以下の通り

Scriptname Dark09FINScript

short orders

Begin GameMode

if orders == 1
 SetStage Dark09RetirementFin 30
 set orders to 2
endif

End


処理の仕方は指令書についているスクリプトとはぼ同じで、
 SetStage Dark09RetirementFin 30
を一回だけ実行するためのものとなっています。
これは、クエストステージを30に進めるという意味になります。



なぜこんな回りくどい事をしているかというと、おそらく指令書のスクリプトでSetStageをすると、
本を開いた瞬間にクエストのジャーナルが出てしまうからです。

こうやってワンクッション置くことで、本を開いて、それを閉じた瞬間にジャーナルを出すために
こういうことをしているんだと思われます。
スポンサーサイト

コメント

コメントの投稿














管理者にだけ表示を許可する


トラックバック
トラックバック URL
http://5588ob.blog.fc2.com/tb.php/3-918a3c2b
この記事にトラックバックする(FC2ブログユーザー)

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