Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

CMS Script Request

This is a request for a new script

Script Title:1 Person CSM w/Quest Option
RMXP
Detailed Description:
I am using this script and I need a menu system that can incorporate it into it's options. You could do this simply by adding a Quest Log option to the original menu, or, if you'd like to make me REALLY happy you could make me a CMS for a game where your party only includes one person.
 
Oh, yes yes yes, how do I make the "Q" key bring the quest menu up?

I really don't like the one you showed me, no offense, I know you made it on request.

I will probably use this CMS...maybe I can get someone to edit it a little bit for me...

Anyways, Q button...bring up quest dialogue, how do I do it?
 
k so Q is mapped to (Input::L)
so we want to make another menu call in scene map that calls Scene_Quest <- That should be your scripts quest scene right?
First of we notice that The Menu Call uses two variables in game temp Menu_calling and Menu_beeping
so we go to Game Temp and add these lines:
under Public Variables:
attr_accessor :quest_calling
attr_accessor :quest_beep
and under the initialize (def initialize) method
@quest_calling = false
@quest_beep = false

Now we go to Scene_Map to add lines for a if Q is pressed
In the update method under line 131 add this:
Code:
    # If Q button was pressed

    if Input.trigger?(Input::L)

      # If event is running, or menu is not forbidden

      unless $game_system.map_interpreter.running? or

             $game_system.menu_disabled

        # Set menu calling flag or beep flag

        $game_temp.quest_calling = true

        $game_temp.quest_beep = true

      end

    end

 
also note that here I did not edit the if menu disabled line,
so if you disable the menu by event command you will disable quests too

Next under the player not moving section (under line 151 over the end on the next line) add this
elsif $game_temp.quest_calling
call_quest

And finally make you Quest Calling method under the Menu call one (under line 217)
Code:
 

#---------------------------------------------------------------------------------------------------------------------------------------------------------

#-------------------------------------------------------------------Quest Call------------------------------------------------------------------------

#---------------------------------------------------------------------------------------------------------------------------------------------------------

def call_quest

    # Clear quest call flag

    $game_temp.quest_calling = false

    # If quest beep flag is set

    if $game_temp.quest_beep

      # Play decision SE

      $game_system.se_play($data_system.decision_se) 

#in those parenthesis you can add any Sound Effect just swap out decision for another name

      # Clear quest beep flag

      $game_temp.quest_beep = false

    end

    # Straighten player position

    $game_player.straighten

    # Switch to quest screen

    $scene = Scene_Quest.new

  end

 
Note If you have SDK installed (which rewrites Scene_Map) then copy your edited Scene_Map and place it under the SDK

Hope that helps :D
Good luck on your project
 
Script 'Scene_Map line 165:NameError occured.

undefined local variable or method 'call_quest' for #<Scene_Map:0x306a3b8>

I am using this quest script
Code:
#===================================

#  Leon's Mission Script v2.0

#----------------------------------------------------------------------

#  2006-09-22

#===================================

=begin

Description:

I did a drastic overhaul on this Mission/Quest script to make it much better and user friendly.

 

Features:

There is 2 new features:  

1.  If the user doesn't know of the mission, it doesn't appear in the list, nor does a slot for it.

2.  Completed missions are in green.

3.  Number of missions.  (X/Y)  X is completed missions, Y can be either known missions,

     or your game's total missions.  Set Mission_Setup to 'true' if you want known missions,

     false for total.

 

Instructions:

Put it above main.

 

The instructions have changed alot more than the features.  Just go through

the short list below, and you'll know.  Just remember, go in order, and if you have 10

different missions in 1 spot, you must have the same number in each other segment

of the module, with the exception of the lines of text.  (Yes, i made that one all the easier.)

 

Changing the status of the missions is different than before as well.

 

$game_party.mission[mission_id] = x

 

Mission ID:  The ID of the mission, as defined in the module.  In this example,

"Lost Cat" would be 0

 

X:

1 = they do not know the mission exists.  This is optional, unless they forget a mission.

2 = they know the mission, but it is incomplete

3 = the mission is complete.

 

BY DEFAULT, ALL MISSIONS ARE UNKNOWN unless specified in the script before the game begins.

 

