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.

The Ultimate Quest Scene: Reborn

The Ultimate Quest Scene
Version: 2.0


Introduction
Ok before everyone goes crazy and criticizes my scripting like crazy, just let it be known that this was my first script and it more of an eye candy script rather than an impressive one. Also note that not all scripts within this demo are my own and were only modified/compiled by me. Because of this I must give a long and drawn out credit recognization. It would be better if you just ignored the rest of the scripts except for the quest one which is located in the lower left hand corner of the tutorial. You can check out the other things too, but this post is really just for the Quest Script.

Features
Here are some of the features
  • Doesn't use any switches
  • Can handle and unlimited number of quests
  • Can hold up to 8 steps per quest
  • Each time a step is completed the step fades out
  • Displays what you are to do next between and during quests
  • Quests appear in the menu only after you get the quest, instead of there just being a list of all quests or you can now have all of them be displayed the choice is up to you
  • Keeps track of how much money, exp, completed, found, etc
  • Has a nice GUI in Quest_Data
Screenshot
screenshotk.png


Demo
http://www.rmxp.org/forums/attachment.php?attachmentid=2409&stc=1&d=1186158318

Script
Put these scripts below everything else, and above main.
Code:
 

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

# ** Scene_Quests

# ** Created by coolmariners98

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

# Please do not copy and distribute claiming to have created this.

# I would like full credit, even though this script is kind of crappy.

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

class Scene_Quests

  # * Object Initialization

  def initialize(quest_index = 0)

    @quest_index = quest_index

    if $qdata == nil

      $qdata = Quest_Data.new

    end

  end

 

  def main

    # creates the quest window based upon how many totalquests

    questwin = [] # temp array

    for i in 0...$qdata.totalquests # for loop makes menu

      eval "questwin.push($qdata.questname[i])"

    end

    @command_window = Window_Qmand.new(160, questwin) # actually makes window

    @command_window.index = @quest_index

    

    # while loop determines what to show

    tmp = 1

    tmp2 = 10

    tmp3 = 0

    $qdata.totalcompleted = 0

    $qdata.totalfound = 0

    $qdata.moneyearned = 0

    $qdata.expearned = 0

    $qdata.rpearned = 0

    while (tmp3 < $qdata.totalquests)

      if $qdata.showdisabledquests == true and $game_temp.qupdate[tmp] == false

        @command_window.disable_item(tmp3)

      elsif $game_temp.qupdate[tmp] == false

        @command_window.delete_item(tmp3)

      else

        $qdata.totalfound += 1

      end

      if $game_temp.qupdate[tmp2] == true

        @command_window.finished(tmp3)

        $qdata.moneyearned += $qdata.goldreward[tmp3]

        $qdata.expearned += $qdata.expreward[tmp3]

        $qdata.rpearned += $qdata.rpreward[tmp3]

        $qdata.totalcompleted += 1

      end

      tmp += 10

      tmp2 += 10

      tmp3 +=1

    end

 

    # while loop determines if all are accessible

    if $qdata.shownondisabledquests == true

      int = 1

      max = (($qdata.totalquests * 10) - 9) + 1

      while int < max

        $game_temp.qupdate[int] = true

        int += 10

      end

    end

 

    # Make quest status window

    @qs_window = Quest_Status.new

    @qs_window.x = 160

    @qs_window.y = 0

 

    # Determine PreQuest Number

    preq = 2

    temp = 1

    query = false

    if $qdata.totalfound != $qdata.totalcompleted

      $qdata.whichprequest = 0

    elsif $qdata.totalfound == $qdata.totalquests

      $qdata.whichprequest = 1

    else

      while (query == false)

        if $game_temp.qupdate[temp] == false

          $qdata.whichprequest = preq

          query = true

        else

          temp += 10

          preq += 1

        end

      end

    end

 

    # Make quest info window

    @qi_window = Quest_Info.new

    @qi_window.x = 360

    @qi_window.y = 0

    

    # Make quest window

    @status_window = Quest.new

    @status_window.x = 160

    @status_window.y = 180

    Graphics.transition

    # Main loop

    loop do

      # Update game screen

      Graphics.update

      # Update input information

      Input.update

      # Frame update

      update

      # Abort loop if screen is changed

      if $scene != self

        break

      end

    end

    Graphics.freeze

    # Dispose of windows

    @command_window.dispose

    @status_window.dispose

    @qs_window.dispose

    @qi_window.dispose

  end

  

  def update

    @command_window.update

    @status_window.update

    if @command_window.active

      update_command

      return

    end

    if @status_window.active

      update_status

      return

    end

  end

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

  # * Frame Update (when command window is active)

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

  def update_command

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      # Switch to map screen

      $scene = Scene_Map.new

      return

    end

    # If C button was pressed

    if Input.trigger?(Input::C)

      index = @command_window.index

      #pattern on switch is index * 10 + 1

      if $game_temp.qupdate[index * 10 + 1] == false

        $game_system.se_play($data_system.buzzer_se)

        return

      else

        $qdata.whichquest = index

        $game_system.se_play($data_system.decision_se)

        @status_window.dispose

        @status_window = Quest.new

        @status_window.x = 160

        @status_window.y = 180

        @status_window.update

      end

      return

    end

  end

end

 

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

# ** Quest_Status

# ** Created by coolmariners98

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

# This displays what has been done so far in your quests (upper middle window)

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

class Quest_Status < Window_Base

  def initialize

    super(0, 0, 200, 180)

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

    refresh

  end

  def refresh

    self.contents.clear

    self.contents.font.color = system_color

    self.contents.draw_text(4, 0, 150, 32, "Total Quests: " + $qdata.totalquests.to_s)

    self.contents.font.color = normal_color

    self.contents.draw_text(4, 20, 150, 32, "Quests Found: " + $qdata.totalfound.to_s)

    self.contents.font.color = system_color

    self.contents.draw_text(4, 40, 150, 32, "Total Completed: " + $qdata.totalcompleted.to_s)

    self.contents.font.color = normal_color

    self.contents.draw_text(4, 80, 150, 32, "Money Earned: " + $qdata.moneyearned.to_s)

    self.contents.font.color = system_color

    self.contents.draw_text(4, 100, 150, 32, "Exp Earned: " + $qdata.expearned.to_s)

    self.contents.font.color = normal_color

    self.contents.draw_text(4, 120, 150, 32, "RP Earned: " + $qdata.rpearned.to_s)

  end

end

 

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

# ** Quest_Info

# ** Created by coolmariners98

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

# This displays all the quest information in the upper right window

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

class Quest_Info < Window_Base

  def initialize

    super(0, 0, 280, 180)

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

    refresh

  end

  def refresh

    self.contents.clear

    self.contents.font.color = system_color

    self.contents.draw_text(4, 0, 250, 32, "Where To Go")

    self.contents.font.color = normal_color

    self.contents.draw_text(4, 40, 250, 32, $qdata.preinfo[($qdata.whichprequest * 4)])

    self.contents.draw_text(4, 60, 250, 32, $qdata.preinfo[(($qdata.whichprequest * 4) + 1)])

    self.contents.draw_text(4, 80, 250, 32, $qdata.preinfo[(($qdata.whichprequest * 4) + 2)])

    self.contents.draw_text(4, 100, 250, 32, $qdata.preinfo[(($qdata.whichprequest * 4) + 3)])

  end

end

 

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

# ** Quest

# ** Created by coolmariners98

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

# This displays all the quest information in the bottom right window

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

