TimpaniでRPGを作ろう!

―7. 改造したりなんかする―


トップページに戻る




7.1. 表紙を描く

表紙を書くのは、HyperCard Lite上での作業になります。HyperCard Playerではできません。

主に使うのは、メニューバーの「ツール」プルダウンメニューです。
ほとんどが、画像ソフトと同じメニュー内容ですが、一番上の段には説明が必要でしょう。

  • 手のマーク=「ブラウズ」メニュー
    通常の機能です。また、「フィールド」に文字を書き込む時にも使います。

  • ボタンマーク=「ボタン」メニュー
    ボタンを作ったり、動かしたり、ボタンに機能をつけたりする時に使います。
    このメニューを起動させた後、編集したいボタンをシングルクリックすると、ボタンの輪郭線が破線になります。すると、ボタンの大きさを変えたり、ボタンを好きなところに動かせるようになります。ダブルクリックすると、ダイアログボックスが現れて、ボタンの外観・スクリプトを編集できるようになります。

  • 表マーク(「目」にも似ています)=「フィールド」メニュー
    「フィールド」というのは、文字が入っていて、後で自由に書き換えや移動ができるものです。
    フィールドを作ったり、動かしたり、書き込みが出来ないようにロックするする時に使います。フィールドに文字を実際に書き込む時には、「ブラウズ」メニューを起動させて、HyperCardを通常の状態に戻します。
    この「フィールド」メニューを起動させた後、編集したいフィールドをシングルクリックすると、フィールドの輪郭線が破線になります。すると、フィールドの大きさを変えたり、フィールドを好きなところに動かせるようになります。ダブルクリックすると、ダイアログボックスが現れて、フィールドの外観・ロックするかどうか、スクリプトを編集できるようになります。
    ゲームの公開直前には、表紙などにあるフィールドは、「ロック」しておくといいでしょう。


また、「ツール」メニューの2段目をクリックすると、ペイント機能が起動します。ペイント機能は、他のペイントツールとほとんど同じです。

参考資料:HyperCard Park内「HyperCard[基礎の基礎編]4時間目」






7.2. 戦闘画面の背景を変える・背景を複数にする

戦闘画面の背景を変えるには、上の要領で、ペイント機能を使います。HyperCard Lite上での作業になります。HyperCard Playerではできません。

戦闘画面を複数にする時には、矢印キーで戦闘画面に行った後、「編集」プルダウンメニューから、「コピーカード」を選択の後、「ペーストカード」を選択します。

すると、全く同じカードが複製されるので、好きな方の背景を、ペイント機能を使って書き換えます。カードの名前も変えると、Timpani上で、戦闘画面を選択する時に便利です。カードの名前を変えるには、プルダウンメニュー「オブジェクト」から「スタック情報」を選択→ダイアログボックスで、「カード名」を編集します。






7.3. スクリプトを使う

スクリプト(HyperCardのプログラムと思ってください)編集は、HyperCard Lite上での作業になります。HyperCard Playerではできません。


7.3.1. スクリプトの置き場所

HyperCardのスクリプトには、5箇所の置き場があります。このうち、Timpaniで問題になるのは、「スタックスクリプト」「カードスクリプト」「バックグラウンドスクリプト」「ボタンスクリプト」の4種類です。

「スタックスクリプト」とは、スタック全体で共有するスクリプト、「バックグラウンドスクリプト」というのは、複数のカードで共有するスクリプトのことです。Timpani上では、戦闘カード用のもの、マップ用のものがあります。

「カードスクリプト」とは、そのカードだけに属します。「ボタンスクリプト」は、そのボタンだけに属するスクリプトです。Timpaniでは、キャストはボタンで作っていますので、キャストイベントの命令文は、実際には「ボタンスクリプト」になります。


7.3.2. スクリプトの編集方法

「スタックスクリプト」を編集するには、スタックを開け、プルダウンメニュー「オブジェクト」から「スタック情報」を選択→「スクリプト」ボタンを押します。

「カードスクリプト」を編集するには、矢印キーで編集したいカードに行ってから、プルダウンメニュー「オブジェクト」から「カード情報」を選択→「スクリプト」ボタンを押します。

「バックグラウンドスクリプト」を編集するには、矢印キーで編集したいバックグラウンドを持つカードに行ってから(具体的には、戦闘カードのいずれか、またはマップカードのいずれかに行ってから)、プルダウンメニュー「オブジェクト」から「スタック情報」を選択→「スクリプト」ボタンを押します。

「ボタンスクリプト」を編集するには、プルダウンメニュー「メニュー」から「ボタン」を選択→編集したいボタンをダブルクリック→「スクリプト」ボタンを押します。上と同じように、「ボタン情報」から呼び出すことも可能です。また、「イベントの順番を変える」で紹介したように、ボタンのID、または名前が判明している時には、「コマンド(りんご)キー」+Mでメッセージボックスを起動させた後に、「edit script of cd btn "[ボタンの名前]"と入力するやり方もあります。


7.3.3. 既存のスクリプトに付け加える

例えば、パーティーを2隊使いたい時で、すでに第2パーティーのメンバーが決まっている時には、この方法を使います。たとえば、「キャラ」編集画面の、上から5、6、7番目のキャラクターを第2パーティーにしたい時には、タイトル画面の「新規ゲーム」ボタンのスクリプトの、 10行目あたり、
「 put 1 into line 11 of MDATA」のあたりに、
put "5,6,7" into line 10 of MDATA
と入れます。あとは、イベント上で「パーティー交替」を挿入します。

このように、既存のスクリプトに手を加えれば、宝箱を開けた時の音を変えたりなど、いろいろなことができます。

