Partagez
Aller en bas
avatar
Kira'h
Membre

Nombre de messages : 588
Age : 23
Localisation : Devant mon écran... Si pas, dans mon jeu^^
Distinction : aucune
Date d'inscription : 25/02/2012

[Résolu]Fusion de script RingMenu + Quêtes

le Sam 1 Juin 2013 - 17:56
Salut tout le monde =)
C'est un petit problème et là je m'adresse à tout ceux qui s'y connaissent bien en RGSS2 study
J'utilise le script de Syvkal sauf qu'il a été un peu retoucher et je compte y insérer un menu de quête mais voilà:
-Lorsque j'installe seulement le script de Syvkal(Ring menu) voilà ça le fait assez bien Smile
Spoiler:
-Mais dès que je rajoute la ligne nécessaire pour afficher le menu de quête, ça me ramène aux menu de base scratch
Spoiler:
Là honnêtement, j'ai essayer de biduler certain truc mais rien à faire :-/
Voici le script de Syvkal que j'utilise
Code:
#==============================================================================
# ** Ring Menu
#-------------------------------------------------------------------------------
# by Syvkal
# Version 1.1
# 06-23-08
#==============================================================================

  #===================================================#
  #  **  C O N F I G U R A T I O N  S Y S T E M  **  #
  #===================================================#
 
  # Amount of frames for Startup Animation
  STARTUP_FRAMES = 20
  # Amount of frames for Movement Animation
  MOVING_FRAMES = 15
  # Radius of the Menu Ring
  RING_R = 75
  # Disabled icon to display when disabled
  ICON_DISABLE= Cache::picture('Icon_Disable')
  #-------------D-O---N-O-T---T-O-U-C-H---------------#
 
  class Scene_Title < Scene_Base
    alias game_objects_original create_game_objects
    def create_game_objects
      game_objects_original
 
  #-------------D-O---N-O-T---T-O-U-C-H---------------#
 
  # As this script allows you to make a custom Menu I thought to make it easier
  # I would make it possible to add extra Menu Options from here
 
  # All you need to do is specify the Text to display, the icon and the command
  # The command must be in a STRING
  # Simply add to the array below :

  $game_ring_menu = [
 
  # Menu Option 0  eg. Item
  [Vocab::item, Cache::picture('Icon_Items'), "$scene = Scene_Item.new"],
 
  # Menu Option 1  eg. Status
  [Vocab::status, Cache::picture('Icon_Status'), "$scene = Scene_Status.new"],
   
     
  #---------------------------------------------------#
  #  **      I N S E R T  M O R E  H E R E      **  #
  #---------------------------------------------------#
 
  # Preferably Insert your custom Menu Options Here
  # Otherwise the existing Menu Options will return to wrong point on the Menu
   
 
  # Menu Option 2  eg. Quest Log
  ["Quest", Cache::picture('Icon_journal'), "$scene = Scene_Quest.new"],
 
  # Menu Option 3  eg. record log
  ["Records", Cache::picture('Icon_record'), "$scene = Custom_List.new(0, 0, false)"],

  # Menu Option 4  eg. Bestiary
  ["Party", Cache::picture('Icon_party'), "$scene = Scene_PartyChanger.new"],
 
  # Menu Option 5  eg. Save
  ["Save Game", Cache::picture('Icon_Save'), "$scene = Scene_File.new(true, false, false)"],
 
  # Menu Option 6  eg. Load
  ["Load Game", Cache::picture('Icon_Load'), "$scene = Scene_File.new(false, false, false)"],
 
  # Menu Option 7  eg. End Game
  [Vocab::game_end, Cache::picture('Icon_End'), "$scene = Scene_End.new"],
 
 
  ] # <--- Do no Delete This
 
  #===================================================#
  #  **    E N D  C O N F I G U R A T I O N    **  #
  #===================================================#
  end
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  Edited to add Ring Menu
#==============================================================================