class Quest < Window_Selectable

  def initialize

    super(0, 0, 480, 300)

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

    refresh

    self.active = false

    self.index = -1

  end

  def refresh

    self.contents.clear

    if $qdata.totalfound != 0

      bitmap = RPG::Cache.character($qdata.charsprite[$qdata.whichquest], 0)

      cw = bitmap.width / 4

      ch = bitmap.height / 4

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

      self.contents.blt(4, 16, bitmap, src_rect)

      self.contents.font.color = system_color

      self.contents.draw_text(50, 0, 385, 45, "Name: " + $qdata.charname[$qdata.whichquest])

      self.contents.font.color = normal_color

      self.contents.draw_text(50, 0, 385, 80, "Location: " + $qdata.location[$qdata.whichquest])

      self.contents.font.color = system_color

      self.contents.draw_text(50, 0, 385, 115, "Reward: " + $qdata.textreward[$qdata.whichquest])

      self.contents.font.color = normal_color

      self.contents.draw_text(0, 0, 435, 175, "Quest Objectives:")

      temp = $qdata.whichquest

      script = (temp * 8)

      easy = 0

      switch = 2

      while (switch < 10)

        if $game_temp.qupdate[switch] == true

          self.contents.font.color = disabled_color

          self.contents.draw_text(0, 0, 435, 210 + (easy * 35), $qdata.objs[script])

        else

          self.contents.font.color = normal_color

          self.contents.draw_text(0, 0, 435, 210 + (easy * 35), $qdata.objs[script])

        end

        easy += 1

        script += 1

        switch += 1

      end

    end

  end

  def update_cursor_rect

    if @index < 0

      self.cursor_rect.empty

    else

      self.cursor_rect.set(0, @index * 116, self.width - 32, 96)

    end

  end

end

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

# ** Window_Qmand

# ** Created by coolmariners98

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

# This displays all the quest information in the bottom right window

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

class Window_Qmand < Window_Selectable

  def initialize(width, commands)

    super(0, 0, width, 480)

    @item_max = commands.size

    @commands = commands

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

    refresh

    self.index = 0

  end

  def refresh

    self.contents.clear

    for i in 0...@item_max

      draw_item(i, normal_color)

    end

  end

  def draw_item(index, color)

    self.contents.font.color = color

    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)

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

    self.contents.draw_text(rect, @commands[index])

  end

  def disable_item(index)

    draw_item(index, disabled_color)

  end

  def delete_item(index)

    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)

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

  end

  def finished(index)

    draw_item(index, system_color)

  end

end

 
Code:
 

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

# ** Scene_Quests

# ** Created by coolmariners98

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

# Please do not copy and distribute claiming to have created this.

# I would like full credit, even though this script is kind of crappy.

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

 

