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.

Quest System Fixing

http://img442.imageshack.us/img442/5227/scenequestis6.th.png[/IMG]

http://img248.imageshack.us/img248/8420/scenequest2be6.th.png[/IMG]

ORIGINAL SCRIPT TOPIC http://www.rmxp.org/forums/showthread.php?t=6305&highlight=quest

Well hello everybody again... hoping this request could be solved, i'm using a Quest System that seems to work very well... you can enable, disable and upgrade quests with just one variable, you can set quests as not visible until they are given...
Well everything seems to work, BUT after you complete the first quest, the 6 first step of the second quest (every quest has 8 step) autocomplete themself automatically.
Here's the script, write here if you want to ask anything, i'll give the instructionas and/or demo to how use this so you may fix it.
The system is really really good so it's a shame that it remains incomplete (it's creator left this forum time ago).

IF YOU THINK THE SCRIPT IS TOO BAD-CODED, I'VE ALSO PUT A REQUEST HERE
http://www.rmxp.org/forums/showthread.php?p=177126#post177126

IMPORTANT: I recoded the first script, so the variables named tmp, tmp2 and tmp3 have now more human and understandable names.
Please see if you can fix it now, all the scripters told me "bad variable names", now the variables should be understandable.
I also added comments inside the script.

IMPORTANT2: The second script doesn't need to be checked. IT has no bug. The bug is SURELY in the first one, the seconds is needed just to write the text of quests.
I put it here just for detail.

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
  attr_accessor :reputation              # reputation of character
  attr_accessor :tax_change              # the difference in prices with tax
  attr_accessor :qupdate                 # for the quest script
  # * 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
    # COMMENT FROM MIKE PORTNOY: As you can see i rewrote
    # The names of tmp, tmp2 and tmp3 so it's more comprensible
    # Now tmp is known as "qustart". The qustart number is the value
    # That qdata must have to start a quest.
    # That number must finish for 1. like 1, 11, 21, 31, 41.
    # Tmp2 became qu complete. That number must finish for 0. Like 10,20,30,40.
    # Tmp3 became qunumber. The number of the quest. 1,2,3,4... i didn't understand 
    # Completely the logic in this.
    
    qustart = 0
    qucomplete = 0
    qunumber = 0
    qustart = 1
    qucomplete = 10
    $qdata.totalcompleted = 0
    $qdata.totalfound = 0
    $qdata.moneyearned = 0
    $qdata.expearned = 0
    $qdata.rpearned = 0
    
    while (qunumber < $qdata.totalquests) # Qui era $qdata.totalquests
      if $qdata.showdisabledquests == true and $game_system.qupdate[qustart] == false
        @command_window.disable_item(qunumber)
      elsif $game_system.qupdate[qustart] == false
        @command_window.delete_item(qunumber)
      else
        $qdata.totalfound += 1 #qui era += 1 MODIFICA
      end
      if $game_system.qupdate[qucomplete] == true
        @command_window.finished(qunumber)
        $qdata.moneyearned += $qdata.goldreward[qunumber]
        $qdata.expearned += $qdata.expreward[qunumber]
        $qdata.rpearned += $qdata.rpreward[qunumber]
        $qdata.totalcompleted += 1
      end
      qustart += 10
      
      qucomplete += 10
      
      qunumber +=1
    end
    
    # while loop determines if all are accessible
    if $qdata.shownondisabledquests == true
      int = 1
      max = (($qdata.totalquests * 10) - 9) + 1 # qui c'era un + 1 ala fine, MODIFICA - COMUNQUE l'errore non sta qui
      while int < max
        $game_system.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_system.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_Menu.new #Qui era Scene_map! AGGIUNTO
      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_system.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, "Quest Totali: " + $qdata.totalquests.to_s)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 20, 150, 32, "Quest Trovate: " + $qdata.totalfound.to_s)
    self.contents.font.color = system_color
    self.contents.draw_text(4, 40, 150, 32, "Quest Completate: " + $qdata.totalcompleted.to_s)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 80, 150, 32, "Schei Guadagnati: " + $qdata.moneyearned.to_s)
    self.contents.font.color = system_color
    self.contents.draw_text(4, 100, 150, 32, "Exp Ottenuta: " + $qdata.expearned.to_s)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 120, 150, 32, "AP Ricevuti: " + $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, "Per la quest principale")
    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_Base
  def initialize
    super(0, 0, 480, 300)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  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, "Nome: " + $qdata.charname[$qdata.whichquest])
     self.contents.font.color = normal_color
     self.contents.draw_text(50, 0, 385, 80, "Locazione: " + $qdata.location[$qdata.whichquest])
     self.contents.font.color = system_color
     self.contents.draw_text(50, 0, 385, 115, "Ricompensa: " + $qdata.textreward[$qdata.whichquest])
     self.contents.font.color = normal_color
     self.contents.draw_text(0, 0, 435, 175, "Obiettivi:")
     temp = $qdata.whichquest
     script = (temp * 8)
     easy = 0
     switch = 2
     while (switch < 10)
       if $game_system.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
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
 
