Invité
| Sujet: Re: Un problème de curseur Dim 1 Fév 2009 - 12:16 | |
| Voilà Berka mon script, ASHKA ma aidé pour le déplacement du curseur, et ça fonctionne Mais je souhaiterai faire en sorte qu'il soit multi directionnel, je m'explique, quand t'est sur le 1er perso, si tu appuies à droite, le curseur va sur le 2ème et si t'appuies sur bas, le curseur va sur le 3ème personnage et ainsi de suite pour chaque, je m'y suis essayé et je me suis encore casser le nez Script en question - Spoiler:
- Code:
-
################################### #Créer par Mog. #modifier par emixam2 et TheLSSJ ##############
################################## # Menu Test par Elscorto ##################################
################ # Game_Actor ################
class Game_Actor def now_exp return @exp - @exp_list[@level] end def next_exp return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 end end
############### # Window_Base # ############### class Window_Base < Window def draw_item_icon(item, x, y) if item != nil draw_icon(item.icon_index, x, y) end end def draw_actor_level_menu(actor, x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 32, WLH, Vocab::level_a) self.contents.font.color = normal_color self.contents.draw_text(x + 16, y, 24, WLH, actor.level, 2) end def draw_actor_class_menu(actor, x, y) self.contents.font.color = normal_color self.contents.draw_text(x, y, 85, WLH, actor.class.name) end def exp_gauge_color1 return text_color(30) end def exp_gauge_color2 return text_color(31) end def draw_actor_exp_meter(actor, x, y, width = 100) if actor.next_exp != 0 exp = actor.now_exp else exp = 1 end gw = width * exp / [actor.next_exp, 1].max gc1 = exp_gauge_color1 gc2 = exp_gauge_color2 self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color) self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, "Exp") self.contents.font.color = normal_color xr = x + width self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_rest_exp_s, 2) end end
################### # Window_MenuStatus ###################
class Window_MenuStatus< Window_Selectable def initialize(x,y) super(x,y,544,275) refresh self.active = false self.index = -1 end def refresh self.contents.clear @item_max = $game_party.members.size for actor in $game_party.members # Pour le 1er personnage if actor.index == 0 draw_actor_graphic(actor,200,60) draw_actor_level_menu(actor, 80,0) draw_actor_exp_meter(actor, 0 ,60) draw_item_icon($data_weapons[actor.weapon_id], 160,60) if actor.two_swords_style draw_item_icon($data_weapons[actor.armor1_id], 220,60) else draw_item_icon($data_armors[actor.armor1_id],220,60) end draw_actor_name(actor, 0, 0) draw_actor_state(actor, 160,0) draw_actor_hp(actor, 0, 20) draw_actor_mp(actor, 0,40) # Pour le 2ème personnage elsif actor.index == 1 draw_actor_graphic(actor,472,60) draw_actor_level_menu(actor, 352,0) draw_actor_exp_meter(actor, 272 ,60) draw_item_icon($data_weapons[actor.weapon_id], 432,60) if actor.two_swords_style draw_item_icon($data_weapons[actor.armor1_id], 492,60) else draw_item_icon($data_armors[actor.armor1_id],492,60) end draw_actor_name(actor, 272, 0) draw_actor_state(actor,432 ,0) draw_actor_hp(actor, 272, 20) draw_actor_mp(actor, 272,40) # Pour le 3ème personnage elsif actor.index == 2 draw_actor_graphic(actor,200,197) draw_actor_level_menu(actor, 80,140) draw_actor_exp_meter(actor, 0 ,200) draw_item_icon($data_weapons[actor.weapon_id], 160,200) if actor.two_swords_style draw_item_icon($data_weapons[actor.armor1_id], 220,200) else draw_item_icon($data_armors[actor.armor1_id],220,200) end draw_actor_name(actor, 0, 140) draw_actor_state(actor, 160,140) draw_actor_hp(actor, 0, 160) draw_actor_mp(actor, 0,180) # Pour le 4ème personnage elsif actor.index == 3 draw_actor_graphic(actor,472,197) draw_actor_level_menu(actor, 352,140) draw_actor_exp_meter(actor, 272 ,200) draw_item_icon($data_weapons[actor.weapon_id], 432,200) if actor.two_swords_style draw_item_icon($data_weapons[actor.armor1_id], 492,200) else draw_item_icon($data_armors[actor.armor1_id],492,200) end draw_actor_name(actor, 272, 140) draw_actor_state(actor, 432,140) draw_actor_hp(actor, 272, 160) draw_actor_mp(actor, 272,180) end end end #-------------------------------------------------------------------------- # * Update cursor #-------------------------------------------------------------------------- def update_cursor if @index < 0 # ?????? self.cursor_rect.empty elsif @index < @item_max # ?? case @index when 0 self.cursor_rect.set(0, 0, 272, 137) when 1 self.cursor_rect.set(272, 0, 272, 137) when 2 self.cursor_rect.set(0,137,272,137) when 3 self.cursor_rect.set(272,137,272,137) end elsif @index >= 100 # ??
self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96) else # ?? self.cursor_rect.set(0, 0, contents.width, @item_max * 96) end end end
############ # Game_Map # ############
class Game_Map attr_reader :map_id def mpname $mpname = load_data("Data/MapInfos.rvdata") $mpname[@map_id].name end end
################### # Window_MapName ###################
class Window_MapName < Window_Base def initialize(x, y) super(x,y+32, 195, WLH + 50) refresh end def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(4, -8, 120, 32, "Localisation") self.contents.font.color = normal_color self.contents.draw_text(4, 15, 120, 32, $game_map.mpname.to_s, 2) end end
############### # Window_Time # ############### class Window_Time < Window_Base def initialize(x, y) super(x, y+7, 190, WLH + 50) refresh end
def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(4, -8, 120, 32, "Temps de jeu") @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, 15, 120, 32, text, 2) end def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end end
#============================================================================== # ** Scene_Menu #------------------------------------------------------------------------------ # This class performs the menu screen processing. #==============================================================================
class Scene_Menu def main start perform_transition Input.update loop do Graphics.update Input.update update break if $scene != self end Graphics.update pre_terminate Graphics.freeze terminate end #-------------------------------------------------------------------------- # * Object Initialization # menu_index : command cursor's initial position #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index end def create_menu_background @menuback_sprite = Sprite.new @menuback_sprite.bitmap = $game_temp.background_bitmap @menuback_sprite.color.set(16, 16, 16, 128) update_menu_background end def dispose_menu_background @menuback_sprite.dispose end def update_menu_background end def perform_transition Graphics.transition(10) end #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def start super create_menu_background create_command_window @gold_window = Window_Gold.new(0, 340) @status_window = Window_MenuStatus.new(0, 75) @temps = Window_Time.new(160,336) @lieu = Window_MapName.new(350,311) @status_window.openness = 0 @temps.openness = 0 @lieu.openness = 0 @gold_window.openness = 0 @status_window.open @temps.open @lieu.open @gold_window.open end def pre_terminate @status_window.close @temps.close @lieu.close @gold_window.close @command_window.close begin @status_window.update @temps.update @lieu.update @gold_window.update @command_window.update Graphics.update end until @status_window.openness == 0 end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate super dispose_menu_background @command_window.dispose @gold_window.dispose @status_window.dispose @lieu.dispose @temps.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super update_menu_background @command_window.update @gold_window.update @status_window.update @lieu.update @temps.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(544, [s1, s2, s3, s4, s5, s6],4,2) @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
Merci pour votre aide EDIT : Résolu, merci ASHKA |
|