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.

Please help me editing a ring menu-script

Redman

Sponsor

... so it works with a quest journal.

This is the ring menu I'm using
Code:
#------------------------------------------------------------------------------
#  Ring_Menu
#------------------------------------------------------------------------------
#  By:  XRXS, Dubealex, and Hypershadow180
#------------------------------------------------------------------------------
class Scene_Menu
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
    $location_text=[]
    $gold_text=[]
    $window_size=[]
    $ring_menu_text=[]
    $chara_select=[]
    @window_opacity=[]
    @chara_select=[]
    @window_position=[]
    $location_text[0]="Calibri" # Font Type
    $location_text[1]=24 # Font Size
    $location_text[2]=0 # Location Title Color
    $location_text[4]=0 # Map Name Color
    $location_text[3]="Location:" # Text
    $gold_text[0]="Calibri" # Font Type
    $gold_text[1]=20 # Font Size
    $gold_text[2]=0 # Gold Title Color
    $gold_text[3]=0 # Gold Color
    $gold_text[4]="Gold" # Text
    @window_opacity[0]=255 # Border Opacity
    @window_opacity[1]=130 # Background Opacity
    $window_location_skin="001-Blue01" # Location Windowskin
    $window_gold_skin="001-Blue01" # Gold Windowskin
    @window_position[0]=0 # X Axis Position
    @window_position[1]=0 # Location Y Axis Position
    @window_position[2]=384 # Gold Y Axis Position
    $window_size[0]=160 # Length
    $window_size[1]=96 # Height
    $ring_menu_text[0]="Calibri" # Font Type
    $ring_menu_text[7]=0 # Font Color
    $ring_menu_text[8]=20 # Font Size
    $ring_menu_text[1]="Items"
    $ring_menu_text[2]="Skills"
    $ring_menu_text[3]="Equip"
    $ring_menu_text[4]="Stats"
    $ring_menu_text[5]="Save"
    $ring_menu_text[6]="Quit"
    @chara_select[0]=408 # X Axis Position
    @chara_select[1]=0 # Y Axis Position
    $chara_select[0]="Calibri" # Font Type
    $chara_select[1]=0 # Font Color
    $chara_select[5]=24 # Font Size
    $chara_select[2]=255 # Border Opacity
    $chara_select[3]=130 # Background Opacity
    $chara_select[4]="001-Blue01" # Windowskin
  end
#------------------------------------------------------------------------------
#  Main
#------------------------------------------------------------------------------
  def main
    @window_gold = Window_MenuGold.new
    @window_gold.x = @window_position[0]
    @window_gold.y = @window_position[2]
    @window_gold.opacity = @window_opacity[0]
    @window_gold.back_opacity = @window_opacity[1]
    @spriteset = Spriteset_Map.new
    px = $game_player.screen_x - 15
    py = $game_player.screen_y - 24
    @command_window = Window_RingMenu.new(px,py)
    @command_window.index = @menu_index
    if $game_party.actors.size == 0
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    @command_window.z = 100
    if $game_system.save_disabled
      @command_window.disable_item(4)
    end
    @status_window = Window_RingMenuStatus.new
    @status_window.x = @chara_select[0]
    @status_window.y = @chara_select[1]
    @status_window.z = 200
    @status_window.opacity=$chara_select[2]
    @status_window.back_opacity=$chara_select[3]
    @status_window.visible = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @spriteset.dispose
    @window_gold.dispose
    @command_window.dispose
    @status_window.dispose
  end
#------------------------------------------------------------------------------
#  Update
#------------------------------------------------------------------------------
  def update
    @window_gold.update
    @command_window.update
    @status_window.update
    if @command_window.active
      update_command
      return
    end
    if @status_window.active
      update_status
      return
    end
  end
#------------------------------------------------------------------------------
#  Update Comman
#------------------------------------------------------------------------------
  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      if $game_party.actors.size == 0 and @command_window.index < 4
        $game_system.se_play($data_system.buzzer_se)
        return
      end
    case @command_window.index
    when 0
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Item.new
    when 1
      $game_system.se_play($data_system.decision_se)
      @command_window.active = false
      @status_window.active = true
      @status_window.visible = true
      @status_window.index = 0
    when 2
      $game_system.se_play($data_system.decision_se)
      @command_window.active = false
      @status_window.active = true
      @status_window.visible = true
      @status_window.index = 0
    when 3
      $game_system.se_play($data_system.decision_se)
      @command_window.active = false
      @status_window.active = true
      @status_window.visible = true
      @status_window.index = 0
    when 4
      if $game_system.save_disabled
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Save.new
    when 5
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_End.new
    end
    return
  end
  return if @command_window.animation?
    if Input.press?(Input::UP) or  Input.press?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      @command_window.setup_move_move(Window_RingMenu::MODE_MOVEL)
      return
    end
    if Input.press?(Input::DOWN) or  Input.press?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      @command_window.setup_move_move(Window_RingMenu::MODE_MOVER)
      return
    end
  end
#------------------------------------------------------------------------------
#  Update Status
#------------------------------------------------------------------------------
  def update_status
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @status_window.active = false
      @status_window.visible = false
      @status_window.index = -1
      return
    end
    if Input.trigger?(Input::C)
    case @command_window.index
    when 1
      if $game_party.actors[@status_window.index].restriction >= 2
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Skill.new(@status_window.index)
    when 2
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Equip.new(@status_window.index)
    when 3
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end
#------------------------------------------------------------------------------
#  Window_RingMenu
#------------------------------------------------------------------------------
class Window_RingMenu < Window_Base
  STARTUP_FRAMES = 20
  MOVING_FRAMES = 5  
  RING_R = 64        
  ICON_ITEM   = RPG::Cache.icon("034-Item03")
  ICON_SKILL  = RPG::Cache.icon("044-Skill01")
  ICON_EQUIP  = RPG::Cache.icon("001-Weapon01")
  ICON_STATUS = RPG::Cache.icon("050-Skill07")
  ICON_SAVE   = RPG::Cache.icon("038-Item07")
  ICON_EXIT   = RPG::Cache.icon("046-Skill03")
  ICON_DISABLE= RPG::Cache.icon("")
  SE_STARTUP = "056-Right02"
  MODE_START = 1
  MODE_WAIT  = 2
  MODE_MOVER = 3
  MODE_MOVEL = 4
  attr_accessor :index
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
  def initialize( center_x, center_y )
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width-32, height-32)
    self.contents.font.name = $ring_menu_text[0]
    self.contents.font.color = text_color($ring_menu_text[7])
    self.contents.font.size = $ring_menu_text[8]
    self.opacity = 0
    self.back_opacity = 0
    s1 = $ring_menu_text[1]
    s2 = $ring_menu_text[2]
    s3 = $ring_menu_text[3]
    s4 = $ring_menu_text[4]
    s5 = $ring_menu_text[5]
    s6 = $ring_menu_text[6]
    @commands = [ s1, s2, s3, s4, s5, s6 ]
    @item_max = 6
    @index = 0
    @items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_SAVE, ICON_EXIT ]
    @disabled = [ false, false, false, false, false, false ]
    @cx = center_x - 16
    @cy = center_y - 16
    setup_move_start
    refresh
  end
#------------------------------------------------------------------------------
#  Update
#------------------------------------------------------------------------------
  def update
    super
    refresh
  end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
  def refresh
    self.contents.clear
    case @mode
    when MODE_START
      refresh_start
    when MODE_WAIT
      refresh_wait
    when MODE_MOVER
      refresh_move(1)
    when MODE_MOVEL
      refresh_move(0)
    end
    rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
    self.contents.draw_text(rect, @commands[@index],1)
  end
#------------------------------------------------------------------------------
#  Refresh Start
#------------------------------------------------------------------------------
  def refresh_start
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / STARTUP_FRAMES
    r = RING_R - 1.0 * RING_R * @steps / STARTUP_FRAMES
    for i in 0...@item_max
      j = i - @index
      d = d1 * j + d2 * @steps
      x = @cx + ( r * Math.sin( d ) ).to_i
      y = @cy - ( r * Math.cos( d ) ).to_i
      draw_item(x, y, i)
    end
    @steps -= 1
    if @steps < 1
      @mode = MODE_WAIT
    end
  end
#------------------------------------------------------------------------------
#  Refresh Wait
#------------------------------------------------------------------------------
  def refresh_wait
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
      j = i - @index
      x = @cx + ( RING_R * Math.sin( d * j ) ).to_i
      y = @cy - ( RING_R * Math.cos( d * j ) ).to_i
      draw_item(x, y, i)
    end
  end
#------------------------------------------------------------------------------
#  Refresh Move
#------------------------------------------------------------------------------
  def refresh_move( mode )
    d1 = 2.0 * Math::PI / @item_max
    d2 = d1 / MOVING_FRAMES
    d2 *= -1 if mode != 0
    for i in 0...@item_max
      j = i - @index
      d = d1 * j + d2 * @steps
      x = @cx + ( RING_R * Math.sin( d ) ).to_i
      y = @cy - ( RING_R * Math.cos( d ) ).to_i
      draw_item(x, y, i)
    end
    @steps -= 1
    if @steps < 1
      @mode = MODE_WAIT
    end
  end
#------------------------------------------------------------------------------
#  Draw Item
#------------------------------------------------------------------------------
  def draw_item(x, y, i)
    rect = Rect.new(0, 0, @items[i].width, @items[i].height)
    if @index == i
      self.contents.blt( x, y, @items[i], rect )
      if @disabled[@index]
        self.contents.blt( x, y, ICON_DISABLE, rect )
      end
    else
      self.contents.blt( x, y, @items[i], rect, 128 )
      if @disabled[@index]
        self.contents.blt( x, y, ICON_DISABLE, rect, 128 )
      end
    end
  end
#------------------------------------------------------------------------------
#  Disable Item
#------------------------------------------------------------------------------
  def disable_item(index)
    @disabled[index] = true
  end
#------------------------------------------------------------------------------
#  Setup Move Start
#------------------------------------------------------------------------------
  def setup_move_start
    @mode = MODE_START
    @steps = STARTUP_FRAMES
    if  SE_STARTUP != nil and SE_STARTUP != ""
      Audio.se_play("Audio/SE/" + SE_STARTUP, 80, 100)
    end
  end
#------------------------------------------------------------------------------
#  Setup Move Move
#------------------------------------------------------------------------------
  def setup_move_move(mode)
    if mode == MODE_MOVER
      @index -= 1
      @index = @items.size - 1 if @index < 0
    elsif mode == MODE_MOVEL
      @index += 1
      @index = 0 if @index >= @items.size
    else
      return
    end
    @mode = mode
    @steps = MOVING_FRAMES
  end
#------------------------------------------------------------------------------
#  Animation
#------------------------------------------------------------------------------
  def animation?
    return @mode != MODE_WAIT
  end
end
#------------------------------------------------------------------------------
#  Window_RingMenuStatus
#------------------------------------------------------------------------------
class Window_RingMenuStatus < Window_Selectable
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
  def initialize
    super(204, 64, 232, 352)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = $chara_select[5]
    refresh
    self.active = false
    self.index = -1
  end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.windowskin = RPG::Cache.windowskin($chara_select[4])
    self.contents.font.name = $chara_select[0]
    self.contents.font.color = text_color($chara_select[1])
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      x = 80
      y = 80 * i
      actor = $game_party.actors[i]
      draw_actor_graphic(actor, x - 60, y + 65)
      draw_actor_name(actor, x, y + 2)
      draw_actor_hp(actor, x - 40, y + 26)
      draw_actor_sp(actor, x - 40, y + 50)
    end
  end
#------------------------------------------------------------------------------
#  Update Cursor Rect
#------------------------------------------------------------------------------
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
    end
  end
end

#------------------------------------------------------------------------------
#  Window_MenuGold
#------------------------------------------------------------------------------
class Window_MenuGold < Window_Base
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
  def initialize
    super(0, 0, $window_size[0], $window_size[1])
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $gold_text[0]
    self.contents.font.size = $gold_text[1]
    refresh
  end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.windowskin = RPG::Cache.windowskin($window_gold_skin)
    self.contents.font.color = text_color($gold_text[2])
    self.contents.draw_text(4, 0, 120, 32, $gold_text[4])
    self.contents.font.color = text_color($gold_text[3])
    self.contents.draw_text(4, 32, 120, 32, $game_party.gold.to_s, 2)
  end
end

And that's the quest log which should be selectable in the ring menu
Code:
 #//////////////////////////////////////////Questlog 2.0/////////////////////////////////////////////
#~~~~~~~~~~~~~~~~~~~~by Caesar~~~~~~~~~~~~~~~~~~~~
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#_________________________________________________

