Sujet: Modification du script de level up. Jeu 30 Oct 2008 - 15:20
Bonjour ^^ J'ai vu le script intéressant qu'a posté akakin ici : [url] https://rpg-maker-vx.bbactif.com/partage-de-scripts-f24/script-de-lvl-up-custom-t2321.htm#28290[/url] Je l'ai un peu modifié pour qu'il donne l'XP restante pour le prochain niveau.
Je voudrais savoir si c'était possible, d'afficher dans tous les cas, une fenêtre avant celle ci qui indique le drop et l'expérience, et l'argent obtenu.
Merci d'avance
Le script modifié :
Code:
module LevelUpDisplayConfig #-------------------------------------------------------------------------- # * General Configuration Options #-------------------------------------------------------------------------- # Nom du windowskin, sans l'extension WINDOWSKIN_NAME = 'Window' # Le SE joué lorsque que la fenêtre apparaît LEVEL_UP_SE = 'Recovery' # Le volume du SE LEVEL_UP_SE_VOLUME = 80 # Afficher la fenêtre de compétence ? USE_SKILL_WINDOW = true #The title text used in the "New Skills" window (if not nil) #For example, NEW_SKILL_TITLE_TEXT = 'Abilities' NEW_SKILL_TITLE_TEXT = nil #Show the actor's sprite? USE_SPRITE_GRAPHIC = true #Opacity of the main window WINDOW_OPACITY = 255 #-------------------------------------------------------------------------- # * Stat Window Configuration #-------------------------------------------------------------------------- #The color of the actor's name in the window (gold by default) NAME_COLOR = Color.new(255,235,0) #The color of the actor's level in the window (gold by default) LEVEL_COLOR = Color.new(255,235,0) #The color of the actor's stat names in the window (gold by default) STAT_COLOR = Color.new(255,235,0) #The color of the actor's old stat values (white by default) OLD_STAT_COLOR = Color.new(255,255,255) #The color of the actor's new stat values, if a net gain (green by default) NEW_STAT_VAL_COLOR = Color.new(0,250,154) #The color of the actor's new stat values, if a net loss (red by default) STAT_VAL_LOSS_COLOR = Color.new(255, 0, 0) #-------------------------------------------------------------------------- # * Skill Window Configuration #-------------------------------------------------------------------------- #The color of the text in the skills title window SKILL_TITLE_COLOR = Color.new(255,215,0) #The color of the new skills text in the skills window SKILL_WINDOW_FONT_COLOR = Color.new(240,248,255) #-------------------------------------------------------------------------- # * There is no need to modify the constants below #-------------------------------------------------------------------------- STAT_WINDOW_WIDTH = 320 SKILL_WINDOW_WIDTH = 225 WINDOW_HEIGHT = 250 SUB_WINDOW_HEIGHT = 45
end
Blockade
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
Sujet: Re: Modification du script de level up. Jeu 30 Oct 2008 - 15:21
Code:
include LevelUpDisplayConfig #========================================================================== # * Window_LevelUpdate #-------------------------------------------------------------------------- # The main window that appears in battle when a level is gained. # Displays stat info, faceset, and (optionally) the actor sprite. #========================================================================== class Window_LevelUpdate < Window_Base
def initialize(actor) w = STAT_WINDOW_WIDTH h = WINDOW_HEIGHT if USE_SKILL_WINDOW super(272 - (w / 2) - (SKILL_WINDOW_WIDTH / 2), 30, w, h) else super(272 - (w / 2), 50, w, h) end self.windowskin = Cache.system(WINDOWSKIN_NAME) self.back_opacity = WINDOW_OPACITY @actor = actor @animation_index = 0 @arrow = Cache.picture('level_up_arrow') @y_offset = 12 #give some room under level display #begin drawing new level and old stat text @col_one_offset = 0 #Draw old stats @col_two_offset = @col_one_offset + 60 #begin drawing Faceset/sprite and skills gained @col_four_offset = 0 #begin drawing Faceset/sprite graphics @col_five_offset = 190 #play the sound effect se = RPG::SE.new(LEVEL_UP_SE, LEVEL_UP_SE_VOLUME) se.play #calculates the offet for drawing level info @exp = actor.next_rest_exp_s update calc_level_offsets setup_name_window draw_stat_names draw_old_stat_values draw_arrows draw_new_stat_values draw_actor_rep update end #-------------------------------------------------------------------------- # * Create and display the name window #--------------------------------------------------------------------------
def setup_name_window @name_window = Window_Base.new(self.x + 20, self.y - 30 , fit_to_text(@actor.name), SUB_WINDOW_HEIGHT) @name_window.windowskin = Cache.system(WINDOWSKIN_NAME) @name_window.back_opacity = 255 @name_sprite = Sprite.new @name_sprite.bitmap = Bitmap.new(@name_window.width, @name_window.height) @name_sprite.bitmap.font.color = NAME_COLOR @name_sprite.x = @name_window.x + 15 @name_sprite.y = @name_window.y - 10 @name_sprite.z = 300 @name_sprite.bitmap.draw_text(0, 0, @name_sprite.bitmap.width, 60, @actor.name) end #-------------------------------------------------------------------------- # * Draws the level and stat text (not the values themselves) #-------------------------------------------------------------------------- def draw_stat_names self.contents.font.color = LEVEL_COLOR self.contents.draw_text(@col_one_offset, 0, 60, WLH, "Lv.") self.contents.font.color = STAT_COLOR self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.hp) self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.mp) self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.atk) self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.def) self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.spi) self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.agi) self.contents.draw_text(@col_one_offset, y_incr+10, 110, WLH, "Exp. restante : ") #reset the font color self.contents.font.color = Font.default_color #reset the y_offset to 12 y_incr_reset end #-------------------------------------------------------------------------- # * Draws the old level and stat values #-------------------------------------------------------------------------- def draw_old_stat_values self.contents.font.color = OLD_STAT_COLOR self.contents.draw_text(@col_level_old_offset, 0, 60, WLH, @actor.last_level) self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_hp) self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_mp) self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_atk) self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_def) self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_spi) self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_agi) self.contents.draw_text(@col_two_offset+40, y_incr+10, 200, WLH, @exp) #reset the font color self.contents.font.color = Font.default_color #reset the y_offset to 12 y_incr_reset end
#-------------------------------------------------------------------------- # * Draws the arrows #-------------------------------------------------------------------------- def draw_arrows if @actor.last_hp - 100 < 0 @col_three_offset = @col_two_offset + 30 elsif @actor.last_hp - 1000 < 0 @col_three_offset = @col_two_offset + 40 else @col_three_offset = @col_two_offset + 50 end draw_arrow(@col_level_arrow_offset, 6) #level draw_arrow(@col_three_offset, y_incr + 6) #hp draw_arrow(@col_three_offset, y_incr + 6) #mp draw_arrow(@col_three_offset, y_incr + 6) #atk draw_arrow(@col_three_offset, y_incr + 6) #def draw_arrow(@col_three_offset, y_incr + 6) #spi draw_arrow(@col_three_offset, y_incr + 6) #agi calc_col_four_offset(@col_three_offset) #reset the y_offset to 12 y_incr_reset end #-------------------------------------------------------------------------- # * Draws the new level and stat values #-------------------------------------------------------------------------- def draw_new_stat_values draw_new_stat(@col_level_new_offset, 0, 60, WLH, @actor.last_level, @actor.level) draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_hp, @actor.maxhp) draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_mp, @actor.maxmp) draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_atk, @actor.base_atk) draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_def, @actor.base_def) draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_spi, @actor.base_spi) draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_agi, @actor.base_agi) self.contents.font.color = Font.default_color #reset the y_offset to 12 y_incr_reset end
def draw_new_stat(x, y, w, h, prev_val, val) if val > prev_val #gain self.contents.font.color = NEW_STAT_VAL_COLOR elsif val == prev_val #no change self.contents.font.color = OLD_STAT_COLOR else #loss self.contents.font.color = STAT_VAL_LOSS_COLOR end self.contents.draw_text(x, y, w, h, val) end #-------------------------------------------------------------------------- # * Draws the faceset and optionally the actor sprite #-------------------------------------------------------------------------- def draw_actor_rep draw_actor_face(@actor, @col_five_offset, 0) if (USE_SPRITE_GRAPHIC) x_pos = @col_five_offset + ((self.width - @col_five_offset) / 2) - 18 draw_character(@actor.character_name, @actor.character_index, x_pos, 160) end end #-------------------------------------------------------------------------- # * Draws an arrow #-------------------------------------------------------------------------- def draw_arrow(x, y) src_rect = Rect.new(0, 0, @arrow.width, @arrow.height) self.contents.blt(x, y, @arrow, src_rect) end #-------------------------------------------------------------------------- # * figures out the spacing for the level text display #-------------------------------------------------------------------------- def calc_level_offsets @col_level_old_offset = @col_one_offset + 30 if @actor.last_level < 10 @col_level_arrow_offset = @col_level_old_offset + 20 else @col_level_arrow_offset = @col_level_old_offset + 30 end @col_level_new_offset = @col_level_arrow_offset + 26 end #-------------------------------------------------------------------------- # * Increments the y counter #-------------------------------------------------------------------------- def y_incr @y_offset += WLH return @y_offset end #-------------------------------------------------------------------------- # * Resets the y counter #-------------------------------------------------------------------------- def y_incr_reset @y_offset = 12 end #-------------------------------------------------------------------------- # * calculate where to draw col four text (new stat values) #-------------------------------------------------------------------------- def calc_col_four_offset(col_three) @col_four_offset = col_three + 22 end #-------------------------------------------------------------------------- # * Fit the window width to the text #-------------------------------------------------------------------------- def fit_to_text(text) w = self.contents.text_size(text).width + 32 return w > 90 ? w : 90 end #-------------------------------------------------------------------------- # * Update the child window position #-------------------------------------------------------------------------- def update_child_window_pos @name_window.x = self.x + 20 @name_window.y = self.y - 30 @name_sprite.x = @name_window.x + 15 @name_sprite.y = @name_window.y - 10 end #-------------------------------------------------------------------------- # * Destroy the sprite! #-------------------------------------------------------------------------- def dispose super @name_window.dispose @name_sprite.dispose end end
Blockade
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
Sujet: Re: Modification du script de level up. Dim 9 Nov 2008 - 10:32
Code:
#============================================================================ # * Window_SkillUpdate #---------------------------------------------------------------------------- # The learned skill window #============================================================================ class Window_SkillUpdate < Window_Base
def initialize(actor, parent_x, parent_y, parent_width) x = parent_x + parent_width h = WINDOW_HEIGHT w = SKILL_WINDOW_WIDTH super(x, parent_y, w, h) self.windowskin = Cache.system(WINDOWSKIN_NAME) self.back_opacity = WINDOW_OPACITY self.contents.font.color = SKILL_WINDOW_FONT_COLOR @actor = actor @skills = [] setup_title_window populate_skill_list end #-------------------------------------------------------------------------- # * create the title window #-------------------------------------------------------------------------- def setup_title_window #check to see if custom text is defined if NEW_SKILL_TITLE_TEXT == nil skill_title_text = sprintf("New %ss", Vocab.skill) else skill_title_text = NEW_SKILL_TITLE_TEXT end middle_parent = self.x + (self.width / 2) w = fit_to_text(skill_title_text) h = SUB_WINDOW_HEIGHT x = middle_parent - (w / 2) y = self.y - 30 @title_window = Window_Base.new(x, y, w, h) @title_window.windowskin = Cache.system(WINDOWSKIN_NAME) @title_window.back_opacity = 255 @title_sprite = Sprite.new @title_sprite.bitmap = Bitmap.new(@title_window.width, @title_window.height) @title_sprite.bitmap.font.color = SKILL_TITLE_COLOR @title_sprite.x = @title_window.x + 15 @title_sprite.y = @title_window.y + 4 @title_sprite.z = 300 @title_sprite.bitmap.draw_text(0, 0, @title_sprite.bitmap.width, 32, skill_title_text) end #-------------------------------------------------------------------------- # * My edit of draw_item_name. # Necessary because the default one changes the font color. #-------------------------------------------------------------------------- def draw_my_item_name(item, x, y, enabled = true) if item != nil draw_icon(item.icon_index, x, y, enabled) self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(x + 24, y, 172, WLH, item.name) end end #-------------------------------------------------------------------------- # * draw all of the skills that were learned #-------------------------------------------------------------------------- def populate_skill_list skills = @actor.last_learned_skills y = 0 for skill in skills draw_my_item_name(skill, 0, y) y += 32 end end #-------------------------------------------------------------------------- # * Fit the window width to the text #-------------------------------------------------------------------------- def fit_to_text(text) return self.contents.text_size(text).width + 32 end #-------------------------------------------------------------------------- # * Kill the sprite! #-------------------------------------------------------------------------- alias :eds_old_dispose :dispose def dispose eds_old_dispose @title_window.dispose @title_sprite.dispose end
end #========================================================================== # * Game_Actor #-------------------------------------------------------------------------- # overrides - # * display_level_up (if DISPLAY_DEF_MESSAGE is set to false in config) #========================================================================== class Game_Actor < Game_Battler
attr_reader :last_level attr_reader :last_hp attr_reader :last_mp attr_reader :last_atk attr_reader :last_def attr_reader :last_spi attr_reader :last_agi attr_reader :last_learned_skills #-------------------------------------------------------------------------- # * Change Experience # exp : New experience # show : Level up display flag #-------------------------------------------------------------------------- alias :eds_old_change_exp :change_exp def change_exp(exp, show) #save off the old paramters prev_skills = skills @last_level = @level @last_hp = self.maxhp @last_mp = self.maxmp @last_atk = self.atk @last_def = self.def @last_spi = self.spi @last_agi = self.agi eds_old_change_exp(exp, show) @last_learned_skills = skills - prev_skills end
if USE_SKILL_WINDOW #below method is only used if we are using the skill window
#-------------------------------------------------------------------------- # * Show Level Up Message # new_skills : Array of newly learned skills #-------------------------------------------------------------------------- # If we are not displaying the standard message when # gaining a level, simply remove the loop that creates # the learned skills message. Continue to display # the skills that were learned if we are not in battle. #-------------------------------------------------------------------------- alias :eds_old_display_level_up :display_level_up def display_level_up(new_skills) if $game_temp.in_battle $game_message.new_page text = sprintf(Vocab::LevelUp, @name, Vocab::level, @level) $game_message.texts.push(text) else eds_old_display_level_up(new_skills) end end
end #skill window check
end #============================================================================ # * Scene_Battle #---------------------------------------------------------------------------- # overrides - # * display_level_up #============================================================================ class Scene_Battle < Scene_Base
#-------------------------------------------------------------------------- # * Display Level Up #-------------------------------------------------------------------------- def display_level_up #patch for KGC Equip Learn Skill script if $imported != nil and $imported["EquipLearnSkill"] display_master_equipment_skill end exp = $game_troop.exp_total for actor in $game_party.existing_members last_level = actor.level last_skills = actor.skills actor.gain_exp(exp, true) if actor.level > last_level win = Window_LevelUpdate.new(actor) #if we are using the skill window and the skills have changed... if USE_SKILL_WINDOW && last_skills.length != actor.skills.length s_win = Window_SkillUpdate.new(actor, win.x, win.y, win.width) wait_for_message s_win.dispose if USE_SKILL_WINDOW else #move the window back to center screen and update the name window win.x = 272 - (win.width / 2) win.update_child_window_pos wait_for_message end win.dispose end end end end
Altair19
Voyageur Lv.10
Age : 31 Inscrit le : 16/08/2008 Messages : 467
Sujet: Re: Modification du script de level up. Dim 9 Nov 2008 - 14:02
Merci du partage Blockade ! Je vais l'utiliser car je le trouve mieux que celui que j'ai déjà ! ( le tiens est mieux car il affiche clairement les compétences et aussi parce qu'il indique l'expérience pour le prochain niveau ! )
Blockade
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
Sujet: Re: Modification du script de level up. Dim 9 Nov 2008 - 16:56
Oui ^^' Mais j'ai une requête pour les scripteurs avancés :
Blockade a écrit:
Je voudrais savoir si c'était possible, d'afficher dans tous les cas, une fenêtre avant celle ci qui indique le drop et l'expérience, et l'argent obtenu.
Comment faire pour faire apparaître, une fenêtre lors du drop, puis la faire disparaite ? Comment afficher le drop ? Tous ça à la fin du combat. Merci d'avence
adrezo
Vagabond Lv.5
Inscrit le : 17/07/2008 Messages : 89
Sujet: Re: Modification du script de level up. Dim 9 Nov 2008 - 17:14
Ca m'intéresserait bien comme fenêtre ça. Au boulot les scripteurs
Blockade
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
Sujet: Re: Modification du script de level up. Mar 11 Nov 2008 - 20:23