[解決済み]床に目印をつける方法はありませんか?

みゅも
記事: 6
登録日時: 2016年12月27日(火) 20:04

[解決済み]床に目印をつける方法はありませんか?

投稿記事by みゅも » 2017年8月04日(金) 20:34

似たような質問があれば、すみません。
調べた限り無かったので質問させていただきました。

今自分が探しているのは、床に目印をつける方法です。
というのは、迷路のようなダンジョンを攻略するゲームを作成しているのですが、ダンジョン内で特定のアイテムを使う事で、その場に目印をつけれたらいいなぁと思っています。
イベントでキラキラさせたり、床タイルの見た目を変えたり、そんな感じで何かないか探しています。
スクリプト、プラグイン、方法問いませんので、何か良い方法はありませんでしょうか?
最後に編集したユーザー みゅも on 2017年8月19日(土) 12:28 [ 編集 1 回目 ]

アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: 床に目印をつける方法はありませんか?

投稿記事by ビービー » 2017年8月04日(金) 20:50

こんばんは。

アイテムの使用効果という部分でコモンイベントを起動する設定ができます。
アイテム使用時に指定したコモンイベントが起動するようになるので、
その起動するコモンイベント内でスイッチや変数を操作すれば、
マップ上のイベントのページを切り替えることも可能です。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
みゅも
記事: 6
登録日時: 2016年12月27日(火) 20:04

Re: 床に目印をつける方法はありませんか?

投稿記事by みゅも » 2017年8月05日(土) 16:20

こんにちは。ビービーさん返信ありがとうございます!

コモンイベントで変数やスイッチを~というのは、つまり事前にイベントを設置しておくという事でしょうか?
床一面にイベントを詰めるぐらいしか思いつきませんでした。
ツクール初心者で申し訳ないです!もう一度ご教示お願いします…
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: 床に目印をつける方法はありませんか?

投稿記事by ビービー » 2017年8月05日(土) 19:12

その場に目印をつけたいという事だったので、
目的地のイベントを光らせるなどしたいと思ったのですが、
目的地までの道のりを表示したいという事ですか?

入口からゴールまでの道を表示したいのであれば
サンシロピーさんの作成されたタイルトナープラグインで指定したタイルに色を付けることが可能です。

もしくは現在プレイヤーがいる位置からゴールまでの道のりを表示したいのであれば
専用のプラグインを作成してもらうしかないと思います。

ですが現在いる位置から目的地まで移動するイベントを作成することはできます。
まずこちらの記事http://tm.lucky-duet.com/viewtopic.php?f=49&t=1189&p=3561&hilit=%E7%B5%8C%E8%B7%AF%E6%8E%A2%E7%B4%A2#p3554
で紹介されている方法で、目的地に移動するイベントを作成します。
次にアイテムのコモンイベントから現在いる位置を変数に代入し、
その位置に目的地に向かうイベントを移動させれば
主人公から目的地まで移動するイベントを作成できます。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
RUFIERU
記事: 32
登録日時: 2016年11月11日(金) 01:11

Re: 床に目印をつける方法はありませんか?

投稿記事by RUFIERU » 2017年8月05日(土) 19:25

こんにちは。
横から失礼します。
考えた方法で次のような方法があります。
必要プラグイン
トリアコンタン様の TempleteEvent.js EventReSpawn.js
目印イベントをテンプレートイベント用マップに作ります。
次に変数を二つ確保してください。目印の座標を記録します。
◆変数の操作:#0001 = [] (スクリプトから)
◆変数の操作:#0002 = [] (スクリプトから)
この次にスクリプトで次の処理を実行します。

コード: 全て選択

for(var Z = 1 ; Z < $dataMapInfos.length ; ++Z){
  $gameVariables._data[1][Z] = [] ;
  $gameVariables._data[2][Z] = [] ;
}

この際の$gameVariables._data[1][Z] ;
における「1」は、対象となる変数です。確保した変数のIDを入力してください。
これらの処理は一回だけ実行してください。
次に、アイテムの使用効果から起動するコモンイベントで次のように設定します。
◆変数の操作:#0003 = プレイヤーのマップX
◆変数の操作:#0004 = プレイヤーのマップY
◆スクリプト:

コード: 全て選択

$gameVariables._data[1][$gameMap._mapId][$gameVariables._data[1][$gameMap._mapId].length] = $gameVariables.value(3)
$gameVariables._data[2][$gameMap._mapId][$gameVariables._data[2][$gameMap._mapId].length] = $gameVariables.value(4)

◆プラグインコマンド:ERS_MAKE_TEMPLATE 1 \v[3] \v[4] //このコマンドの「1」はテンプレートイベントの目印イベントのイベントIDです。

これでアイテムのコモンイベントは完成です。
次に、目印を設定するマップに入ったときのコモンイベントを構築します。
このイベントがなければ、目印が消えてしまいます。
◆変数の操作:#0005 = 0
◆ループ
 ◆変数の操作:#0003 = $gameVariables._data[1][$gameMap._mapId][$gameVariables.value(5)]
 ◆変数の操作:#0004 = $gameVariables._data[2][$gameMap._mapId][$gameVariables.value(5)]
 ◆プラグインコマンド:ERS_MAKE_TEMPLATE 1 \v[3] \v[4]
 ◆変数の操作:#0005 += 1
 ◆条件分岐:$gameVariables._data[1][$gameMap._mapId].length <= $gameVariables.value(5)
  ◆ループの中断
  ◆
 :分岐終了
 ◆
:以上繰り返し


これで完成です。
みゅも
記事: 6
登録日時: 2016年12月27日(火) 20:04

Re: 床に目印をつける方法はありませんか?

投稿記事by みゅも » 2017年8月06日(日) 10:08

ビービーさん、RUFIERUさん、お返事ありがとうございます!

言葉足らず、理解力足らずで申し訳ないです(>_<)
イメージとしては、アニメや漫画などで、迷路に挑むとき、迷子にならないように松明やらお金やらを一定間隔で置いていったり、壁に落書きを書くような事をしているのをみたので、それに似たような事が出来ないかな?と思った次第です。

まだスクリプトをまともに扱ったことがなく、コードを見てもいまいち理解しきれず、申し訳ないです。
今出先にいるので、頂いたイベントやプラグインは帰ったら試してみたいと思います!
みゅも
記事: 6
登録日時: 2016年12月27日(火) 20:04

Re: 床に目印をつける方法はありませんか?

投稿記事by みゅも » 2017年8月07日(月) 18:21

こんにちは。
すみません、頂いたコードを入れてみたのですが、エラーが出てしまいました…。

TempleteEvent.jsとEventReSpawn.jsも導入し、テンプレートイベント専用のマップも設定しました。
テンプレートイベントに
◆変数の操作:#0001 = []
◆変数の操作:#0002 = []
for(var Z = 1 ; Z < $dataMapInfos.length ; ++Z){
$gameVariables._data[1][Z] = [] ;
$gameVariables._data[2][Z] = [] ;
}
を設定しました。

コモンイベント1に
◆変数の操作:#0003 = プレイヤーのマップX
◆変数の操作:#0004 = プレイヤーのマップY
$gameVariables._data[1][$gameMap._mapId][$gameVariables._data[1][$gameMap._mapId].length] = $gameVariables.value(3)
$gameVariables._data[2][$gameMap._mapId][$gameVariables._data[2][$gameMap._mapId].length] = $gameVariables.value(4)
◆プラグインコマンド:ERS_MAKE_TEMPLATE 1 \v[3] \v[4]

コモンイベント2に
◆変数の操作:#0005 = 0
◆ループ
 ◆変数の操作:#0003 = $gameVariables._data[1][$gameMap._mapId][$gameVariables.value(5)]
 ◆変数の操作:#0004 = $gameVariables._data[2][$gameMap._mapId][$gameVariables.value(5)]
 ◆プラグインコマンド:ERS_MAKE_TEMPLATE 1 \v[3] \v[4]
 ◆変数の操作:#0005 += 1
 ◆条件分岐:スクリプト:$gameVariables._data[1][$gameMap._mapId].length <= $gameVariables.value(5)
  ◆ループの中断
  ◆
 :分岐終了
 ◆
:以上繰り返し


ということで良いのでしょうか??
コモンイベント1をアイテムから設定し、コモンイベント2をイベントを設定したいマップに設定し、自動実行にしました。

お手数おかけしてますが、お願いします<(_ _)>
アバター
RUFIERU
記事: 32
登録日時: 2016年11月11日(金) 01:11

Re: 床に目印をつける方法はありませんか?

投稿記事by RUFIERU » 2017年8月08日(火) 02:28

こんにちは。
説明不足でごめんなさい。(´・ω・)
最初のテンプレートイベントに設置した、と言っているイベントですが、これは変数の初期設定を行っている処理です。
具体的にはなにをしているのかというと、$dataMapInfos の要素数(存在するマップの数)の値分だけ配列という変数を設定しているのです。
そのため、一回だけ実行すればそのあとは実行しなくてもよい、再度実行するとデータをリセットしてしまう処理になります。
そのため、この処理はゲーム開始時に一回だけ起動すれば大丈夫です。
目印そのものには調べると何かが起こる、とかでないならば特に何も設定しなくてOKです。

それともう一つ。
プログラムミスがありました。ごめんなさい。(´・ω・)
コモンイベント2のほうの条件分岐の処理を ◆変数の操作:#0003 = $gameVariables._data[1][$gameMap._mapId][$gameVariables.value(5)]
の前に移動させてください。中身はそのままで大丈夫です。
このままだと目印が設定されていないのに、座標(0,0)に設置されてしまいます。
つまりはこうです。
◆変数の操作:#0005 = 0
◆ループ
 ◆条件分岐:スクリプト:$gameVariables._data[1][$gameMap._mapId].length <= $gameVariables.value(5)
  ◆ループの中断
  ◆
 :分岐終了
 ◆変数の操作:#0003 = $gameVariables._data[1][$gameMap._mapId][$gameVariables.value(5)]
 ◆変数の操作:#0004 = $gameVariables._data[2][$gameMap._mapId][$gameVariables.value(5)]
 ◆プラグインコマンド:ERS_MAKE_TEMPLATE 1 \v[3] \v[4]
 ◆変数の操作:#0005 += 1
 ◆
:以上繰り返し

ご迷惑をおかけしました。
あと、このイベントはマップに入ってから初めに一回だけ実行すれば大丈夫です。

おまけ
マップごとに目印をリセットするコマンド。
◆スクリプト:

コード: 全て選択

$gameVariables._data[1][ (リセットしたいマップID) ] = []
$gameVariables._data[2][ (リセットしたいマップID) ] = []

念のため。
アバター
RUFIERU
記事: 32
登録日時: 2016年11月11日(金) 01:11

Re: 床に目印をつける方法はありませんか?

投稿記事by RUFIERU » 2017年8月08日(火) 04:58

もう一つおまけです。
目印を一つずつ削除できるようにする方法。

初期設定イベント

◆変数の操作:#0001 = []
◆変数の操作:#0002 = []
◆変数の操作:#0006 = []
◆スクリプト:

コード: 全て選択

for(var Z = 1 ; Z < $dataMapInfos.length ; ++Z){
  $gameVariables._data[1][Z] = [] ;
  $gameVariables._data[2][Z] = [] ;
}


コモンイベント1

◆変数の操作:#0003 = プレイヤーのマップX
◆変数の操作:#0004 = プレイヤーのマップY
◆スクリプト:

コード: 全て選択

$gameVariables._data[1][$gameMap._mapId][$gameVariables._data[1][$gameMap._mapId].length] = $gameVariables.value(3)
$gameVariables._data[2][$gameMap._mapId][$gameVariables._data[2][$gameMap._mapId].length] = $gameVariables.value(4)

◆プラグインコマンド:ERS_MAKE_TEMPLATE 1 \v[3] \v[4]
◆プラグインコマンド:ERS_GET_LAST_SPAWN_EVENT_ID 7
◆スクリプト:

コード: 全て選択

$gameVariables._data[6][$gameVariables._data[6].length] = $gameVariables.value(7)


コモンイベント2

◆変数の操作:#0006 = []
◆変数の操作:#0005 = 0
◆ループ
 ◆条件分岐:スクリプト:$gameVariables._data[1][$gameMap._mapId].length <= $gameVariables.value(5)
  ◆ループの中断
  ◆
 :分岐終了
 ◆変数の操作:#0003 = $gameVariables._data[1][$gameMap._mapId][$gameVariables.value(5)]
 ◆変数の操作:#0004 = $gameVariables._data[2][$gameMap._mapId][$gameVariables.value(5)]
 ◆プラグインコマンド:ERS_MAKE_TEMPLATE 1 \v[3] \v[4]
 ◆プラグインコマンド:ERS_GET_LAST_SPAWN_EVENT_ID 7
 ◆スクリプト:

コード: 全て選択

$gameVariables._data[6][$gameVariables.value(5)] = $gameVariables.value(7)

 ◆変数の操作:#0005 += 1
 ◆
:以上繰り返し

目印イベント

◆文章:なし、ウィンドウ、下
:  :この目印を消去しますか?
◆選択肢の表示:はい、いいえ(ウィンドウ、右、#1,#2)
:はいのとき
 ◆スクリプト:

コード: 全て選択

for(var i = 0 ; i <= $gameMap._events.length ; ++i){
 if( $gameVariables._data[6][i] == this.character(0)._eventId ){
  break ;
 }
}
$gameVariables._data[1][$gameMap._mapId].splice(i,1) ;
$gameVariables._data[2][$gameMap._mapId].splice(i,1) ;
$gameVariables._data[6].splice(i,1) ;

 ◆イベントの一時消去
 ◆
:いいえのとき
 ◆
:分岐終了


赤いところが変更点です。
このように作ると、目印を調べると目印を消去するようにできます。
よければやってみてください。(*´ω`*)
みゅも
記事: 6
登録日時: 2016年12月27日(火) 20:04

Re: 床に目印をつける方法はありませんか?

投稿記事by みゅも » 2017年8月09日(水) 20:12

こんにちは!返信ありがとうございます。
ご丁寧にお教えいただき、大変助かりました。消し方までありがとうございます!

・コモンイベント2の修正
・コモンイベント2をマップに入った時に1回だけ実行
・テンプレートイベントをゲーム開始時(これはニューゲームした時、で良かったのでしょうか…)に1回だけ実行

という具合で、イベントを修正し実行したところ、エラーが出なくなりアイテムを使う事が出来ました。
そこでまたまた重ね重ね質問で申し訳ないのですが、アイテムを使用しても消費するだけで何も起こらない状態になりました…。
例えばキラキラさせたい時などは、どこを設定すればよいのでしょうか?
すみませんが、よろしくお願いします。

“MV:質問” へ戻る