class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias initialize_original initialize
  alias start_selection_original start_actor_selection
  alias end_selection_original end_actor_selection
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0, move = true)
    @move = move
    initialize_original(menu_index)
  end
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    create_command_window
    @gold_window = Window_Gold.new(0, 360)
    @location_window = Window_location.new(0, 0)
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @gold_window.dispose
    @status_window.dispose if @status_window
    @location_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @command_window.update
    @gold_window.update
    @status_window.update if @status_window
    @location_window.update
    if @command_window.active
      update_command_selection
    elsif @status_window.active
      update_actor_selection
    end
  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    commands = []
    for i in 0...$game_ring_menu.size
      commands.push($game_ring_menu[i][0])
    end
    icons = []
    for i in 0...$game_ring_menu.size
      icons.push($game_ring_menu[i][1])
    end
    @command_window = Window_RingMenu.new(232, 164, commands, icons, @move, @menu_index)
    if $game_party.members.size == 0
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    if $game_system.save_disabled
      @command_window.disable_item(5)
    end
    if $game_switches[200]
      @command_window.disable_item(0)
    end
    if $game_switches[201]
      @command_window.disable_item(1)
    end
    if $game_switches[202]
      @command_window.disable_item(2)
    end
    if $game_switches[203]
      @command_window.disable_item(3)
    end
    if $game_switches[204]
      @command_window.disable_item(4)
    end
    if $game_switches[205]
      @command_window.disable_item(5)
    end
    if $game_switches[206]
      @command_window.disable_item(6)
    end
    if $game_switches[207]
      @command_window.disable_item(7)
    end
    if $game_switches[208]
      @command_window.disable_item(8)
    end
  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_status_window
    names = []
    chars = []
    for i in 0...$game_party.members.size
      names[i] = $game_party.members[i].name
      chars[i] = $game_party.members[i]
    end
    @status_window = Window_RingMenu.new(255, 200, names, chars, true, $game_party.last_actor_index, true)
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 5
        Sound.play_buzzer
        return
      elsif $game_switches[200] and @command_window.index == 0
        Sound.play_buzzer
        return
      elsif $game_switches[201] and @command_window.index == 1
        Sound.play_buzzer
        return
      elsif $game_switches[202] and @command_window.index == 2
        Sound.play_buzzer
        return
      elsif $game_switches[203] and @command_window.index == 3
        Sound.play_buzzer
        return
      elsif $game_switches[204] and @command_window.index == 4
        Sound.play_buzzer
        return
      elsif $game_switches[205] and @command_window.index == 5
        Sound.play_buzzer
        return
      elsif $game_switches[206] and @command_window.index == 6
        Sound.play_buzzer
        return
      elsif $game_switches[207] and @command_window.index == 7
        Sound.play_buzzer
        return       
      end
      Sound.play_decision
      eval($game_ring_menu[@command_window.index][2])
    end
  end
  #--------------------------------------------------------------------------
  # * Start Actor Selection
  #--------------------------------------------------------------------------
  def start_actor_selection
    @command_window.active = false
    @command_window.visible = false
    create_status_window
    if $game_party.last_actor_index < @status_window.item_max
      @status_window.index = $game_party.last_actor_index
    else
      @status_window.index = 0
    end
  end
  #--------------------------------------------------------------------------
  # * End Actor Selection
  #--------------------------------------------------------------------------
  def end_actor_selection
    @command_window.active = true
    @command_window.visible = true
    @status_window.dispose if @status_window
    @status_window = nil
  end
  #--------------------------------------------------------------------------
  # * Update Actor Selection
  #--------------------------------------------------------------------------
  def update_actor_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_actor_selection
    elsif Input.trigger?(Input::C)
      $game_party.last_actor_index = @status_window.index
      Sound.play_decision
      eval($game_ring_menu[@command_window.index][3])
    end
  end
end

#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
#  Edited to return to the menu properly when loading
#==============================================================================

class Scene_File
  alias return_scene_original return_scene
  def return_scene
    if @from_title
      $scene = Scene_Title.new
    elsif @from_event
      $scene = Scene_Map.new
    else
      if @saving
        $scene = Scene_Menu.new($game_ring_menu.size - 3)
      else
        $scene = Scene_Menu.new($game_ring_menu.size - 2)
      end
    end
  end
end

#==============================================================================
# ** Scene_End
#------------------------------------------------------------------------------
#  Edited to return to the menu properly due to loading being added
#==============================================================================

class Scene_End
  alias return_scene_original return_scene
  def return_scene
    $scene = Scene_Menu.new($game_ring_menu.size - 1)
  end
end

#==============================================================================
# ** Window_Location
#------------------------------------------------------------------------------
#  This class shows the current map name.
#==============================================================================

class Window_location < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 160, (WLH*2) + 32)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    $maps = load_data("Data/MapInfos.rvdata")
    @map_id = $game_map.map_id
    @currmap = $maps[@map_id].name
    self.contents.font.color = system_color
    self.contents.draw_text(0, -4, 128, 32, "Location :")
    self.contents.font.color = normal_color
    self.contents.draw_text(0, -4+WLH, 128, 32, @currmap, 1)
  end
end

#==============================================================================
# ** Window_RingMenu
#------------------------------------------------------------------------------
#  This Window creates a Ring Menu system
#==============================================================================

