Event-EI:詳細情報


トップページへ | RGSSスクリプトへ | Event-EI概要へ

Event-EI詳細情報

Event-EI インタプリタ 例外情報強化スクリプトにおいての詳細情報です。

調整ポイント

WFRGSS_Event_EI モジュールの値を設定することで動作を調整することができます。通常の利用では、特に必要ない限りSCRIPT_TUNE以外、falseのままにしてください。

※ 重要な注意事項 ※

デバッグモードのみ有効なオプションにてデバッグモード以外でも動作するように編集を行った場合、本来知られたくない情報が漏れたり、思わぬ動作を引き起こす恐れがあります。

特に次のクラスやモジュールを編集する場合は特に注意してください。


SnapShotWorking
EvalExec
WFRGSS_Event_EI ※ カスタマイズポイント以外の部分

作成したゲームを配布する前に、SCRIPT_TUNE 以外の設定が無効( false )になっているかをかならず確認してください。

それでも 不安なら、SnapShotWorking モジュール全体を次のように置き換えてください。


module SnapShotWorking
  def self.snapshot
    nil
  end
end

SCRIPT_TUNE (obsolete - rev-5)


規定値 : true (TrueClass)
設定値 : true (TrueClass) / false(FalseClass)

スクリプト、インタプリタの動作を高速化する場合は、true を指定します。高速化を行わない場合は、false を指定します。

このオブションで互換性の問題が発生する場合は、false に指定してください。

互換性の問題が多発するため、この設定値はrev-5で廃止されました。

SCRIPT_LOOP_CHECK


規定値 : false (FalseClass)(XP版) / true (TrueClass)(VX版)
設定値 : true (TrueClass) / false(FalseClass)

イベントコマンド、スクリプトで無限ループになる恐れがあるスクリプトを検出したとき例外 RuntimeError を発生させるかを指定します。
この値が true の場合、検出されると例外 RuntimeError を発生させます。
この値が false の場合、検出を行いません。

この機能により例外が発生した場合は、スクリプトは1行目に false または nil を返しているため、無限ループになる恐れがあること通知します。

条件を満たすまで処理を繰り返す事を想定している場合は例外により処理が中断してしまいますので、ご注意ください。

trueに設定しても無限ループに陥る場合は、例外を破棄していないか、リトライしていないかを確認してください。

VX版では、イベントコマンド スクリプトの動作がXP版のような動作をします。 そのため、記述方法によっては無限ループになる恐れがあります。 (無限ループは検出できます。)

なお、次のようなスクリプトの無限ループは検出しません。
このような無限ループが発生する恐れがあるスクリプトを検出するには、後述するASSERT_GRAPHICS_METHOD_CHECKtrueに設定します。


  # 無限ループの例。これではハングアップにすらならない。
  while true
    Graphics.update
  end

ASSERT_GRAPHICS_METHOD_CHECK


規定値 : false (FalseClass)
設定値 : true (TrueClass) / false(FalseClass)

スクリプトに、Graphics.updateが記述されていないかをチェックします。記述されていた場合は、例外AssertionErrorが発生します。
例外 AssertionError が発生した場合、スクリプトにGraphics.updateが呼ばれていることを示します。

このオブションは、次のような無限ループに陥るスクリプトを検出するためのものです。


  # 無限ループの例。これではハングアップにすらならない。
  while true
    Graphics.update
  end

メソッドの内部などで、Graphics.update が呼ばれていた場合は後述する、 ASSERT_GRAPHICS_DEEPtrue に設定していないと検出されません。

デバックモードのみこのオブションは有効です。無限ループ検出目的以外では、 false に設定してください。

ASSERT_GRAPHICS_DEEP


規定値 : false (FalseClass)
設定値 : true (TrueClass) / false(FalseClass)

ASSERT_GRAPHICS_METHOD_CHECKの補助オプションで、メソッド内部で、Graphics.update が呼ばれていた場合も例外AssertionErrorを発生させます。
例外AssertionErrorが発生した場合、スクリプトを実行中に、Graphics.updateが呼ばれています。

このオブションは、次のような無限ループに陥るスクリプトを検出するためのものです。


  # 予め Graphics.update が呼ばれるメソッドが定義してある
  class Interpreter
    def foo
      Graphics.update
    end
  end

  # 無限ループの例。これではハングアップにすらならない。
  # 実際に動作させるスクリプト
  while true
    foo
  end

デバックモードのみこのオブションは有効です。無限ループ検出目的以外では、 false に設定してください。

※注意事項※

スレッドを同時に動かしていた場合、別のスレッドからのGraphics.updateも検出する恐れがあります。

このオブションを有効( true ) にした場合、 スクリプトの動作が遅くなりますのでご注意ください。

GET_INSTANCE_SNAPSHOT


規定値 : false (FalseClass)
設定値 : true (TrueClass) / false(FalseClass)
※重大な注意事項※

ゲームを配布される前にこのオプションが無効( false ) になっていることを かならず確認してください。

このオプション設定は、内部の状態を出力するものです
配布した作品でこのオプションが有効になっていた場合、内部の情報が流出する恐れがあります。

イベントコマンド スクリプトで例外が発生したとき、$game_ ではじまるグローバル変数の状態を取得します。

取得結果は、グローバル変数名から、$を取り除いたテキストファイルに出力されます。
既にファイルが存在する場合は上書きされますのでご注意ください。

この機能は、Object#inspectの機能に依存します。

情報は大量に出力されます。特に$game_mapでは非常に多くのデータが出力されますのでご注意ください。