class Scene_Questlog
  def main
    @window_header = Window_Questlog_Header.new
    @window_titles = Window_Questlog_Titles.new
    description = ""
    picture = ""
    if $game_system.questlog.count > 0
      description = $game_system.questlog.quests[0].description
      picture = $game_system.questlog.quests[0].picture
    end
    @window_description = Window_Questlog_Description.new(
        description, picture)
    @index = @window_titles.index
    @spriteset = Spriteset_Map.new
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @window_header.dispose
    @window_titles.dispose
    @window_description.dispose
    @spriteset.dispose
  end
  #--------------------------------------------------------------------------
  def update
    @window_titles.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if @index != @window_titles.index
      @index = @window_titles.index
      @window_description.description = $game_system.questlog.quests[
          @window_titles.index].description
      @window_description.picture = $game_system.questlog.quests[
          @window_titles.index].picture
      @window_description.refresh
    end
  end
end
#=============
class Quest
  attr_reader :title
  attr_reader :description
  attr_reader :icon
  attr_reader :picture
  attr_accessor :enabled
  def initialize(title, description, icon="", picture="")
    @title = title
    @description = description
    @icon = icon
    @picture = picture
    @enabled = true
  end
end
#============
class Questlog
  attr_reader  :quests
  def initialize
    @quests = []
  end
  #-----------
  def add(quest, description="", icon="", picture="")
    return add(Quest.new(quest, description, icon, picture)) unless 
        quest.is_a?(Quest)
    i = index(quest.title)
    return @quests[i] = quest if i != nil
    #@quests.push(quest) # Quest wird unten eingefügt
    @quests.unshift(quest) # Quest wird oben eingefügt
  end
  #-----------
  def remove(title)
    @quests.delete_if{ |quest| quest.title == title}
  end
  #-----------
  def enable(title)
    set_enabled(title, true)
  end
  #-----------
  def disable(title)
   set_enabled(title, false)
  end
  #-----------
  def set_enabled(title, enabled)
    @quests.each do |quest|
      quest.enabled = enabled if quest.title == title
    end
  end
  #-----------
  def count
    return @quests.length
  end
  #------------
  def index(title)
    for i in 0..@quests.length-1
      return i if @quests[i].title == title
    end
    return nil
  end
  #------------
  def Questlog.add(title, description="", icon="", picture="")
    $game_system.questlog.add(title, description, icon, picture)
  end
  #------------
  def Questlog.remove(title)
    $game_system.questlog.remove(title)
  end
  #------------
  def Questlog.enable(title)
    $game_system.questlog.enable(title)
  end
  #------------
  def Questlog.disable(title)
    $game_system.questlog.disable(title)
  end
  #------------
  def Questlog.set_enabled(title)
    $game_system.questlog.set_enabled(title)
  end
end
#=============
class Window_Questlog_Description < Window_Base
  attr_accessor :description
  attr_accessor :picture
  def initialize(description, picture)
    super(275, 92, 300, 360)
    self.contents = Bitmap.new(width-32, height-32)
    self.contents.font.name = "Eden Mills"
    self.contents.font.size = 20
    @description = description
    @picture = picture
    refresh
  end
  #-----------
  def refresh
    self.contents.clear
    if (@picture != nil) && (not @picture == "")
      bitmap = RPG::Cache.picture(@picture)
      rect =  bitmap.rect
      self.contents.blt(width/2-rect.width/2-16, 0, bitmap, rect, 255)
      self.contents.draw_formatted_text(
          4, rect.height, 270, 328-rect.height, @description)
    else
      self.contents.draw_formatted_text(4, 0, 270, 328, @description)
    end
  end
end
#=============
class Window_Questlog_Titles < Window_Selectable
  def initialize
    super(65, 92, 210, 360)
    @item_max = $game_system.questlog.count
    self.contents = Bitmap.new(width-32, @item_max > 0 ? @item_max*32 : 32)
    self.contents.font.name = "Eden Mills"
    self.contents.font.size = 20
    self.index = 0
    @column_max = 1
    refresh
  end
  #-------------
  def refresh
    self.contents.clear
    for i in 0...$game_system.questlog.count
      quest = $game_system.questlog.quests[i]
      y = i*32
      self.contents.font.color = quest.enabled ? normal_color : disabled_color
      if (quest.icon != nil) && (not quest.icon == "")
        bitmap = RPG::Cache.icon(quest.icon)
        opacity = quest.enabled ? 255 : 128
        self.contents.blt(4, y+4, bitmap, Rect.new(0, 0, 24, 24), opacity)
        self.contents.draw_formatted_text(29, y, 150, 32, quest.title)
      else
        self.contents.draw_formatted_text(4, y, 150, 32, quest.title)
      end
    end
  end
