Voyageur Lv.10
Inscrit le : 31/12/2011 Messages : 396
| Sujet: 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 |
|
Invité
| Sujet: 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. |
|
Invité
| Sujet: 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. |
|
Voyageur Lv.10
Inscrit le : 31/12/2011 Messages : 396
| Sujet: Re: Mon menu a moi Lun 5 Mar 2012 - 6:16 | |
| Merci a vous deux |
|
Voyageur Lv.10
Age : 27 Inscrit le : 08/05/2010 Messages : 383
| Sujet: 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 =) |
|
Illusionniste Lv.12
Age : 34 Inscrit le : 14/02/2010 Messages : 796
| Sujet: 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. |
|
Voyageur Lv.10
Inscrit le : 31/12/2011 Messages : 396
| Sujet: 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 . |
|
| Sujet: Re: Mon menu a moi | |
| |
|