class Game_System
  attr_accessor :reputation
  attr_accessor :qupdate                 # for the quest script
  alias qinitialize initialize
  def initialize
    qinitialize
    @qupdate = []
    for i in 0...5000
      @qupdate[i] = false
    end
  end
end  
class Quest_Data
  attr_accessor :totalquests 
  attr_accessor :totalfound 
  attr_accessor :moneyearned
  attr_accessor :expearned
  attr_accessor :rpearned
  attr_accessor :totalcompleted
  attr_accessor :showdisabledquests
  attr_accessor :shownondisabledquests
  attr_accessor :preinfo
  attr_accessor :charsprite
  attr_accessor :questname
  attr_accessor :charname
  attr_accessor :location 
  attr_accessor :textreward 
  attr_accessor :goldreward
  attr_accessor :expreward 
  attr_accessor :rpreward 
  attr_accessor :objs
  attr_accessor :whichquest
  attr_accessor :whichprequest
  alias datainitialize initialize
  def initialize
    datainitialize
    @preinfo = []
    @charsprite = []
    @questname = []
    @charname = []
    @location = []
    @textreward = []
    @goldreward = []
    @expreward = []
    @rpreward = []
    @objs = []
    @totalfound = 0
    @moneyearned = 0
    @expearned = 0
    @rpearned = 0
    @totalcompleted = 0
    @whichquest = 0
    @whichprequest = 0
    # =========================
    end
  end


HERE is the script to set the quests data


