Top Downloads&ScreenShots 掲示板 Love Beer!! 家具MODを修正 日時を取得する練習 四季の変化 木のカタログ

スクリプト作成開始

Begin Kegstand

if ( OnActivate )
○○
endif

End Kegstand
Kegstand はスクリプトの名前。 このスクリプトを呼び出したオブジェクトが使用された時に
○○を実行するという内容。○○の中身はこんな感じ。

新しいお酒を作る

空き瓶とお酒の ObjectID を1つずつ決めようと思ったけど、よく考えたらお酒を注いだ時に Bottle から Mazte に瓶ごと変わるのはすごくオカシイ。仕方なく Bottle の モデルデータを使って Mazte をもう1個作ることにする。
コルク栓のない緑の Bottle "misc_com_bottle_09" を空き瓶として使う。
Mazte のデータと、コルク栓のある緑の Bottle "misc_com_bottle_04" のモデルデータを 使ってオブジェクト "Bottle_Local_Brew_01" を作り、これをお酒として使う。
Osake

スクリプト作成再開

関数 GetItemCount を if文の条件式の中で使うやり方がわからなかったので "GetItemCount" でテキスト検索してみた。 あるスクリプトでは、1度変数に代入していたので真似してみる。
Begin Kegstand

short gotBottle

if ( OnActivate )
	set gotBottle to  ( Player-> GetItemCount, "misc_com_bottle_09" )
endif

End Kegstand
空き瓶が1つ以上あった時。
	if ( gotBottle >= 1 )	;空き瓶が1つ以上ある
		Player-> RemoveItem, "misc_com_bottle_09", 1 ;プレイヤーから空き瓶1つ削除
		Player-> Drop, "Bottle_Local_Brew_01", 1 ;プレイヤーがお酒を1つ落とす
		set gotBottle to 0 ;変数初期化
空き瓶が無かった時のメッセージ。
	elseif ( gotBottle == 0 )	;空き瓶が0
		MessageBox, "You don't have any Bottle." ;メッセージ
お酒を注いでる時の効果音。
		PlaySound "drown" ;SoundID "drown"
全部つなげる。これを Act_Com_Kegstand と Act_De_Kegstand に登録してセーブする。
Begin Kegstand

short gotBottle

if ( OnActivate )
	set gotBottle to  ( Player-> GetItemCount, "misc_com_bottle_09" )
	if ( gotBottle >= 1 )
		PlaySound "drown" 
		Player-> RemoveItem, "misc_com_bottle_09", 1
		Player-> Drop, "Bottle_Local_Brew_01", 1
		set gotBottle to 0
	elseif ( gotBottle == 0 )
		MessageBox, "You don't have any Bottle."
	endif	
endif

End Kegstand
動作確認してみる。・・・変だ。3本の空き瓶で3本のお酒を作ったら、空き瓶が1本残ってた...。 4回目に"使用する"キーを押すと、ちゃんとメッセージ "You don't have any Bottle." が出るのに、インベントリーには 空き瓶のアイコンが表示されたまま。
この空き瓶をいったんDropして樽を作動させるとお酒が出来てしまう。3本の空き瓶で4本お酒ができちゃった。
データ上はアイテムがちゃんと削除されるのに、インベントリーのアイコンが残ってしまうみたいだ。困った。
スクリプトの間違いは後で調べるとして、今後の野望は、 こんな感じです。
つづく
Top Downloads&ScreenShots 掲示板 Love Beer!! 家具MODを修正 日時を取得する練習 四季の変化 木のカタログ