Do NOT post my work in any other forums without my permission, and NEVER take credit

for my work.

=end

 

#==================================

#  ** Mission_Menu

#==================================

module Mission_Menu

  #--------------------------------------------------------------------

  #  * Mission Name-  Write the mission number, and the name you want to appear.

  #  ~ mission_id => "mission name"

  #--------------------------------------------------------------------

  Mission_Name = {

  0 => "Lost Cat",

  1 => "Old Blade",

  2 => "Seize Sentries",

  3 => "Hidden Heirloom",

  4 => "A Gooey Mess.",

  5 => "Hidden Horror"

  }

  #--------------------------------------------------------------------

  #   * Mission_Sprite.  holds data on the name of the sprite, it's hue, name, locale, and

  #   * reward all in one.

  #   ~ mission_id => ["sprite name", hue, name, location, Reward]

  #--------------------------------------------------------------------

  Mission_Sprite = {

  0 => ["113-Civilian13", 330, "Amy", "Logres", "Potion x 3"],

  1 => ["005-Fighter05", 0, "L'eric", "Logres", "Rusty Sword"],

  2 => ["002-Fighter02", 0, "Wallace", "Resistance H.Q.", "500 Gold"],

  3 => ["122-Civilian22", 30, "Old Woman", "Cyris Home", "Sound Effect"],

  4 => ["011-Lancer03", 0, "Soldier", "Cyris Barracks", "Kite Shield"],

  5 => ["006-Fighter06", 0, "Lady", "Cyris", "Lion's Head Earring"]

  }

  #--------------------------------------------------------------------

  #   * Defines the mission.  Remember, if it is too long for 1 line, you can drop it

  #   * down to line 2.

  #   ~ mission_id => "Line One"

  #--------------------------------------------------------------------

  Mission_L1 = {

  0 => "Amy has lost her cat and needs help",

  1 => "Somebody said they saw L'eric's blade",

  2 => "Head north toward enemy territory, and",

  3 => "Seek out the caverns south of Cyris.  There",

  4 => "A monster to the west of the town every",

  5 => "Somewhere in the Belin Caverns, there is a"

  }

  #--------------------------------------------------------------------

  #   * Same as the above one.

  #   ~ mission_id => "Line Two"

  #--------------------------------------------------------------------

  Mission_L2 = {

  0 => "finding him.  He likes to play in the",

  1 => "just south of here by the river.  He ",

  2 => "capture two sentry towers.  Be careful ",

  3 => "you will find a blue chest.  Retrieve its",

  4 => "now and then terrorizes the caravans.",

  5 => "creature holding an item the lady in"

  }

  #--------------------------------------------------------------------

  #   * Same as the above one.

  #   ~ mission_id => "Line Three"

  #--------------------------------------------------------------------

  Mission_L3 = {

  0 => " North East side of Tiberian Plains.",

  1 => "wants Will to confirm the story, and",

  2 => "and don't get caught.  Return to Wallace",

  3 => "contents and bring it back to the old",

  4 => "A soldier in the barracks has asked you",

  5 => "Cyris is looking for.  She said the monster"

  }

  #--------------------------------------------------------------------

  #   * Same as the above one.

  #   ~ mission_id => "Line Four"

  #--------------------------------------------------------------------

  Mission_L4 = {

  1 => "if it is true, bring back the sword.",

  2 => "once this job is complete.",

  3 => "woman.",

  4 => "to exterminate it.",

  5 => "would be hiding."

  }

  #--------------------------------------------------------------------

  #   * Same as the above one.

  #   ~ mission_id => "Line Five"

  #--------------------------------------------------------------------

  Mission_L5 = {

  }

  #--------------------------------------------------------------------

  #   * Same as the above one.

  #   ~ mission_id => "Line Six"

  #--------------------------------------------------------------------

  Mission_L6 = {

  }

  #--------------------------------------------------------------------

  #   * Same as the above one.

  #   ~ mission_id => "Line Seven"

  #--------------------------------------------------------------------

  Mission_L7 = {

  }

  #--------------------------------------------------------------------

  #   * Same as the above one.

  #   ~ mission_id => "Line Eight"

  #--------------------------------------------------------------------

  Mission_L8 = {

  }

  #--------------------------------------------------------------------

  #   * Mission Set-up

  #--------------------------------------------------------------------

  Mission_Setup = true

