Menu
Eclipso logo
Merry Christmas !
27/04/2024 03:12:43

OH MY DAYUM - daym drops

La souffrance d'une fusion de script!!

Kirah

Adepte
Kirah
  • Messages : 268

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 17h08

Bien le bonjours à vous Mais très chères amis makers, je suis dans l'impasse :-/ Je m'adresse à tout ceux s'y connaissant dans l'RGSS2 Donc... Le problème est le suivant: -J'utilise le Ring Menu de Syvkal associé au menu PHLiM -Tout se passait bien, j'ai réussi à insérer la partie status du menu PHLiM à celui du menu Syvkal mais lorsque je touche à celui "Equip" et "Skills" ça me donne ça: [spoiler][url=http://www.hostingpics.net/viewer.php?id=170881Prob.png][img]http://img11.hostingpics.net/pics/170881Prob.png[/img][/url][/spoiler] Et maintenant je suis perdue Voici le script de Ring menu: [code]#============================================================================== # ** Ring Menu #------------------------------------------------------------------------------- # by Syvkal # Version 1.1 # 06-23-08 #============================================================================== #===================================================# # ** C O N F I G U R A T I O N S Y S T E M ** # #===================================================# # Amount of frames for Startup Animation STARTUP_FRAMES = 20 # Amount of frames for Movement Animation MOVING_FRAMES = 15 # Radius of the Menu Ring RING_R = 75 # Disabled icon to display when disabled ICON_DISABLE= Cache::picture('Icon_Disable') #-------------D-O---N-O-T---T-O-U-C-H---------------# class Scene_Title < Scene_Base alias game_objects_original create_game_objects def create_game_objects game_objects_original #-------------D-O---N-O-T---T-O-U-C-H---------------# # As this script allows you to make a custom Menu I thought to make it easier # I would make it possible to add extra Menu Options from here # All you need to do is specify the Text to display, the icon and the command # The command must be in a STRING # Simply add to the array below : $game_ring_menu = [ # Menu Option 0 eg. Item [Vocab::item, Cache::picture('Icon_Items'), "$scene = Scene_Item.new"], # Menu Option 1 eg. Skill [Vocab::skill, Cache::picture('Icon_Skills'), "start_actor_selection", "$scene = Scene_Skill.new"], # Menu Option 2 eg. Equip [Vocab::equip, Cache::picture('Icon_Equip'), "start_actor_selection", "$scene = Scene_Equip.new(@status_window.index)"], # Menu Option 3 eg. Status [Vocab::status, Cache::picture('Icon_Status'), "start_actor_selection", "$scene = Scene_Status.new(@status_window.index)"], #---------------------------------------------------# # ** I N S E R T M O R E H E R E ** # #---------------------------------------------------# # Preferably Insert your custom Menu Options Here # Otherwise the existing Menu Options will return to wrong point on the Menu # Menu Option 4 eg. Save ["Missions", Cache::picture('Icon_Save'), "$scene = Scene_Quest.new"], # Menu Option 5 eg. Load ["Équipe", Cache::picture('Icon_Load'), "$scene = Scene_PartyForm.new"], # Menu Option 6 eg. End Game [Vocab::game_end, Cache::picture('Icon_End'), "$scene = Scene_End.new"] ] # <--- Do no Delete This #===================================================# # ** E N D C O N F I G U R A T I O N ** # #===================================================# end end #============================================================================== # ** Scene_Menu #------------------------------------------------------------------------------ # Edited to add Ring Menu #============================================================================== class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias initialize_original initialize alias start_selection_original start_actor_selection alias end_selection_original end_actor_selection #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(menu_index = 0, move = true) @move = move initialize_original(menu_index) end #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def start super create_menu_background create_command_window @gold_window = Window_Gold.new(0, 360) @location_window = Window_location.new(0, 0) end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate super dispose_menu_background @command_window.dispose @gold_window.dispose @status_window.dispose if @status_window @location_window.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super update_menu_background @command_window.update @gold_window.update @status_window.update if @status_window @location_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 commands = [] for i in 0...$game_ring_menu.size commands.push($game_ring_menu[i][0]) end icons = [] for i in 0...$game_ring_menu.size icons.push($game_ring_menu[i][1]) end @command_window = Window_RingMenu.new(232, 164, commands, icons, @move, @menu_index) if $game_party.members.size == 0 @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) end if $game_system.save_disabled @command_window.disable_item(4) end end #-------------------------------------------------------------------------- # * Create Command Window #-------------------------------------------------------------------------- def create_status_window names = [] chars = [] for i in 0...$game_party.members.size names[i] = $game_party.members[i].name chars[i] = $game_party.members[i] end @status_window = Window_RingMenu.new(255, 200, names, chars, true, $game_party.last_actor_index, true) 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 eval($game_ring_menu[@command_window.index][2]) end end #-------------------------------------------------------------------------- # * Start Actor Selection #-------------------------------------------------------------------------- def start_actor_selection @command_window.active = false @command_window.visible = false create_status_window 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 @command_window.visible = true @status_window.dispose if @status_window @status_window = nil 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 eval($game_ring_menu[@command_window.index][3]) end end end #============================================================================== # ** Scene_File #------------------------------------------------------------------------------ # Edited to return to the menu properly when loading #============================================================================== class Scene_File alias return_scene_original return_scene def return_scene if @from_title $scene = Scene_Title.new elsif @from_event $scene = Scene_Map.new else if @saving $scene = Scene_Menu.new($game_ring_menu.size - 3) else $scene = Scene_Menu.new($game_ring_menu.size - 2) end end end end #============================================================================== # ** Scene_End #------------------------------------------------------------------------------ # Edited to return to the menu properly due to loading being added #============================================================================== class Scene_End alias return_scene_original return_scene def return_scene $scene = Scene_Menu.new($game_ring_menu.size - 1) end end #============================================================================== # ** Window_Location #------------------------------------------------------------------------------ # This class shows the current map name. #============================================================================== class Window_location < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 160, (WLH*2) + 32) self.contents = Bitmap.new(width - 32, height - 32) refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear $maps = load_data("Data/MapInfos.rvdata") @map_id = $game_map.map_id @currmap = $maps[@map_id].name self.contents.font.color = system_color self.contents.draw_text(0, -4, 128, 32, "Location :") self.contents.font.color = normal_color self.contents.draw_text(0, -4+WLH, 128, 32, @currmap, 1) end end #============================================================================== # ** Window_RingMenu #------------------------------------------------------------------------------ # This Window creates a Ring Menu system #============================================================================== class Window_RingMenu < Window_Base #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :index attr_reader :item_max #-------------------------------------------------------------------------- # * Refresh Setup #-------------------------------------------------------------------------- START = 1 WAIT = 2 MOVER = 3 MOVEL = 4 #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(center_x, center_y, commands, items, move = true, index = 0, character = false) super(0, 0, 544, 416) self.contents = Bitmap.new(width-32, height-32) self.opacity = 0 @move = move @char = character @startup = STARTUP_FRAMES @commands = commands @item_max = commands.size @index = index @items = items @disabled = [] for i in 0...commands.size-1 @disabled[i] = false end @cx = center_x @cy = center_y start_setup refresh end #-------------------------------------------------------------------------- # * Start Setup #-------------------------------------------------------------------------- def start_setup @mode = START @steps = @startup end #-------------------------------------------------------------------------- # * Disable index # index : item number #-------------------------------------------------------------------------- def disable_item(index) @disabled[index] = true end #-------------------------------------------------------------------------- # * Determines if is moving #-------------------------------------------------------------------------- def animation? return @mode != WAIT end #-------------------------------------------------------------------------- # * Determine if cursor is moveable #-------------------------------------------------------------------------- def cursor_movable? return false if (not visible or not active) return false if (@opening or @closing) return false if animation? return true end #-------------------------------------------------------------------------- # * Move cursor right #-------------------------------------------------------------------------- def cursor_right @index -= 1 @index = @items.size - 1 if @index < 0 @mode = MOVER @steps = MOVING_FRAMES end #-------------------------------------------------------------------------- # * Move cursor left #-------------------------------------------------------------------------- def cursor_left @index += 1 @index = 0 if @index >= @items.size @mode = MOVEL @steps = MOVING_FRAMES end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super if self.active if cursor_movable? last_index = @index if Input.repeat?(Input::DOWN) or Input.repeat?(Input::RIGHT) cursor_right end if Input.repeat?(Input::UP) or Input.repeat?(Input::LEFT) cursor_left end if @index != last_index Sound.play_cursor end end refresh end end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear case @mode when START refresh_start when WAIT refresh_wait when MOVER refresh_move(1) when MOVEL refresh_move(0) end rect = Rect.new(18, 196, self.contents.width-32, 32) self.contents.draw_text(rect, @commands[@index], 1) end #-------------------------------------------------------------------------- # * Refresh Start Period #-------------------------------------------------------------------------- def refresh_start d1 = 2.0 * Math::PI / @item_max d2 = 1.0 * Math::PI / @startup for i in 0...@item_max j = i - @index if @move r = RING_R - 1.0 * RING_R * @steps / @startup d = d1 * j + d2 * @steps else r = RING_R d = d1 * j end x = @cx + ( r * Math.sin( d ) ).to_i y = @cy - ( r * Math.cos( d ) ).to_i draw_item(x, y, i) end @steps -= 1 if @steps < 1 @mode = WAIT end end #-------------------------------------------------------------------------- # * Refresh Wait Period #-------------------------------------------------------------------------- def refresh_wait d = 2.0 * Math::PI / @item_max for i in 0...@item_max j = i - @index x = @cx + ( RING_R * Math.sin( d * j ) ).to_i y = @cy - ( RING_R * Math.cos( d * j ) ).to_i draw_item(x, y, i) end end #-------------------------------------------------------------------------- # * Refresh Movement Period #-------------------------------------------------------------------------- def refresh_move( mode ) d1 = 2.0 * Math::PI / @item_max d2 = d1 / MOVING_FRAMES d2 *= -1 if mode != 0 for i in 0...@item_max j = i - @index d = d1 * j + d2 * @steps x = @cx + ( RING_R * Math.sin( d ) ).to_i y = @cy - ( RING_R * Math.cos( d ) ).to_i draw_item(x, y, i) end @steps -= 1 if @steps < 1 @mode = WAIT end end #-------------------------------------------------------------------------- # * Draw Item # x : draw spot x-coordinate # y : draw spot y-coordinate # index : item number #-------------------------------------------------------------------------- def draw_item(x, y, index) if @char if @index == index draw_character(@items[index].character_name, @items[index].character_index , x, y) if @mode == WAIT draw_actor_hp_ring(@items[index], @cx, @cy-16, 50, 6, 84, 270, true) draw_actor_mp_ring(@items[index], @cx, @cy-16, 50, 6, 84, 180, false) draw_actor_exp_ring(@items[index], @cx, @cy-16, 50, 6, 155, 12, false) end else draw_character(@items[index].character_name, @items[index].character_index , x, y, false) end else rect = Rect.new(0, 0, @items[index].width, @items[index].height) if @index == index self.contents.blt( x, y, @items[index], rect ) if @disabled[@index] self.contents.blt( x, y, ICON_DISABLE, rect ) end else self.contents.blt( x, y, @items[index], rect, 128 ) end end end end #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # Edited to allow disabled character icons #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Draw Character Graphic #-------------------------------------------------------------------------- def draw_character(character_name, character_index, x, y, enabled = true) return if character_name == nil bitmap = Cache.character(character_name) sign = character_name[/^[\!\$]./] if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, enabled ? 255 : 128) end end [/code] Voici le partie du menu PHLiM "Skill": [code]#============================================================================== # ** Window_Skill #------------------------------------------------------------------------------ # This window displays a list of usable skills on the skill screen, etc. #============================================================================== class Window_Skill3 < Window_Selectable2 #-------------------------------------------------------------------------- # * Object Initialization # x : window x-coordinate # y : window y-coordinate # width : window width # height : window height # actor : actor #-------------------------------------------------------------------------- def initialize(x, y, width, height, actor) super(x, y, width, height) @actor = actor @column_max = 1 self.index = 0 refresh end #-------------------------------------------------------------------------- # * Get Skill #-------------------------------------------------------------------------- def skill return @data[self.index] end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh @data = [] for skill in @actor.skills @data.push(skill) if skill.id == @actor.last_skill_id self.index = @data.size - 1 end end @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- # * Draw Item # index : item number #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) skill = @data[index] if skill != nil rect.width -= 4 enabled = @actor.skill_can_use?(skill) draw_item_name(skill, rect.x, rect.y - 4, enabled) self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2) end end #-------------------------------------------------------------------------- # * Update Help Text #-------------------------------------------------------------------------- def update_help @help_window.set_text(skill == nil ? "" : skill.description) end end ############################################################################## #============================================================================== # ** Window_SkillStatus #------------------------------------------------------------------------------ # This window displays the skill user's status on the skill screen. #============================================================================== class Window_SkillStatus < Window_Base #-------------------------------------------------------------------------- # * Object Initialization # x : window X coordinate # y : window Y corrdinate # actor : actor #-------------------------------------------------------------------------- def initialize(x, y, actor) super(x, y, 544, WLH + 96) @actor = actor refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_name(@actor, 4, 0) draw_actor_level(@actor, 140, 0) self.contents.font.size = 16 draw_actor_hp(@actor, 4, WLH * 1 / 1.25, 228) draw_actor_mp(@actor, 4, WLH * 2 / 1.25, 228) end end ############################################################################### #============================================================================== # ** Window_SklPtyStatus #------------------------------------------------------------------------------ # This window displays party member status on the status screen. #============================================================================== class Window_SklPtyStatus < Window_Selectable2 #-------------------------------------------------------------------------- # * Object Initialization # x : window X coordinate # y : window Y coordinate #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 272, 260) 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_graphic(actor, 16, actor.index * 56 + 36) x = 32 y = actor.index * 56 - 2 draw_actor_name(actor, x, y) draw_actor_state(actor, x + 172, y + 24) draw_actor_hp(actor, x, y + WLH * 1 / 1.5, 164) draw_actor_mp(actor, x, y + WLH * 2 / 1.5, 164) 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 * 56, contents.width, 56) elsif @index >= 100 # Self self.cursor_rect.set(0, (@index - 100) * 56, contents.width, 56) else # All self.cursor_rect.set(0, 0, contents.width, @item_max * 56) end end end ############################################################################### #=============================================================================# # ** Window_StatusBackground # #-----------------------------------------------------------------------------# # This section creates a "background overlay" for the status screen. # #=============================================================================# class Window_SkillBackground < Window_Base def initialize(x, y) super(x - 16, y - 16, 576, 448) rectbg = Rect.new(0, 0, 544, 416) bg = Cache.picture("skillbg") self.contents.blt(0, 0, bg, rectbg) end end #============================================================================== # ** Scene_Skill #------------------------------------------------------------------------------ # This class performs the skill screen processing. #============================================================================== class Scene_Skill < Scene_Base #-------------------------------------------------------------------------- # * Object Initialization # actor_index : actor index #-------------------------------------------------------------------------- def initialize(actor_index = 0, equip_index = 0) @actor_index = actor_index end #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def start super create_menu_background @actor = $game_party.members[@actor_index] @backg = Window_SkillBackground.new(0,0) @backg.opacity = 0 @help_window = Window_ItemHelp.new @help_window.opacity = 0 @status_window = Window_SkillStatus.new(0, 56, @actor) @status_window.x = 272 @status_window.opacity = 0 @skill_window = Window_Skill3.new(0, 56, 272, Graphics.height - 56, @actor) @skill_window.help_window = @help_window @target_window = Window_SklPtyStatus.new(272, 162) @target_window.opacity = 0 @skill_window.opacity = 0 end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate super dispose_menu_background @backg.dispose @help_window.dispose @status_window.dispose @skill_window.dispose @target_window.dispose end #-------------------------------------------------------------------------- # * Return to Original Screen #-------------------------------------------------------------------------- def return_scene $scene = Scene_Menu.new(1) end #-------------------------------------------------------------------------- # * Switch to Next Actor Screen #-------------------------------------------------------------------------- def next_actor @actor_index += 1 @actor_index %= $game_party.members.size $scene = Scene_Skill.new(@actor_index) end #-------------------------------------------------------------------------- # * Switch to Previous Actor Screen #-------------------------------------------------------------------------- def prev_actor @actor_index += $game_party.members.size - 1 @actor_index %= $game_party.members.size $scene = Scene_Skill.new(@actor_index) end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super update_menu_background @help_window.update @status_window.update @skill_window.update @target_window.update if @skill_window.active update_skill_selection elsif @target_window.active update_target_selection end end #-------------------------------------------------------------------------- # * Update Skill Selection #-------------------------------------------------------------------------- def update_skill_selection if Input.trigger?(Input::B) Sound.play_cancel return_scene elsif Input.trigger?(Input::R) Sound.play_cursor next_actor elsif Input.trigger?(Input::L) Sound.play_cursor prev_actor elsif Input.trigger?(Input::C) @skill = @skill_window.skill if @skill != nil @actor.last_skill_id = @skill.id end if @actor.skill_can_use?(@skill) Sound.play_decision determine_skill else Sound.play_buzzer end end end #-------------------------------------------------------------------------- # * Confirm Skill #-------------------------------------------------------------------------- def determine_skill if @skill.for_friend? show_target_window(@skill_window.index % 2 == 0) if @skill.for_all? @target_window.index = 99 elsif @skill.for_user? @target_window.index = @actor_index + 100 else if $game_party.last_target_index < @target_window.item_max @target_window.index = $game_party.last_target_index else @target_window.index = 0 end end else use_skill_nontarget end end #-------------------------------------------------------------------------- # * Update Target Selection #-------------------------------------------------------------------------- def update_target_selection if Input.trigger?(Input::B) Sound.play_cancel @skill_window.active = true @target_window.active = false @target_window.index = -1 elsif Input.trigger?(Input::C) if not @actor.skill_can_use?(@skill) Sound.play_buzzer else determine_target end end end #-------------------------------------------------------------------------- # * Confirm Target # If there is no effect (such as using a potion on an incapacitated # character), play a buzzer SE. #-------------------------------------------------------------------------- def determine_target used = false if @skill.for_all? for target in $game_party.members target.skill_effect(@actor, @skill) used = true unless target.skipped end elsif @skill.for_user? target = $game_party.members[@target_window.index - 100] target.skill_effect(@actor, @skill) used = true unless target.skipped else $game_party.last_target_index = @target_window.index target = $game_party.members[@target_window.index] target.skill_effect(@actor, @skill) used = true unless target.skipped end if used use_skill_nontarget else Sound.play_buzzer end end #-------------------------------------------------------------------------- # * Show Target Window # right : Right justification flag (if false, left justification) #-------------------------------------------------------------------------- def show_target_window(right) @skill_window.active = false @target_window.visible = true @target_window.active = true end #-------------------------------------------------------------------------- # * Hide Target Window #-------------------------------------------------------------------------- def hide_target_window @skill_window.active = true @target_window.visible = false @target_window.active = false end #-------------------------------------------------------------------------- # * Use Skill (apply effects to non-ally targets) #-------------------------------------------------------------------------- def use_skill_nontarget Sound.play_use_skill @actor.mp -= @actor.calc_mp_cost(@skill) @status_window.refresh @skill_window.refresh @target_window.refresh if $game_party.all_dead? $scene = Scene_Gameover.new elsif @skill.common_event_id > 0 $game_temp.common_event_id = @skill.common_event_id $scene = Scene_Map.new end end end [/code] Et juste au cas ou, voici la partie "statuts" que j'ai réussi à intégrer: [code]module STATUS LASTNAMES = false CHARVIEW = false end #============================================================================== # ** Cache (Body) #------------------------------------------------------------------------------ # Adds the folder "Body" to the file cache #============================================================================== module Cache def self.body(filename) load_bitmap("Graphics/Body/", filename) end end #=============================================================================# # ** Window_StatusBackground # #-----------------------------------------------------------------------------# # This section creates a "background overlay" for the status screen. # #=============================================================================# class Window_StatBackground < Window_Base def initialize(x, y) super(x - 16, y - 16, 576, 448) rectbg = Rect.new(0, 0, 544, 416) bg = Cache.picture("statbg") self.contents.blt(0, 0, bg, rectbg) end end #============================================================================ # Window_Status #============================================================================ class Window_Status < Window_Base include STATUS #-------------------------------------------------------------------------- # * Object Initialization # actor : actor #-------------------------------------------------------------------------- def initialize(actor) #---------------------------------------------------------------------------- # Custom Window_Base Mods #---------------------------------------------------------------------------- # Actor Parameter Positioning #============================================================================ # This section shrinks the Parameters, allowing more space (for the more stat # add-on, with luck.) #============================================================================ def draw_actor_parameter(actor, x, y, type) case type when 0 parameter_name = Vocab::atk parameter_value = actor.atk when 1 parameter_name = Vocab::def parameter_value = actor.def when 2 parameter_name = Vocab::spi parameter_value = actor.spi when 3 parameter_name = Vocab::agi parameter_value = actor.agi end self.contents.font.color = system_color self.contents.draw_text(x, y, 120, WLH, parameter_name) self.contents.font.color = normal_color self.contents.draw_text(x + 60, y, 36, WLH, parameter_value, 2) end #---------------------------------------------------------------------------- # Actor Names #============================================================================ # This section allows for last names. Simply change "LastName#" to whatever # you want. #============================================================================ def draw_actor_names(actor, x, y) if LASTNAMES if @actor.id==1 self.contents.draw_text(x, y, 264, WLH, actor.name + " " + "LastName1") elsif @actor.id==2 self.contents.draw_text(x, y, 264, WLH, actor.name + " " + "LastName2") elsif @actor.id==3 self.contents.draw_text(x, y, 264, WLH, actor.name + " " + "LastName3") elsif @actor.id==4 self.contents.draw_text(x, y, 264, WLH, actor.name + " " + "LastName4") elsif @actor.id==5 self.contents.draw_text(x, y, 264, WLH, actor.name + " " + "LastName5") elsif @actor.id==6 self.contents.draw_text(x, y, 264, WLH, actor.name + " " + "LastName6") elsif @actor.id==7 self.contents.draw_text(x, y, 264, WLH, actor.name + " " + "LastName7") elsif @actor.id==8 self.contents.draw_text(x, y, 264, WLH, actor.name + " " + "LastName8") end else self.contents.draw_text(x, y, 264, WLH, actor.name) end end #---------------------------------------------------------------------------- # Draw Body #============================================================================ # This section allows you to use a full body picture # # Default size: 228x416 (Change according to screen size.) # # When creating an image, treat it as a faceset, meaning that you should set # the images to a 4x2 grid #============================================================================ def draw_body(face_name, face_index, x, y, sizex = 228, sizey = 416) bitmap = Cache.body(face_name) rect = Rect.new(0, 0, 0, 0) rect.x = face_index % 4 * 228 + (228 - sizex) / 2 rect.y = face_index / 4 * 416 + (416 - sizey) / 2 rect.width = sizex rect.height = sizey self.contents.blt(x, y, bitmap, rect) bitmap.dispose end #---------------------------------------------------------------------------- # Draw Actor Body #============================================================================ # This will change the body automatically, according to the faceset you # selected. #============================================================================ def draw_actor_body(actor, x, y, sizex = 228, sizey = 416) draw_body(actor.face_name, actor.face_index, x, y, sizex, sizey) end ################################################## # Continue initialization of Window_Status Class # ################################################## super(-16, -16, 576, 448) rectbg = Rect.new(0, 0, 544, 416) @actor = actor refresh end # end initialize #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.size = 22 draw_actor_names(@actor, 12, 12) self.contents.font.size = 18 draw_actor_face(@actor, 16,64) draw_actor_graphic(@actor, 102,160) if CHARVIEW draw_actor_body(@actor, Graphics.width - 6 - 228, Graphics.height - 6 - 416) else end draw_basic_info(128, 42) self.contents.font.size = 16 draw_parameters(32, 160) draw_exp_info(32, 366) draw_equipments(32, 252) end #-------------------------------------------------------------------------- # * Draw Basic Information # x : Draw spot X coordinate # y : Draw spot Y coordinate #-------------------------------------------------------------------------- def draw_basic_info(x, y) self.contents.font.color = system_color self.contents.draw_text(x, y + WLH * 1, 60, WLH, "Class") self.contents.font.color = normal_color draw_actor_class(@actor, x + 60, y + WLH * 1) draw_actor_level(@actor, x, y + WLH * 2) draw_actor_hp(@actor, x, y + WLH * 3, 180) draw_actor_mp(@actor, x, y + WLH * 4, 180) draw_actor_state(@actor, x + 56, y + WLH * 2) end #-------------------------------------------------------------------------- # * Draw Parameters # x : Draw spot X coordinate # y : Draw spot Y coordinate #-------------------------------------------------------------------------- def draw_parameters(x, y) draw_actor_parameter(@actor, x, y + WLH * 0, 0) draw_actor_parameter(@actor, x, y + WLH * 1 / 1.25, 1) draw_actor_parameter(@actor, x, y + WLH * 2 / 1.25, 2) draw_actor_parameter(@actor, x, y + WLH * 3 / 1.25, 3) end #-------------------------------------------------------------------------- # * Draw Experience Information # x : Draw spot X coordinate # y : Draw spot Y coordinate #-------------------------------------------------------------------------- def draw_exp_info(x, y) s1 = @actor.exp_s s2 = @actor.next_rest_exp_s s_next = sprintf(Vocab::ExpNext, Vocab::level) self.contents.font.color = system_color self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal) self.contents.draw_text(x, y + WLH * 1 / 1.25, 180, WLH, s_next) self.contents.font.color = normal_color self.contents.draw_text(x, y + WLH * 0, 180, WLH, s1, 2) self.contents.draw_text(x, y + WLH * 1 / 1.25, 180, WLH, s2, 2) end # End draw_exp_info #-------------------------------------------------------------------------- # * Draw Equipment # x : Draw spot X coordinate # y : Draw spot Y coordinate #-------------------------------------------------------------------------- def draw_equipments(x, y) self.contents.font.color = system_color if @actor.two_swords_style self.contents.draw_text(x, y + WLH * 0, 120, WLH, Vocab::weapon1) self.contents.draw_text(x, y + WLH * 1 / 1.25, 120, WLH, Vocab::weapon2) else self.contents.draw_text(x, y + WLH * 0, 120, WLH, Vocab::weapon) self.contents.draw_text(x, y + WLH * 1 / 1.25, 120, WLH, Vocab::armor1) end self.contents.draw_text(x, y + WLH * 2 / 1.25, 120, WLH, "Headgear") self.contents.draw_text(x, y + WLH * 3 / 1.25, 120, WLH, "Armor") self.contents.draw_text(x, y + WLH * 4 / 1.25, 120, WLH, "Accessory") for i in 0..4 draw_item_name(@actor.equips[i], x + 72, y + WLH / 1.25 * (i + 0)) end # End "For" loop end # End draw_equipments end # End Window_Status ################################################################################ ### STATUS SCENE MOD ### ################################################################################ #============================================================================== # ** Scene_Status #------------------------------------------------------------------------------ # This class performs the status screen processing. #============================================================================== class Scene_Status < Scene_Base #-------------------------------------------------------------------------- # * Object Initialization # actor_index : actor index #-------------------------------------------------------------------------- def initialize(actor_index = 0) @actor_index = actor_index end #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def start super create_menu_background @bg = Window_StatBackground.new(0,0) @bg.opacity = 0 @actor = $game_party.members[@actor_index] @status_window = Window_Status.new(@actor) @status_window.opacity = 0 end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate super dispose_menu_background @status_window.dispose @bg.dispose end #-------------------------------------------------------------------------- # * Return to Original Screen #-------------------------------------------------------------------------- def return_scene $scene = Scene_Menu.new(3) end #-------------------------------------------------------------------------- # * Switch to Next Actor Screen #-------------------------------------------------------------------------- def next_actor @actor_index += 1 @actor_index %= $game_party.members.size $scene = Scene_Status.new(@actor_index) end #-------------------------------------------------------------------------- # * Switch to Previous Actor Screen #-------------------------------------------------------------------------- def prev_actor @actor_index += $game_party.members.size - 1 @actor_index %= $game_party.members.size $scene = Scene_Status.new(@actor_index) end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update update_menu_background @status_window.update if Input.trigger?(Input::B) Sound.play_cancel return_scene elsif Input.trigger?(Input::R) Sound.play_cursor next_actor elsif Input.trigger?(Input::L) Sound.play_cursor prev_actor end super end end [/code] Bon voilà, et je remercie d'avance toute aide!!


[url=http://www.hostingpics.net/viewer.php?id=848601Joke.png][img]http://img15.hostingpics.net/pics/848601Joke.png[/img][/url]

Anonyme

8015
Anonyme
  • Messages : 8015

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 17h40

Tu pourrais faire une démo ? Ce sera plus facile pour tous.

Cantarelle

Adepte
Cantarelle
  • Messages : 298

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 17h44

Est-ce que tu as déjà la super class Window_Selectable2 ? Parce que c'est ça le problème, il ne la trouve pas. Le menu PHLiM l'utilise...

Kirah

Adepte
Kirah
  • Messages : 268

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 18h28

Ouep en effet, j'ai la class Window_Selectable mais même si je l'insère, ça me fait ce problème. Peut-être est-ce à cause de la matière dont je place le script (Au dessus du Ring menu ou en dessous) mais ça je ne sais pas :-/ Je vais donner le lien menant vers le menu PHLiM ainsi que celui du ring menu -Syvkal Ring menu: http://www.rpgmakervx.net/index.php?sho ... &hl=Syvkal -PHLiM: http://www.mediafire.com/download/3nrzz ... +v0.63.rar (je mets directement le lien sur Mediafire car le site comporte beaucoup de truc à Dl donc voilà )


[url=http://www.hostingpics.net/viewer.php?id=848601Joke.png][img]http://img15.hostingpics.net/pics/848601Joke.png[/img][/url]

Cantarelle

Adepte
Cantarelle
  • Messages : 298

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 19h01

Ne confond pas [b]Window_Selectable[/b] et [b]Window_Selectable2[/b], c'est deux choses différentes... Tiens, insère ça avant tout script de ton menu : [code] #============================================================================== # ** Window_Selectable2 #------------------------------------------------------------------------------ # Only use this for the Menus (Main, Item, Skills, Equip, etc) #============================================================================== class Window_Selectable2 < Window_Base #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :item_max # item count attr_reader :column_max # digit count attr_reader :index # cursor position attr_reader :help_window # help window #-------------------------------------------------------------------------- # * Object Initialization # x : window X coordinate # y : window Y coordinate # width : window width # height : window height # spacing : width of empty space when items are arranged horizontally #-------------------------------------------------------------------------- def initialize(x, y, width, height, spacing = 32) @item_max = 1 @column_max = 1 @index = -1 @spacing = spacing super(x, y, width, height) end #-------------------------------------------------------------------------- # * Create Window Contents #-------------------------------------------------------------------------- def create_contents self.contents.dispose self.contents = Bitmap.new(width - 32, [height - 32, row_max * 22].max) self.contents.font.size = 16 end #-------------------------------------------------------------------------- # * Set Cursor Position # index : new cursor position #-------------------------------------------------------------------------- def index=(index) @index = index update_cursor call_update_help end #-------------------------------------------------------------------------- # * Get Row Count #-------------------------------------------------------------------------- def row_max return (@item_max + @column_max - 1) / @column_max end #-------------------------------------------------------------------------- # * Get Top Row #-------------------------------------------------------------------------- def top_row return self.oy / 22 end #-------------------------------------------------------------------------- # * Set Top Row # row : row shown on top #-------------------------------------------------------------------------- def top_row=(row) row = 0 if row < 0 row = row_max - 1 if row > row_max - 1 self.oy = row * 22 end #-------------------------------------------------------------------------- # * Get Number of Rows Displayable on 1 Page #-------------------------------------------------------------------------- def page_row_max return (self.height - 32) / 22 end #-------------------------------------------------------------------------- # * Get Number of Items Displayable on 1 Page #-------------------------------------------------------------------------- def page_item_max return page_row_max * @column_max end #-------------------------------------------------------------------------- # * Get bottom row #-------------------------------------------------------------------------- def bottom_row return top_row + page_row_max - 1 end #-------------------------------------------------------------------------- # * Set bottom row # row : Row displayed at the bottom #-------------------------------------------------------------------------- def bottom_row=(row) self.top_row = row - (page_row_max - 1) end #-------------------------------------------------------------------------- # * Get rectangle for displaying items # index : item number #-------------------------------------------------------------------------- def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = 18 rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * 22 return rect end #-------------------------------------------------------------------------- # * Set Help Window # help_window : new help window #-------------------------------------------------------------------------- def help_window=(help_window) @help_window = help_window call_update_help end #-------------------------------------------------------------------------- # * Determine if cursor is moveable #-------------------------------------------------------------------------- def cursor_movable? return false if (not visible or not active) return false if (index < 0 or index > @item_max or @item_max == 0) return false if (@opening or @closing) return true end #-------------------------------------------------------------------------- # * Move cursor down # wrap : Wraparound allowed #-------------------------------------------------------------------------- def cursor_down(wrap = false) if (@index < @item_max - @column_max) or (wrap and @column_max == 1) @index = (@index + @column_max) % @item_max end end #-------------------------------------------------------------------------- # * Move cursor up # wrap : Wraparound allowed #-------------------------------------------------------------------------- def cursor_up(wrap = false) if (@index >= @column_max) or (wrap and @column_max == 1) @index = (@index - @column_max + @item_max) % @item_max end end #-------------------------------------------------------------------------- # * Move cursor right # wrap : Wraparound allowed #-------------------------------------------------------------------------- def cursor_right(wrap = false) if (@column_max >= 2) and (@index < @item_max - 1 or (wrap and page_row_max == 1)) @index = (@index + 1) % @item_max end end #-------------------------------------------------------------------------- # * Move cursor left # wrap : Wraparound allowed #-------------------------------------------------------------------------- def cursor_left(wrap = false) if (@column_max >= 2) and (@index > 0 or (wrap and page_row_max == 1)) @index = (@index - 1 + @item_max) % @item_max end end #-------------------------------------------------------------------------- # * Move cursor one page down #-------------------------------------------------------------------------- def cursor_pagedown if top_row + page_row_max < row_max @index = [@index + page_item_max, @item_max - 1].min self.top_row += page_row_max end end #-------------------------------------------------------------------------- # * Move cursor one page up #-------------------------------------------------------------------------- def cursor_pageup if top_row > 0 @index = [@index - page_item_max, 0].max self.top_row -= page_row_max end end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super if cursor_movable? last_index = @index if Input.repeat?(Input::DOWN) cursor_down(Input.trigger?(Input::DOWN)) end if Input.repeat?(Input::UP) cursor_up(Input.trigger?(Input::UP)) end if Input.repeat?(Input::RIGHT) cursor_right(Input.trigger?(Input::RIGHT)) end if Input.repeat?(Input::LEFT) cursor_left(Input.trigger?(Input::LEFT)) end if Input.repeat?(Input::R) cursor_pagedown end if Input.repeat?(Input::L) cursor_pageup end if @index != last_index Sound.play_cursor end end update_cursor call_update_help end #-------------------------------------------------------------------------- # * Update cursor #-------------------------------------------------------------------------- def update_cursor if @index < 0 # If the cursor position is less than 0 self.cursor_rect.empty # Empty cursor else # If the cursor position is 0 or more row = @index / @column_max # Get current row if row < top_row # If before the currently displayed self.top_row = row # Scroll up end if row > bottom_row # If after the currently displayed self.bottom_row = row # Scroll down end rect = item_rect(@index) # Get rectangle of selected item rect.y -= self.oy # Match rectangle to scroll position self.cursor_rect = rect # Refresh cursor rectangle end end #-------------------------------------------------------------------------- # * Call help window update method #-------------------------------------------------------------------------- def call_update_help if self.active and @help_window != nil update_help end end #-------------------------------------------------------------------------- # * Update help window (contents are defined by the subclasses) #-------------------------------------------------------------------------- def update_help end end [/code]

Kirah

Adepte
Kirah
  • Messages : 268

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 19h32

Bon... ça ne change rien, il m'affiche toujours le même problème Regarde peut-être que j'ai mal placé le Xindow selectable"[b]2[/b]" [spoiler][url=http://www.hostingpics.net/viewer.php?id=516119Script.png][img]http://img15.hostingpics.net/pics/516119Script.png[/img][/url][/spoiler]


[url=http://www.hostingpics.net/viewer.php?id=848601Joke.png][img]http://img15.hostingpics.net/pics/848601Joke.png[/img][/url]

KuroFidy

Grand Maître
KuroFidy
  • Messages : 3778

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 19h38

[quote="Cantarelle"]Tiens, insère ça avant tout script de ton menu[/quote] avant ton [b]menu[/b], pas [b]main[/b]

Kirah

Adepte
Kirah
  • Messages : 268

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 22h48

Regarde bien ou se situe le Ring Menu (Syvkal) Maintenant moi j'y comprends plus rien!!


[url=http://www.hostingpics.net/viewer.php?id=848601Joke.png][img]http://img15.hostingpics.net/pics/848601Joke.png[/img][/url]

KuroFidy

Grand Maître
KuroFidy
  • Messages : 3778

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 22h53

Oui justement ^^ Elle t'as demandé de le mettre avant ton menu => Ring Menu (Syvkal) donc dans l'ordre: [list][*]Window Selectable2[/*:m] [*]Ring Menu (Syvkal)[/*:m] [*]Main[/*:m][/list:u]

Kirah

Adepte
Kirah
  • Messages : 268

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 23h07

C'est ce que je viens de faire et ça m'affiche toujours le même problème :-/


[url=http://www.hostingpics.net/viewer.php?id=848601Joke.png][img]http://img15.hostingpics.net/pics/848601Joke.png[/img][/url]

Cantarelle

Adepte
Cantarelle
  • Messages : 298

La souffrance d'une fusion de script!!


dim. 02 juin 2013 - 23h38

Dessous ta rebrique [b]///Menu///[/b], juste dessus [b]| Custom_Scene_Skill[/b] ect... ///Menu/// Window_Selectionnable2 | Custom Scene_Skill | Custom Scene_Status Systeme Menu/Option ... Quand je dis tout la rebrique de ton menu, c'est bien TOUT, pas une partie... Ce problème, ce n'est qu'un simple placement d'un script (que tu n'avais pas mis, de base) qui doit se retrouver en haut de ceux qui l'appelle...

Kirah

Adepte
Kirah
  • Messages : 268

La souffrance d'une fusion de script!!


lun. 03 juin 2013 - 17h48

Bon ok, ça à arranger le problème, le menu compétence s'affiche mais le menu item lui part toujours en vrille, regarde ce que ça donne quand je place le script "Item" ainsi que le menu "Equip" (C'est quasi le même truc que le programme m'affiche: [spoiler][url=http://www.hostingpics.net/viewer.php?id=443890Bug.png][img]http://img4.hostingpics.net/pics/443890Bug.png[/img][/url][/spoiler] Et soit dit en passant, le menu compétence s'affiche mais ça me fait laisse un truc en travers de la gorge :-/ [spoiler][url=http://www.hostingpics.net/viewer.php?id=8931182eBug.png][img]http://img4.hostingpics.net/pics/8931182eBug.png[/img][/url][/spoiler] "J'ai remarqué que la couleur et la forme de mes barres de HP et MP respectives ne ressemblaient pas du tout à celle du menu PHLiM de base, y-a-t'il un autre script à installer parceque je voudrais leur donner cette forme là (Celle du menu PHLiM)!!


[url=http://www.hostingpics.net/viewer.php?id=848601Joke.png][img]http://img15.hostingpics.net/pics/848601Joke.png[/img][/url]

Cantarelle

Adepte
Cantarelle
  • Messages : 298

La souffrance d'une fusion de script!!


lun. 03 juin 2013 - 20h28

Ce n'est pas le même message d'erreur. Il faut que tu comprennes que le message d'erreur te dit précisément ce qui ne va pas. Décortiquer un peu ne serait pas du luxe. Avant, il te sortait : undefined superclass 'Window_Selectable2' Ca veut dire que la superclass (et donc, par extention pour vous, il manque un script. superclass veut dire que c'est une class qui est appelée par d'autres pour de l'héritage) Window_Selectable2 n'est pas dans tes scripts. En allant plus dans le détail, la classe qui héritait de Window_Selectable2 pointait vers... rien. Maintenant, ça te sort : undefined method 'draw_actor_name2' Ca veut dire qu'il ne trouve pas la méthode draw_actor_name2 dans un de tes scripts où qu'elle est définie mais n'est pas accessible. Ce qui est normal, parce qu'elle est définie dans le script : [b]★★P2's Menu (Updated)[/b] (oui, j'ai téléchargé VX pour ce problème, ce qui ne changera pas que je ne vais pas me casser la tête à comprendre les différences entre le RGSS1 que je manipule et le 2. Je ne ferai pas de scripts pour VX et VX.Ace (même si c'est le RGSS3). Je débloque juste la chose, après, tu te débrouilles pour tout ce qui est affichage). Petit cours de programmation : Un script, tel que vous l'entendez, est généralement composée d'une classe [code]class Nom_De_Ma_Class code end[/code] Quand vous voyez... [code] class Nom_De_Ma_Class < Nom_De_La_SuperClass code end [/code] Ça veut dire que la classe Nom_De_Ma_Class hérite de Nom_De_La_SuperClass. Ça veut dire qu'elle hérite de TOUTES les méthodes et de TOUS les attributs de celle-ci, en se les appropriant. [code]class Nom_De_Ma_Class def maMethode1() code end def maMethode2(param1) code end end[/code] Une class est composée de méthodes. Ces méthodes (qu'on peut aussi voir sous le nom de procédures et de fonctions, même si ces termes sont plus pour des langages non orientés Objet. En POO (ce qu'est Ruby, de base... Et donc, les RGSS qui ne sont qu'une bibliothèque), on appelle globalement des méthodes) contiennent du code qui se jouera dès qu'on appelle la méthode. Les méthodes peuvent demander des paramètres. Le code dedans veut utiliser les données contenues dans les paramètres pour réaliser certaines actions. [code]class Nom_De_Ma_Class def monConstructeur() @attribut1 = code @attribut2 = code end def maMethode1() code end def maMethode2(param1) code end end[/code] En règle générale, les objets ont des attributs (ou etat). Les objets en eux-même sont construits par la méthode monConstructeur (en ruby, c'est def initialize. def main est pour la SuperClass ou pour les classes Scene). La méthode monConstructeur va donc créer un objet, avec les attributs (@attribut1, @attribut2...) indiqués dans son constructeur. Bien sûr, l'objet créé pourra utiliser SES méthodes quand on lui demandera ( monObjet.maMethode1 ). Donc, après tout ça, qu'est-ce qu'il faut retenir ? * 1 - Apprend à lire les messages d'erreurs. * 2 - Dans tout ce que j'ai dit, tu devrais pouvoir t'en sortir tout seul. * 3 - En fouillant par toi-même, tu arriveras mieux à comprendre ces usines à gaz. Et voilà

Kirah

Adepte
Kirah
  • Messages : 268

La souffrance d'une fusion de script!!


lun. 03 juin 2013 - 22h34

Ahlalala merci à toi Canta' maintenant tout marche comme sur des roulettes Mais ce n'est pas demain la veille que je me lancerais dans l'RGSS car je n'ai prévue que d'apprendre à scripter sous VX ace le temps que je finis mon projet sur VX. Et je sais très bien lire le problème, juste que ça ne m'indiquait pas le script "P2's menu" Sinon, je met en Résolus ou un staffeux va déplacer?


[url=http://www.hostingpics.net/viewer.php?id=848601Joke.png][img]http://img15.hostingpics.net/pics/848601Joke.png[/img][/url]

KuroFidy

Grand Maître
KuroFidy
  • Messages : 3778

La souffrance d'une fusion de script!!


lun. 03 juin 2013 - 22h36

Je m'en occupe, des points Cantarelle ou tu veux rester à 42 ?