デバックモードのみこのオブションは有効です。通常は、false にしておくことをお勧めします。

※制限事項:

Tableクラスの内容は出力されません。

他にも Object#inspect またはオーバーライドされたメソッドから状態を取得できない場合も取得を行う事はできません。

▲このページの先頭へ

エラーの情報

イベントコマンド スクリプト、または条件分岐でのエラーの詳細情報の説明です。

イベントコマンド スクリプト 条件分岐のスクリプトでのエラー

(eval)**(Map|Battle) Event Error:

スクリプトがマップイベントなのか、バトルイベントなのかを示します。

script:

例外が発生したときに評価されていたスクリプトを表示します。

map_name:

現在のマップ名を取得して表示します。
( data/MapInfos.rxdata が存在して、形式が変わっていないことが前提 )

mapid:

現在のマップIDを取得します。

common_event_id:

現在のコモンイベントIDです。コモンイベントでなければ0になります。

player_x:

プレイヤーの x 座標を取得します。

player_y:

プレイヤーの y 座標を取得します。

common_event_name:

現在のイベントコマンドがコモンイベントであれば、 コモンイベント名を取得します。

event_x:

マップイベントであれば、イベントの x 座標を取得します。

event_y:

マップイベントであれば、イベントの y 座標を取得します。

event_id:

マップイベントであれば、イベントIDを取得します。

event_name:

マップイベントであれば、イベント名を取得します。

troop_name:

バトルイベントであれば、トループ名を取得します。

troop_id:

バトルイベントであれば、トループIDを取得します。

pages:

現在のイベントページです。

list:

イベントリストの進行度です。

depth:

イベントの深さです。

** Exception:

実際に発生した例外の詳細情報です。

キャラクター移動ルートのスクリプトエラー

Character Error:

キャラクターエラーであることを示します。

id:

イベントIDを取得します。

name:

イベント名です。!Player Object! となっていた場合は、プレイヤーです。

x:

イベントのx座標です。

y:

イベントのy座標です。

page:

現在のイベントページです。

locked:

現在のイベントがロックされているかを取得します。

forced:

現在のイベントが移動ルート強制中であるかを取得します。

move_list:

現在の移動リストの進行度です。

** Exception:

実際に発生した例外の詳細情報です。

▲このページの先頭へ

影響範囲 (XP版)

このスクリプトでは、 次のところを編集、追加しています。次にあげるメソッドの動作が変わっていなければ、通常は動作するようになっています。

Game_Temp

追加されたメソッド

actor_battle_status=(method_obj)
actor_battle_status_refresh
actor_battle_status_dispose

Game_CommonEvent

Game_Character

追加されたメソッド

exception_messages( errorobj = nil )

Game_Event

オーバーライドされたメソッド

initialize(map_id, event)
refresh
update

追加されたメソッド

pages
event_list( page_id )
name

Interpreter

オーバーライドされたメソッド

initialize(depth = 0, main = false)
clear
setup(list, event_id , page_id = 0 , common_event_id = 0 ) setup(list, event_id )
setup_starting_event
command_117
command_355

追加されたメソッド

calling_event_command( event_id , page_id )
exception_messages( errorobj = nil , script = nil )

Scene_Battle

オーバーライドされたメソッド

main
setup_battle_event

追加されたメソッド

actor_battlestatus_update
▲このページの先頭へ

影響範囲 (VX版)

このスクリプトでは、 次のところを編集、追加しています。次にあげるメソッドの動作が変わっていなければ、通常は動作するようになっています。

Game_CommonEvent

Game_Character

追加されたメソッド

exception_messages( errorobj = nil )

Game_Event

オーバーライドされたメソッド

initialize(map_id, event)
refresh
update

追加されたメソッド

pages
event_list( page_id )
name

Game_Interpreter

オーバーライドされたメソッド

initialize(depth = 0, main = false)
clear
setup(list, event_id , page_id = 0 , common_event_id = 0 ) setup(list, event_id )
setup_starting_event
command_117
command_355

追加されたメソッド

calling_event_command( event_id , page_id )
exception_messages( errorobj = nil , script = nil )

Game_Troop

▲このページの先頭へ

メモ

このスクリプトでは、ページ数を明示的に取得しているため、 RPGツクール(R)200xにあったイベントの呼び出し互換のスクリプト動作も可能となります。

Interpreter クラス(XP版) / Game_Interpreter クラス (VX版)

calling_event_command( event_id , page_id )

  in : event_id -> Fixnum ( 1 ~ 999 )
       page_id  -> Fixnum ( 1 ~ 100 )
  out: true (TrueClass)

イベントのID の指定したページのイベントを呼び出します。 指定したイベントIDが存在しない、または指定したページが存在しないときは、 何も行いません。

イベントIDまたはページの指定が Fixnumでない場合は 例外 TypeError が発生します。

イベントIDまたはページの指定が範囲外の場合は 例外 RangeError が発生します。

このメソッドはイベントコマンド スクリプトから直接呼び出す事ができます。

このメソッドは、コモンイベントで指定するのが安全ですが、コモンイベントから呼び出した場合、イベントの深さが余計に1段階深くなりますのでご注意ください。

▲このページの先頭へ

トップページへ | RGSSスクリプトへ | Event-EI概要へ
WHITE-FLUTE Web.
URIhttp://www.whiteflute.org/
© 2010 WHITE-FLUTE all rights reserved.
Powered by Gumiki A2S ver1.01