スクリプト/冒険に役立つスクリプト(履歴ID:59)
最終投稿者: rurun9
更新:2011/11/17 17:51:31
RPG型ゲーム作成のテクニックとして、
これまでに掲示板などで話題に上がったスクリプトをまとめてみました。
・お金
・経験値
・図鑑
【お金】
RPGには欠かせないお金。
今回はお金の名前を「カネー」、数える単位(記号)を「K」とする事にします。
初期設定として最初に開始スクリプトに記入
ゲーム中の増減は、イベントのスクリプト欄に以下のように記入
で表示できます。
ただし、これだけだといつでも所持金を確認できるわけではありません。
そこで
(マップ上のどこか1マスに、setTextでお金を表示させる自動開始イベントを設置。
有効条件にフラグを与えて、このイベント内でフラグをfalseにする。
お金の増減がある毎にこのフラグをtrueにする)
などの工夫をすると良いでしょう。
【経験値】
レベルが関数で上げられるようになったので、
変数で経験値を管理し、経験値の貯まり具合でレベルが上がるという仕組みを考えてみました。
今回はゲーム開始時から3人固定パーティとし、
経験値とレベルをそれぞれ別個に配列変数で管理する事にします。
開始スクリプトに記入
「経験値」が「次のレベルまで」に届いたら、レベルが上がります。
このとき「経験値」を一度減らして「次のレベルまで」を2倍に増やしています。
つまり、レベルが上がるほど次に必要な経験値が多くなる、という形になっています。
「累積総合経験値」を別に数えているので、必要なときに表示可能です。
そして、経験値を増やしたい所(戦闘勝利後の部分とか)には以下のように記入
敵の出現頻度&一匹から得られる経験値と「次のレベルまで」の伸び率のバランスが、RPGゲーム全体の難易度(Lv上げ作業の必要性)に大きく関わってきます。
あらゆる可能性を試しつつ、冗談ではなくテストプレーを死ぬほど行って調整していきましょー。
【図鑑】
入手したアイテムや、倒した敵を一覧で確認できる機能。
配列変数で管理します。
■単純追加版
開始スクリプトでリストとなる配列変数を用意しておきます
そして追加したい項目名を文字列でリスト配列 a に加えていくだけです。
この図鑑を開くときの例
■順序が決まっている版
全部で3品の図鑑だとします。
開始スクリプトに記入
見ての通り、変数は結局単なる「入れ物」でしかありません。
中に何を入れるのか、それがどういう意味なのか、を決めるのは作成者本人なのです。
次にアイテムをゲットした所に記入
これで図鑑に載るわけです。
最後に図鑑を開くときは、演出方法によってどんな風にもできますが、
今回は選択肢で図鑑の項目を並べて、選んだものの説明文を表示する、という簡単な例です。
こんな感じです。
長々とありがとうございました!
参考にした掲示板、wiki
・掲示板「経験値」
・掲示板「リストの作り方」
・掲示板「確率」
・wiki 「スクリプト/コツ/敵を倒すとお金が手に入る」
・wiki 「お店の作り方」 ←おまけ
これまでに掲示板などで話題に上がったスクリプトをまとめてみました。
・お金
・経験値
・図鑑
【お金】
RPGには欠かせないお金。
今回はお金の名前を「カネー」、数える単位(記号)を「K」とする事にします。
初期設定として最初に開始スクリプトに記入
setMoneyName("カネー") setDenomination("K") addMoney(0) #ゲームが始まった時の所持金もセット
ゲーム中の増減は、イベントのスクリプト欄に以下のように記入
addMoney(100) #カネーを増やす場合 subMoney(852) #カネーが減る場合
speak("現在のカネー ", getMoney() )
で表示できます。
ただし、これだけだといつでも所持金を確認できるわけではありません。
そこで
- カスタムメニューを作成して表示させる方法
- 常時画面上にText配置してしまう方法
(マップ上のどこか1マスに、setTextでお金を表示させる自動開始イベントを設置。
有効条件にフラグを与えて、このイベント内でフラグをfalseにする。
お金の増減がある毎にこのフラグをtrueにする)
などの工夫をすると良いでしょう。
【経験値】
レベルが関数で上げられるようになったので、
変数で経験値を管理し、経験値の貯まり具合でレベルが上がるという仕組みを考えてみました。
今回はゲーム開始時から3人固定パーティとし、
経験値とレベルをそれぞれ別個に配列変数で管理する事にします。
開始スクリプトに記入
setVariable("経験値",createArray()) #0=プレイヤー, 1=仲間A, 2=仲間B setVariable("累積総合経験値",createArray()) setVariable("キャラID",createArray()) #パーティメンバーのキャラID番号を格納しておく #注意:自分で用意したキャラの番号を調べて半角数字で入れて下さい getVariable("キャラID")[0]="playerCharacter" getVariable("キャラID")[1]=仲間AのID番号 getVariable("キャラID")[2]=仲間BのID番号 setVariable("次のレベルまで",createArray()) i=0 while i<3 #用意してあるキャラ数分、初期値をセットします getVariable("経験値")[i]=0 getVariable("累積総合経験値")[i]=0 getVariable("次のレベルまで")[i]=10 i=i+1 end #ユーザー定義関数でレベルが上がったかどうかを確認する処理をつくります def expcheck( point ) i=0 while i<3 #三人を順にチェック。HP0だと経験値が入らない if 0<getPartyMemberHP( getVariable("キャラID")[i] ) getVariable("経験値")[i]=getVariable("経験値")[i]+point getVariable("累積総合経験値")[i]=getVariable("累積総合経験値")[i]+point while getVariable("次のレベルまで")[i] <= getVariable("経験値")[i] levelUpPartyMember( getVariable("キャラID")[i] ) getVariable("経験値")[i]=getVariable("経験値")[i]-getVariable("次のレベルまで")[i] getVariable("次のレベルまで")[i]= 2*getVariable("次のレベルまで")[i] end end i=i+1 end end #expcheck終
このとき「経験値」を一度減らして「次のレベルまで」を2倍に増やしています。
つまり、レベルが上がるほど次に必要な経験値が多くなる、という形になっています。
「累積総合経験値」を別に数えているので、必要なときに表示可能です。
そして、経験値を増やしたい所(戦闘勝利後の部分とか)には以下のように記入
point=得られる経験値 #敵毎に設定して配列に入れておくなど各自で工夫してください expcheck( point )
あらゆる可能性を試しつつ、冗談ではなくテストプレーを死ぬほど行って調整していきましょー。
【図鑑】
入手したアイテムや、倒した敵を一覧で確認できる機能。
配列変数で管理します。
■単純追加版
開始スクリプトでリストとなる配列変数を用意しておきます
setVariable("a",createArray()) #実際にはもっとわかり易い名前で構いません
そして追加したい項目名を文字列でリスト配列 a に加えていくだけです。
word="ぴか中" #今回の新単語をwordに入れます i=0; judge=true while i<getArrayLength( getVariable("a") ) if word==getVariable("a")[i] judge=false #既に同じものがリストaに在るならダメ end i=i+1 end if judge #リストにまだない、つまりtrueのままなら項目として追加 pushArray(getVariable("a"), word ) end
i=0; z="" while i<getArrayLength(getVariable("a")) z=z+i+". "+getVariable("a")[i]+"\n" i=i+1 end speak(z)
■順序が決まっている版
全部で3品の図鑑だとします。
開始スクリプトに記入
setVariable("max",3) #全部でいくつなのか setVariable("a",createArray()) i=0 while i<getVariable("max") getVariable("a")[i]=createArray() #二次元配列で管理します getVariable("a")[i][0]=false i=i+1 end #a[n][m]について # n...番号。0~2の全部で三個 # m...0=図鑑に載っているtrue 載っていないfalse, 1=名前, 2=説明文, とします getVariable("a")[0][1]="ポーション" getVariable("a")[0][2]="HPを30回復する" getVariable("a")[1][1]="ハイポーション" getVariable("a")[1][2]="HPを50回復する" getVariable("a")[2][1]="エリクサー" getVariable("a")[2][2]="HPを最大まで回復する"
中に何を入れるのか、それがどういう意味なのか、を決めるのは作成者本人なのです。
次にアイテムをゲットした所に記入
giveItem(ポーションのアイテムID番号) #自分で用意したアイテムID番号を調べて入れて下さい speak("ポーションを手に入れた") getVariable("a")[0][0]=true
これで図鑑に載るわけです。
最後に図鑑を開くときは、演出方法によってどんな風にもできますが、
今回は選択肢で図鑑の項目を並べて、選んだものの説明文を表示する、という簡単な例です。
b=createArray() i=0 while i<getVariable("max") if getVariable("a")[i][0] pushArray(b,getVariable("a")[i][1]) #図鑑に載っている品だけの選択肢配列 b をつくる end i=i+1 end pushArray(b,"図鑑を閉じる") #終わらせる選択肢も追加 k=true while k c=speakWithSelectArray(b,"参照したい項目を選んでね") i=0 while i<getVariable("max") if b[c]==getVariable("a")[i][1] #選んだのと同じものを図鑑一覧から探して詳細を表示 speak("No.",i," : ",getVariable("a")[i][1],"\n ",getVariable("a")[i][2]) elsif b[c]=="図鑑を閉じる" k=false end i=i+1 end end #kループ終
こんな感じです。
長々とありがとうございました!
参考にした掲示板、wiki
・掲示板「経験値」
・掲示板「リストの作り方」
・掲示板「確率」
・wiki 「スクリプト/コツ/敵を倒すとお金が手に入る」
・wiki 「お店の作り方」 ←おまけ