Sujet: Un problème de curseur Sam 31 Jan 2009 - 11:53
Bonjour, voilà je m'essaye à scripter, pour celà, j'ai repris un script de menu et j'ai repositionner toutes les données, voici un screen
Spoiler:
Graphiquement, j'ai voulu faire un peu comme Valkyrie Profile sur psp mais là mon problème est qu'il n'est pas fonctionnel, je m'explique, je sais pas comment fonctionne le curseur de sélection des personnages. Je crois qu'il s'agit du def_update_cursor.
Après plusieurs tests, j'ai réussi à faire déplacer ce curseur, mais il ne reste pas à sa place, donc si vous pouviez m'aider, ça serai très sympa de votre part. Merci
Dernière édition par Elscorto le Mar 3 Fév 2009 - 11:24, édité 2 fois
berka
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
Sujet: Re: Un problème de curseur Sam 31 Jan 2009 - 12:42
on ne peut t'aider que si tu nous donnes le script en question !
Invité
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
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
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
Invité
Invité
Sujet: Re: Un problème de curseur Mar 3 Fév 2009 - 11:28
Désolé du double post, mais j'ai une 2ème question et je n'ai pas voulu créer un 2ème topic.
Voilà, dans le menu, le curseur ressemble à un gros pavé, celui qui se trouve dans le WindowSkin, je suis en train de chercher comment remplacer ce gros pavé par l'image d'un curseur(un doigt par exemple,beaucoup plus petit et jolie à mon gout), malheureusement, j'ai beau me tapé tous les fofo de making et je ne trouve pas comment faire.
Merci de votre aide.
ASHKA
Voyageur Lv.10
Age : 42 Inscrit le : 04/12/2008 Messages : 383
Sujet: Re: Un problème de curseur Mar 3 Fév 2009 - 12:07
Bah, j'avais pas fini mon "cours" sur MSN, mais bon, t'as l'air pressé ...
Code:
class Window_MenuStatus< Window_Selectable def initialize(x,y) super(x,y,544,275) @column_max = 2 @spacing = 20 self.active = false self.index = -1 @curseur = Sprite.new @curseur.bitmap = Cache.picture("cursor") @curseur.z = 100 @curseur.visible = self.index != -1 refresh end def dispose @curseur.bitmap.dispose @curseur.dispose super end def update_cursor return if @curseur == nil @curseur.visible = index != -1 rect = item_rect(index) @curseur.x = rect.x + (rect.width / 2) - (@curseur.bitmap.width / 2) @curseur.y = rect.y + (@curseur.bitmap.height / 2) + 91 end end
Je te donne ça brut, je te laisse decortiquer !!
ASHKA
Invité
Invité
Sujet: Re: Un problème de curseur Mar 3 Fév 2009 - 13:22
Ah mayrde, excuse c'était pour éviter de te déranger ce soir, sinon j'attendrai le "cour" complet ne t'inquiète pas, je m'occuperai d'autres choses, j'ai encore plein de choses à apprendre.
J'essaierai quand même ce que t'as mis, merci et excuse moi encore une fois.