end
#===========
class Window_Questlog_Header < Window_Base
  def initialize
    super(65, 28, 510, 64)
    self.contents = Bitmap.new(width-32, height-32)
    self.contents.font.name = "Eden Mills"
    self.contents.font.size = 26
    refresh
  end
  #------------
  def refresh
    self.contents.clear
    self.contents.draw_text(self.contents.rect, "Tagebuch", 1)
  end
end
#===========
class Scene_Map
  def call_questlog
    $game_temp.questlog_calling = false
    $game_player.straighten
    $scene = Scene_Questlog.new
  end
end
#===========
class Game_System
  attr_reader  :questlog
  alias init initialize
  def initialize
    init
    @questlog = Questlog.new
  end
end
#===========
class Game_Temp
  attr_accessor :questlog_calling
  alias init initialize
  def initialize
    init
    @questlog_calling = false
  end
end
#==============
class Bitmap
  def draw_shadow_text(x, y, width, height, str, align=0)
    color = font.color.dup
    font.color = Color.new(192, 192, 192, 156)
    draw_text(x+2, y+2, width, height, str, align)
    font.color = color
    draw_text(x, y, width, height, str, align)
  end
  #----------------
  def draw_formatted_text(x, y, width, height, str, align=0)
    str = str.dup
    color = font.color.dup
    bold = font.bold
    italic = font.italic
    size = font.size
    name = font.name.dup
    #::::::::::
    shadow = false
    underlined = false
    str.gsub!(/<br>/) {"\n"}
    str.gsub!(/\\\\/) {"\00"}
    str.gsub!(/<b>/) {"\01"}
    str.gsub!(/<\/b>/) {"\02"}
    str.gsub!(/<i>/) {"\03"}
    str.gsub!(/<\/i>/) {"\04"}
    str.gsub!(/<color=(#?[0-9a-z]+)>/) {"\05[#{$1}]"}
    str.gsub!(/<\/color>/) {"\06"}
    str.gsub!(/<shadow>/) {"\16"}
    str.gsub!(/<\/shadow>/) {"\17"}
    str.gsub!(/<small>/) {"\20"}
    str.gsub!(/<\/small>/) {"\21"}
    str.gsub!(/<big>/) {"\23"}
    str.gsub!(/<\/big>/) {"\21"}
    str.gsub!(/<size=([0-9]+)>/) {"\24[#{$1}]"}
    str.gsub!(/<\/size>/) {"\21"}
    str.gsub!(/<font=([A-Za-z0-9\s]+)>/) {"\25[#{$1}]"}
    str.gsub!(/<\/font>/) {"\26"}
    str.gsub!(/<u>/) {"\27"}
    str.gsub!(/<\/u>/) {"\30"}
    ix = 0
    iy = 0
    while ((c = str.slice!(/./m)) != nil)
      if c == "\00" # \\
        c = "\\"
      end
      if c == "\01" # <b>
        font.bold = true
      end
      if c == "\02" #</b>
        font.bold = false
      end
      if c == "\03" # <i>
        font.italic = true
      end
      if c == "\04" # </i>
        font.italic = false
      end
      if c == "\05" # <color=xxx>
        str.sub!(/\[(#?[0-9a-z]+)\]/, "")
        if $1[0] == 35
          col = Color.decode($1)
        elsif $1.to_i != 0
          col = Window_Base.text_color($1.to_i)
        else
          col = Color.get($1)
        end
        font.color = col
      end
      if c == "\06" # </color>
        font.color = color
      end
      if c == "\16" # <shadow>
        shadow = true
      end
      if c == "\17" # </shadow>
        shadow = false
      end
      if c == "\20" # <small>
        font.size -= 5
        font.size = 1 if font.size < 1
      end
      if c == "\21" # </small> </big> </size>
        font.size = size
      end
      if c == "\23" # <big>
        font.size += 5
      end
      if c == "\24" # <size=xx>
        str.sub!(/\[([0-9]+)\]/, "")
        font.size = $1.to_i
        font.size = 1 if font.size < 1
      end
      if c == "\25" # <font=xxx>
        str.sub!(/\[([A-Za-z0-9\s]+)\]/, "")
        font.name = $1 if Font.exist?($1)
      end
      if c == "\26" # </font>
        font.name = name
      end
      if c == "\27" # <u>
        underlined = true
      end
      if c == "\30" # </u>
        underlined = false
      end
      if c == "\n"
        iy += 32
        ix = 0
      end
      #:::::::::
      if shadow
        draw_shadow_text(x+ix+4, y+iy, 40, 32, c)
      else
        draw_text(x+ix+4, y+iy, 40, 32, c)
      end
      w = text_size(c).width
      if underlined
        fill_rect(x+ix+4, y+iy+text_size("T").height+3, w, 2, font.color)
      end
      ix += w
    end
    #::::::::::
    font.color = color
    font.bold = bold
    font.italic = italic
    font.size = size
    font.name = name
  end
end
#==============
class Color
  def Color.get(string)
    return Color.white if string == "white"
    return Color.black if string == "black"
    return Color.red if string == "red"
    return Color.green if string == "green"
    return Color.blue if string == "blue"
    return Color.yellow if string == "yellow"
    return Color.cyan if string == "cyan"
    return Color.magenta if string == "magenta"
    return Color.light_gray if string == "light_gray"
    return Color.gray if string == "gray"
    return Color.dark_gray if string == "dark_gray"
    return Color.pink if string == "pink"
    return Color.orange if string == "orange"
    return Color.white
  end
  #------------
  def Color.decode(hex)
    return Color.decode(hex[1..hex.length]) if hex[0] == 35
    hex.downcase!
    red = hex[0..1].hex
    green = hex[2..3].hex
    blue = hex[4..5].hex
    alpha = hex.length == 8 ? hex[6..7].hex : 255
    return Color.new(red, green, blue, alpha)
  end
  #------------
  def Color.white(alpha=255)
    return Color.new(255, 255, 255, alpha)
  end
  #-----------
  def Color.black(alpha=255)
    return Color.new(0, 0, 0, alpha)
  end
  #----------
  def Color.red(alpha=255)
    return Color.new(255, 0, 0, alpha)
  end
  #----------
  def Color.green(alpha=255)
    return Color.new(0, 255, 0, alpha)
  end
  #---------
  def Color.blue(alpha=255)
    return Color.new(0, 0, 255, alpha)
  end
  #----------
  def Color.yellow(alpha=255)
    return Color.new(255, 255, 0, alpha)
  end
  #----------
  def Color.cyan(alpha=255)
    return Color.new(0, 255, 255, alpha)
  end
  #----------
  def Color.magenta(alpha=255)
    return Color.new(255, 255, 0, alpha)
  end
  #----------
  def Color.light_gray(alpha=255)
    return Color.new(192, 192, 192, alpha)
  end
  #-----------
  def Color.gray(alpha=255)
    return Color.new(128, 128, 128, alpha)
  end
  #-----------
  def Color.dark_gray(alpha=255)
    return Color.new(64, 64, 64, alpha)
  end
  #-----------
  def Color.pink(alpha=255)
    return Color.new(255, 175, 175, alpha)
  end
  #-----------
  def Color.orange(alpha=255)
    return Color.new(255, 200, 0, alpha)
  end
end
#=====================
class Window_Base < Window
  def Window_Base.text_color(n)
    case n
    when 0
      return Color.new(255, 255, 255, 255)
    when 1
      return Color.new(128, 128, 255, 255)
    when 2
      return Color.new(255, 128, 128, 255)
    when 3
      return Color.new(128, 255, 128, 255)
    when 4
      return Color.new(128, 255, 255, 255)
    when 5
      return Color.new(255, 128, 255, 255)
    when 6
      return Color.new(255, 255, 128, 255)
    when 7
      return Color.new(192, 192, 192, 255)
    else
      return Color.white
    end
  end
end

The menu gives me these six possibilities:
Items
Skills
Equip
Stats
Save
Quit

I would like to have another option which leads to the quest log above.
That there are seven options instead of six.

I have no idea how to script and that's why I'm asking you. Any help would be greatly
appriciated!

Thank you in advance for your time and effort.
 
you still looking for some one to do this??

i've worked with the ring menu for a long time.. and im sure i could do this..i had to practicaly do the same thing when i need to add a materia system in. =]
 

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