end

 

#----------------------------------------------------------------------

#  * Game_Party

#----------------------------------------------------------------------

class Game_Party

  #--------------------------------------------------------------------

  #  * Attributes

  #--------------------------------------------------------------------

  attr_accessor    :mission

  #--------------------------------------------------------------------

  #  * Alias Listings

  #--------------------------------------------------------------------

  alias leon_gp_mission_initialize initialize

  #--------------------------------------------------------------------

  #  * Object initialization

  #--------------------------------------------------------------------

  #  Leon_Edit  add an array for each mission in @mission.

  #  [mission_id, 1]

  #--------------------------------------------------------------------

  def initialize

    leon_gp_mission_initialize

    @mission = {

    0 => 1,

    1 => 2,

    2 => 3,

    3 => 2

    }

  end

end

#--------------------------------------------------------------------

#  * Ends Game_Party

#--------------------------------------------------------------------

 

#----------------------------------------------------------------------

#  * Window_Missionhelp

#----------------------------------------------------------------------

class Window_Missionhelp < Window_Base

  #--------------------------------------------------------------------

  #  * Object Initialization

  #--------------------------------------------------------------------

  def initialize

    super(0, 0, 400, 60)

    self.contents = Bitmap.new(width - 32, height - 32)

  end

  #--------------------------------------------------------------------

  #  * Update

  #--------------------------------------------------------------------

  def update(help_text)

    self.contents.clear

    self.contents.draw_text(0, 0, 440, 32, help_text)

  end

  

end

#----------------------------------------------------------------------

#  * End Window_Missionhelp

#----------------------------------------------------------------------

 

#----------------------------------------------------------------------

#  Window_MissionNum

#----------------------------------------------------------------------

class Window_MissionNum < Window_Base

  #--------------------------------------------------------------------

  #  * Object Initialization

  #--------------------------------------------------------------------

  def initialize

    super(400, 0, 240, 64)

    self.contents = Bitmap.new(width - 32, height - 32)

    refresh

  end

  

  #--------------------------------------------------------------------

  #  * Refresh

  #--------------------------------------------------------------------

  def refresh

    self.contents.clear

    mis = Mission_Menu

    self.contents.font.color = system_color

    self.contents.draw_text(0, 0, 120, 32, "Missions:")

    self.contents.font.color = normal_color

    @mission_comp = []

    @mission_know = []

    #Calls Mission number of completed missions

    for i in 0...$game_party.mission.keys.size

      if $game_party.mission[$game_party.mission.keys[i]] == 3

        @mission_comp.push(i)

      end

    end

    #Calls Mission number of missions

    for j in 0...$game_party.mission.keys.size

      if $game_party.mission[$game_party.mission.keys[j]] > 1

        @mission_know.push(j)

      end

    end

    #if Mission_Setup is false...

    if mis::Mission_Setup == false

      if @mission_comp.size == $game_party.mission.size

        self.contents.font.color = Color.new(40, 250, 40, 255)

        self.contents.draw_text(0, 0, 208, 32, @mission_comp.size.to_s +

        "/" + $game_party.mission.size.to_s, 2)

        self.contents.font.color = normal_color

      else

        self.contents.draw_text(0, 0, 208, 32, @mission_comp.size.to_s +

        "/" + $game_party.mission.size.to_s, 2)

      end

      #if Mission_Setup is true...

    elsif mis::Mission_Setup == true

      if @mission_comp.size == @mission_know.size

        self.contents.font.color = Color.new(40, 250, 40, 255)

        self.contents.draw_text(0, 0, 208, 32, @mission_comp.size.to_s +

        "/" + @mission_know.size.to_s, 2)

        self.contents.font.color = normal_color

      else

        self.contents.draw_text(0, 0, 208, 32, @mission_comp.size.to_s +

        "/" + @mission_know.size.to_s, 2)

      end

    end

  end

end

#----------------------------------------------------------------------

#  * End Window_Missionnum

#----------------------------------------------------------------------

 

 

#----------------------------------------------------------------------

