Le Deal du moment : -55%
Coffret d’outils – STANLEY – ...
Voir le deal
21.99 €

Aller en bas
Bencoco
Bencoco
Membre

Nombre de messages : 31
Age : 33
Localisation : Alsace
Distinction : aucune
Date d'inscription : 04/03/2012

Ring Menu Empty Ring Menu

Mar 13 Mar 2012 - 0:28
Bonjour, (bonsoir) à tous

En me promenant sur le forum je suis tombé sur un script de Ring menu mais pour RPG MAker Vx ...

Du coup je l'ai adapté pour Ace Smile

Voilà ce que ça donne :

Ring Menu Ring_m10

Auteur : DouglasMF

Adaptation : Bencoco

Le script simplement à coller sous Main :

Code:
=begin
Script Criado por DouglasMF das comunidades VilaMakers Online e RPG Maker Brasil
Com base no script Ring Menu feito por XRXS, Dubealex e Hypershadow180

--Inscruction--
Pour installer ce script, mettez le au dessus de Main

=end
#==============================================================================
# Scene_Menu
#------------------------------------------------------------------------------
# Esta classe controla o conjunto de objetos que forma o RingMenu
#==============================================================================

#===============================================================
#                         
#                www.rpgmakervx-fr.com                                         
#     
#===============================================================

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # Initialisation
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # Initialise les objets du menu
  #--------------------------------------------------------------------------
  def start
    super
    @spriteset = Spriteset_Map.new
    @gold_window = Window_Gold.new
    @gold_window.y = Graphics.height - @gold_window.height
    @gold_window.opacity = 0
    $local_show = true
    @map_name_window = Window_MapName.new
    @map_name_window.open
    @status_window = Window_MenuStatus.new(160, 0)
    px = $game_player.screen_x - 16
    py = $game_player.screen_y - 28
    @ring_menu = Window_RingMenu_Comando.new(px,py)
    @status_window.z = @ring_menu.z + 20
    @status_window.visible = false
  end
  #--------------------------------------------------------------------------
  # Ferme les objets du menu
  #--------------------------------------------------------------------------
  def terminate
    super
    @spriteset.dispose
    @ring_menu.dispose
    @gold_window.dispose
    @map_name_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # Actualise les objets du menu
  #--------------------------------------------------------------------------
  def update
    super
    @ring_menu.update
    @gold_window.update
    @map_name_window.update
    @spriteset.update
    @status_window.update
    if @ring_menu.active
      update_command_selection
    elsif @status_window.active
      update_actor_selection
    end
    if @status_window.active
      $shift = 1
    else
      $shift = 0
    end
  end
 

  #--------------------------------------------------------------------------
  # Actualisation des commandes et sélection menu
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $local_show = false
      SceneManager.call(Scene_Map)
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @ring_menu.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @ring_menu.index == 4
        Sound.play_buzzer
        return
      end
      Sound.play_ok
      case @ring_menu.indice
      when 0
        SceneManager.call(Scene_Item)
      when 1,2,3
        command_personal
      when 4
        SceneManager.call(Scene_Save)
      when 5
        SceneManager.call(Scene_End)
      end
    end
    if Input.trigger?(Input::LEFT)  or  Input.trigger?(Input::UP)
      Sound.play_cursor
      @ring_menu.girar(3)
      return
    end
    if Input.trigger?(Input::RIGHT) or  Input.trigger?(Input::DOWN)
      Sound.play_cursor
      @ring_menu.girar(4)
      return
    end
  end

  #--------------------------------------------------------------------------
 
  def command_personal
    @ring_menu.active = false
    @status_window.visible = true
    @status_window.select_last
    @status_window.activate
    @status_window.set_handler(:ok,    method(:on_personal_ok))
    @status_window.set_handler(:cancel, method(:on_personal_cancel))
  end
 
  #--------------------------------------------------------------------------
 
  def on_personal_cancel
    @status_window.unselect
    @status_window.visible = false
    @ring_menu.active = true
  end
 
  #--------------------------------------------------------------------------
  # choix perso ok
  #--------------------------------------------------------------------------
  def on_personal_ok
    case @ring_menu.indice
    when 1
      SceneManager.call(Scene_Skill)
    when 2
      SceneManager.call(Scene_Equip)
    when 3
      SceneManager.call(Scene_Status)
    end
  end
 
  #--------------------------------------------------------------------------
  # Termine la selection du chara
  #--------------------------------------------------------------------------
  def end_actor_selection
    @ring_menu.active = true
    @status_window.active = false
    @status_window.visible = false
    @status_window.index = -1
  end
  #--------------------------------------------------------------------------
  # Actualisation sélection chara
  #--------------------------------------------------------------------------
  def update_actor_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_actor_selection
    elsif Input.trigger?(Input::C)
      Sound.play_ok
      case @ring_menu.indice
      when 1
        SceneManager.call(Scene_Skill)
      when 2
        SceneManager.call(Scene_Equip)
      when 3
        SceneManager.call(Scene_Status)
      end
    end
  end
end

#==============================================================================
# Window_RingMenu_Comando
#------------------------------------------------------------------------------
# Cette classe crée le RingMenu
#==============================================================================

