Unlockable Chapter System

Official Lost Souls

Dead and Buried
Veteran
Joined
May 16, 2015
Messages
62
Reaction score
10
First Language
English
Primarily Uses
Hello fellow RPG makers!

So, for my game, I'd like a script that makes a chapter system like in the image below:

Titlescreenexample.png

Basically where after pressing "Start", they're taken to a chapter select screen where they have to unlock chapters by playing the previous chapter(s) in the story.

It's kind of like the one in Corpse Party, If you have ever watched gameplay of it.

They should all share the same data, so that you can go back and replay chapters.

Loading is like the normal loading script, just select "Continue" and you can continue

I want the characters to retain their inventories, but I'd also like for you to be able to go between multiple parties for some chapters

You can name the save files however you deem fit, but I would try and keep them as short as possible to not overwhelm a computer.

For my game, there are 10 chapters, and each should start with a slightly different map, depending on which dimension they are in.

I'd prefer the script to handle the characters, but if you can do it by eventing that's fine too.

The characters/parties have different inventories, so there needs to be a part in the script that changes inventory depending on the party members/character

I hope that helps in the best way
 
Last edited by a moderator:

MeowFace

Meow
Veteran
Joined
Feb 22, 2015
Messages
1,034
Reaction score
184
First Language
Meowish
Primarily Uses
Information is not enough there. Are you trying to reset all data for every chapter? How about save/load? Should they all share the same data (1 save file)? etc etc.

Don't expect every one plays the same game as you do nor expect the script writer to spend time to "find that game to see what it does",

if you have an example, post a youtube link to it will help.
 

Official Lost Souls

Dead and Buried
Veteran
Joined
May 16, 2015
Messages
62
Reaction score
10
First Language
English
Primarily Uses
@MeowFace  www.youtube.com/watch?v=UbnmlfxnNAs

They should all share the same data, so that you can go back and replay chapters.

Loading is like the normal loading script, just select "Continue" and you can continue

Reset all data? I want the characters to retain their inventories, but I'd also like for you to be able to go between multiple parties for some chapters

I hope that helps in the best way
 
Last edited by a moderator:

MeowFace

Meow
Veteran
Joined
Feb 22, 2015
Messages
1,034
Reaction score
184
First Language
Meowish
Primarily Uses
That video shows nothing compared to what you want. All i see is a direct start and nothing else. Where is the chapter selection? That's not helping at all.

So, when the player select a new chapter, all they get to keep is their inventory? Don't have to keep their levels/exp? etc etc

Save/Load is the same as default?

So, setting that aside, a new save system for each chapter's end is needed. New chapters will "load" from these save files accordingly.

How do you want those Save files to be named?

How many chapters are there? Is description for each chapter needed?

How do you want the chapters to start? All at the same map? Or each starts with their own new map?

Characters(Actors) Management is to be done by script or by eventing? (adding/removing party members)

And not only the questions i asked above.

To get a script writer interested in making a script for you, you need to provide as many informations as possible on your side.

A scripting project that lack tons of information is not fun for script writer.

Edit:

Remember to edit your top post and add all the informations needed there too.
 
Last edited by a moderator:

Official Lost Souls

Dead and Buried
Veteran
Joined
May 16, 2015
Messages
62
Reaction score
10
First Language
English
Primarily Uses
You can name the save files however you deem fit, but I would try and keep them as short as possible to not overwhelm a computer.

For my game, there are 10 chapters, and each should start with a slightly different map, depending on which dimension they are in.

I'd prefer the script to handle the characters, but if you can do it by eventing that's fine too.

The characters/parties have different inventories, so there needs to be a part in the script that changes inventory depending on the party members/character
 

MeowFace

Meow
Veteran
Joined
Feb 22, 2015
Messages
1,034
Reaction score
184
First Language
Meowish
Primarily Uses
The only overwrite method this script use is the Title Scene's New Game Command, the rest are properly aliased.

You can safely put this script below ALL other custom scripts as it only modify the title new game command.

Use this script call at the end of each chapter to enable the next chapter:

chapter_clearedSnapshot:

Script:

http://forums.rpgmakerweb.com/index.php?/topic/45356-chapter-select/


Final Edit:

Everything is properly aliased and cleaned up.

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

You can safely put this script below all other scripts without having to worry much about conflicts.
 
Last edited by a moderator:

Official Lost Souls

Dead and Buried
Veteran
Joined
May 16, 2015
Messages
62
Reaction score
10
First Language
English
Primarily Uses
@MeowFace Thank you so much!

I owe you early access to my game
 

MeowFace

Meow
Veteran
Joined
Feb 22, 2015
Messages
1,034
Reaction score
184
First Language
Meowish
Primarily Uses
You're welcome! And congratulations on your progress! ;)
 

Official Lost Souls

Dead and Buried
Veteran
Joined
May 16, 2015
Messages
62
Reaction score
10
First Language
English
Primarily Uses
UPDATE:

My character is invisible at game startup.

How can I fix this?
 

MeowFace

Meow
Veteran
Joined
Feb 22, 2015
Messages
1,034
Reaction score
184
First Language
Meowish
Primarily Uses
That has nothing to do with the script. You have set your character to invisible in the database editor.
 
Joined
Sep 9, 2015
Messages
297
Reaction score
29
First Language
English
Primarily Uses
The only overwrite method this script use is the Title Scene's New Game Command, the rest are properly aliased.

You can safely put this script below ALL other custom scripts as it only modify the title new game command.

Use this script call at the end of each chapter to enable the next chapter:

chapter_clearedSnapshot:

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 Edit:

Everything is properly aliased and cleaned up.

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

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



Saaay whaaaat!? O_O I'mma have to use this Meow! This is some nice shiznitz over here! Maaaan, u always come up with some neat stuff G! Imma title one of these chapter dedicating to u Meow ;D
 
Last edited by a moderator:

MeowFace

Meow
Veteran
Joined
Feb 22, 2015
Messages
1,034
Reaction score
184
First Language
Meowish
Primarily Uses
Saaay whaaaat!? O_O I'mma have to use this Meow! This is some nice shiznitz over here! Maaaan, u always come up with some neat stuff G! Imma title one of these chapter dedicating to u Meow ;D
Thanks, glad you guys find it useful. ;)
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??
Yay, now back in action Happy Christmas time, coming back!






Back in action to develop the indie game that has been long overdue... Final Fallacy. A game that keeps on giving! The development never ends as the developer thinks to be the smart cookie by coming back and beginning by saying... "Oh bother, this indie game has been long overdue..." How could one resist such? No-one c
So I was playing with filters and this looked interesting...

Versus the normal look...

Kind of gives a very different feel. :LZSexcite:

Forum statistics

Threads
105,855
Messages
1,017,007
Members
137,563
Latest member
MinyakaAeon
Top