スクリプト/コツ/罠の作り方(履歴ID:216)
最終投稿者: きゅうり
更新:2012/04/04 20:42:36
タクミ2310号です。
Wikiページを書くのは初めてです。
説明ヘタです。加筆、訂正をしてくれる人を募集しています。
それでは、本題の罠の作り方に入ろうと思います。
なお、基本的なマップの作り方はマスターしていることを前提としています。
まずは、サンプルの素材を用意したので、クリップをして、マップに登録してください。
次に、開始スクリプトにこちらを記入してください。
最後に、罠を置きたいところに
などと記入し、先ほどのキャラクターを設定します。
移動方法は「固定(向きも固定)」にしてください。
当たり判定は「なし」、開始方法は「重なったとき」にするといいでしょう。
下向きが透明、左向きがHP減少、右向きがMP減少、上向きがお金減少になっています。
第1引数の値により、どれが減らされるかが決まります。
第2引数の値だけ引かれるのですが、
お金の場合は1ずつ減らすと時間がかかるので、
20で割って切り捨て、常に一定の速度で減るようにします。
(HPやMPはそれほど大きく減らす必要がないのでこの処理をいれてません)
そして最後に、切り捨てられた部分を引いて終了です。
が、引いた結果がマイナスになることもあるので、
ここでマイナスが生じるごとに0に戻します。
(ここも、HPやMPの場合は何もしなくても0で止まるので不要です。)
キャラクタアニメ、スクリプト共に微妙でしかないですが、
これを参考に、ご自分で様々な罠を作ってみてください。
サンプルゲームを作ってみました。
ここで作る罠はこんな感じで動作します。
Wikiページを書くのは初めてです。
説明ヘタです。加筆、訂正をしてくれる人を募集しています。
それでは、本題の罠の作り方に入ろうと思います。
なお、基本的なマップの作り方はマスターしていることを前提としています。
まずは、サンプルの素材を用意したので、クリップをして、マップに登録してください。
次に、開始スクリプトにこちらを記入してください。
- 2DRPG用
def trap(NO,a) # 0 = HP減少, 1 = MP減少, 2 = お金減少 case NO when 0 setEventDirection("this",getLeftDirection()) waitTime(1000); i = 0 while i < a j = 0 while (j < 4) && (getPartyMember(j) != -1) subPartyMemberHP(getPartyMember(j), 1) j = j + 1 end waitTime(1); i = i + 1 end speak("HP減少の罠を踏んだ!\nHPが" + a + "減少してしまった!") when 1 setEventDirection("this",getRightDirection()) waitTime(1000); i = 0 while i < a j = 0 while (j < 4) && (getPartyMember(j) != -1) subPartyMemberMP(getPartyMember(j), 1) j = j + 1 end waitTime(1); i = i + 1 end speak("MP減少の罠を踏んだ!\nMPが" + a + "減少してしまった!") when 2 setEventDirection("this",getUpDirection()) textId = createText(512 - 160, 16, 160, 64) setText(textId, getMoney() + getDenomination()) A = floor(a / 20); b = a waitTime(1000); i = 0 while i < 20 subMoney(A) b = b - A if getMoney() < 0 addMoney(getMoney() * -1) end setText(textId, getMoney() + getDenomination()) waitTime(1); i = i + 1 end if b > 0 subMoney(b) if getMoney() < 0 addMoney(getMoney() * -1) end setText(textId, getMoney() + getDenomination()) end speak("所持金減少の罠を踏んだ!\n" + a + getDenomination() + "失ってしまった!") deleteText(textId) end end
- 2DACTRPG用
def trap(NO,a) # 0 = HP減少, 1 = MP減少, 2 = お金減少 case NO when 0 setEventDirection("this",getLeftDirection()) waitTime(1000); i = 0 while i < a subPlayerHP(1) waitTime(1); i = i + 1 end speak("HP減少の罠を踏んだ!\nHPが" + a + "減少してしまった!") when 1 setEventDirection("this",getRightDirection()) waitTime(1000); i = 0 while i < a subPlayerMP(1) waitTime(1); i = i + 1 end speak("MP減少の罠を踏んだ!\nMPが" + a + "減少してしまった!") when 2 setEventDirection("this",getUpDirection()) textId = createText(512 - 160, 16, 160, 64) setText(textId, getMoney() + getDenomination()) A = floor(a / 20); b = a waitTime(1000); i = 0 while i < 20 subMoney(A) b = b - A if getMoney() < 0 addMoney(getMoney() * -1) end setText(textId, getMoney() + getDenomination()) waitTime(1); i = i + 1 end if b > 0 subMoney(b) if getMoney() < 0 addMoney(getMoney() * -1) end setText(textId, getMoney() + getDenomination()) end speak("所持金減少の罠を踏んだ!\n" + a + getDenomination() + "失ってしまった!") deleteText(textId) end end
最後に、罠を置きたいところに
trap(0,10) #HP10減少
などと記入し、先ほどのキャラクターを設定します。
移動方法は「固定(向きも固定)」にしてください。
当たり判定は「なし」、開始方法は「重なったとき」にするといいでしょう。
- 解説
下向きが透明、左向きがHP減少、右向きがMP減少、上向きがお金減少になっています。
第1引数の値により、どれが減らされるかが決まります。
第2引数の値だけ引かれるのですが、
お金の場合は1ずつ減らすと時間がかかるので、
20で割って切り捨て、常に一定の速度で減るようにします。
(HPやMPはそれほど大きく減らす必要がないのでこの処理をいれてません)
そして最後に、切り捨てられた部分を引いて終了です。
が、引いた結果がマイナスになることもあるので、
if getMoney() < 0 addMoney(getMoney() * -1) end
ここでマイナスが生じるごとに0に戻します。
(ここも、HPやMPの場合は何もしなくても0で止まるので不要です。)
- 最後に
キャラクタアニメ、スクリプト共に微妙でしかないですが、
これを参考に、ご自分で様々な罠を作ってみてください。
サンプルゲームを作ってみました。
ここで作る罠はこんな感じで動作します。