#  Window_Missionlist

#----------------------------------------------------------------------

class Window_Missionlist < Window_Selectable

  #--------------------------------------------------------------------

  #  * Attribute listings

  #--------------------------------------------------------------------

  attr_accessor    :mission

  #--------------------------------------------------------------------

  #  * Object Initialization

  #--------------------------------------------------------------------

  def initialize

    super(0, 60, 260, 420)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.index = 0

    refresh

  end

  #--------------------------------------------------------------------

  #  * Mission

  #--------------------------------------------------------------------

  def mission

    return @data[self.index]

  end

  #--------------------------------------------------------------------

  #  * Refresh

  #--------------------------------------------------------------------

  def refresh

    if self.contents != nil

      self.contents.dispose

      self.contents = nil

    end

    mis = Mission_Menu

    @data = []

    for i in 0...$game_party.mission.keys.size

      if $game_party.mission[$game_party.mission.keys[i]] > 1

        @data.push($game_party.mission.keys[i])

      end

    end

    @item_max = @data.size

    if @item_max > 0

      self.contents = Bitmap.new(width - 32, row_max * 32)

      for i in 0...@item_max

        draw_item(i)

      end

    end

  end

  #--------------------------------------------------------------------

  #  * Draw_Item

  #--------------------------------------------------------------------

  def draw_item(index)

    mis = Mission_Menu

    mission_name = @data[index]

    x = 4

    y = index * 32

    rect = Rect.new(x, y, self.width - 32, 32)

    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))

    if $game_party.mission[mission_name] == 3

      self.contents.font.color = Color.new(40, 250, 40, 255)

      self.contents.draw_text(x, y, 228, 32, mis::Mission_Name[mission_name])

    else

      self.contents.font.color = normal_color

      self.contents.draw_text(x, y, 228, 32, mis::Mission_Name[mission_name])

    end

  end

  

end

#----------------------------------------------------------------------

#  * End Window_Missionlist

#----------------------------------------------------------------------

 

#----------------------------------------------------------------------

#  Window_Missioncomp

#----------------------------------------------------------------------

class  Window_Missioncomp < Window_Base

  #--------------------------------------------------------------------

  #  * Object Initialization

  #--------------------------------------------------------------------

  def initialize(mission)

    super(260, 365, 380, 115)

    self.contents = Bitmap.new(width - 32, height - 32)

    refresh(mission)

  end

  #--------------------------------------------------------------------

  #  * Refresh

  #--------------------------------------------------------------------

  def refresh(mission)

    self.contents.clear

    self.contents.font.color = system_color

    self.contents.draw_text(0, 52, 440, 32, "Status:")

    self.contents.draw_text(170, 52, 440, 32, "Reward:")

    self.contents.font.color = normal_color

    #person place status reward

    mis = Mission_Menu

    if mis::Mission_Sprite.has_key?(mission)

      if $game_party.mission[mission] > 1

        self.contents.draw_text(36, 6, 440, 32,

        mis::Mission_Sprite[mission][2] + ", " + mis::Mission_Sprite[mission][3])

        case $game_party.mission[mission]

        when 1

          self.contents.draw_text(62, 52, 400, 32, "")

        when 2

          self.contents.draw_text(62, 52, 400, 32, "Incomplete")

          self.contents.draw_text(242, 52, 138, 32, "Unknown")

        when 3

          self.contents.font.color = Color.new(40, 250, 40, 255)

          self.contents.draw_text(62, 52, 400, 32, "Complete")

          self.contents.draw_text(242, 52, 138, 32, mis::Mission_Sprite[mission][4])

        end

        bitmap = RPG::Cache.character(mis::Mission_Sprite[mission][0],

        mis::Mission_Sprite[mission][1])

        cw = bitmap.width / 4

        ch = bitmap.height / 4

        facing = 0

        src_rect = Rect.new(0, facing * ch, cw, ch)

        self.contents.blt(0, 0, bitmap, src_rect)

      end

    end

  end

  

  def clear

    self.contents.clear

  end

  

end

#--------------------------------------------------------------------

#  * Ends Window_Missioncomp

#--------------------------------------------------------------------

 

  

#----------------------------------------------------------------------

