|
| [XP] Menu pour plus de 4 héros | |
| Auteur | Message |
---|
Creme brulée Chevalier Mage (niveau 4)
Messages postés : 465 Date d'inscription : 04/02/2012 Jauge LPC :
| Sujet: [XP] Menu pour plus de 4 héros Mer 14 Mar 2012 - 18:39 | |
| Bonjour à tous, voilà un menu pour plus de 4 héros et qui est assez sympa je trouve. Il est paramétré pour 20 héros mais en début de script vous pouvez changer le nombre. Seul les 4 premiers héros combattront mais vous pouvez changer l'ordre des héros donc c'est bon ^^ Voilà un screen : (Pour le dragon jaune, il s'agit d'un autre perso se trouvant sur une ligne en dessous.) et maintenant le code, nommé le script "Game_Party" - Code:
-
#=================================# # Traduction par masterjojo. # Modifié par Sihn #=================================#
#============================================================================== # ¦ Game_Party #==============================================================================
class Game_Party #-------------------------------------------------------------------------- # ? define instance variable #-------------------------------------------------------------------------- attr_accessor :actors #-------------------------------------------------------------------------- # Vous pouvez changer le nombre rouge par celui de votre # choix: c'est le nombre max de personne pouvant integrer # votre équipe (par défaut: 20). #-------------------------------------------------------------------------- def add_actor(actor_id) actor = $game_actors[actor_id] if @actors.size < 20 and not @actors.include?(actor) @actors.push(actor) $game_player.refresh end end end
#============================================================================== # ¦ Window_Base #==============================================================================
class Window_Base < Window #-------------------------------------------------------------------------- # ? draw character's battle sprite #-------------------------------------------------------------------------- def draw_actor_battlegraphic(actor, x, y, opacity = 255) bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue) src_rect = Rect.new(0, 0, 111, 111) self.contents.blt(x, y, bitmap, src_rect, opacity) end #-------------------------------------------------------------------------- # ? draw character's HP meter #-------------------------------------------------------------------------- def draw_actor_hp_meter(actor, x, y, width = 70, type = 0) if type == 1 and actor.hp == 0 return end self.contents.font.color = system_color self.contents.fill_rect(x-1, y+27, width+2,5, Color.new(0, 0, 0, 255)) w = width * actor.hp / actor.maxhp self.contents.fill_rect(x, y+28, w,1, Color.new(174, 68, 89, 255)) self.contents.fill_rect(x, y+29, w,1, Color.new(156, 61, 80, 255)) self.contents.fill_rect(x, y+30, w,1, Color.new(138, 53, 70, 255)) end #-------------------------------------------------------------------------- # ? draw character's SP meter #-------------------------------------------------------------------------- def draw_actor_sp_meter(actor, x, y, width = 70, type = 0) if type == 1 and actor.sp == 0 return end self.contents.font.color = system_color self.contents.fill_rect(x-1, y+27, width+2,5, Color.new(0, 0, 0, 255)) w = width * actor.sp / actor.maxsp self.contents.fill_rect(x, y+28, w,1, Color.new(62, 72, 164, 255)) self.contents.fill_rect(x, y+29, w,1, Color.new(55, 65, 149, 255)) self.contents.fill_rect(x, y+30, w,1, Color.new(49, 57, 130, 255)) end #-------------------------------------------------------------------------- # ? define method to draw squares #-------------------------------------------------------------------------- def draw_square(x, y, width, color) self.contents.fill_rect(x, y, width, 1, color) self.contents.fill_rect(x, y, 1, width, color) self.contents.fill_rect(x + width, y, 1, width + 1, color) self.contents.fill_rect(x, y + width, width + 1, 1, color) end end
#============================================================================== # ¦ Window_Gold #------------------------------------------------------------------------------ # le texte a été remplacé par une icone #==============================================================================
class Window_Gold < Window_Base #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end #-------------------------------------------------------------------------- # ? refresh #-------------------------------------------------------------------------- def refresh self.contents.clear cx = 24 self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2) self.contents.font.color = system_color bitmap = RPG::Cache.icon("032-Item01") rect = Rect.new(0, 0, 24, 24) self.contents.blt(124-cx, 0, bitmap, rect) end end
#============================================================================== # ¦ Window_PlayTime #------------------------------------------------------------------------------ # cette fenêtre a été compacté pour montrer toutes les commandes dans le menu #==============================================================================
class Window_PlayTime < Window_Base #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end #-------------------------------------------------------------------------- # ? refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120, 32, text, 2) end #-------------------------------------------------------------------------- # ? redefine update method #-------------------------------------------------------------------------- def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end end
#============================================================================== # ¦ Window_MenuStatus #==============================================================================
class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 480, 480) @column_max = 4 @item_max = $game_party.actors.size self.contents = Bitmap.new(width - 32, row_max * 112) self.contents.font.name = $fontface self.contents.font.size = $fontsize/1.2 refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # ? refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...$game_party.actors.size x = i % 4 * 112 y = i / 4 * 112 actor = $game_party.actors[i] #dessine un carré pour séparer les characters, changer couleur transparente par ce que vous voulez #couleur désirée... (methode pour faire un carré ci-dessous) draw_square(x, y, 111, disabled_color) draw_actor_battlegraphic(actor, x, y, 150)#Rep draw_actor_graphic(actor, x + 90, y + 50) draw_actor_name(actor, x + 5, y) self.contents.draw_text(x + 5, y + 20, 112, 32, "HP : #{actor.hp}") self.contents.draw_text(x + 5, y + 40, 112, 32, "MP : #{actor.sp}") draw_actor_level(actor, x + 5, y + 60) draw_actor_state(actor, x + 5, y + 80) draw_actor_hp_meter(actor, x + 5, y + 17) draw_actor_sp_meter(actor, x + 5, y + 37) end end #-------------------------------------------------------------------------- # ? define the page's top row #-------------------------------------------------------------------------- def top_row return self.oy / 112 end #-------------------------------------------------------------------------- # ? define the page maximum rows #-------------------------------------------------------------------------- def page_row_max return (self.height - 32) / 112 end #-------------------------------------------------------------------------- # ? defines a method to change the page's top row #-------------------------------------------------------------------------- def top_row=(row) if row < 0 row = 0 end if row > row_max - 1 row = row_max - 1 end self.oy = row * 112 end #-------------------------------------------------------------------------- # ? update the cursor movement #-------------------------------------------------------------------------- def update_cursor_rect if @index < 0 self.cursor_rect.empty return end row = @index / @column_max if row < self.top_row self.top_row = row end if row > self.top_row + (self.page_row_max - 1) self.top_row = row - (self.page_row_max - 1) end self.cursor_rect.set(@index % 4 * 112, @index / 4 * 112 - self.oy, 112, 112) end end
#============================================================================== # ¦ Window_Target #==============================================================================
class Window_Target < Window_Selectable #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 336, 480) @column_max = 2 @item_max = $game_party.actors.size self.contents = Bitmap.new(width - 32, row_max * 112) self.contents.font.name = $fontface self.contents.font.size = $fontsize/1.2 self.z += 10 refresh end #-------------------------------------------------------------------------- # ? refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...$game_party.actors.size x = i % 2 * 112 + 36 y = i / 2 * 112 actor = $game_party.actors[i] #dessine un carré pour séparer les characters, changer couleur transparente par ce que vous voulez #coleur désirée... (methode pour faire un carré ci-dessous) draw_square(x, y, 111, disabled_color) draw_actor_battlegraphic(actor, x, y, 150) draw_actor_graphic(actor, x + 90, y + 50) draw_actor_name(actor, x + 5, y) self.contents.draw_text(x + 5, y + 20, 112, 32, "HP : #{actor.hp}") self.contents.draw_text(x + 5, y + 40, 112, 32, "MP : #{actor.sp}") draw_actor_level(actor, x + 5, y + 60) draw_actor_state(actor, x + 5, y + 80) draw_actor_hp_meter(actor, x + 5, y + 17) draw_actor_sp_meter(actor, x + 5, y + 37) end end #-------------------------------------------------------------------------- # ? define the page's top row #-------------------------------------------------------------------------- def top_row return self.oy / 112 end #-------------------------------------------------------------------------- # ? define the page maximum rows #-------------------------------------------------------------------------- def page_row_max return (self.height - 32) / 112 end #-------------------------------------------------------------------------- # ? defines a method to change the page's top row #-------------------------------------------------------------------------- def top_row=(row) if row < 0 row = 0 end if row > row_max - 1 row = row_max - 1 end self.oy = row * 112 end #-------------------------------------------------------------------------- # ? update the cursor movement #-------------------------------------------------------------------------- def update_cursor_rect row = @index / @column_max if row < self.top_row self.top_row = row end if row > self.top_row + (self.page_row_max - 1) self.top_row = row - (self.page_row_max - 1) end if @index <= -2 self.cursor_rect.empty elsif @index == -1 self.cursor_rect.set(0, 0, self.width - 32, @item_max * 116 - 20) else self.cursor_rect.set(@index % 2 * 112 + 36, @index / 2 * 112 - self.oy, 112, 112) end end end
#============================================================================== # ¦ Scene_Menu #==============================================================================
class Scene_Menu #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index @actor_change = false end #-------------------------------------------------------------------------- # ? main #-------------------------------------------------------------------------- def main s1 = $data_system.words.item s2 = $data_system.words.skill s3 = $data_system.words.equip s4 = "Statuts" s5 = "Sauvegarder" s6 = "Ordre" s7 = "Quitter" @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7]) @command_window.index = @menu_index if $game_party.actors.size == 0 @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) @command_window.disable_item(5) end if $game_system.save_disabled @command_window.disable_item(4) end @playtime_window = Window_PlayTime.new @playtime_window.x = 0 @playtime_window.y = 256 #224
@steps_window = Window_Steps.new @steps_window.x = 0 @steps_window.y = 320
@gold_window = Window_Gold.new @gold_window.x = 0 @gold_window.y = 416
@status_window = Window_MenuStatus.new @status_window.x = 160 @status_window.y = 0
Graphics.transition
loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze
@command_window.dispose @playtime_window.dispose @steps_window.dispose @gold_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # ? update the windows #-------------------------------------------------------------------------- def update @command_window.update @playtime_window.update @steps_window.update @gold_window.update @status_window.update
if @command_window.active update_command return end if @status_window.active update_status return end end #-------------------------------------------------------------------------- # ? update the command window #-------------------------------------------------------------------------- def update_command if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end if Input.trigger?(Input::C) if $game_party.actors.size == 0 and @command_window.index < 4 $game_system.se_play($data_system.buzzer_se) return end case @command_window.index when 0 # Item $game_system.se_play($data_system.decision_se) $scene = Scene_Item.new when 1 # Skill $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 2 # Equip $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 3 # Status $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 4 # Save if $game_system.save_disabled $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Save.new when 5 # party actors switch $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 6 # End $game_system.se_play($data_system.decision_se) $scene = Scene_End.new end return end end #-------------------------------------------------------------------------- # ? update the status window #-------------------------------------------------------------------------- def update_status if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @status_window.active = false @status_window.index = -1 @actor_change = false return end if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) case @command_window.index when 1 # Skill if $game_party.actors[@status_window.index].restriction >= 2 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Skill.new(@status_window.index) when 2 # Equip $game_system.se_play($data_system.decision_se) $scene = Scene_Equip.new(@status_window.index) when 3 # Status $game_system.se_play($data_system.decision_se) $scene = Scene_Status.new(@status_window.index) when 5 # party actors switch if @actor_change == true $game_system.se_play($data_system.decision_se) $game_party.actors[@old_index] = $game_party.actors[@status_window.index] $game_party.actors[@status_window.index] = @new_actor $game_player.refresh @actor_change = false @status_window.refresh return end @old_index = @status_window.index @new_actor = $game_party.actors[@status_window.index] @actor_change = true end return end end end
#============================================================================== # ¦ Scene_Battle (Part 1) #==============================================================================
class Scene_Battle #-------------------------------------------------------------------------- # ? main #-------------------------------------------------------------------------- def main $game_temp.in_battle = true $game_temp.battle_turn = 0 $game_temp.battle_event_flags.clear $game_temp.battle_abort = false $game_temp.battle_main_phase = false $game_temp.battleback_name = $game_map.battleback_name $game_temp.forcing_battler = nil $game_system.battle_interpreter.setup(nil, 0) @troop_id = $game_temp.battle_troop_id $game_troop.setup(@troop_id) #memorize actors in party and cut the party down to 4 actors @party_mem = $game_party.actors $game_party.actors = $game_party.actors[0..3] s1 = $data_system.words.attack s2 = $data_system.words.skill s3 = $data_system.words.guard s4 = $data_system.words.item @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4]) @actor_command_window.y = 160 @actor_command_window.back_opacity = 160 @actor_command_window.active = false @actor_command_window.visible = false @party_command_window = Window_PartyCommand.new @help_window = Window_Help.new @help_window.back_opacity = 160 @help_window.visible = false @status_window = Window_BattleStatus.new @message_window = Window_Message.new @spriteset = Spriteset_Battle.new @wait_count = 0 if $data_system.battle_transition == "" Graphics.transition(20) else Graphics.transition(40, "Graphics/Transitions/" + $data_system.battle_transition) end start_phase1 loop do Graphics.update Input.update update if $scene != self break end end $game_map.refresh Graphics.freeze @actor_command_window.dispose @party_command_window.dispose @help_window.dispose @status_window.dispose @message_window.dispose if @skill_window != nil @skill_window.dispose end if @item_window != nil @item_window.dispose end if @result_window != nil @result_window.dispose end @spriteset.dispose if $scene.is_a?(Scene_Title) Graphics.transition Graphics.freeze end if $BTEST and not $scene.is_a?(Scene_Gameover) $scene = nil end end #-------------------------------------------------------------------------- # ? battle end #-------------------------------------------------------------------------- def battle_end(result) $game_temp.in_battle = false $game_party.clear_actions for actor in $game_party.actors actor.remove_states_battle end $game_troop.enemies.clear if $game_temp.battle_proc != nil $game_temp.battle_proc.call(result) $game_temp.battle_proc = nil end $game_party.actors = @party_mem $scene = Scene_Map.new end end J'espère que ça vous sera utile. |
| | | Invité Invité
| Sujet: Re: [XP] Menu pour plus de 4 héros Mer 14 Mar 2012 - 18:48 | |
| Merci du partage + 2 LPDM. |
| | | Jin Ancien staffeux
Messages postés : 8557 Date d'inscription : 08/12/2010 Jauge LPC :
| Sujet: Re: [XP] Menu pour plus de 4 héros Mer 14 Mar 2012 - 19:20 | |
| Bouarf le code est pas indenté beark x)
Merci du partage.
Tout ça parce que je t'ai tanné pour que tu indente tes codes sur le site (sous menace de te tuer) |
| | | Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Menu pour plus de 4 héros Lun 26 Mar 2012 - 18:43 | |
| Voici le code indenté (je m'ennuyais) : - Code:
-
#=================================# # Traduction par masterjojo. # Modifié par Sihn #=================================#
#============================================================================== # ¦ Game_Party #==============================================================================
class Game_Party #-------------------------------------------------------------------------- # ? define instance variable #-------------------------------------------------------------------------- attr_accessor :actors #-------------------------------------------------------------------------- # Vous pouvez changer le nombre rouge par celui de votre # choix: c'est le nombre max de personne pouvant integrer # votre équipe (par défaut: 20). #-------------------------------------------------------------------------- def add_actor(actor_id) actor = $game_actors[actor_id] if @actors.size < 20 and not @actors.include?(actor) @actors.push(actor) $game_player.refresh end end end
#============================================================================== # ¦ Window_Base #==============================================================================
class Window_Base < Window #-------------------------------------------------------------------------- # ? draw character's battle sprite #-------------------------------------------------------------------------- def draw_actor_battlegraphic(actor, x, y, opacity = 255) bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue) src_rect = Rect.new(0, 0, 111, 111) self.contents.blt(x, y, bitmap, src_rect, opacity) end #-------------------------------------------------------------------------- # ? draw character's HP meter #-------------------------------------------------------------------------- def draw_actor_hp_meter(actor, x, y, width = 70, type = 0) if type == 1 and actor.hp == 0 return end self.contents.font.color = system_color self.contents.fill_rect(x-1, y+27, width+2,5, Color.new(0, 0, 0, 255)) w = width * actor.hp / actor.maxhp self.contents.fill_rect(x, y+28, w,1, Color.new(174, 68, 89, 255)) self.contents.fill_rect(x, y+29, w,1, Color.new(156, 61, 80, 255)) self.contents.fill_rect(x, y+30, w,1, Color.new(138, 53, 70, 255)) end #-------------------------------------------------------------------------- # ? draw character's SP meter #-------------------------------------------------------------------------- def draw_actor_sp_meter(actor, x, y, width = 70, type = 0) if type == 1 and actor.sp == 0 return end self.contents.font.color = system_color self.contents.fill_rect(x-1, y+27, width+2,5, Color.new(0, 0, 0, 255)) w = width * actor.sp / actor.maxsp self.contents.fill_rect(x, y+28, w,1, Color.new(62, 72, 164, 255)) self.contents.fill_rect(x, y+29, w,1, Color.new(55, 65, 149, 255)) self.contents.fill_rect(x, y+30, w,1, Color.new(49, 57, 130, 255)) end #-------------------------------------------------------------------------- # ? define method to draw squares #-------------------------------------------------------------------------- def draw_square(x, y, width, color) self.contents.fill_rect(x, y, width, 1, color) self.contents.fill_rect(x, y, 1, width, color) self.contents.fill_rect(x + width, y, 1, width + 1, color) self.contents.fill_rect(x, y + width, width + 1, 1, color) end end
#============================================================================== # ¦ Window_Gold #------------------------------------------------------------------------------ # le texte a été remplacé par une icone #==============================================================================
class Window_Gold < Window_Base #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end #-------------------------------------------------------------------------- # ? refresh #-------------------------------------------------------------------------- def refresh self.contents.clear cx = 24 self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2) self.contents.font.color = system_color bitmap = RPG::Cache.icon("032-Item01") rect = Rect.new(0, 0, 24, 24) self.contents.blt(124-cx, 0, bitmap, rect) end end
#============================================================================== # ¦ Window_PlayTime #------------------------------------------------------------------------------ # cette fenêtre a été compacté pour montrer toutes les commandes dans le menu #==============================================================================
class Window_PlayTime < Window_Base #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end #-------------------------------------------------------------------------- # ? refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120, 32, text, 2) end #-------------------------------------------------------------------------- # ? redefine update method #-------------------------------------------------------------------------- def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end end
#============================================================================== # ¦ Window_MenuStatus #==============================================================================
class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 480, 480) @column_max = 4 @item_max = $game_party.actors.size self.contents = Bitmap.new(width - 32, row_max * 112) self.contents.font.name = $fontface self.contents.font.size = $fontsize/1.2 refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # ? refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...$game_party.actors.size x = i % 4 * 112 y = i / 4 * 112 actor = $game_party.actors[i] #dessine un carré pour séparer les characters, changer couleur transparente par ce que vous voulez #couleur désirée... (methode pour faire un carré ci-dessous) draw_square(x, y, 111, disabled_color) draw_actor_battlegraphic(actor, x, y, 150)#Rep draw_actor_graphic(actor, x + 90, y + 50) draw_actor_name(actor, x + 5, y) self.contents.draw_text(x + 5, y + 20, 112, 32, "HP : #{actor.hp}") self.contents.draw_text(x + 5, y + 40, 112, 32, "MP : #{actor.sp}") draw_actor_level(actor, x + 5, y + 60) draw_actor_state(actor, x + 5, y + 80) draw_actor_hp_meter(actor, x + 5, y + 17) draw_actor_sp_meter(actor, x + 5, y + 37) end end #-------------------------------------------------------------------------- # ? define the page's top row #-------------------------------------------------------------------------- def top_row return self.oy / 112 end #-------------------------------------------------------------------------- # ? define the page maximum rows #-------------------------------------------------------------------------- def page_row_max return (self.height - 32) / 112 end #-------------------------------------------------------------------------- # ? defines a method to change the page's top row #-------------------------------------------------------------------------- def top_row=(row) if row < 0 row = 0 end if row > row_max - 1 row = row_max - 1 end self.oy = row * 112 end #-------------------------------------------------------------------------- # ? update the cursor movement #-------------------------------------------------------------------------- def update_cursor_rect if @index < 0 self.cursor_rect.empty return end row = @index / @column_max if row < self.top_row self.top_row = row end if row > self.top_row + (self.page_row_max - 1) self.top_row = row - (self.page_row_max - 1) end self.cursor_rect.set(@index % 4 * 112, @index / 4 * 112 - self.oy, 112, 112) end end
#============================================================================== # ¦ Window_Target #==============================================================================
class Window_Target < Window_Selectable #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 336, 480) @column_max = 2 @item_max = $game_party.actors.size self.contents = Bitmap.new(width - 32, row_max * 112) self.contents.font.name = $fontface self.contents.font.size = $fontsize/1.2 self.z += 10 refresh end #-------------------------------------------------------------------------- # ? refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...$game_party.actors.size x = i % 2 * 112 + 36 y = i / 2 * 112 actor = $game_party.actors[i] #dessine un carré pour séparer les characters, changer couleur transparente par ce que vous voulez #coleur désirée... (methode pour faire un carré ci-dessous) draw_square(x, y, 111, disabled_color) draw_actor_battlegraphic(actor, x, y, 150) draw_actor_graphic(actor, x + 90, y + 50) draw_actor_name(actor, x + 5, y) self.contents.draw_text(x + 5, y + 20, 112, 32, "HP : #{actor.hp}") self.contents.draw_text(x + 5, y + 40, 112, 32, "MP : #{actor.sp}") draw_actor_level(actor, x + 5, y + 60) draw_actor_state(actor, x + 5, y + 80) draw_actor_hp_meter(actor, x + 5, y + 17) draw_actor_sp_meter(actor, x + 5, y + 37) end end #-------------------------------------------------------------------------- # ? define the page's top row #-------------------------------------------------------------------------- def top_row return self.oy / 112 end #-------------------------------------------------------------------------- # ? define the page maximum rows #-------------------------------------------------------------------------- def page_row_max return (self.height - 32) / 112 end #-------------------------------------------------------------------------- # ? defines a method to change the page's top row #-------------------------------------------------------------------------- def top_row=(row) if row < 0 row = 0 end if row > row_max - 1 row = row_max - 1 end self.oy = row * 112 end #-------------------------------------------------------------------------- # ? update the cursor movement #-------------------------------------------------------------------------- def update_cursor_rect row = @index / @column_max if row < self.top_row self.top_row = row end if row > self.top_row + (self.page_row_max - 1) self.top_row = row - (self.page_row_max - 1) end if @index <= -2 self.cursor_rect.empty elsif @index == -1 self.cursor_rect.set(0, 0, self.width - 32, @item_max * 116 - 20) else self.cursor_rect.set(@index % 2 * 112 + 36, @index / 2 * 112 - self.oy, 112, 112) end end end
#============================================================================== # ¦ Scene_Menu #==============================================================================
class Scene_Menu #-------------------------------------------------------------------------- # ? initialize #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index @actor_change = false end #-------------------------------------------------------------------------- # ? main #-------------------------------------------------------------------------- def main s1 = $data_system.words.item s2 = $data_system.words.skill s3 = $data_system.words.equip s4 = "Statuts" s5 = "Sauvegarder" s6 = "Ordre" s7 = "Quitter" @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7]) @command_window.index = @menu_index if $game_party.actors.size == 0 @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) @command_window.disable_item(5) end if $game_system.save_disabled @command_window.disable_item(4) end @playtime_window = Window_PlayTime.new @playtime_window.x = 0 @playtime_window.y = 256 #224 @steps_window = Window_Steps.new @steps_window.x = 0 @steps_window.y = 320 @gold_window = Window_Gold.new @gold_window.x = 0 @gold_window.y = 416 @status_window = Window_MenuStatus.new @status_window.x = 160 @status_window.y = 0 Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @command_window.dispose @playtime_window.dispose @steps_window.dispose @gold_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # ? update the windows #-------------------------------------------------------------------------- def update @command_window.update @playtime_window.update @steps_window.update @gold_window.update @status_window.update if @command_window.active update_command return end if @status_window.active update_status return end end #-------------------------------------------------------------------------- # ? update the command window #-------------------------------------------------------------------------- def update_command if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end if Input.trigger?(Input::C) if $game_party.actors.size == 0 and @command_window.index < 4 $game_system.se_play($data_system.buzzer_se) return end case @command_window.index when 0 # Item $game_system.se_play($data_system.decision_se) $scene = Scene_Item.new when 1 # Skill $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 2 # Equip $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 3 # Status $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 4 # Save if $game_system.save_disabled $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Save.new when 5 # party actors switch $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 6 # End $game_system.se_play($data_system.decision_se) $scene = Scene_End.new end return end end #-------------------------------------------------------------------------- # ? update the status window #-------------------------------------------------------------------------- def update_status if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @status_window.active = false @status_window.index = -1 @actor_change = false return end if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) case @command_window.index when 1 # Skill if $game_party.actors[@status_window.index].restriction >= 2 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Skill.new(@status_window.index) when 2 # Equip $game_system.se_play($data_system.decision_se) $scene = Scene_Equip.new(@status_window.index) when 3 # Status $game_system.se_play($data_system.decision_se) $scene = Scene_Status.new(@status_window.index) when 5 # party actors switch if @actor_change == true $game_system.se_play($data_system.decision_se) $game_party.actors[@old_index] = $game_party.actors[@status_window.index] $game_party.actors[@status_window.index] = @new_actor $game_player.refresh @actor_change = false @status_window.refresh return end @old_index = @status_window.index @new_actor = $game_party.actors[@status_window.index] @actor_change = true end return end end end
#============================================================================== # ¦ Scene_Battle (Part 1) #==============================================================================
class Scene_Battle #-------------------------------------------------------------------------- # ? main #-------------------------------------------------------------------------- def main $game_temp.in_battle = true $game_temp.battle_turn = 0 $game_temp.battle_event_flags.clear $game_temp.battle_abort = false $game_temp.battle_main_phase = false $game_temp.battleback_name = $game_map.battleback_name $game_temp.forcing_battler = nil $game_system.battle_interpreter.setup(nil, 0) @troop_id = $game_temp.battle_troop_id $game_troop.setup(@troop_id) #memorize actors in party and cut the party down to 4 actors @party_mem = $game_party.actors $game_party.actors = $game_party.actors[0..3] s1 = $data_system.words.attack s2 = $data_system.words.skill s3 = $data_system.words.guard s4 = $data_system.words.item @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4]) @actor_command_window.y = 160 @actor_command_window.back_opacity = 160 @actor_command_window.active = false @actor_command_window.visible = false @party_command_window = Window_PartyCommand.new @help_window = Window_Help.new @help_window.back_opacity = 160 @help_window.visible = false @status_window = Window_BattleStatus.new @message_window = Window_Message.new @spriteset = Spriteset_Battle.new @wait_count = 0 if $data_system.battle_transition == "" Graphics.transition(20) else Graphics.transition(40, "Graphics/Transitions/" + $data_system.battle_transition) end start_phase1 loop do Graphics.update Input.update update if $scene != self break end end $game_map.refresh Graphics.freeze @actor_command_window.dispose @party_command_window.dispose @help_window.dispose @status_window.dispose @message_window.dispose if @skill_window != nil @skill_window.dispose end if @item_window != nil @item_window.dispose end if @result_window != nil @result_window.dispose end @spriteset.dispose if $scene.is_a?(Scene_Title) Graphics.transition Graphics.freeze end if $BTEST and not $scene.is_a?(Scene_Gameover) $scene = nil end end #-------------------------------------------------------------------------- # ? battle end #-------------------------------------------------------------------------- def battle_end(result) $game_temp.in_battle = false $game_party.clear_actions for actor in $game_party.actors actor.remove_states_battle end $game_troop.enemies.clear if $game_temp.battle_proc != nil $game_temp.battle_proc.call(result) $game_temp.battle_proc = nil end $game_party.actors = @party_mem $scene = Scene_Map.new end end |
| | | Contenu sponsorisé
| Sujet: Re: [XP] Menu pour plus de 4 héros | |
| |
| | | |
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |