RPGエディタ時短部

投稿者:            mini mosmoss 投稿日:2016/08/19 19:40

RPGエディタ制作時短スクリプト

RmakeのRPGエディタで何か作ろうとするとき、
頭に思い描いた演出をするために、
思ったより多くのスクリプトを書かないと
いけないということが少し煩わしく感じます。
キャラクターの向き、移動、アイテム取得の設定を
時短するスクリプトでやってみたら
ちょっとマシになったので
制作時間を短くしたいと思う人は使ってみてください(^ω^)

#RPGエディタ時短スクリプト
#開始スクリプトに記述
#演出部門

#向きかえ&時間待ち
#第一引数はイベントの名前、第二引数は方向"ue" "hidari" "migi" "sita"のどれか、第三引数は向き変更後の時間待ち(ミリ秒)で省略可
def muki(event, houkou,time)
 if event=="player"
 event="playerCharacterEvent"
 end
  case houkou
     when "ue"
        setEventDirection(event,getUpDirection())
     when "hidari"
        setEventDirection(event,getLeftDirection())
     when "migi"
        setEventDirection(event,getRightDirection())
     when "sita"
        setEventDirection(event,getDownDirection())
     else
  end
 if time
    waitTime(time) #ミリ秒
 else
 end
end

#移動先指定&移動開始
#第一引数は移動するイベントの名前、第二引数以降は移動先のx座標とy座標、最大6回連続で移動可能、二回目の移動以降は省略可
def idou(event,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6) #最大6回移動 #スクリプトを書き換えることで増やすことも可能
 if event=="player"
 event="playerCharacterEvent"
 end
 if x1 then setEventTarget(event, x1,y1); runEventMove(); end
 if x2 then setEventTarget(event, x2,y2); runEventMove(); end
 if x3 then setEventTarget(event, x3,y3); runEventMove(); end
 if x4 then setEventTarget(event, x4,y4); runEventMove(); end
 if x5 then setEventTarget(event, x5,y5); runEventMove(); end
 if x6 then setEventTarget(event, x6,y6); runEventMove(); end
end

#イベントのキャラクタ変更& 時間待ち
#第一引数は変更するイベントの名前、第二引数はこれから変更するキャラクタID、第三引数はキャラクタ変更後の待ち時間
def change(event,id,time)
 if event=="player"
 event="playerCharacterEvent"
 end
setEventCharacter(event,id )
  if time
    waitTime(time) #ミリ秒
  else
  end
end

#イベントのアイテム入手&効果音再生&アイテムの名前つきでスピーク文表示&持ち物がいっぱいの時はお知らせ
#引数はアイテムID
#返り値はアイテムを入手することに成功したかどうか
def get(item)
a=getItemParamWithId(item) 
if giveItem(item)
  playSound(307445)#効果音はマップに登録しているものにしてください
  speak(a[3]+"を手に入れた!") #短い名前が表示される
  b=true
else
  speak("これ以上持てない…")
  b=false
end

return b
end


実用例

#RPGエディタ時短セットのmukiとidouの関数の使用例↓

idou("baba",23,10)
muki("baba","ue",1000)
idou("baba",24,10,25,10,26,10,27,10)
muki("baba","ue",1000)
idou("onigiri",27,9)
change("onigiri", 33896,1000)
idou("baba",26,10)
muki("baba","sita")
speak("ばばさま\n「できましたよ」")
idou("player",26,11)
muki("player","ue")
speak("ばばさま\n「神さまにあげてきてくださいね」")
speak("ばばさま\n「たのみましたよ」")
idou("baba",25,10,24,10)
muki("baba","ue")
setFlag("おそなえミッション",true)

#上と同じものを関数リファレンス通りに書く場合↓

setEventTarget("baba",23,10)
runEventMove()
setEventDirection(“baba”,getUpDirection())
waitTime(1000)
setEventTarget("baba",24,10,25,10,26,10,27,10)
runEventMove()
setEventDirection(“baba”,getUpDirection())
waitTime(1000)
setEventTarget(“onigiri”,27,9)
runEventMove()
setEventCharacter(“onigiri”,33896)
waitTime(1000)
setEventTarget("baba",26,10)
runEventMove()
setEventDirection(“baba”,getDownDirection())
speak("ばばさま\n「できましたよ」")
setEventTarget(“playerCharacterEvent”,26,11)
runEventMove()
setEventDirection(“playerCharacterEvent”,getUpDirection())
speak("ばばさま\n「神さまにあげてきてくださいね」")
speak("ばばさま\n「たのみましたよ」")
setEventTarget("baba",25,10,24,10)
runEventMove()
setEventDirection(“baba”,getUpDirection())
setFlag("おそなえミッション",true)


イベントの移動は、移動先指定と移動開始が一緒になっています
複数のイベントを同時に動かし始めたい時はリファレンス通りに書くか、
idou関数の前に、一緒に動かし始めたいイベントの移動先を指定しておきます

idou関数は一回書くごとに最大で6回移動先を指定できます
6か所の移動先を順に移動する動きを指定して一回runEventMove()を呼んでいます
移動先が6か所に満たないときは書かなければ省略できます
移動先を6か所以上にしたいときは、idou関数を二回書いたり、def文を書き換えたりすればOKです

向き変更・キャラクタ変更ともに動作の後の時間待ちを任意で設定できるようになってます
不要なら書かなければ省略できます

mukiと idouと changeの 全てで"playerCharacterEvent"を"player"と省略して書けます

get関数は入手させたいアイテムのidを書くと
「そのアイテムに設定してある名前(短い名前)を入手した!」とスピーク文で表示されます
この時、入手の効果音が鳴ります(def文の中の効果音のIDをマップに登録した効果音のIDに書き換えた場合)
持ち物がいっぱいでアイテムを持てないときは「これ以上持てない…」と表示されます
効果音は鳴りません
コメントはdef文の中の対応するスピーク文を書き換えると変えることができます
また、入手できたかの真偽が返り値になってます
なので例えば
if !getFlag("龍の剣ゲット")
setFlag("龍の剣ゲット", get(9999))
else
end
などのように書けば、持ち物がいっぱいでも
入手したアイテムをなくすことなく、
手持ちアイテム整理後にもう一度入手でき、
なおかつ一度だけ入手出来るイベントにすることができます


この記事のタイトルですが…RPGエディタ時短部と成ってますが
部活や支部を作るわけでもなくほんの勢いです。
ですが、もし制作の時短や効率化のノウハウをお持ちの方がいたら
そっと耳打ちしていただけると大変嬉しいです(^ω^)

コメントする

コメントするには、ログインする必要があります。

コメント一覧

         mini mifa(投稿日:2016/08/21 13:30, 履歴)
こんにちは、使いこなしたいですね。

>"playerCharacterEvent"を"player"と省略して書けます

けっこう嬉しいかもです。長いのでいつもコピペしてます。
スペルミスするもので、LとRがどうも、AとEとか。

つい、手持ちの方法をコピペでつぎはぎしていますが、
きっと効率化も大切だなと思っております。
            mini mosmoss(投稿日:2016/08/22 17:40, 履歴)
読んでくださってありがとうございます
playerCharacterEventは長いですよね(--;)
向き設定もいっつも長いと思ってました。
ほうほう、手持ちの方法。
よく使うのをコピペするための
メモみたいなのを作るのも効率的ですね(^ω^)