class Window_RingMenu_Comando < Window_Base
 
  DurIni = 30
  DurMov = 15
  RaioAnel = 64
  ModoIni = 1
  ModoEsp = 2
  ModoMD = 3
  ModoME = 4
  SE_Inicio = ""
 
  attr_accessor :indice
  #--------------------------------------------------------------------------
  # Initialisation objets
  #--------------------------------------------------------------------------
  def initialize(centro_x,centro_y)
    super(0, 0, 544, 416)
    self.opacity = 0
    self.contents.font.size = 16
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = Vocab::game_end
    @item_name = [s1,s2,s3,s4,s5,s6]
    @item_max = 6
    @item_icon = [260,112,170,121,117,1]
    @item_hab = [true,true,true,true,true,true]
    @indice = 0
    @cx = centro_x - 12
    @cy = centro_y - 12
    inicia_menu
    refresh
  end
  #--------------------------------------------------------------------------
  # Actualisation objets
  #--------------------------------------------------------------------------
  def update
    super
    refresh
  end
  #--------------------------------------------------------------------------
  # Actualisation objets
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    case @modo
    when ModoIni
      refresh_inicio
    when ModoEsp
      refresh_espera
    when ModoMD
      refresh_mover(1)
    when ModoME
      refresh_mover(0)
    end
    sw = self.contents.width
    rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
    self.contents.draw_text(rect, @item_name[@indice],1)
  end
  #--------------------------------------------------------------------------
  # Ouvre le menu
  #--------------------------------------------------------------------------
  def refresh_inicio
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / DurIni
    r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( r * Math.sin( d ) ).to_i
      y = @cy - ( r * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Actualisation menu
  #--------------------------------------------------------------------------
  def refresh_espera
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
      j = i - @indice
      x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
      desenha_item(x, y, i)
    end
  end
  #--------------------------------------------------------------------------
  # Mouvement du menu
  #--------------------------------------------------------------------------
  def refresh_mover(modo)
    d1 = 2.0 * Math::PI / @item_max
    d2 = d1 / DurMov
    d2 *= -1 if modo != 0
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Desenha o icone
  #--------------------------------------------------------------------------
  def desenha_item(x, y, i)
    if @indice == i
      self.cursor_rect.set(x-4, y-4, 32, 32)
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    else
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    end
  end
  #--------------------------------------------------------------------------
  # initialise le menu
  #--------------------------------------------------------------------------
  def inicia_menu
    @modo = ModoIni
    @passos = DurIni
    if  SE_Inicio != nil and SE_Inicio != ""
      Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
    end
  end
  #--------------------------------------------------------------------------
  # fait tourner le menu
  #--------------------------------------------------------------------------
  def girar(modo)
    if modo == ModoMD
      @indice -= 1
      @indice = @item_hab.size - 1 if @indice < 0
    elsif modo == ModoME
      @indice += 1
      @indice = 0 if @indice >= @item_hab.size
    else
      return
    end
    @modo = modo
    @passos = DurMov
  end
 
end

#==============================================================================
# Window_Selectable
#------------------------------------------------------------------------------
# Corrige un bug au niveau du déplacement du curseur
# dans la fenêtre de selection de chara
#==============================================================================


class Window_Selectable < Window_Base
  def process_cursor_move
    return unless cursor_movable?
    last_index = @index
   
    if $shift == 1
      cursor_down (Input.trigger?(:UP))  if Input.repeat?(:UP)
      cursor_up  (Input.trigger?(:DOWN))    if Input.repeat?(:DOWN)
    else
      cursor_down (Input.trigger?(:DOWN))  if Input.repeat?(:DOWN)
      cursor_up  (Input.trigger?(:UP))    if Input.repeat?(:UP)
    end
    cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
    cursor_left (Input.trigger?(:LEFT))  if Input.repeat?(:LEFT)
    cursor_pagedown  if !handle?(:pagedown) && Input.trigger?(:R)
    cursor_pageup    if !handle?(:pageup)  && Input.trigger?(:L)
    Sound.play_cursor if @index != last_index
  end
end
#==============================================================================
# Window_MapName
#------------------------------------------------------------------------------
# Affiche l'emplacement avec le même style que le jeu
#==============================================================================
class Window_MapName < Window_Base
  $local_show = false
  def update
    super
    if $local_show == false
      if @show_count > 0 && $game_map.name_display
        update_fadein
        @show_count -= 1
      else
        update_fadeout
      end
    else
      update_fadein
    end
  end
end

#==============================================================================
# ■ Window_Gold
#------------------------------------------------------------------------------
#  Permet d'afficher l'argent sur un fond similaire à celui de la map
#==============================================================================

class Window_Gold < Window_Base

  def refresh
    contents.clear
    draw_background(contents.rect)
        draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
  end
 
  def draw_background(rect)
    temp_rect = rect.clone
    temp_rect.width /= 2
    contents.gradient_fill_rect(temp_rect, Color.new(0, 0, 0, 0),
    Color.new(152, 99, 39, 192))
    temp_rect.x = temp_rect.width
    contents.gradient_fill_rect(temp_rect, Color.new(152, 99, 39, 192),
    Color.new(0, 0, 0, 0))
  end
 
end

 

J'espère que ça pourra servir Smile

Nivvdiy
Nivvdiy
Membre

Nombre de messages : 162
Age : 33
Localisation : Dans un cryogenisateur jusqu'en l'an 2999, 11 mois et 31 jours!
Distinction : aucune
Date d'inscription : 29/02/2008

Ring Menu Empty Re: Ring Menu

Mar 13 Mar 2012 - 9:57
Classe, bien joué. Je vais pouvaoir l'utiliser pour apprendre à faire des menus entirement personnalisé et aussi dans des projet Ace.
Gummy
Gummy
Staffeux retraité

Nombre de messages : 2666
Age : 32
Localisation : Belgique
Distinction : Modérateur imprévisible

Papy Lolo' [Nabots Nimousse]


Date d'inscription : 27/01/2008

Ring Menu Empty Re: Ring Menu

Mar 13 Mar 2012 - 10:52
Merci pour l'adaptation, +3pts de participation Smile
Lityk
Lityk
Membre

Nombre de messages : 173
Age : 31
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011

Ring Menu Empty Re: Ring Menu

Dim 18 Mar 2012 - 14:22
Pas mal !
Est-il possible de l'adapter avec ses propres images ?
Quels noms devront nous donner aux petites images dans le dossier du jeu ?
Nozvez
Nozvez
Membre

Nombre de messages : 354
Distinction : aucune
Date d'inscription : 16/03/2012

Ring Menu Empty Re: Ring Menu

Dim 18 Mar 2012 - 16:47
Les images utilisées sont celles des icônes (dans le dossier System du RTP). Dans le code elles sont là :

s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@item_name = [s1,s2,s3,s4,s5,s6]
@item_max = 6
@item_icon = [260,112,170,121,117,1]

Lignes 209 à 217.
Pour changer les images et mettre celles de d'autres icônes il te faut changer les numéros (le numéro 1 correspondant à la première image en haut à gauche de l'"IconeSet", et par première image, j'entends la VRAIE première image, pas le carré invisible au début), le numéro 112, lui, correspond à l'image utilisée pour l'onglet "skill" du menu, etc.

J'espère n'avoir pas été trop confuse.


Dernière édition par Gomel le Dim 18 Mar 2012 - 16:52, édité 1 fois
Lityk
Lityk
Membre

Nombre de messages : 173
Age : 31
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011

Ring Menu Empty Re: Ring Menu

Dim 18 Mar 2012 - 16:49
Non tu n'as pas été confuse, merci à toi, ce script me sera d'une grande aide ! Smile
jasonvnm
jasonvnm
Membre

Nombre de messages : 4
Distinction : aucune
Date d'inscription : 24/03/2012

Ring Menu Empty Re: Ring Menu

Dim 25 Mar 2012 - 18:46
Salut, désolé du Nécropost mais comment ouvrir le menu ? :jmlacommu:
Clash
Clash
Membre

Nombre de messages : 1023
Age : 27
Distinction : aucune
Date d'inscription : 12/10/2011

Ring Menu Empty Re: Ring Menu

Dim 25 Mar 2012 - 18:55
Bah, tu appuies sur Echap ou sur X.
jasonvnm
jasonvnm
Membre

Nombre de messages : 4
Distinction : aucune
Date d'inscription : 24/03/2012

Ring Menu Empty Re: Ring Menu

Dim 25 Mar 2012 - 22:11
Je l'avais placé en dessous :boulet:
Merci en tout cas pour ce script ! Smile
Anonymous
Invité
Invité

Ring Menu Empty Re: Ring Menu

Ven 1 Juin 2012 - 20:41
J'utilise ce script depuis un moment pour mon projet, mais je viens de remarquer que le bug que tu a voulus corriger avec le curseur n'est pas complètement corrigé. Je m’explique:
-J'ai 5 personnages dans mon équipe, quand j'ouvre le menu et choisis genre statuts, la liste de mes héros apparaît, mais quand je descend le curseur il ne passe pas par tout les héros dans le bonne ordre (genre le curseur est sur Mon héro principale, je descend pour mon second héro, mais il va sur le 4ème).
-J'ai également remarquer qu'avec 3 héros, il ne va jamais sur le second et avec 6 il ne fait que le 1er, 3ème et 6ème ... J'aimerais une solution car je n'en trouve pas s\'il vous plaît ^^'
Anonymous
Invité
Invité

Ring Menu Empty Re: Ring Menu

Mer 4 Juil 2012 - 16:48
Problème toujours pas résolus, j'aurais besoin d'aide ! ^^' Sinon je posterais plus tard dans les problèmes.
avatar
chrismi
Membre

Nombre de messages : 9
Age : 27
Localisation : Bordeciel,Breezehome...non sérieusement Paris
Distinction : aucune
Date d'inscription : 23/08/2012

Ring Menu Empty Re: Ring Menu

Jeu 23 Aoû 2012 - 18:12
Merci beaucoup pour ce script
Hareck
Hareck
Membre

Nombre de messages : 359
Age : 31
Distinction : aucune
Date d'inscription : 26/09/2013

Ring Menu Empty Re: Ring Menu

Mar 8 Oct 2013 - 18:30
NECROPOST DE L'INFINIE!!

Bon, j'ai légèrement modifié et adapté le script pour ce que je comptais en faire (en faite, j'ai juste retiré l'option de sauvegarde).

Code:
=begin
Script Criado por DouglasMF das comunidades VilaMakers Online e RPG Maker Brasil
Com base no script Ring Menu feito por XRXS, Dubealex e Hypershadow180

--Inscruction--
Pour installer ce script, mettez le au dessus de Main

=end
#==============================================================================
# Scene_Menu
#------------------------------------------------------------------------------
# Esta classe controla o conjunto de objetos que forma o RingMenu
#==============================================================================

#===============================================================
#                         
#                www.rpgmakervx-fr.com                                         
#     
#===============================================================

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # Initialisation
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # Initialise les objets du menu
  #--------------------------------------------------------------------------
  def start
    super
    @spriteset = Spriteset_Map.new
    @gold_window = Window_Gold.new
    @gold_window.y = Graphics.height - @gold_window.height
    @gold_window.opacity = 0
    $local_show = true
    @map_name_window = Window_MapName.new
    @map_name_window.open
    @status_window = Window_MenuStatus.new(160, 0)
    px = $game_player.screen_x - 16
    py = $game_player.screen_y - 28
    @ring_menu = Window_RingMenu_Comando.new(px,py)
    @status_window.z = @ring_menu.z + 20
    @status_window.visible = false
  end
  #--------------------------------------------------------------------------
  # Ferme les objets du menu
  #--------------------------------------------------------------------------
  def terminate
    super
    @spriteset.dispose
    @ring_menu.dispose
    @gold_window.dispose
    @map_name_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # Actualise les objets du menu
  #--------------------------------------------------------------------------
  def update
    super
    @ring_menu.update
    @gold_window.update
    @map_name_window.update
    @spriteset.update
    @status_window.update
    if @ring_menu.active
      update_command_selection
    elsif @status_window.active
      update_actor_selection
    end
    if @status_window.active
      $shift = 1
    else
      $shift = 0
    end
  end
 

  #--------------------------------------------------------------------------
  # Actualisation des commandes et sélection menu
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $local_show = false
      SceneManager.call(Scene_Map)
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @ring_menu.index < 4
        Sound.play_buzzer
        return
      end
      Sound.play_ok
      case @ring_menu.indice
      when 0
        SceneManager.call(Scene_Item)
      when 1,2,3
        command_personal
      when 4
        SceneManager.call(Scene_End)
      end
    end
    if Input.trigger?(Input::LEFT)  or  Input.trigger?(Input::UP)
      Sound.play_cursor
      @ring_menu.girar(3)
      return
    end
    if Input.trigger?(Input::RIGHT) or  Input.trigger?(Input::DOWN)
      Sound.play_cursor
      @ring_menu.girar(4)
      return
    end
  end

  #--------------------------------------------------------------------------
 
  def command_personal
    @ring_menu.active = false
    @status_window.visible = true
    @status_window.select_last
    @status_window.activate
    @status_window.set_handler(:ok,    method(:on_personal_ok))
    @status_window.set_handler(:cancel, method(:on_personal_cancel))
  end
 
  #--------------------------------------------------------------------------
 
  def on_personal_cancel
    @status_window.unselect
    @status_window.visible = false
    @ring_menu.active = true
  end
 
  #--------------------------------------------------------------------------
  # choix perso ok
  #--------------------------------------------------------------------------
  def on_personal_ok
    case @ring_menu.indice
    when 1
      SceneManager.call(Scene_Skill)
    when 2
      SceneManager.call(Scene_Equip)
    when 3
      SceneManager.call(Scene_Status)
    end
  end
 
  #--------------------------------------------------------------------------
  # Termine la selection du chara
  #--------------------------------------------------------------------------
  def end_actor_selection
    @ring_menu.active = true
    @status_window.active = false
    @status_window.visible = false
    @status_window.index = -1
  end
  #--------------------------------------------------------------------------
  # Actualisation sélection chara
  #--------------------------------------------------------------------------
  def update_actor_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_actor_selection
    elsif Input.trigger?(Input::C)
      Sound.play_ok
      case @ring_menu.indice
      when 1
        SceneManager.call(Scene_Skill)
      when 2
        SceneManager.call(Scene_Equip)
      when 3
        SceneManager.call(Scene_Status)
      end
    end
  end
end

#==============================================================================
# Window_RingMenu_Comando
#------------------------------------------------------------------------------
# Cette classe crée le RingMenu
#==============================================================================

class Window_RingMenu_Comando < Window_Base
 
  DurIni = 30
  DurMov = 15
  RaioAnel = 64
  ModoIni = 1
  ModoEsp = 2
  ModoMD = 3
  ModoME = 4
  SE_Inicio = ""
 
  attr_accessor :indice
  #--------------------------------------------------------------------------
  # Initialisation objets
  #--------------------------------------------------------------------------
  def initialize(centro_x,centro_y)
    super(0, 0, 544, 416)
    self.opacity = 0
    self.contents.font.size = 16
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::game_end
    @item_name = [s1,s2,s3,s4,s5]
    @item_max = 5
    @item_icon = [260,112,170,121,1]
    @item_hab = [true,true,true,true,true]
    @indice = 0
    @cx = centro_x - 12
    @cy = centro_y - 12
    inicia_menu
    refresh
  end
  #--------------------------------------------------------------------------
  # Actualisation objets
  #--------------------------------------------------------------------------
  def update
    super
    refresh
  end
  #--------------------------------------------------------------------------
  # Actualisation objets
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    case @modo
    when ModoIni
      refresh_inicio
    when ModoEsp
      refresh_espera
    when ModoMD
      refresh_mover(1)
    when ModoME
      refresh_mover(0)
    end
    sw = self.contents.width
    rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
    self.contents.draw_text(rect, @item_name[@indice],1)
  end
  #--------------------------------------------------------------------------
  # Ouvre le menu
  #--------------------------------------------------------------------------
  def refresh_inicio
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / DurIni
    r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( r * Math.sin( d ) ).to_i
      y = @cy - ( r * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Actualisation menu
  #--------------------------------------------------------------------------
  def refresh_espera
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
      j = i - @indice
      x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
      desenha_item(x, y, i)
    end
  end
  #--------------------------------------------------------------------------
  # Mouvement du menu
  #--------------------------------------------------------------------------
  def refresh_mover(modo)
    d1 = 2.0 * Math::PI / @item_max
    d2 = d1 / DurMov
    d2 *= -1 if modo != 0
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Desenha o icone
  #--------------------------------------------------------------------------
  def desenha_item(x, y, i)
    if @indice == i
      self.cursor_rect.set(x-4, y-4, 32, 32)
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    else
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    end
  end
  #--------------------------------------------------------------------------
  # initialise le menu
  #--------------------------------------------------------------------------
  def inicia_menu
    @modo = ModoIni
    @passos = DurIni
    if  SE_Inicio != nil and SE_Inicio != ""
      Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
    end
  end
  #--------------------------------------------------------------------------
  # fait tourner le menu
  #--------------------------------------------------------------------------
  def girar(modo)
    if modo == ModoMD
      @indice -= 1
      @indice = @item_hab.size - 1 if @indice < 0
    elsif modo == ModoME
      @indice += 1
      @indice = 0 if @indice >= @item_hab.size
    else
      return
    end
    @modo = modo
    @passos = DurMov
  end
 
end

#==============================================================================
# Window_Selectable
#------------------------------------------------------------------------------
# Corrige un bug au niveau du déplacement du curseur
# dans la fenêtre de selection de chara
#==============================================================================


class Window_Selectable < Window_Base
  def process_cursor_move
    return unless cursor_movable?
    last_index = @index
   
    if $shift == 1
      cursor_down (Input.trigger?(:UP))  if Input.repeat?(:UP)
      cursor_up  (Input.trigger?(:DOWN))    if Input.repeat?(:DOWN)
    else
      cursor_down (Input.trigger?(:DOWN))  if Input.repeat?(:DOWN)
      cursor_up  (Input.trigger?(:UP))    if Input.repeat?(:UP)
    end
    cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
    cursor_left (Input.trigger?(:LEFT))  if Input.repeat?(:LEFT)
    cursor_pagedown  if !handle?(:pagedown) && Input.trigger?(:R)
    cursor_pageup    if !handle?(:pageup)  && Input.trigger?(:L)
    Sound.play_cursor if @index != last_index
  end
end
#==============================================================================
# Window_MapName
#------------------------------------------------------------------------------
# Affiche l'emplacement avec le même style que le jeu
#==============================================================================
class Window_MapName < Window_Base
  $local_show = false
  def update
    super
    if $local_show == false
      if @show_count > 0 && $game_map.name_display
        update_fadein
        @show_count -= 1
      else
        update_fadeout
      end
    else
      update_fadein
    end
  end
end

#==============================================================================
# ■ Window_Gold
#------------------------------------------------------------------------------
#  Permet d'afficher l'argent sur un fond similaire à celui de la map
#==============================================================================

class Window_Gold < Window_Base

  def refresh
    contents.clear
    draw_background(contents.rect)
        draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
  end
 
  def draw_background(rect)
    temp_rect = rect.clone
    temp_rect.width /= 2
    contents.gradient_fill_rect(temp_rect, Color.new(0, 0, 0, 0),
    Color.new(152, 99, 39, 192))
    temp_rect.x = temp_rect.width
    contents.gradient_fill_rect(temp_rect, Color.new(152, 99, 39, 192),
    Color.new(0, 0, 0, 0))
  end
 
end

 
Enfaite, j'ai fait donc plusieurs petites modifications mineures tout au long du script pour supprimer la sauvegarde.


Mais j'ai un petit soucis du coup! Enfaite, quand je vais dans les objets, ça me fait deux fois le SE, et ça rentre affiche la scène de l'inventaire basique et ça rentre dans l'onglet objet... Je ne sais pas si vous avez bien compris... Au pire, testez le script par vous même, vous verrez tout de suite ce qui ne va pas. En tout cas, merci! Smile
Heaven
Heaven
Staffeux retraité

Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012

Ring Menu Empty Re: Ring Menu

Mar 8 Oct 2013 - 19:01
SE ? C'est à dire ?


PS : J'ai testé, j'aime beaucoup ta version, elle marche à merveille, mais comme je ne sais pas ce
qu'est "SE", je peux pas trop te dire ce qui se répète :x


Heav'n


Dernière édition par Heaven le Mer 4 Nov 2015 - 17:31, édité 1 fois
Hareck
Hareck
Membre

Nombre de messages : 359
Age : 31
Distinction : aucune
Date d'inscription : 26/09/2013

Ring Menu Empty Re: Ring Menu

Mar 8 Oct 2013 - 21:01
SE, ce sont les effets sonore (Sound Effect). En gros, c'est les coup d'épée, les boom, les flash, des boing... Des bruitages sonores court (pas plus de 5s) utilisé essentiellement pour les animations.

Un SE se joue quand tu te déplace dans le menu, quand tu ouvre un onglet du menu, etc...

Sinon, merci! Smile
Heaven
Heaven
Staffeux retraité

Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012

Ring Menu Empty Re: Ring Menu

Mer 9 Oct 2013 - 15:53
J'avais pas mis le son x)
Bon, je re-test et je te dis (:


Heav'n
Hareck
Hareck
Membre

Nombre de messages : 359
Age : 31
Distinction : aucune
Date d'inscription : 26/09/2013

Ring Menu Empty Re: Ring Menu

Jeu 10 Oct 2013 - 10:18
Du coup?
Heaven
Heaven
Staffeux retraité

Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012

Ring Menu Empty Re: Ring Menu

Jeu 10 Oct 2013 - 17:19
Désolé, j'avais oublié de te répondre :/
Bah, même problème que toi, mais en visitant tout le script, ce serait pas à
cette ligne là qu'on peut modifier le SE qui se joue ?


Code:
Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
Sinon, je sais pas trop :/


Heav'n
Hareck
Hareck
Membre

Nombre de messages : 359
Age : 31
Distinction : aucune
Date d'inscription : 26/09/2013

Ring Menu Empty Re: Ring Menu

Jeu 10 Oct 2013 - 17:31
Ca expliquerait pas pourquoi il se joue deux fois quand je veux ouvrir la fenêtre des objets...


Dernière édition par Hareck le Jeu 10 Oct 2013 - 17:36, édité 1 fois
Heaven
Heaven
Staffeux retraité

Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012

Ring Menu Empty Re: Ring Menu

Jeu 10 Oct 2013 - 17:33
Au cas poste un sujet dans "Entraide", peut-être que plus de gens s'intéresseraient à ton problème (:


Heav'n

EDIT : Ok, laisse tomber :/
Lityk
Lityk
Membre

Nombre de messages : 173
Age : 31
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011

Ring Menu Empty Re: Ring Menu

Dim 24 Nov 2013 - 22:39
Je galère toujours avec ce script, j'essaie de l'associer avec le Journal de Quête [VXACE]
En fait le but serait d'avoir une icone journal de quête intégré dans le Ring menu, je prends donc la partie a modifier que Nozvez m'a donné :

s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@item_name = [s1,s2,s3,s4,s5,s6]
@item_max = 6
@item_icon = [260,112,170,121,117,1]

Je rajoute un s7 mais je ne sais quel nom lui donner pour qu'il amène au Journal.
s7 = Vocab::quest_journal (???)
En faisant ça je recoit une erreur de script
Ring Menu 98gn
En fait le problème est dans le Vocab ou il faut mettre une autre commande
(def self.quest_journal;  command(23);  end   # Quêtes ???,
Mais même en procédant ainsi ça ne fonctionne pas, j'obtient bien l'icone de l'image dans le menu, toutefois, son nom n'apparait pas et quand je valide, rien ne se passe.
En fait je ne sais comment la relier au Journal. Si quelqu'un à une idée... (Je peux transmettre le script de Journal de Quêtes s'il faut)
Spytje
Spytje
Administrateur

Nombre de messages : 5935
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Ring Menu Empty Re: Ring Menu

Dim 24 Nov 2013 - 23:03
Voici un script "ring-menu" que j'ai modifié et ajouté une entrée pour un script de quête, je suppose que le script de quête que utilises est celui de Modern-Algebra dans ce cas il fonctionnera directement, si ce n'est pas le cas merci de me donner le script que tu utilises pour tes quêtes.

Code:
#====================================================================
#Script: Ring Menu [ACE]
#Criado por: Victor Gomez
#
#Modifié et traduit par Spywaretof
#Ajout d'une nouvelle entrée ppur le script de quête de Modern Algebra.
#Dernière modif : 24.11.2013
#====================================================================

module Configuration
    #nome dos items, ["items","sair","equip" etc...]
   
    Item_name = [
    "Inventaire",
    "Magie",
    "Equipements",
    "Statut",
    "Quêtes",
    "Formation",
    "Sauvegarder",
    "Quitter"
    ]
   
    #Nombre d'options maximum
    Item_max = 8
    #icones utilisés = [144,128,40,40,137,149,112,1]
    Item_icon = [144,128,40,41,137,149,112,1]
    #Activé  ? ["item","skill"...]
    Item_hab = [true,true,true,true,true,true,true,true]
  end
 

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#==============================================================================

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Initialisation
  #--------------------------------------------------------------------------
  def start
    super
    @win_local = Window_Local.new(0,0)
    px = $game_player.screen_x - 16
    py = $game_player.screen_y - 28
    @ring_menu = Window_RingMenu_Comando.new(px,py)
    create_status_window
    @status_window.visible = false
    create_gold_window
  end
 
  def update
    super
    @ring_menu.update
    @win_local.update
    if Input.trigger?(Input::C)
    case @ring_menu.indice
      when 0
        command_item
      when 1,2,3,4
        command_personal
      when 5
        command_formation
      when 6
      command_save
      when 7
        command_game_end
      end
    end
    if Input.trigger?(:B)
      return_scene
    end

    if Input.trigger?(Input::UP) or  Input.trigger?(Input::LEFT) and @ring_menu.lol != false
      Sound.play_cursor
      @ring_menu.girar(3)
      return
    end
    if Input.trigger?(Input::DOWN) or  Input.trigger?(Input::RIGHT) and @ring_menu.lol != false
      Sound.play_cursor
      @ring_menu.girar(4)
      return
    end
  end
 
  def terminate
    super
    @ring_menu.dispose
    @win_local.dispose
  end
 
  #--------------------------------------------------------------------------
  # * Cria��o da janela de comando
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_MenuCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill,    method(:command_personal))
    @command_window.set_handler(:equip,    method(:command_personal))
    @command_window.set_handler(:status,    method(:command_personal))
    @command_window.set_handler(:formation, method(:command_formation))
    @command_window.set_handler(:save,      method(:command_save))
    @command_window.set_handler(:game_end,  method(:command_game_end))
    @command_window.set_handler(:cancel,    method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # * Cria��o da janela de dinheiro
  #--------------------------------------------------------------------------
  def create_gold_window
    @gold_window = Window_Gold.new
    @gold_window.x = -20
    @gold_window.y = Graphics.height - @gold_window.height
    @gold_window.opacity = 0
  end
  #--------------------------------------------------------------------------
  # * Cria��o da janela de atributos
  #--------------------------------------------------------------------------
  def create_status_window
    @status_window = Window_MenuStatus.new(160, 0)
  end
  #--------------------------------------------------------------------------
  # * Comando [Item]
  #--------------------------------------------------------------------------
  def command_item
    SceneManager.call(Scene_Item)
  end
  #--------------------------------------------------------------------------
  # * Comando [Habilidade] [Equipamentos] [Atributos]
  #--------------------------------------------------------------------------
  def command_personal
    @status_window.select_last
    @status_window.visible = true
    @ring_menu.lol = false
    @status_window.activate
    @status_window.set_handler(:ok,    method(:on_personal_ok))
    @status_window.set_handler(:cancel, method(:on_personal_cancel))
  end
  #--------------------------------------------------------------------------
  # * Comando [Forma��o]
  #--------------------------------------------------------------------------
  def command_formation
    @status_window.select_last
    @status_window.activate
    @status_window.set_handler(:ok,    method(:on_formation_ok))
    @status_window.set_handler(:cancel, method(:on_formation_cancel))
  end
  #--------------------------------------------------------------------------
  # * Comando [Salvar]
  #--------------------------------------------------------------------------
  def command_save
    SceneManager.call(Scene_Save)
  end
  #--------------------------------------------------------------------------
  # * Comando [Fim do Jogo]
  #--------------------------------------------------------------------------
  def command_game_end
    SceneManager.call(Scene_End)
  end
  #--------------------------------------------------------------------------
  # * Comandos individuais [Confirma��o]
  #--------------------------------------------------------------------------
  def on_personal_ok
    case @ring_menu.indice
    when 1
      @status_window.visible = false
      SceneManager.call(Scene_Skill)
    when 2
      @status_window.visible = false
      SceneManager.call(Scene_Equip)
    when 3
      @status_window.visible = false
      SceneManager.call(Scene_Status)
    when 4
      SceneManager.call(Scene_Quest)
    end
  end
  #--------------------------------------------------------------------------
  # * Comandos individuais [Cancelamento]
  #--------------------------------------------------------------------------
  def on_personal_cancel
    @status_window.visible = false
    @ring_menu.lol = true
    @status_window.unselect
  end
  #--------------------------------------------------------------------------
  # * Mudan�a de Ordem [Confirma��o]
  #--------------------------------------------------------------------------
  def on_formation_ok
    @status_window.visible = true
    if @status_window.pending_index >= 0
      $game_party.swap_order(@status_window.index,
                            @status_window.pending_index)
      @status_window.pending_index = -1
      @status_window.redraw_item(@status_window.index)
    else
      @status_window.pending_index = @status_window.index
    end
    @status_window.activate
  end
  #--------------------------------------------------------------------------
  # * Mudan�a de Ordem [Cancelamento]
  #--------------------------------------------------------------------------
  def on_formation_cancel
    if @status_window.pending_index >= 0
      @status_window.pending_index = -1
      @status_window.activate
    else
      @status_window.unselect
      @status_window.visible = false
    end
  end
end

class Window_RingMenu_Comando < Window_Base
 
  DurIni = 30
  DurMov = 15
  RaioAnel = 64
  ModoIni = 1
  ModoEsp = 2
  ModoMD = 3
  ModoME = 4
  SE_Inicio = ""
 
  attr_accessor :lol
  attr_accessor :indice
  #--------------------------------------------------------------------------
  # Inicia o objeto
  #--------------------------------------------------------------------------
  def initialize(centro_x,centro_y)
    super(0, 0, 544, 416)
    self.opacity = 0
    self.contents.font.size = 16
    @item_name = Configuration::Item_name
    @item_max = Configuration::Item_max
    @item_icon = Configuration::Item_icon
    @item_hab = Configuration::Item_hab
    @indice = 0
    @cx = centro_x - 12
    @cy = centro_y - 12
    inicia_menu
    refresh
    @lol = true
  end
  #--------------------------------------------------------------------------
  # Atualiza o objeto
  #-------------------------------------------------------------------------- 
  def update
    super
    refresh
  end
  #--------------------------------------------------------------------------
  # Atualiza o objeto
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    case @modo
    when ModoIni
      refresh_inicio
    when ModoEsp
      refresh_espera
    when ModoMD
      refresh_mover(1)
    when ModoME
      refresh_mover(0)
    end
    sw = self.contents.width
    rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
    self.contents.draw_text(rect, @item_name[@indice],1)
  end
  #--------------------------------------------------------------------------
  # Abre o menu
  #--------------------------------------------------------------------------
  def refresh_inicio
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / DurIni
    r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( r * Math.sin( d ) ).to_i
      y = @cy - ( r * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Atualiza o menu
  #--------------------------------------------------------------------------
  def refresh_espera
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
      j = i - @indice
      x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
      desenha_item(x, y, i)
    end
  end
  #--------------------------------------------------------------------------
  # Movimenta o menu
  #--------------------------------------------------------------------------
  def refresh_mover(modo)
    d1 = 2.0 * Math::PI / @item_max
    d2 = d1 / DurMov
    d2 *= -1 if modo != 0
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Desenha o icone
  #--------------------------------------------------------------------------
  def desenha_item(x, y, i)
    if @indice == i
      self.cursor_rect.set(x-4, y-4, 32, 32)
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    else
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    end
  end
  #--------------------------------------------------------------------------
  # Inicia o menu
  #--------------------------------------------------------------------------
  def inicia_menu
    @modo = ModoIni
    @passos = DurIni
    if  SE_Inicio != nil and SE_Inicio != "" and @activate
      Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
    end
  end
  #--------------------------------------------------------------------------
  # Gira o menu
  #--------------------------------------------------------------------------
  def girar(modo)
    if modo == ModoMD
      @indice -= 1
      @indice = @item_hab.size - 1 if @indice < 0
    elsif modo == ModoME
      @indice += 1 and @activate
      @indice = 0 if @indice >= @item_hab.size
    else
      return
    end
    @modo = modo
    @passos = DurMov
  end
 
end

#==============================================================================
# Scene_Title
#------------------------------------------------------------------------------
# Faz modifica��es nescessarias para a exibi��o do nome do mapa
#==============================================================================

module DataManager
    def self.load_normal_database
    $data_actors        = load_data("Data/Actors.rvdata2")
    $data_classes      = load_data("Data/Classes.rvdata2")
    $data_skills        = load_data("Data/Skills.rvdata2")
    $data_items        = load_data("Data/Items.rvdata2")
    $data_weapons      = load_data("Data/Weapons.rvdata2")
    $data_armors        = load_data("Data/Armors.rvdata2")
    $data_enemies      = load_data("Data/Enemies.rvdata2")
    $data_troops        = load_data("Data/Troops.rvdata2")
    $data_states        = load_data("Data/States.rvdata2")
    $data_animations    = load_data("Data/Animations.rvdata2")
    $data_tilesets      = load_data("Data/Tilesets.rvdata2")
    $data_common_events = load_data("Data/CommonEvents.rvdata2")
    $data_system        = load_data("Data/System.rvdata2")
    $data_mapinfos      = load_data("Data/MapInfos.rvdata2")
    $data_mapinfo = load_data("Data/MapInfos.rvdata2")
  end
end

#==============================================================================
# Window_Local
#------------------------------------------------------------------------------
# Cria a janela responsavel pela exibi��o do nome do mapa
#==============================================================================

class Window_Local < Window_Base
  #--------------------------------------------------------------------------
  # Inicia o objeto
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 160, 96)
    self.opacity = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # Atualiza o objeto
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 120, 32, "Local:")
    self.contents.font.color = system_color
    self.contents.draw_text(4, 32, 120, 32, $data_mapinfo[$game_map.map_id].name, 2)
  end
end


Dernière édition par spywaretof le Lun 25 Nov 2013 - 0:49, édité 1 fois
Lityk
Lityk
Membre

Nombre de messages : 173
Age : 31
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011

Ring Menu Empty Re: Ring Menu

Lun 25 Nov 2013 - 0:05
Oui c'est bien Modern Algebra que j'utilise.

Toutefois quand je lance ton menu, une erreur apparait

Ring Menu Js8z
La ligne en question :  
 @item_icon = Configuration::Item_icon
Apparemment il n'arrive pas a trouver les icones si je comprends bien ?
Spytje
Spytje
Administrateur

Nombre de messages : 5935
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Ring Menu Empty Re: Ring Menu

Lun 25 Nov 2013 - 0:13
Corrigé excuse moi :


Code:
#====================================================================
#Script: Ring Menu [ACE]
#Criado por: Victor Gomez
#
#Modifié et traduit par Spywaretof
#Ajout d'une nouvelle entrée ppur le script de quête de Modern Algebra.
#Dernière modif : 24.11.2013
#====================================================================

module Configuration
    #nome dos items, ["items","sair","equip" etc...]
   
    Item_name = [
    "Inventaire",
    "Magie",
    "Equipements",
    "Statut",
    "Quêtes",
    "Formation",
    "Sauvegarder",
    "Quitter"
    ]
   
    #Nombre d'options maximum
    Item_max = 8
    #icones utilisés = [144,128,40,40,137,149,112,1]
    Item_icon = [144,128,40,41,137,149,112,1]
    #Activé  ? ["item","skill"...]
    Item_hab = [true,true,true,true,true,true,true,true]
  end
 

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#==============================================================================

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Initialisation
  #--------------------------------------------------------------------------
  def start
    super
    @win_local = Window_Local.new(0,0)
    px = $game_player.screen_x - 16
    py = $game_player.screen_y - 28
    @ring_menu = Window_RingMenu_Comando.new(px,py)
    create_status_window
    @status_window.visible = false
    create_gold_window
  end
 
  def update
    super
    @ring_menu.update
    @win_local.update
    if Input.trigger?(Input::C)
    case @ring_menu.indice
      when 0
        command_item
      when 1,2,3,4
        command_personal
      when 5
        command_formation
      when 6
      command_save
      when 7
        command_game_end
      end
    end
    if Input.trigger?(:B)
      return_scene
    end

    if Input.trigger?(Input::UP) or  Input.trigger?(Input::LEFT) and @ring_menu.lol != false
      Sound.play_cursor
      @ring_menu.girar(3)
      return
    end
    if Input.trigger?(Input::DOWN) or  Input.trigger?(Input::RIGHT) and @ring_menu.lol != false
      Sound.play_cursor
      @ring_menu.girar(4)
      return
    end
  end
 
  def terminate
    super
    @ring_menu.dispose
    @win_local.dispose
  end
 
  #--------------------------------------------------------------------------
  # * Cria��o da janela de comando
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_MenuCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill,    method(:command_personal))
    @command_window.set_handler(:equip,    method(:command_personal))
    @command_window.set_handler(:status,    method(:command_personal))
    @command_window.set_handler(:formation, method(:command_formation))
    @command_window.set_handler(:save,      method(:command_save))
    @command_window.set_handler(:game_end,  method(:command_game_end))
    @command_window.set_handler(:cancel,    method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # * Cria��o da janela de dinheiro
  #--------------------------------------------------------------------------
  def create_gold_window
    @gold_window = Window_Gold.new
    @gold_window.x = -20
    @gold_window.y = Graphics.height - @gold_window.height
    @gold_window.opacity = 0
  end
  #--------------------------------------------------------------------------
  # * Cria��o da janela de atributos
  #--------------------------------------------------------------------------
  def create_status_window
    @status_window = Window_MenuStatus.new(160, 0)
  end
  #--------------------------------------------------------------------------
  # * Comando [Item]
  #--------------------------------------------------------------------------
  def command_item
    SceneManager.call(Scene_Item)
  end
  #--------------------------------------------------------------------------
  # * Comando [Habilidade] [Equipamentos] [Atributos]
  #--------------------------------------------------------------------------
  def command_personal
    @status_window.select_last
    @status_window.visible = true
    @ring_menu.lol = false
    @status_window.activate
    @status_window.set_handler(:ok,    method(:on_personal_ok))
    @status_window.set_handler(:cancel, method(:on_personal_cancel))
  end
  #--------------------------------------------------------------------------
  # * Comando [Forma��o]
  #--------------------------------------------------------------------------
  def command_formation
    @status_window.select_last
    @status_window.activate
    @status_window.set_handler(:ok,    method(:on_formation_ok))
    @status_window.set_handler(:cancel, method(:on_formation_cancel))
  end
  #--------------------------------------------------------------------------
  # * Comando [Salvar]
  #--------------------------------------------------------------------------
  def command_save
    SceneManager.call(Scene_Save)
  end
  #--------------------------------------------------------------------------
  # * Comando [Fim do Jogo]
  #--------------------------------------------------------------------------
  def command_game_end
    SceneManager.call(Scene_End)
  end
  #--------------------------------------------------------------------------
  # * Comandos individuais [Confirma��o]
  #--------------------------------------------------------------------------
  def on_personal_ok
    case @ring_menu.indice
    when 1
      @status_window.visible = false
      SceneManager.call(Scene_Skill)
    when 2
      @status_window.visible = false
      SceneManager.call(Scene_Equip)
    when 3
      @status_window.visible = false
      SceneManager.call(Scene_Status)
    when 4
      SceneManager.call(Scene_Quest)
    end
  end
  #--------------------------------------------------------------------------
  # * Comandos individuais [Cancelamento]
  #--------------------------------------------------------------------------
  def on_personal_cancel
    @status_window.visible = false
    @ring_menu.lol = true
    @status_window.unselect
  end
  #--------------------------------------------------------------------------
  # * Mudan�a de Ordem [Confirma��o]
  #--------------------------------------------------------------------------
  def on_formation_ok
    @status_window.visible = true
    if @status_window.pending_index >= 0
      $game_party.swap_order(@status_window.index,
                            @status_window.pending_index)
      @status_window.pending_index = -1
      @status_window.redraw_item(@status_window.index)
    else
      @status_window.pending_index = @status_window.index
    end
    @status_window.activate
  end
  #--------------------------------------------------------------------------
  # * Mudan�a de Ordem [Cancelamento]
  #--------------------------------------------------------------------------
  def on_formation_cancel
    if @status_window.pending_index >= 0
      @status_window.pending_index = -1
      @status_window.activate
    else
      @status_window.unselect
      @status_window.visible = false
    end
  end
end

class Window_RingMenu_Comando < Window_Base
 
  DurIni = 30
  DurMov = 15
  RaioAnel = 64
  ModoIni = 1
  ModoEsp = 2
  ModoMD = 3
  ModoME = 4
  SE_Inicio = ""
 
  attr_accessor :lol
  attr_accessor :indice
  #--------------------------------------------------------------------------
  # Inicia o objeto
  #--------------------------------------------------------------------------
  def initialize(centro_x,centro_y)
    super(0, 0, 544, 416)
    self.opacity = 0
    self.contents.font.size = 16
    @item_name = Configuration::Item_name
    @item_max = Configuration::Item_max
    @item_icon = Configuration::Item_icon
    @item_hab = Configuration::Item_hab
    @indice = 0
    @cx = centro_x - 12
    @cy = centro_y - 12
    inicia_menu
    refresh
    @lol = true
  end
  #--------------------------------------------------------------------------
  # Atualiza o objeto
  #-------------------------------------------------------------------------- 
  def update
    super
    refresh
  end
  #--------------------------------------------------------------------------
  # Atualiza o objeto
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    case @modo
    when ModoIni
      refresh_inicio
    when ModoEsp
      refresh_espera
    when ModoMD
      refresh_mover(1)
    when ModoME
      refresh_mover(0)
    end
    sw = self.contents.width
    rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
    self.contents.draw_text(rect, @item_name[@indice],1)
  end
  #--------------------------------------------------------------------------
  # Abre o menu
  #--------------------------------------------------------------------------
  def refresh_inicio
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / DurIni
    r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( r * Math.sin( d ) ).to_i
      y = @cy - ( r * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Atualiza o menu
  #--------------------------------------------------------------------------
  def refresh_espera
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
      j = i - @indice
      x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
      desenha_item(x, y, i)
    end
  end
  #--------------------------------------------------------------------------
  # Movimenta o menu
  #--------------------------------------------------------------------------
  def refresh_mover(modo)
    d1 = 2.0 * Math::PI / @item_max
    d2 = d1 / DurMov
    d2 *= -1 if modo != 0
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Desenha o icone
  #--------------------------------------------------------------------------
  def desenha_item(x, y, i)
    if @indice == i
      self.cursor_rect.set(x-4, y-4, 32, 32)
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    else
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    end
  end
  #--------------------------------------------------------------------------
  # Inicia o menu
  #--------------------------------------------------------------------------
  def inicia_menu
    @modo = ModoIni
    @passos = DurIni
    if  SE_Inicio != nil and SE_Inicio != "" and @activate
      Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
    end
  end
  #--------------------------------------------------------------------------
  # Gira o menu
  #--------------------------------------------------------------------------
  def girar(modo)
    if modo == ModoMD
      @indice -= 1
      @indice = @item_hab.size - 1 if @indice < 0
    elsif modo == ModoME
      @indice += 1 and @activate
      @indice = 0 if @indice >= @item_hab.size
    else
      return
    end
    @modo = modo
    @passos = DurMov
  end
 
end

#==============================================================================
# Scene_Title
#------------------------------------------------------------------------------
# Faz modifica��es nescessarias para a exibi��o do nome do mapa
#==============================================================================

module DataManager
    def self.load_normal_database
    $data_actors        = load_data("Data/Actors.rvdata2")
    $data_classes      = load_data("Data/Classes.rvdata2")
    $data_skills        = load_data("Data/Skills.rvdata2")
    $data_items        = load_data("Data/Items.rvdata2")
    $data_weapons      = load_data("Data/Weapons.rvdata2")
    $data_armors        = load_data("Data/Armors.rvdata2")
    $data_enemies      = load_data("Data/Enemies.rvdata2")
    $data_troops        = load_data("Data/Troops.rvdata2")
    $data_states        = load_data("Data/States.rvdata2")
    $data_animations    = load_data("Data/Animations.rvdata2")
    $data_tilesets      = load_data("Data/Tilesets.rvdata2")
    $data_common_events = load_data("Data/CommonEvents.rvdata2")
    $data_system        = load_data("Data/System.rvdata2")
    $data_mapinfos      = load_data("Data/MapInfos.rvdata2")
    $data_mapinfo = load_data("Data/MapInfos.rvdata2")
  end
end

#==============================================================================
# Window_Local
#------------------------------------------------------------------------------
# Cria a janela responsavel pela exibi��o do nome do mapa
#==============================================================================

class Window_Local < Window_Base
  #--------------------------------------------------------------------------
  # Inicia o objeto
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 160, 96)
    self.opacity = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # Atualiza o objeto
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 120, 32, "Local:")
    self.contents.font.color = system_color
    self.contents.draw_text(4, 32, 120, 32, $data_mapinfo[$game_map.map_id].name, 2)
  end
end


Dernière édition par spywaretof le Lun 25 Nov 2013 - 0:49, édité 1 fois
Lityk
Lityk
Membre

Nombre de messages : 173
Age : 31
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011

Ring Menu Empty Re: Ring Menu

Lun 25 Nov 2013 - 0:29
Ok, ça va déjà nettement mieux, toutefois, des bugs persistent.
Lorsque je choisis d'aller dans Quêtes, une erreur apparait

correspondante à la ligne :
       command_quest
Ring Menu Mltz
Lorsque je choisis d'aller dans Equipement, Magies, ou Statut, une autre erreur apparait
Ring Menu 0328
correspondante à la ligne :
   if $game_system.maic_inserted_menu_commands.include?(@command_window.current_symbol)
Contenu sponsorisé

Ring Menu Empty Re: Ring Menu

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