「MDATA」とは、Timpaniで作るRPGで、キャラやパーティーのデータが入っているところです。行毎に、いろいろなデータが格納されています。


7.3.4. 自分のハンドラを作る

「ハンドラ」というのは、決まった働きをさせるための命令定義文、と言っていいかと思います。最初と最後の行に、この命令を動かすためのキーワードがあり、その中に、実際の命令が挟まっています。自分でハンドラを書くと、もっといろいろなことができるようになります。

さて、実際にスクリプトを見てみると、なんだか段々になっていますね。これは、スクリプトが込み入ってきた時に、ちゃんとなっているか、分かりやすくするためで、自動的に作られます。最初の行と最後の行の頭がそろっていれば、とりあえず第一段階はOK、というわけです。ホームページ制作ソフトでも、同じようになっているものがあるかと思います。手っ取り早く段落を作って確認したい時には、「タブ」キーを押します。

『つばめ飛ぶ』で実際に使ったハンドラを挙げて説明します。泉で使ったもので、クリックすると、MPが全回復した後に、「MPが回復しました。」というメッセージを出します。赤字は、私のコメントです。



on Brunnen(「on」の後には、 命令を動かすためのキーワード(ハンドラ名)が続きます。これは、自由に決めてかまいません。ただ、自分のものだとわかりやすいようにした方がいいとのことです。というわけで、ドイツ語の「泉」=Brunnen。)
global MDATA
repeat with i=1 to 3
if item 1 of line i of MDATA is not empty then
put item 6 of line i of MDATA into item 5 of line i of MDATA
end if
end repeat
saveMDATA
castTell "MPが回復しました。",-1,
end Brunnen
(「end」+キーワードで、このハンドラは終了します。Timpaniのイベント編集時には、「カスタム」で、このハンドラ名を入力します。)



上のような、キャラクター/パーティーの基本データ、「MDATA」を利用するハンドラは、マップのバックグラウンドに置かないと起動しないそうです。せりふを言ったり振り向いたり歩いたりというだけのハンドラは、カードのスクリプトに置いても機能しました。

上のようなハンドラの場合、置き場所さえちゃんとしていれば、ハンドラ間の順番は関係がありません。というのは、このようなハンドラは命令定義文なので、むしろ、イベントの中で呼び出される順番が重要になるからです。

また、自分で書いたハンドラは、別途に保存しておきましょう。Timpaniのアップデートの時、また、第2作製作時に便利です。






7.4. ステータス画面に、リターンキーを押しても行けるようにする

一部の周辺機器を通して、Timpaniで作ったRPGをプレイすると、ダブルクリックしても、ステータス画面が出てこないという現象が起こるそうです。原因は分かっていないそうです。

リターンキーを押してもステータス画面に行くことが出来るスクリプトを、名取さんが作って下さいました。以下のスクリプトを、マップ画面のバックグラウンドスクリプトに入れておくといいかと思います。


on returnKey -- ステータス画面をリターンキーでも表示できるように
get icon of cd btn "Cast0"
set icon of cd btn "Cast0" to ((icon of cd btn "Cast0") div 100)*100
set cursor to Busy
--charjump short id of cd btn "Cast0"
set icon of cd btn "Cast0" to it
push card
lock screen
go cd "Info"
Send "MasterInit" to cd "Info"
unlock screen with stretch from bottom fast
end returnKey







7.5. 魔法効果を追加する

魔法効果を新しく追加するには、「生データ」のIconSeq_Effectでの作業になります。ここでは、「竜巻効果」という魔法効果を付け加える場合に入力するデータを挙げてみます。
この効果でやりたいことは、
名前
竜巻効果
効果が始まる時に何が起こるか
「効果音」のところで設定したサウンドのうち、上から18番目の音を出したい
攻撃する側とされる側の間を百分率にした場合、その効果がどこに表示されるか
攻撃される側の真上
アイコンアニメ
アイコン10070番が5/60秒、
アイコン10071番が5/60秒、
アイコン10072番が5/60秒、
アイコン10073番が5/60秒、
アイコン10074番が5/60秒、
アイコン10075番が5/60秒、表示されるようにしたい

です。これを、Timpani用の命令文に書き直すと、以下の通りになります。各行、最初に半角スペースが入ることに注意してください。
,竜巻効果,10070,5,100,0,0,PlaySnd 18
,竜巻効果,10071,5,100
,竜巻効果,10072,5,100
,竜巻効果,10073,5,100
,竜巻効果,10074,5,100
,竜巻効果,10075,5,100


4つめのコンマの後の「100」というのは、攻撃される側の真上という意味です。反対に、「0」ならば、攻撃する側の真上で効果が起こります。

こうしてできた命令文を、「生データ」のIconSeq_Effectに書き込むわけですが、各命令文の1行目は、この欄の1行目、11行目、21行目……から始まらなければなりませんので、空白行の数に注意してください。

なお、完全な命令文は以下の通りです。

[半角スペース],[効果の名前],[そのアイコンが60分の1秒を単位にしてどれだけの長さ表示されるか]、[攻撃する側からそのアイコンがどれだけ離れているか(百分率)]、[百分率で指定した場所からそのアイコンがどれだけ離れているか(座標で:X軸)],[百分率で指定した場所からそのアイコンがどれだけ離れているか(座標で:Y軸)],[その際同時に呼び出されるハンドラ名]



スクリプトは、一見難しそうですが、上の泉のスクリプト程度ならば、見ていれば、なんとなく分かってきます。

次回はいよいよ最終回、「トラブルシューティング」です。私がつまずいた箇所などを解説する予定です。



トップページに戻る










最終更新:2006年4月10日