RPGXP 스크립트

Switchless Common Events

by posted Oct 01, 2013
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
=begin

 Switchless Common Events v1.1
 by PK8
 Created: 5/6/2012
 Modified: 5/27/2012
 ──────────────────────────────────────────────────────────────────────────────
 ■ Author's Notes
   This was a fairly quick script I wrote. It was an idea I had in my head
   for a little while.
 ──────────────────────────────────────────────────────────────────────────────
 ■ Introduction
   Remember how in RPG Maker 2000 and 2003, you didn't need to rely on switches
   in order for your common events to run on parallel process and autorun? Well,
   it's back. This script lets you set which common events are going to run in
   either parallel processing or automatically, without the use of conditional
   switches.
 ──────────────────────────────────────────────────────────────────────────────
 ■ Features
   o Set which common events are going to use autorun or parallel process
     triggering without a conditional switch.
 ──────────────────────────────────────────────────────────────────────────────
 ■ Methods Aliased
   Scene_Title.command_new_game
   Interpreter.setup_starting_event
   Game_CommonEvent.refresh
 ──────────────────────────────────────────────────────────────────────────────
 ■ Changelog
   v1   (05/06/2012): Initial Release
   v1.1 (05/27/2012): Removed Custom Conditionals feature because it was
                      unnecessary and could easily be accomplished through
                      conditional branches. I also reduced a lot of code.
   
=end

#==============================================================================
# ** Configuration
#==============================================================================

module PK8
  class Switchless_CommonEvents
    #--------------------------------------------------------------------------
    # * Do not modify
    #--------------------------------------------------------------------------
    Autorun, Parallel = [], []
    
    #--------------------------------------------------------------------------
    # * Decide which common events would autorun/process without a switch.
    # Autorun/Parallel = [Common Event IDs]
    #--------------------------------------------------------------------------
    #Autorun  = [10, 9]
    #Parallel = [8, 7]
  end
end

#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
#  This class performs title screen processing.
#==============================================================================

class Scene_Title
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  unless method_defined?(:pk8_sce_command_new_game)
    alias_method(:pk8_sce_command_new_game, :command_new_game)
  end
  #--------------------------------------------------------------------------
  # * Command: New Game
  #--------------------------------------------------------------------------
  def command_new_game
    pk8_sce_command_new_game
    PK8::Switchless_CommonEvents::Autorun.each { | id |
      ceid = $data_common_events[id]; ceid.trigger, ceid.switch_id = 0, 0 }
    PK8::Switchless_CommonEvents::Parallel.each { | id |
      ceid = $data_common_events[id]; ceid.trigger, ceid.switch_id = 0, 0 }
  end
end

#==============================================================================
# ** Interpreter
#------------------------------------------------------------------------------
#  This interpreter runs event commands. This class is used within the
#  Game_System class and the Game_Event class.
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  unless method_defined?(:pk8_sce_setup_starting_event)
    alias_method(:pk8_sce_setup_starting_event, :setup_starting_event)
  end
  #--------------------------------------------------------------------------
  # * Starting Event Setup
  #--------------------------------------------------------------------------
  def setup_starting_event
    pk8_sce_setup_starting_event
    $data_common_events.compact.each { | ce | setup(ce.list, 0) if (
      PK8::Switchless_CommonEvents::Autorun.include?(ce.id)) }
  end
end

#==============================================================================
# ** Game_CommonEvent
#------------------------------------------------------------------------------
#  This class handles common events. It includes execution of parallel process
#  event. This class is used within the Game_Map class ($game_map).
#==============================================================================

class Game_CommonEvent
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  unless method_defined?(:pk8_sce_refresh)
    alias_method(:pk8_sce_refresh, :refresh)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    pk8_sce_refresh
    if PK8::Switchless_CommonEvents::Parallel.include?(@common_event_id)
      @interpreter = Interpreter.new if @interpreter == nil
    end
  end
end