class Window_RingMenu < Window_Base 
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :index
  attr_reader  :item_max
  #--------------------------------------------------------------------------
  # * Refresh Setup
  #--------------------------------------------------------------------------
  START = 1
  WAIT  = 2
  MOVER = 3
  MOVEL = 4
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(center_x, center_y, commands, items, move = true, index = 0, character = false)
    super(0, 0, 544, 416)
    self.contents = Bitmap.new(width-32, height-32)
    self.opacity = 0
    @move = move
    @char = character
    @startup = STARTUP_FRAMES
    @commands = commands
    @item_max = commands.size
    @index = index
    @items = items
    @disabled = []
    for i in 0...commands.size-1
      @disabled[i] = false
    end
    @cx = center_x
    @cy = center_y
    start_setup
    refresh
  end
  #--------------------------------------------------------------------------
  # * Start Setup
  #--------------------------------------------------------------------------
  def start_setup
    @mode = START
    @steps = @startup
  end
  #--------------------------------------------------------------------------
  # * Disable index
  #    index : item number
  #--------------------------------------------------------------------------
  def disable_item(index)
    @disabled[index] = true
  end
  #--------------------------------------------------------------------------
  # * Determines if is moving
  #--------------------------------------------------------------------------
  def animation?
    return @mode != WAIT
  end
  #--------------------------------------------------------------------------
  # * Determine if cursor is moveable
  #--------------------------------------------------------------------------
  def cursor_movable?
    return false if (not visible or not active)
    return false if (@opening or @closing)
    return false if animation?
    return true
  end
  #--------------------------------------------------------------------------
  # * Move cursor right
  #--------------------------------------------------------------------------
  def cursor_right
    @index -= 1
    @index = @items.size - 1 if @index < 0
    @mode = MOVER
    @steps = MOVING_FRAMES
  end
  #--------------------------------------------------------------------------
  # * Move cursor left
  #--------------------------------------------------------------------------
  def cursor_left
    @index += 1
    @index = 0 if @index >= @items.size
    @mode = MOVEL
    @steps = MOVING_FRAMES
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if self.active
      if cursor_movable?
        last_index = @index
        if Input.repeat?(Input::DOWN) or Input.repeat?(Input::RIGHT)
          cursor_right
        end
        if Input.repeat?(Input::UP) or Input.repeat?(Input::LEFT)
          cursor_left
        end
        if @index != last_index
          Sound.play_cursor
        end
      end
      refresh
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh   
    self.contents.clear
    case @mode
    when START
      refresh_start
    when WAIT
      refresh_wait
    when MOVER
      refresh_move(1)
    when MOVEL
      refresh_move(0)
    end
    rect = Rect.new(18, 196, self.contents.width-32, 32)
    self.contents.draw_text(rect, @commands[@index], 1)
  end
  #--------------------------------------------------------------------------
  # * Refresh Start Period
  #--------------------------------------------------------------------------
  def refresh_start
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / @startup
    for i in 0...@item_max
      j = i - @index
      if @move
        r = RING_R - 1.0 * RING_R * @steps / @startup
        d = d1 * j + d2 * @steps
      else
        r = RING_R
        d = d1 * j
      end
      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 = WAIT
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh Wait Period
  #--------------------------------------------------------------------------
  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 Movement Period
  #--------------------------------------------------------------------------
  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 = WAIT
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #    x    : draw spot x-coordinate
  #    y    : draw spot y-coordinate
  #    index : item number
  #--------------------------------------------------------------------------
  def draw_item(x, y, index)
    if @char
      if @index == index
        draw_character(@items[index].character_name, @items[index].character_index , x, y)
        if @mode == WAIT
          draw_actor_hp_ring(@items[index], @cx, @cy-16, 50, 6, 84, 270, true)
          draw_actor_mp_ring(@items[index], @cx, @cy-16, 50, 6, 84, 180, false)
          draw_actor_exp_ring(@items[index], @cx, @cy-16, 50, 6, 155, 12, false)
        end
      else
        draw_character(@items[index].character_name, @items[index].character_index , x, y, false)
      end
    else
      rect = Rect.new(0, 0, @items[index].width, @items[index].height)
      if @index == index
        self.contents.blt( x, y, @items[index], rect )
        if @disabled[@index]
          self.contents.blt( x, y, ICON_DISABLE, rect )
        end
      else
        self.contents.blt( x, y, @items[index], rect, 128 )
      end
    end
  end
end

