コメントお返事
> T さん
イベント処理改善スクリプトについて。
確認してみたところ、そのあたりの説明がまったく書いてありませんでしたね・・・
「ページ更新禁止」は各ページに入れる必要があります。
コモンイベント呼び出しを使用した場合は、コモンイベントにも入れる必要があります。
本スクリプトに入っている「別ページの実行内容を呼び出す」機能を使った場合も、入れる必要があります。
つまりは実行内容の一番上から開始する時点で、「ページ更新禁止」フラグは立っていない状態です。
インタプリタごとにフラグを管理してるので、こんな仕様になっちゃってます。
また何かいい方法が浮かんだら調整してみようと思います。
イベント処理改善スクリプトについて。
確認してみたところ、そのあたりの説明がまったく書いてありませんでしたね・・・
「ページ更新禁止」は各ページに入れる必要があります。
コモンイベント呼び出しを使用した場合は、コモンイベントにも入れる必要があります。
本スクリプトに入っている「別ページの実行内容を呼び出す」機能を使った場合も、入れる必要があります。
つまりは実行内容の一番上から開始する時点で、「ページ更新禁止」フラグは立っていない状態です。
インタプリタごとにフラグを管理してるので、こんな仕様になっちゃってます。
また何かいい方法が浮かんだら調整してみようと思います。
スポンサーサイト
コメントお返事
> T さん
こんにちは、いらっしゃいませ~。
ちょっといろいろと試してみたのですが、VXに対応させるのは結構修正が要ります。
1. イベント処理改善スクリプト(以下本スクリプト)の94行目~163行目までを削除。
2. 上記で削除した場所に、以下のスクリプトを入れてください。
#--------------------------------------------------------------------------
# ◯ イベントコマンドの実行
#--------------------------------------------------------------------------
alias _wooden_event_execute_command execute_command
def execute_command
if @index >= @list.size-1
command_end
return true
else
@params = @list[@index].parameters
@indent = @list[@index].indent
case @list[@index].code
when 108 # 注釈
return command_108
else
return _wooden_event_execute_command
end
end
end
#--------------------------------------------------------------------------
# ● 注釈
#--------------------------------------------------------------------------
def command_108
comments = [@params[0]]
while @list[@index + 1].code == 408
@index += 1
comments.push(@list[@index].parameters[0])
end
comments.each do |comment|
if comment == WdTk::EvEX::DISABLE_TEXT
@map_refresh_disabled = true
elsif comment == WdTk::EvEX::ENABLE_TEXT
@map_refresh_disabled = false
end
end
return true
end
#--------------------------------------------------------------------------
# ◯ スイッチの操作
#--------------------------------------------------------------------------
alias _wooden_event_command_121 command_121
def command_121
last_need_refresh = $game_map.need_refresh if @map_refresh_disabled
_wooden_event_command_121
$game_map.need_refresh = last_need_refresh if @map_refresh_disabled
return true
end
#--------------------------------------------------------------------------
# ◯ 変数の操作
#--------------------------------------------------------------------------
alias _wooden_event_command_122 command_122
def command_122
last_need_refresh = $game_map.need_refresh if @map_refresh_disabled
_wooden_event_command_122
$game_map.need_refresh = last_need_refresh if @map_refresh_disabled
return true
end
#--------------------------------------------------------------------------
# ● ページ呼び出し
#--------------------------------------------------------------------------
def call_page(index)
# 別のページをコモンイベントのように呼び出す
event = get_character(0)
page = event ? event.get_page(index - 1) : nil
if page
@child_interpreter = Game_Interpreter.new(@depth + 1)
@child_interpreter.setup(page.list, @event_id)
end
return true
end
軽く動作確認しただけなので、もしかしたらうまく動かないかもしれません。
たぶん大丈夫だとは思いますが・・・
VXのスクリプトは忘れてる箇所が多いので、申し訳ないですがこれ以上の対応は難しいです。
こんにちは、いらっしゃいませ~。
ちょっといろいろと試してみたのですが、VXに対応させるのは結構修正が要ります。
1. イベント処理改善スクリプト(以下本スクリプト)の94行目~163行目までを削除。
2. 上記で削除した場所に、以下のスクリプトを入れてください。
#--------------------------------------------------------------------------
# ◯ イベントコマンドの実行
#--------------------------------------------------------------------------
alias _wooden_event_execute_command execute_command
def execute_command
if @index >= @list.size-1
command_end
return true
else
@params = @list[@index].parameters
@indent = @list[@index].indent
case @list[@index].code
when 108 # 注釈
return command_108
else
return _wooden_event_execute_command
end
end
end
#--------------------------------------------------------------------------
# ● 注釈
#--------------------------------------------------------------------------
def command_108
comments = [@params[0]]
while @list[@index + 1].code == 408
@index += 1
comments.push(@list[@index].parameters[0])
end
comments.each do |comment|
if comment == WdTk::EvEX::DISABLE_TEXT
@map_refresh_disabled = true
elsif comment == WdTk::EvEX::ENABLE_TEXT
@map_refresh_disabled = false
end
end
return true
end
#--------------------------------------------------------------------------
# ◯ スイッチの操作
#--------------------------------------------------------------------------
alias _wooden_event_command_121 command_121
def command_121
last_need_refresh = $game_map.need_refresh if @map_refresh_disabled
_wooden_event_command_121
$game_map.need_refresh = last_need_refresh if @map_refresh_disabled
return true
end
#--------------------------------------------------------------------------
# ◯ 変数の操作
#--------------------------------------------------------------------------
alias _wooden_event_command_122 command_122
def command_122
last_need_refresh = $game_map.need_refresh if @map_refresh_disabled
_wooden_event_command_122
$game_map.need_refresh = last_need_refresh if @map_refresh_disabled
return true
end
#--------------------------------------------------------------------------
# ● ページ呼び出し
#--------------------------------------------------------------------------
def call_page(index)
# 別のページをコモンイベントのように呼び出す
event = get_character(0)
page = event ? event.get_page(index - 1) : nil
if page
@child_interpreter = Game_Interpreter.new(@depth + 1)
@child_interpreter.setup(page.list, @event_id)
end
return true
end
軽く動作確認しただけなので、もしかしたらうまく動かないかもしれません。
たぶん大丈夫だとは思いますが・・・
VXのスクリプトは忘れてる箇所が多いので、申し訳ないですがこれ以上の対応は難しいです。
スクリプトの更新
「移動ルートの設定」の簡略化
久しぶりの小ネタです。
イベントなどを作るとき、キャラを移動させるのに「移動ルートの設定」が使われます。
で、その移動ルートを設定しているとき、こんな風になったことは無いでしょうか?

移動させる距離が長いと、その分同じ移動コマンドが何度も続いてしまいます。
歩数を数えなければならないし、そのうちキャラの位置関係とかわからなくなってしまいます。
でも実はこれ、スクリプトを使えば簡略化できちゃいます。
例えば、X座標 12 まで移動したい場合

と、移動ルートのスクリプトで @x に 12 を入れれば、
座標軸で移動先を設定することが出来ちゃいます。
そうではなく、左に5歩進みたいって場合は、@x -= 5 と入力すればOK。

こんな感じで簡略化可能です。
ただし、気をつける点がいくつかあります。
まずは、これを使うとキャラが移動方向に向きを変えません。
向きを変えてから移動させる必要があります。
それから、衝突判定も行われません。
指定した座標に全てすり抜けて移動します。
あとついでに、マップのループ移動にも対応していません。
まあ、どれも大したものではないです。
思ったとおりに動けばいいんですよ!
ちなみに、これを使って移動先の座標を画面の外に設定すると、
なんと通常では移動させられない画面外に、イベントを移動させることが可能です。
これもちょっと使えるテクニックです。
ぜひ試してみてね!
以下、コメントお返事。
イベントなどを作るとき、キャラを移動させるのに「移動ルートの設定」が使われます。
で、その移動ルートを設定しているとき、こんな風になったことは無いでしょうか?

移動させる距離が長いと、その分同じ移動コマンドが何度も続いてしまいます。
歩数を数えなければならないし、そのうちキャラの位置関係とかわからなくなってしまいます。
でも実はこれ、スクリプトを使えば簡略化できちゃいます。
例えば、X座標 12 まで移動したい場合

と、移動ルートのスクリプトで @x に 12 を入れれば、
座標軸で移動先を設定することが出来ちゃいます。
そうではなく、左に5歩進みたいって場合は、@x -= 5 と入力すればOK。

こんな感じで簡略化可能です。
ただし、気をつける点がいくつかあります。
まずは、これを使うとキャラが移動方向に向きを変えません。
向きを変えてから移動させる必要があります。
それから、衝突判定も行われません。
指定した座標に全てすり抜けて移動します。
あとついでに、マップのループ移動にも対応していません。
まあ、どれも大したものではないです。
思ったとおりに動けばいいんですよ!
ちなみに、これを使って移動先の座標を画面の外に設定すると、
なんと通常では移動させられない画面外に、イベントを移動させることが可能です。
これもちょっと使えるテクニックです。
ぜひ試してみてね!
以下、コメントお返事。
スクリプトの更新
下記のスクリプトを更新しました。
簡易マップ標示
簡易マップを標示していないマップで、メニュー開いたりするとエラーが発生する不具合を修正しました。
報告頂いた不具合です。たぶん、これで治ったと思います。
ありがとうございました。
簡易マップ標示
簡易マップを標示していないマップで、メニュー開いたりするとエラーが発生する不具合を修正しました。
報告頂いた不具合です。たぶん、これで治ったと思います。
ありがとうございました。
簡易マップ標示
明けまして一週間が経ちました、おめでとうございます。
特別書くことも無いので、あとはいつも通り。
【簡易マップ標示】
連休使って作ってみました、マップ標示スクリプト。
ゼロからスクリプト書いたので、改変とかではないです。
とにかく持てる技術はすべてつぎ込んだ
――ら、案の定設定項目が多くなってしまいました。
使い方がわからなかったり、おかしな部分があるようでしたら
コメントいただければお答えします。
どんな感じのスクリプトかというと・・・

もちろん、乗り物擬似3D化に対応していますし、

さらに向きにあわせてマップ画像が回転するようなのも作ってみたり、

マップ画像を指定して使うことも出来ます。
新年一発目のスクリプト素材としては、満足いくものが出来たかなーっと思います。
特別書くことも無いので、あとはいつも通り。
【簡易マップ標示】
連休使って作ってみました、マップ標示スクリプト。
ゼロからスクリプト書いたので、改変とかではないです。
とにかく持てる技術はすべてつぎ込んだ
――ら、案の定設定項目が多くなってしまいました。
使い方がわからなかったり、おかしな部分があるようでしたら
コメントいただければお答えします。
どんな感じのスクリプトかというと・・・

もちろん、乗り物擬似3D化に対応していますし、

さらに向きにあわせてマップ画像が回転するようなのも作ってみたり、

マップ画像を指定して使うことも出来ます。
新年一発目のスクリプト素材としては、満足いくものが出来たかなーっと思います。