class Quest_Data

  attr_accessor :totalquests, :totalfound, :moneyearned, :expearned, :rpearned, :totalcompleted,

  :showdisabledquests, :shownondisabledquests, :preinfo, :charsprite, :questname,

  :charname, :location, :textreward, :goldreward, :expreward, :rpreward, :objs,

  :whichquest, :whichprequest

  def initialize

    # ========DO NOT CHANGE======

    @preinfo = []

    @charsprite = []

    @questname = []

    @charname = []

    @location = []

    @textreward = []

    @goldreward = []

    @expreward = []

    @rpreward = []

    @objs = []

    @totalfound = 0

    @moneyearned = 0

    @expearned = 0

    @rpearned = 0

    @totalcompleted = 0

    @whichquest = 0

    @whichprequest = 0

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

    

    # kinda big things

    @showdisabledquests = false # displays all the quests, but they are disabled

    @shownondisabledquests = false # makes all quests accessible

    @totalquests = 15 # initialize the total number of quests you created

    @preinfo.push("Finish the current quest") # info message for quest in progress

    @preinfo.push(" ")

    @preinfo.push(" ")

    @preinfo.push(" ")

    @preinfo.push("All quests completed!!") # info message for all quests done

    @preinfo.push(" ")

    @preinfo.push(" ")

    @preinfo.push(" ")

    

    # Quest 1 information

    @preinfo.push("You should probably go and talk") # info that will show

    @preinfo.push("to that strange looking lancer at") # in the "Where to Go?"

    @preinfo.push("the top-right portion of the screen") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Greeting") # the name of quest

    @charsprite.push("009-Lancer01") # the name of the character sprite

    @charname.push("Sir Lancelot") # the name of the character who gave the quest

    @location.push("World Map") # the location of quest

    @textreward.push("1000 Gold, 10 XP, 200 RP") # the text representation of the reward

    @goldreward[0] = 1000 # the actual amount of gold reward

    @expreward[0] = 10 # the actual amount of exp reward

    @rpreward[0] = 200 # the actual amount of rp reward

    @objs.push(" - You must go and find the chicken") # quest objective 1

    @objs.push(" - You must give the chicken to the baby") # quest objective 2

    @objs.push(" - Talk to the father for your reward") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 2 information

    @preinfo.push("I think you are done until later") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[1] = 0 # the actual amount of gold reward

    @expreward[1] = 0 # the actual amount of exp reward

    @rpreward[1] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 3 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[2] = 0 # the actual amount of gold reward

    @expreward[2] = 0 # the actual amount of exp reward

    @rpreward[2] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 4 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[3] = 0 # the actual amount of gold reward

    @expreward[3] = 0 # the actual amount of exp reward

    @rpreward[3] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 5 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[4] = 0 # the actual amount of gold reward

    @expreward[4] = 0 # the actual amount of exp reward

    @rpreward[4] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 6 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[5] = 0 # the actual amount of gold reward

    @expreward[5] = 0 # the actual amount of exp reward

    @rpreward[5] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 7 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[6] = 0 # the actual amount of gold reward

    @expreward[6] = 0 # the actual amount of exp reward

    @rpreward[6] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 8 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[7] = 0 # the actual amount of gold reward

    @expreward[7] = 0 # the actual amount of exp reward

    @rpreward[7] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 9 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[8] = 0 # the actual amount of gold reward

    @expreward[8] = 0 # the actual amount of exp reward

    @rpreward[8] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 10 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[9] = 0 # the actual amount of gold reward

    @expreward[9] = 0 # the actual amount of exp reward

    @rpreward[9] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 11 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[10] = 0 # the actual amount of gold reward

    @expreward[10] = 0 # the actual amount of exp reward

    @rpreward[10] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 12 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[11] = 0 # the actual amount of gold reward

    @expreward[11] = 0 # the actual amount of exp reward

    @rpreward[11] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 13 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[12] = 0 # the actual amount of gold reward

    @expreward[12] = 0 # the actual amount of exp reward

    @rpreward[12] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 14 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[13] = 0 # the actual amount of gold reward

    @expreward[13] = 0 # the actual amount of exp reward

    @rpreward[13] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

    

    # Quest 15 information

    @preinfo.push(" ") # info that will show

    @preinfo.push(" ") # in the "Where to Go?"

    @preinfo.push(" ") # window prior to quest

    @preinfo.push(" ")

    @questname.push("Just a filler") # the name of quest

    @charsprite.push(" ") # the name of the character sprite

    @charname.push(" ") # the name of the character who gave the quest

    @location.push(" ") # the location of quest

    @textreward.push(" ") # the text representation of the reward

    @goldreward[14] = 0 # the actual amount of gold reward

    @expreward[14] = 0 # the actual amount of exp reward

    @rpreward[14] = 0 # the actual amount of rp reward

    @objs.push(" ") # quest objective 1

    @objs.push(" ") # quest objective 2

    @objs.push(" ") # quest objective 3

    @objs.push(" ") # quest objective 4

    @objs.push(" ") # quest objective 5

    @objs.push(" ") # quest objective 6

    @objs.push(" ") # quest objective 7

    @objs.push(" ") # quest objective 8

  end

end
Put this under all the other instance variables
attr_accessor : qupdate # for the quest script

Then put this at the bottom of "initialize"
@qupdate = []
for i in 0...5000
@qupdate = false
end

Add this below all the others
Marshal.dump($game_temp.qupdate, file)
Add this below all the others
$game_temp.qupdate = Marshal.load(file)