#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
#  Edited to allow disabled character icons
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # * Draw Character Graphic
  #--------------------------------------------------------------------------
  def draw_character(character_name, character_index, x, y, enabled = true)
    return if character_name == nil
    bitmap = Cache.character(character_name)
    sign = character_name[/^[\!\$]./]
    if sign != nil and sign.include?('$')
      cw = bitmap.width / 3
      ch = bitmap.height / 4
    else
      cw = bitmap.width / 12
      ch = bitmap.height / 8
    end
    n = character_index
    src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, enabled ? 255 : 128)
  end
  end
Code:
## All this does is make the quest menu be accessible from the menu, you      ##
## have to use this                                                          ##

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
 
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = QUEST_CONFIG::MENUNAME
    s6 = Vocab::save
    s7 = Vocab::game_end
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
    @command_window.index = @menu_index
    if $game_party.members.size == 0          # If number of party members is 0
      @command_window.draw_item(0, false)    # Disable item
      @command_window.draw_item(1, false)    # Disable skill
      @command_window.draw_item(2, false)    # Disable equipment
      @command_window.draw_item(3, false)    # Disable status
    end
    if $game_system.save_disabled            # If save is forbidden
      @command_window.draw_item(5, false)    # Disable save
    end
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 5
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.index
      when 0      # Item
        $scene = Scene_Item.new
      when 1,2,3  # Skill, equipment, status
        start_actor_selection
      when 4 # Quests
        $scene = Scene_Quest.new
      when 5    # Save
        $scene = Scene_File.new(true, false, false)
      when 6    # End Game
        $scene = Scene_End.new
      end
    end
  end
end
Pour info, j'ai modifié la ligne 55 du script de Syvkal.
Merci d'avance à qui voudra bien m'aider Smile


Dernière édition par Deuss le Sam 1 Juin 2013 - 19:06, édité 1 fois
avatar
Kira'h
Membre

Nombre de messages : 588
Age : 23
Localisation : Devant mon écran... Si pas, dans mon jeu^^
Distinction : aucune
Date d'inscription : 25/02/2012

Re: [Résolu]Fusion de script RingMenu + Quêtes

le Sam 1 Juin 2013 - 19:06
Désoler du double-post mais je devais vous annoncez que je viens de RÉGLER mon problème
Héhé comme quoi faut tout donner dans un problème!!
Bon allez je tape ce topic en Résolus Wink
avatar
Korndor
Staffeux retraité

Nombre de messages : 4959
Age : 105
Localisation : Erem Vehyx
Distinction : Champion de boxe et au lit ! :O [Wax]
Être Mythique [Mister]
Papi Korndor qui a l'ostéoporose [Skillo]
Soldat Ikéa [Coco']
Un bonhomme, un vrai ! [Neresis]
Vieillard acariâtre [Didier Gustin]
Date d'inscription : 16/12/2007
http://www.rpgmakervx-fr.com/

Re: [Résolu]Fusion de script RingMenu + Quêtes

le Sam 1 Juin 2013 - 19:08
Merci, mais tu peux nous partager ta solution au cas où d'autres recherchent ce problème ? Smile

J'ai édité le titre de ton topic pour qu'il soit plus éloquent
avatar
Kira'h
Membre

Nombre de messages : 588
Age : 23
Localisation : Devant mon écran... Si pas, dans mon jeu^^
Distinction : aucune
Date d'inscription : 25/02/2012

Re: [Résolu]Fusion de script RingMenu + Quêtes

le Sam 1 Juin 2013 - 19:22
C'est ultra simple mais il faut savoir de base que le script de Ring menu me provient d'un projet qui a été fait pour
être ouvert et renferme une tonne de script bien utile dont celui-ci. L'auteur a fait en sorte de préparer le
script Ring menu de sorte à ce que chacun puissent le modifier à sa guise Smile
Et donc, il faut placer cette ligne
Code:
$scene = Scene_Quest.new
Bon disons à la "place" (je dis ça car cette emplacement était déjà fait pour les quêtes)
de cette ligne "la 55" du script Ring menu.
Code:
["Quest", Cache::picture('Icon_journal'), "$scene = Scene_Quest.new"],
Ensuite il faut placer le script de quête au dessus de celui du Ring menu et c'est fait Wink

PS: Il faut savoir que je n'ai poster ici qu'une partie du script de quête, et il est nécessaire d'avoir l'autre
pour qu'il fonctionne. Je pourrais bien poster le script entièrement mais je pense, nan je suis même sur que ce
script à déjà été proposer =)
Contenu sponsorisé

Re: [Résolu]Fusion de script RingMenu + Quêtes

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum