AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  




Partagez | 
 

 Mon menu a moi

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Voyageur Lv.10
Voyageur Lv.10
avatar


Masculin Inscrit le : 31/12/2011
Messages : 396

MessageSujet: Mon menu a moi   Dim 4 Mar 2012 - 21:00

Je me suis mis au scripting ...
Bon, ce menu n'est ni beau, ni spectaculaire, mais il a l'avantage d'être de moi :ok: .

Voici les script :

A nommer "Scene_Menu"

Code:
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    menu_index : command cursor's initial position
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    create_command_window
    @gold_window = Window_Gold.new(384, 1)
    @status_window = Window_MenuStatus.new(1, 1)
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @command_window.update
    @gold_window.update
    @status_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
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = Vocab::game_end
    @command_window = Window_Command.new(160,[s1, s2, s3, s4, s5, s6])
    @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(4, 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 == 4
        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      # Save
        $scene = Scene_File.new(true, false, false)
      when 5      # End Game
        $scene = Scene_End.new
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Start Actor Selection
  #--------------------------------------------------------------------------
  def start_actor_selection
    @command_window.active = false
    @status_window.active = true
    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
    @status_window.active = false
    @status_window.index = -1
  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
      case @command_window.index
      when 1  # skill
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # equipment
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # status
        $scene = Scene_Status.new(@status_window.index)
      end
    end
  end
end

A nommer "Windows_MenuStatus"

Code:
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
#  This window displays party member status on the menu screen.
#==============================================================================

class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    x : window X coordinate
  #    y : window Y coordinate
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 384, 416)
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.members.size
    for actor in $game_party.members
      draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
      x = 104
      y = actor.index * 96 + WLH / 2
      draw_actor_name(actor, x, y)
      draw_actor_class(actor, x + 120, y)
      draw_actor_level(actor, x, y + WLH * 1)
      draw_actor_state(actor, x, y + WLH * 2)
      draw_actor_hp(actor, x + 120, y + WLH * 1)
      draw_actor_mp(actor, x + 120, y + WLH * 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Update cursor
  #--------------------------------------------------------------------------
  def update_cursor
    if @index < 0              # No cursor
      self.cursor_rect.empty
    elsif @index < @item_max    # Normal
      self.cursor_rect.set(0, @index * 96, contents.width, 96)
    elsif @index >= 100        # Self
      self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
    else                        # All
      self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
    end
  end
end

A nommer "Windows_Command" :

Code:
#==============================================================================
# ** Window_Command
#------------------------------------------------------------------------------
#  This window deals with general command choices.
#==============================================================================

class Window_Command < Window_Selectable
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader  :commands                # command
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    width      : window width
  #    commands  : command string array
  #    column_max : digit count (if 2 or more, horizontal selection)
  #    row_max    : row count (0: match command count)
  #    spacing    : blank space when items are arrange horizontally
  #--------------------------------------------------------------------------
  def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
    if row_max == 0
      row_max = (commands.size + column_max - 1) / column_max
    end
    super(384, 50, width, row_max * WLH + 32, spacing)
    @commands = commands
    @item_max = commands.size
    @column_max = column_max
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #    index  : item number
  #    enabled : enabled flag. When false, draw semi-transparently.
  #--------------------------------------------------------------------------
  def draw_item(index, enabled = true)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index])
  end
end


Et une screen :



Si y'a des problèmes, n'hésitez pas a me demander


Dernière édition par Dark-kid le Lun 5 Mar 2012 - 19:09, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Mon menu a moi   Dim 4 Mar 2012 - 21:55

C'est un début dans le scripting, et ça mérite d'être encouragé. +1 point de participation, donc.

Sur ce, bonne continuation, et persévère dans le scripting pour progresser.
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Mon menu a moi   Dim 4 Mar 2012 - 23:05

Je vois pas pourquoi tu dis qu'il n'est pas spectaculaire. Moi je ne suis même pas capable de faire ça alors pour moi c'est spectaculaire.
Revenir en haut Aller en bas
Voyageur Lv.10
Voyageur Lv.10
avatar


Masculin Inscrit le : 31/12/2011
Messages : 396

MessageSujet: Re: Mon menu a moi   Lun 5 Mar 2012 - 6:16

Merci a vous deux Smile

_________________
Mon Blog/ pleins de tutos en tout genre (mapping, game-design) des ressources ainsi que des scripts créer par moi même ou parfois des partages et des news sur mes projets ainsi que mes trouvails en matières d'event. N'oubliez pas si le blog vous plait d'écrire un petit commentaire "Ecrire un article me prend 2 heures mais écrire un petit commentaire vous prend 2 minutes" . Merci a vous et salut !//Ma galerie !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Voyageur Lv.10
Voyageur Lv.10
avatar


Masculin Age : 20
Inscrit le : 08/05/2010
Messages : 381

MessageSujet: Re: Mon menu a moi   Lun 5 Mar 2012 - 13:16

Ca ressemble pas mal à d'autres script de menu mais c'est très bon pour un premier script =)

_________________
Mon projet : Infernus
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Illusionniste Lv.12
Illusionniste Lv.12
avatar


Masculin Age : 27
Inscrit le : 14/02/2010
Messages : 796

MessageSujet: Re: Mon menu a moi   Lun 5 Mar 2012 - 13:28

J'ai une remarque quand même, la Window_gold empiète sur la Window_MenuStatus, donc je pense qu'il faudrait augmenter le y de la deuxième fenêtre.

_________________


Merci à Kouett pour :
Spoiler:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Voyageur Lv.10
Voyageur Lv.10
avatar


Masculin Inscrit le : 31/12/2011
Messages : 396

MessageSujet: Re: Mon menu a moi   Lun 5 Mar 2012 - 19:06

Oui, je me suis un peu trompé et je n'avais pas vu .
J'avais aussi oublié d'ajouter un script

Edit : C'est fait .
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Mon menu a moi   

Revenir en haut Aller en bas
 

Mon menu a moi

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» commande menu "Enregistrer"
» [resolu]mettre fichier dans le menu bar
» Menu création de variables
» context menu strip
» [Résolu] Perte d'icônes "raccourci" ou comment créer mon propre menu?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Bac à sable-
Créer un forum | © phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit