bad-end-collector/Scripts/e.rb
2024-05-18 13:05:37 -05:00

392 lines
No EOL
15 KiB
Ruby

#==============================================================================
# ■ RGSS3 特殊エラー検出 Ver1.03 by 星潟
#------------------------------------------------------------------------------
# 解放済みビューポート内のスプライトを解放しようとした際に生じると思われる
# RGSS Playerの動作停止エラーの原因となっている部分を検出します。
#
# Ver1.01
# 解放済みスプライトへのビューポートチェック時にエラー落ちしていた不具合を修正。
# (既に解放済みの場合、処理そのものを行わないように変更)
#
# Ver1.02
# 頂いたご意見を元に、チェック箇所を追加。
# また、ウィンドウにもチェックを入れました。
#
# Ver1.02a
# alias部分にちょっと手を加えました。多分動作に影響はありません。
#
# Ver1.03
# 新たに天候とタイルチップもエラー検出対象に加えました。
#==============================================================================
module SPR_E_C
#問題のある処理の実行までの経緯を表示するかどうかを設定します。
#(true 表示する/false 表示しない)
DETAIL = true
end
class Sprite
#--------------------------------------------------------------------------
# ● スプライトの生成
#--------------------------------------------------------------------------
alias initialize_check initialize unless $!
def initialize(viewport = nil)
if viewport != nil
begin
#ビューポートの可視状態を参照
viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたスプライト生成命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
initialize_check(viewport)
end
#--------------------------------------------------------------------------
# ● ビューポートの指定
#--------------------------------------------------------------------------
alias viewport_check viewport unless $!
def viewport=(viewport)
if viewport != nil
begin
#ビューポートの可視状態を参照
viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたビューポート指定命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
viewport_check=(viewport)
end
#--------------------------------------------------------------------------
# ● スプライトの解放
#--------------------------------------------------------------------------
alias dispose_check dispose unless $!
def dispose
#ビューポートが設定されているスプライトでなければ飛ばす
if !self.disposed? && self.viewport != nil
begin
#ビューポートの可視状態を参照
self.viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたスプライト解放命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
dispose_check
end
end
class Tilemap
#--------------------------------------------------------------------------
# ● スプライトの生成
#--------------------------------------------------------------------------
alias initialize_check initialize unless $!
def initialize(viewport = nil)
if viewport != nil
begin
#ビューポートの可視状態を参照
viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたスプライト生成命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
initialize_check(viewport)
end
#--------------------------------------------------------------------------
# ● ビューポートの指定
#--------------------------------------------------------------------------
alias viewport_check viewport unless $!
def viewport=(viewport)
if viewport != nil
begin
#ビューポートの可視状態を参照
viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたビューポート指定命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
viewport_check=(viewport)
end
#--------------------------------------------------------------------------
# ● スプライトの解放
#--------------------------------------------------------------------------
alias dispose_check dispose unless $!
def dispose
#ビューポートが設定されているスプライトでなければ飛ばす
if !self.disposed? && self.viewport != nil
begin
#ビューポートの可視状態を参照
self.viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたスプライト解放命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
dispose_check
end
end
class Plane
#--------------------------------------------------------------------------
# ● スプライトの生成
#--------------------------------------------------------------------------
alias initialize_check initialize unless $!
def initialize(viewport = nil)
if viewport != nil
begin
#ビューポートの可視状態を参照
viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたスプライト生成命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
initialize_check(viewport)
end
#--------------------------------------------------------------------------
# ● ビューポートの指定
#--------------------------------------------------------------------------
alias viewport_check viewport unless $!
def viewport=(viewport)
if viewport != nil
begin
#ビューポートの可視状態を参照
viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたビューポート指定命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
viewport_check=(viewport)
end
#--------------------------------------------------------------------------
# ● スプライトの解放
#--------------------------------------------------------------------------
alias dispose_check dispose unless $!
def dispose
#ビューポートが設定されているスプライトでなければ飛ばす
if !self.disposed? && self.viewport != nil
begin
#ビューポートの可視状態を参照
self.viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたスプライト解放命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
dispose_check
end
end
class Window_Base
#--------------------------------------------------------------------------
# ● ビューポートの指定
#--------------------------------------------------------------------------
alias viewport_check viewport unless $!
def viewport=(viewport)
if viewport != nil
begin
#ビューポートの可視状態を参照
viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたビューポート指定命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
super(viewport)
end
#--------------------------------------------------------------------------
# ● ウィンドウの解放
#--------------------------------------------------------------------------
alias dispose_check dispose unless $!
def dispose
#ビューポートが設定されているウィンドウでなければ飛ばす
if !self.disposed? && self.viewport != nil
begin
#ビューポートの可視状態を参照
self.viewport.visible
#エラーになった場合は既にそのビューポートは解放されているので
#出力処理を実行する
rescue RGSSError
data = caller
text = []
text.push(data[1].to_s.scan(/{(\S+)}/)[0][0].to_s)
text.push(data[1].to_s.scan(/:(\S+):/)[0][0].to_s)
text.push(self.to_s.scan(/#<(\S+):/)[0][0].to_s)
p "エラー要因を検出しました"
p text[0] + "番目のセクション - " + $RGSS_SCRIPTS[text[0].to_i][1].to_s + ""
p text[1] + "行目に呼び出されたウィンドウ解放命令の対象である"
p text[2] + "のビューポートが既に解放されています"
if SPR_E_C::DETAIL
p "詳細な処理順"
data.reverse!
data.each do |t|
p t
end
end
end
end
dispose_check
end
end