#  Window_Missiondesc

#----------------------------------------------------------------------

class Window_Missiondesc < Window_Base

  #--------------------------------------------------------------------

  #  * Object Initialization

  #--------------------------------------------------------------------

  def initialize(mission)

    super(260, 60, 380, 305)

    self.contents = Bitmap.new(width - 32, height - 32)

  end

  #--------------------------------------------------------------------

  #  * Refresh

  #--------------------------------------------------------------------

  def refresh(mission)

    self.contents.clear

    mis = Mission_Menu

    self.contents.draw_text(0, 0, 348, 32, mis::Mission_L1[mission].to_s)

    self.contents.draw_text(0, 32, 348, 32, mis::Mission_L2[mission].to_s)

    self.contents.draw_text(0, 64, 348, 32, mis::Mission_L3[mission].to_s)

    self.contents.draw_text(0, 96, 348, 32, mis::Mission_L4[mission].to_s)

    self.contents.draw_text(0, 128, 348, 32, mis::Mission_L5[mission].to_s)

    self.contents.draw_text(0, 160, 348, 32, mis::Mission_L6[mission].to_s)

    self.contents.draw_text(0, 192, 348, 32, mis::Mission_L7[mission].to_s)

    self.contents.draw_text(0, 224, 348, 32, mis::Mission_L8[mission].to_s)

    end

end

#--------------------------------------------------------------------

#  * Ends Window_Missiondesc

#--------------------------------------------------------------------

 

 

#====================================

#  Scene_MissionMenu

#====================================

class Scene_MissionMenu

  #--------------------------------------------------------------------

  #  * Object Initialization

  #--------------------------------------------------------------------

  def initialize(menu_index = 0)

    @menu_index = menu_index

  end

  #--------------------------------------------------------------------

  #  * Main

  #--------------------------------------------------------------------

  def main

    

    @missionhelp_window = Window_Missionhelp.new

    @missionlist_window = Window_Missionlist.new

    @missionnum_window = Window_MissionNum.new

    @missioncomp_window = Window_Missioncomp.new(@missionlist_window.mission)

    @missiondesc_window = Window_Missiondesc.new(@missionlist_window.mission)

    @mission = @missionlist_window.mission

    

    @missiondesc_window.refresh(@missionlist_window.mission)

    @missioncomp_window.refresh(@missionlist_window.mission)

    

    Graphics.transition

    loop do

      Graphics.update

      Input.update

      update

      if $scene != self

        break

      end

    end

    Graphics.freeze

    @missionhelp_window.dispose

    @missiondesc_window.dispose

    @missioncomp_window.dispose

    @missionlist_window.dispose

    @missionnum_window.dispose

  end

  #--------------------------------------------------------------------

  #  * Update

  #--------------------------------------------------------------------

  def update

    mis = Mission_Menu

    @missionlist_window.update

    @missionnum_window.update

    @missionhelp_window.update("Select a mission to see details.")

    if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN) or Input.repeat?(Input::DOWN) or Input.repeat?(Input::UP)

    @missiondesc_window.refresh(@missionlist_window.mission)

    @missioncomp_window.refresh(@missionlist_window.mission)

    end

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      $scene = Scene_Map.new

    end

  end

    

end

#--------------------------------------------------------------------

#  * Ends Scene_Missionmenu

#--------------------------------------------------------------------

I already changed the "scene_mission.newmenu" thing, because it wasn't "scene_quest.newmenu" or whatever. But, uhh, so I followed your instructions and I got this...

Any suggestions?
 
# If player is not moving
unless $game_player.moving?
# Run calling of each screen
if $game_temp.battle_calling
call_battle
elsif $game_temp.shop_calling
call_shop
elsif $game_temp.name_calling
call_name
elsif $game_temp.menu_calling
call_menu
elsif $game_temp.save_calling
call_save
elsif $game_temp.debug_calling
call_debug
elsif $game_temp.quest_calling
call_quest
end

end
end

Bold is 165.
 
try moving the def Call_quest below line 239 (call_debug)
or moving the elseif statement below the menu call one

also instead of changing stuff within your mission menu,
just change Scene_quest.new to Scene_MissionMenu.new
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top