Instructions
  1. To edit data just simply edit Quest_Data, there is no need to edit anything else!!
  2. How the qupdate switches work (to set on in game just call script and type $game_temp.qupdate[#] = true, where # is the number switch you want to turn on:
    qupdate 1, 11, 21, 31, 41, etc. are used for giving quests, aka will make then quests appear in the menu
    qupdate 10, 20, 30, 40, 50, etc. are used for ending quests, aka will make the quest complete
    qupdate 2-9, 12-19, 13-29, etc. are used for quest objectives, aka will make quest objectives fade out
FAQ

Q: How do you cut out RP, I don't like it?
A: http://www.rmxp.org/forums/showthread.php?t=6305

Q: Quests are not completing!!
A: Yes they do, you have to set qupdate[10,20,30,40,etc] to true in order to complete the quest. Just updating the steps is not enough.


Compatibility

Everything I think.

Credits and Thanks

First off thanks to Trickster for helping me a lot with my script
  1. Bestiary by Momomo
  2. Scene_Prize v1.0 by RubyMatt
  3. Event Text Display by ???
Author's Notes

What I fixed 8/2/07

- you can now save and load without the quests disappearing
- eliminated a lot of extra code

What I fixed 8/8/06
- no need for switches anymore, instead use $game_temp.qupdate[#] = true for a switch
- can handle an unlimited number of quests
- fixed the status problem
- code is now under 400 lines of code
- made more user friendly
 
Heh. May wanna put the script in [ code ] boxes to eliminate the :p : p smiley problem. :D

PS. Welcome back. You gonna flag your old quest topic for deletion?
 
maybe upload it to this sites download manageR?
cuz having to register to make a download of about 200kb isnt worth it :S
 
DerWulfman: I think that the old post should be left because it has some nice information as to how to get rid to RP

Mr Smit: Sure just give me credit where credit is due

Link in Pink/griever8: I fixed the problem with downloading
 
i was wondering if you could help me figure out how to make it so that quest objectives only show after the previous objective is finished (basically have the player need to do the objectives in order without seeing the whole list of objectives from the start of the quest)?
 
An error keeps occuring on line 299 of the Quest_Window, it says it "cannot convert nil into String". Can you please help me fix this problem.
 
Can the rp be used outside of the quests?
For example if you kill a certain monster you can recieve a certain number of rp? Or is it just for quests? And if so what purpose does the rp serve, or is it just to make you feel good about having an awesome reputaton =P

Also, since i'm such a noob, i'm not to sure how to do this:
How the qupdate switches work (to set on in game just call script and type $game_temp.qupdate[#] = true, where # is the number switch you want to turn on:
qupdate 1, 11, 21, 31, 41, etc. are used for giving quests, aka will make then quests appear in the menu
qupdate 10, 20, 30, 40, 50, etc. are used for ending quests, aka will make the quest complete
qupdate 2-9, 12-19, 13-29, etc. are used for quest objectives, aka will make quest objectives fade out

i understand the theory behind it, and assigning the numbers to quests and such. but i don;t get all this switch business. Anyoen point me in the right direction for either help or something that will help me understand?

Thanks
 
Does anyone have any idea how to make it so the quests stay there when you save, exit, and come back to the game on the save? It keeps deleting the quests out of the quest log when I come back, I don't know how to make it so you can just continue on the quests. Any ideas?
 
qupdate 2-9, 12-19, 13-29, etc. are used for quest objectives, aka will make quest objectives fade out

I'm using your Quest Scene for about a year now and it's very nice. But this (the above) isn't working for me. Every quest uses qupdate 2-9 to fade out objectives, I added some events and such in the demo and even there it does that. Finishing and starting quests does work with 1,11,21 & 10,20,30, but this isn't working.

Also, because of this, when you have finished you're first quest, the new quests all have faded objectives. Am I doing something wrong or what?:-/
 
i have a problem at the place the i markt with !!!!  undefined method [] for false:FalseClass
# while loop determines what to show
    tmp = 1
    tmp2 = 10
    tmp3 = 0
    $qdata.totalcompleted = 0
    $qdata.totalfound = 0
    $qdata.moneyearned = 0
    $qdata.expearned = 0
    $qdata.rpearned = 0
    while (tmp3 < $qdata.totalquests)
      if $qdata.showdisabledquests == true and $game_temp.qupdate[tmp] == false
        @command_window.disable_item(tmp3)
!!!    elsif $game_temp.qupdate[tmp] == false
        @command_window.delete_item(tmp3)
      else
        $qdata.totalfound += 1
      end
     

alrady thank for your help
 
Okay, this is all nice and good, and I've finally gotten my game to START with these scripts intact. My question is, how do I actually get to see the quest window?
 
I have upload it to mediafire and megaupload for those who want the demo.
What have i made:
I have clear the tax script and all except the battle system and weather script and i'm not clear any quest file.
MediaFire:
Mediafire
Megaupload

        Enjoy...
I dont know how to script but i know how to delete something on a script so dont say there is an error on whatever file.I dont know how to script but i test what i did and it work fine.
If it not works then i dont know what to say i already test it and it work 100% okay.
 

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