Quantcast
Channel: RGSS3 Scripts (RMVX Ace) Latest Topics
Viewing all articles
Browse latest Browse all 416

Chapter Select

$
0
0

Made for a request here.

 

Features:

[1] Game starting by selecting a Chapter.

[2] Unlock-able new chapters.

[3] Each Chapter able to start with its own map & starting characters.

[4] Inheritable save files for each chapter.

[5] Can set up to 10 Chapters max.

[6] Change-able Background/Text

[7] Able to set whether or not to reset character's level

 

Snap-Shot:

chapterselect.png

 

How to Use:

[1] Paste script below Material and above Main

[2] Set up data accordingly in SETTINGS AREA in the script.

[3] Use this script call at the end of each chapter to enable next chapter.

chapter_cleared

Compatibility:

This script modifies the Title Scene's New Game Command, but the rest are properly aliased.

You can safely put this script below other custom scripts without worrying much about conflicts.

 

Terms of Use:

Free for both Commercial and Non-Commercial.

 

Script:

#==============================================================================# ■ Meow Face Chapter Selection#------------------------------------------------------------------------------# Select Chapter to Start Game#==============================================================================# How to Use:# [1] Put this script below Material and above Main# [2] Set up the required data in SETTINGS AREA below# [3] At the end of each chapter, use this script call to save file#      chapter_cleared#==============================================================================module MF_CHAPTER#==============================================================================# SETTINGS AREA#==============================================================================#------------------------------------------------------------------------------# How many chapters are there (1 to 10 MAX)#------------------------------------------------------------------------------  MAXCHAPTER = 10#------------------------------------------------------------------------------# Background picture (in Graphics\Titles1 folder)#------------------------------------------------------------------------------  BACKGROUND = "Fountain"#------------------------------------------------------------------------------# Title#------------------------------------------------------------------------------  TITLE = "SELECT CHAPTER"#------------------------------------------------------------------------------# Chapter's Name# Starting from top down, Chapter 1, Chapter 2, etc etc#------------------------------------------------------------------------------  NAME = [  "Chapter One",  "Chapter Two",  "Chapter Three",  "Chapter Four",  "Chapter Five",  "Chapter Six",  "Chapter Seven",  "Chapter Eight",  "Chapter Nine",  "Chapter Ten",  ] #Do Not Remove#------------------------------------------------------------------------------# Chapter's Description# Starting from top down, Chapter 1, Chapter 2, etc etc#------------------------------------------------------------------------------  DESC = [  "Chapter 1 Descriptions",  "Chapter 2 Descriptions",  "Chapter 3 Descriptions",  "Chapter 4 Descriptions",  "Chapter 5 Descriptions",  "Chapter 6 Descriptions",  "Chapter 7 Descriptions",  "Chapter 8 Descriptions",  "Chapter 9 Descriptions",  "Chapter 10 Descriptions",  ] #Do Not Remove#------------------------------------------------------------------------------# Starting Map for each Chapter# [MapID, StartX, StartY]# Starting top down from Chapter 1 to Chapter 10#------------------------------------------------------------------------------  MAP = [  [1,1,1],  [2,1,7],  [3,12,16],  [4,1,1],  [5,1,1],  [6,1,1],  [7,1,1],  [8,1,1],  [9,1,1],  [10,1,1],  ] #Do Not Remove#------------------------------------------------------------------------------# Starting Actors for each Chapter# Starting top down from Chapter 1 to Chapter 10#------------------------------------------------------------------------------  ACTORS = [  [1,2],  [1,2,3,4],  [1,2,3],  [2,3,4,5],  [1,2,3,4],  [1,2,3,4],  [1,2,3,4],  [1,2,3,4],  [1,2,3,4],  [1,2,3,4],  ] #Do Not Remove#------------------------------------------------------------------------------# Reset Actor's Level? true/false# Automatic set to true if previous chapter load file = nil#------------------------------------------------------------------------------  RESET = false#------------------------------------------------------------------------------# Data Loading for each Chapter# This loads the data of the previous chapters during chapter selection# So set up the file for each chapter accordingly# Starting top down from Chapter 1 to Chapter 10# nil = No load file#------------------------------------------------------------------------------  LOAD_FILE = [  nil,  "Chapter1_Cleared.rvdata2",  "Chapter2_Cleared.rvdata2",  "Chapter3_Cleared.rvdata2",  "Chapter4_Cleared.rvdata2",  "Chapter5_Cleared.rvdata2",  "Chapter6_Cleared.rvdata2",  "Chapter7_Cleared.rvdata2",  "Chapter8_Cleared.rvdata2",  "Chapter9_Cleared.rvdata2",  ] #Do Not Remove#------------------------------------------------------------------------------# Save Data's Name#------------------------------------------------------------------------------  SAVE_FILE = [  "Chapter1_Cleared.rvdata2",  "Chapter2_Cleared.rvdata2",  "Chapter3_Cleared.rvdata2",  "Chapter4_Cleared.rvdata2",  "Chapter5_Cleared.rvdata2",  "Chapter6_Cleared.rvdata2",  "Chapter7_Cleared.rvdata2",  "Chapter8_Cleared.rvdata2",  "Chapter9_Cleared.rvdata2",  "Chapter10_Cleared.rvdata2",  ] #Do Not Remove#==============================================================================# END OF SETTINGS AREA# !!EDIT BEYOND THIS LINE AT YOUR OWN RISK!!#==============================================================================endmodule DataManager  class <<self      alias meow_god create_game_objects    alias meow_load extract_save_contents    alias meow_save make_save_contents  end  def self.make_save_contents    meowdata = meow_save    meowdata[:chapter] = $game_chapter    meowdata  end  def self.extract_save_contents(contents)    meow_load(contents)    $game_chapter = contents[:chapter]  end  def self.make_save_party    contents = {}    contents[:actors]        = $game_actors    contents[:party]         = $game_party    contents[:player]        = $game_player    contents  end  def self.extract_party(contents)    $game_actors        =contents[:actors]    $game_party         = contents[:party]    $game_player        = contents[:player]  end  def self.save_chapter(chapter)    filename = MF_CHAPTER::SAVE_FILE[chapter]    File.open(filename, "wb") do |file|      $game_system.on_before_save      Marshal.dump(make_save_party, file)    end    return true  end  def self.load_chapter(chapter)    filename = MF_CHAPTER::LOAD_FILE[chapter]    File.open(filename, "rb") do |file|      extract_party(Marshal.load(file))    end    return true  end  def self.create_game_objects    meow_god    $game_chapter = Game_Chapter.new  end  def self.setup_chapter    chapter = $game_chapter.id    load_chapter(chapter) if MF_CHAPTER::LOAD_FILE[chapter] != nil    $game_party.setup_members(chapter)    $game_map.setup(MF_CHAPTER::MAP[chapter][0])    $game_player.moveto(MF_CHAPTER::MAP[chapter][1], MF_CHAPTER::MAP[chapter][2])    $game_player.refresh    Graphics.frame_count = 0  endendclass Game_Party < Game_Unit  def setup_members(n)    if MF_CHAPTER::LOAD_FILE[$game_chapter.id] != nil      @actors.each do |m|        $game_actors[m].setup(m) if MF_CHAPTER::RESET == true        $game_actors[m].hp = $game_actors[m].mhp        $game_actors[m].mp = $game_actors[m].mmp      end    end    @actors = []    @meowparty = MF_CHAPTER::ACTORS[n]      @meowparty.each do |meow|        $game_party.add_actor(meow)      end  endendclass Game_Chapter  attr_accessor :id  def initialize    @id = 0  end  def set(n)    @id = n  endendclass Game_Interpreter  def chapter_cleared    DataManager.save_chapter($game_chapter.id)  endendclass Window_Chapter < Window_Base  def initialize    super(0, 0, Graphics.width, Graphics.height)    self.opacity = 0    draw_horz_line(Graphics.height - 100)    draw_horz_line(Graphics.height - 36)    draw_horz_line(68); draw_horz_line(69)    draw_horz_line(8); draw_horz_line(7)    draw_title  end  def window_width    Graphics.width  end  def window_height    Graphics.height  end  def draw_horz_line(y)    line_y = y + line_height / 2 - 1    contents.fill_rect(0, line_y, contents_width, 2, line_color)  end  def line_color    color = normal_color    color.alpha = 48    color  end  def draw_title    contents.font.size = 64    contents.font.bold = true    draw_text((Graphics.width/2) - (320/2), 18, 320, 68, MF_CHAPTER::TITLE)    contents.font.size = Font.default_size    contents.font.bold = false  endendclass Window_ChapterSelect < Window_Command  def initialize    super(0,0)    update_placement    self.opacity = 0    create_help_window  end  def window_width    return 180  end  def window_height    fitting_height(6)  end  def update_placement    self.x = (Graphics.width - width) / 2    self.y = ((Graphics.height - height) / 2) - 12  end  def create_help_window    @help_window = Window_Help.new    @help_window.y = Graphics.height - @help_window.height + 4    @help_window.opacity = 0  end  def make_command_list    add_command(MF_CHAPTER::NAME[0], :ch1)    add_command(MF_CHAPTER::NAME[1], :ch2, File.exist?(MF_CHAPTER::SAVE_FILE[0]))if MF_CHAPTER::MAXCHAPTER >= 2    add_command(MF_CHAPTER::NAME[2], :ch3, File.exist?(MF_CHAPTER::SAVE_FILE[1])) if MF_CHAPTER::MAXCHAPTER >= 3    add_command(MF_CHAPTER::NAME[3], :ch4, File.exist?(MF_CHAPTER::SAVE_FILE[2])) if MF_CHAPTER::MAXCHAPTER >= 4    add_command(MF_CHAPTER::NAME[4], :ch5, File.exist?(MF_CHAPTER::SAVE_FILE[3])) if MF_CHAPTER::MAXCHAPTER >= 5    add_command(MF_CHAPTER::NAME[5], :ch6, File.exist?(MF_CHAPTER::SAVE_FILE[4])) if MF_CHAPTER::MAXCHAPTER >= 6    add_command(MF_CHAPTER::NAME[6], :ch7, File.exist?(MF_CHAPTER::SAVE_FILE[5])) if MF_CHAPTER::MAXCHAPTER >= 7    add_command(MF_CHAPTER::NAME[7], :ch8, File.exist?(MF_CHAPTER::SAVE_FILE[6])) if MF_CHAPTER::MAXCHAPTER >= 8    add_command(MF_CHAPTER::NAME[8], :ch9, File.exist?(MF_CHAPTER::SAVE_FILE[7])) if MF_CHAPTER::MAXCHAPTER >= 9    add_command(MF_CHAPTER::NAME[9], :ch10, File.exist?(MF_CHAPTER::SAVE_FILE[8])) if MF_CHAPTER::MAXCHAPTER >= 10  end  def process_cursor_move    super    if @index <= 1      @help_window.set_text(MF_CHAPTER::DESC[@index])    else      if File.exist?(MF_CHAPTER::SAVE_FILE[@index-1])        text = MF_CHAPTER::DESC[@index]      else        text = "???"      end      @help_window.set_text(text)    end  endendclass Scene_Title < Scene_Base  def command_new_game    SceneManager.call(Scene_Chapter)  endendclass Scene_Chapter < Scene_Base  def start    super    create_background2    create_back_window    create_command_window  end  def create_background2    @spritech = Sprite.new    @spritech.bitmap = Cache.title1(MF_CHAPTER::BACKGROUND)    @spritech.tone.set(0, 0, 0, 180)  end  def terminate    super    @spritech.bitmap.dispose if @spritech    @spritech.dispose if @spritech  end  def create_back_window    @back_window = Window_Chapter.new  end  def create_command_window    @command_window = Window_ChapterSelect.new    @command_window.set_handler(:ch1, method(:chapter))    @command_window.set_handler(:ch2, method(:chapter))    @command_window.set_handler(:ch3, method(:chapter))    @command_window.set_handler(:ch4, method(:chapter))    @command_window.set_handler(:ch5, method(:chapter))    @command_window.set_handler(:ch6, method(:chapter))    @command_window.set_handler(:ch7, method(:chapter))    @command_window.set_handler(:ch8, method(:chapter))    @command_window.set_handler(:ch9, method(:chapter))    @command_window.set_handler(:ch10, method(:chapter))    @command_window.set_handler(:cancel, method(:return_scene))  end  def chapter    DataManager.create_game_objects    case @command_window.current_symbol    when :ch1; $game_chapter.set(0)    when :ch2; $game_chapter.set(1)    when :ch3; $game_chapter.set(2)    when :ch4; $game_chapter.set(3)    when :ch5; $game_chapter.set(4)    when :ch6; $game_chapter.set(5)    when :ch7; $game_chapter.set(6)    when :ch8; $game_chapter.set(7)    when :ch9; $game_chapter.set(8)    when :ch10; $game_chapter.set(9)    end    DataManager.setup_chapter    fadeout_all    $game_map.autoplay    SceneManager.goto(Scene_Map)  endend

 

Final Update:

All cleaned up and aliased

The only overwrite method is the Title Scene's New Game Command.

You can now safely put this script below all other scripts without having to worry much about conflicts.


Viewing all articles
Browse latest Browse all 416

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>