Code:
#=====================
    # Quests
    #=====================
    
    module QUESTS
  # Quests Total
  TOTAL = 15
  # Quest in Process message;
  PROCESS = "Completa la missione corrente!"
  # All Quests is completed;
  COMPLETED = "Tutte le missioni sono state completate!"
    end
    
    class Quest_Data
      alias quests initialize
      def initialize
      quests
      
    # kinda big things
    @showdisabledquests = false # displays all the quests, but they are disabled
    @shownondisabledquests = false # makes all quests accessible
    @totalquests = QUESTS::TOTAL # initialize the total number of quests you created
    @preinfo.push(QUESTS::PROCESS) # info message for quest in progress
    @preinfo.push(" ")
    @preinfo.push(" ")
    @preinfo.push(" ")
    @preinfo.push(QUESTS::COMPLETED) # info message for all quests done
    @preinfo.push(" ")
    @preinfo.push(" ")
    @preinfo.push(" ")
    
    # Quest 1 information
    @preinfo.push("Visita il sovraintendente ") # info that will show  
    @preinfo.push("nella sala convegni ") # in the "Where to Go?"
    @preinfo.push("per discutere del sigillo ") # window prior to quest
    @preinfo.push("di Jokimbo ")
    @questname.push("Amministrazione") # the name of quest
    @charsprite.push("sovraintendente1") # the name of the character sprite
    @charname.push("Sovraintendente") # the name of the character who gave the quest
    @location.push("Forte Kalan") # the location of quest
    @textreward.push("Addestramento con il Sovraintendente") # the text representation of the reward
    @goldreward[0] = 0 # the actual amount of gold reward
    @expreward[0] = 0 # the actual amount of exp reward
    @rpreward[0] = 0 # the actual amount of rp reward
    @objs.push("   - Parla con il sorvegliante dell'armeria") # quest objective 1
    @objs.push("   - Parla con il sorvegliante del magazzino") # quest objective 2
    @objs.push("   - Visita il responsabile della forgiatura") # quest objective 3
    @objs.push("   - Discuti il piano di battaglia con Taras, la") # quest objective 4
    @objs.push("     sua stanza si trova nell'ala destra dei dormitori. ") # quest objective 5
    @objs.push("   - Torna dal Sovraintendente ") # quest objective 6
    @objs.push(" ") # quest objective 7
    @objs.push(" ") # quest objective 8
    
    # Quest 2 information
    @preinfo.push("Raggiungi il sovraintendente ") # info that will show  
    @preinfo.push("nell' arena dell'area ") # in the "Where to Go?"
    @preinfo.push("centrale ") # window prior to quest
    @preinfo.push(" ")
    @questname.push("L'addestramento") # the name of quest
    @charsprite.push("sovraintendente1") # the name of the character sprite
    @charname.push("Sovraintendente ") # the name of the character who gave the quest
    @location.push("Forte Kalan ") # the location of quest
    @textreward.push("Ammissione all'accademia ") # 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 ap reward
    @objs.push("   - Segui le istruzioni del Sovraintendente") # quest objective 1
    @objs.push("   - Allenati") # quest objective 2
    @objs.push("   - Sconfiggi il Sovraintendente") # quest objective 3
    @objs.push("va ") # quest objective 4
    @objs.push(" in") # quest objective 5
    @objs.push("figa ") # quest objective 6
    @objs.push("de ") # quest objective 7
    @objs.push(" to") # 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 ap 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 ap 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 ap 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 ap 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 ap 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 ap 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 ap 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 ap 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 ap 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 ap 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 ap 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 ap 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 ap 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

As you can see i already made two quests... the scripts are not hard to use, u can activate the quest scene with the command $scene = Scene_Quests.new

To update quests just use the command $game_system.qupdate[1] = true
The number (1) can be changed...
If you want to start a quest, use 1, 11, 21, 31, 41, 51, 61, 71, 81...
If you want to complete it use 10,20,30,40,50,60,70,80...
If you want to upgrade its steps use 2,3,4,5,6,7,8,9,12,13,14,15,16,17...

Hope you know everrything needed to fix it... thanks to everybody that will read this!
I will repay the best i can... i'm good with animations, event systems and story creation.
 
I've added a pair of screenshot to make the idea clearer and to show how nice the system itself can be... hope anybody could take the request, it should not be hard to fix it, i'm learning some scripting and i think i understood quite a bit of the script, but the comments aren't enough for me to understand it completely.
 
Bump... I forgot to say i'd repay the best i can... i'm good with animations, event systems and story creation.

EDIT: Awww... i confused 72 hours with 2 days srry... don't know what i had in mind O_o 72 hours is 3 days...
 
IMPORTANT: I recoded the first script, so the variables named tmp, tmp2 and tmp3 have now more human and understandable names.
Please see if you can fix it now, all the scripters told me "bad variable names", now the variables should be understandable.
I also added comments inside the script.

IMPORTANT2: The second script doesn't need to be checked. IT has no bug. The bug is SURELY in the first one, the seconds is needed just to write the text of quests.
 
BUmp again....
recoded the first script, so the variables named tmp, tmp2 and tmp3 have now more human and understandable names.
Please see if you can fix it now, all the scripters told me "bad variable names", now the variables should be understandable.
I also added comments inside the script.

The second script doesn't need to be checked. IT has no bug. The bug is SURELY in the first one, the seconds is needed just to write the text of quests.
 
Man, i solved this by myself...
Thank you to all the people that didn't help me cause they thought it was "bad coded".
I actually solved withouth ruby knowledge but with logic knowledge.
There was a bad algorithm.
This topic can be closed.
 

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