ページ 1 / 1
【解決済】メニュー時マップ移行せずに即コモンイベント
Posted: 2017年5月06日(土) 20:03
by 日向ヒムカイ
はじめまして。
初リクエストです。そして初投稿です。
Aceですが、デフォだとメニュー画面でコモン付のアイテム・スキルを使うと
マップに移行してコモンイベントが発動する仕様を、
マップ移行せずにメニューのままで即コモンイベントが実行されるようになる
スクリプトをリクエストします。
一応そういう感じのスクリプトが公開されてないかサイト巡りをして
へぷたなすくろーるさんの『マップ移行しないコモンイベント』というスクリプトを
発見して試してみたのですが、これだと使用後にメニューでコモンが実行された後、
マップに戻るとそこでデフォのコモン実行もされて二重処理になってしまうという
致命的な不都合があったので使用できませんでした。
なので新規としてそういうスクリプトのリクエスト、
もしくは上記のへぷたなすくろーるさんのスクリプトの修正を
お願い致したく、この場を借りて投稿しました。
お手数かけますが、よろしくお願いします。
Re: メニュー時マップ移行せずに即コモンイベント
Posted: 2017年5月06日(土) 20:57
by faida
昔の遺産が残ってたので。ほぼ動作保証しませんが。
コード: 全て選択
=begin
◆作者:faida @faida3983
=end
$fai_rgss3 = {} if !$fai_rgss3
$fai_rgss3[:scene_event] = 1.0
#==============================================================================
# □ Spriteset_Common
#==============================================================================
class Spriteset_Common
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
create_viewports
create_weather
create_pictures
create_timer
update
end
#--------------------------------------------------------------------------
# ○ ビューポートの作成
#--------------------------------------------------------------------------
def create_viewports
@viewport1 = Viewport.new
@viewport2 = Viewport.new
@viewport3 = Viewport.new
@viewport1.z = 201
@viewport2.z = 250
@viewport3.z = 400
end
#--------------------------------------------------------------------------
# ○ 天候の作成
#--------------------------------------------------------------------------
def create_weather
@weather = Spriteset_Weather.new(@viewport2)
end
#--------------------------------------------------------------------------
# ○ ピクチャスプライトの作成
#--------------------------------------------------------------------------
def create_pictures
@picture_sprites = []
end
#--------------------------------------------------------------------------
# ○ タイマースプライトの作成
#--------------------------------------------------------------------------
def create_timer
@timer_sprite = Sprite_Timer.new(@viewport2)
end
#--------------------------------------------------------------------------
# ○ 解放
#--------------------------------------------------------------------------
def dispose
dispose_weather
dispose_pictures
dispose_timer
dispose_viewports
end
#--------------------------------------------------------------------------
# ○ 天候の解放
#--------------------------------------------------------------------------
def dispose_weather
@weather.dispose
end
#--------------------------------------------------------------------------
# ○ ピクチャスプライトの解放
#--------------------------------------------------------------------------
def dispose_pictures
@picture_sprites.compact.each {|sprite| sprite.dispose }
end
#--------------------------------------------------------------------------
# ○ タイマースプライトの解放
#--------------------------------------------------------------------------
def dispose_timer
@timer_sprite.dispose
end
#--------------------------------------------------------------------------
# ○ ビューポートの解放
#--------------------------------------------------------------------------
def dispose_viewports
@viewport1.dispose
@viewport2.dispose
@viewport3.dispose
end
#--------------------------------------------------------------------------
# ○ フレーム更新
#--------------------------------------------------------------------------
def update
return if !$game_map
$game_map.screen.update
update_weather
update_pictures
update_timer
update_viewports
end
#--------------------------------------------------------------------------
# ○ キャラクタースプライトの更新
#--------------------------------------------------------------------------
def update_characters
refresh_characters if @map_id != $game_map.map_id
@character_sprites.each {|sprite| sprite.update }
end
#--------------------------------------------------------------------------
# ○ 飛行船の影スプライトの更新
#--------------------------------------------------------------------------
def update_shadow
airship = $game_map.airship
@shadow_sprite.x = airship.screen_x
@shadow_sprite.y = airship.screen_y + airship.altitude
@shadow_sprite.opacity = airship.altitude * 8
@shadow_sprite.update
end
#--------------------------------------------------------------------------
# ○ 天候の更新
#--------------------------------------------------------------------------
def update_weather
@weather.type = $game_map.screen.weather_type
@weather.power = $game_map.screen.weather_power
@weather.ox = $game_map.display_x * 32
@weather.oy = $game_map.display_y * 32
@weather.update
end
#--------------------------------------------------------------------------
# ○ ピクチャスプライトの更新
#--------------------------------------------------------------------------
def update_pictures
$game_map.screen.pictures.each do |pic|
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport2, pic)
@picture_sprites[pic.number].update
end
end
#--------------------------------------------------------------------------
# ○ タイマースプライトの更新
#--------------------------------------------------------------------------
def update_timer
@timer_sprite.update
end
#--------------------------------------------------------------------------
# ○ ビューポートの更新
#--------------------------------------------------------------------------
def update_viewports
@viewport1.tone.set($game_map.screen.tone)
@viewport1.ox = $game_map.screen.shake
@viewport2.color.set($game_map.screen.flash_color)
@viewport3.color.set(0, 0, 0, 255 - $game_map.screen.brightness)
@viewport1.update
@viewport2.update
@viewport3.update
end
end
#==============================================================================
# ■ Scene_Base
#==============================================================================
class Scene_Base
#--------------------------------------------------------------------------
# ★ 開始処理
#--------------------------------------------------------------------------
alias start_ce start
def start
start_ce
$game_message.visible = false
create_common_windows
@sc_interpreter = Game_Interpreter.new
@sc_spriteset = Spriteset_Common.new
end
#--------------------------------------------------------------------------
# ★ フレーム更新
#--------------------------------------------------------------------------
alias update_ce update
def update
return if @sc_interpreter.setup_reserved_common_event
@sc_interpreter.update
@sc_spriteset.update
update_ce
end
#--------------------------------------------------------------------------
# ○ 全ウィンドウの作成
#--------------------------------------------------------------------------
def create_common_windows
create_message_window
create_scroll_text_window
end
#--------------------------------------------------------------------------
# ○ メッセージウィンドウの作成
#--------------------------------------------------------------------------
def create_message_window
@message_window = Window_Message.new
@message_window.z = 200
end
#--------------------------------------------------------------------------
# ○ スクロール文章ウィンドウの作成
#--------------------------------------------------------------------------
def create_scroll_text_window
@scroll_text_window = Window_ScrollText.new
@scroll_text_window.z = 200
end
end
#==============================================================================
# ■ Scene_ItemBase
#==============================================================================
class Scene_ItemBase < Scene_MenuBase
#--------------------------------------------------------------------------
# ● コモンイベント予約判定
# イベントの呼び出しが予約されているならマップ画面へ遷移する。
#--------------------------------------------------------------------------
def check_common_event
#~ SceneManager.goto(Scene_Map) if $game_temp.common_event_reserved?
end
end
Re: メニュー時マップ移行せずに即コモンイベント
Posted: 2017年5月06日(土) 21:31
by 日向ヒムカイ
ありがとうございます。
導入してみたところ、うまく機能できました。
まさかこんな早く解決してもらえるとは・・・ただひたすら感謝です。
Re: メニュー時マップ移行せずに即コモンイベント
Posted: 2017年5月14日(日) 08:55
by 日向ヒムカイ
↑で提供頂いたスクリプトなのですが、
何やらフェードイン・アウトの動作に誤作動が起きているみたいで、
演出がほとんどなく即黒画面に切り替わってしまうのと、
デフォでは黒画面でもメッセージは表示されていたのが、
このスクリプトを入れると全く表示されなくなってしまうっぽいです。
直したいところなのですが、自分ではどうすればいいのか
さっぱり分からず・・・お手数かけますが、アドバイス頂けると嬉しいです。。
Re: 【解決済】メニュー時マップ移行せずに即コモンイベント
Posted: 2017年5月14日(日) 19:16
by 奏ねこま
へぷたなすくろーるさんの「マップ移行しないコモンイベント」を改変する方法を。
「common_event = $game_temp.reserved_common_event」という記述の下に、
「$game_temp.clear_common_event」
を追加してください。
Re: 【解決済】メニュー時マップ移行せずに即コモンイベント
Posted: 2017年5月14日(日) 20:43
by 日向ヒムカイ
早速試させて頂きましたところ、
きちんと不都合も解消されてて、使えるようになりました。
修正頂けて本当にありがとうございます。