Dark Zorro
Nombre de messages : 282 Age : 33 Localisation : Rouen Seine Maritime Date d'inscription : 01/04/2006
| Sujet: Nouvelle fenétre pour le changement de niveau Mar 9 Mai - 15:12 | |
| Ce script sert à crée une fenêtre d'affichage de montée de niveau plus précise lorsque le nombre de points d'Exp nécessaire est arrivé.
Créer deux nouveaux scripts avant Main. Lisez les instructions dans le script pour des informations supplémentaires. Par exemple, appellez les Partie1 et Partie2.
Dans Partie1 collez ceci : - Citation :
- #==============================================================================
# ■ Nouvelle fenêtre d'exp par Krazplay Partie 1 #------------------------------------------------------------------------------ # Ce scrîpt remplace les définitions main et start_phase5 des scripts # Scene_Battle 1 et Scene_Battle 2. Si vous avez déjà des scripts modifiant ces # scripts il faut copier-coller mes ajouts qui sont précisés dans mes # commentaires dans votre scrîpt. # Note : il n'y a que 2 lignes à ajouter dans start_phase5, cf ligne 139 et 146 # Sinon il suffit de créer un nouveau scrîpt au-dessus de Main et de copier celui # là dedans. #==============================================================================
class Scene_Battle def main $game_temp.in_battle = true $game_temp.battle_turn = 0 $game_temp.battle_event_flags.clear $game_temp.battle_abort = false $game_temp.battle_main_phase = false $game_temp.battleback_name = $game_map.battleback_name $game_temp.forcing_battler = nil $game_system.battle_interpreter.setup(nil, 0) @troop_id = $game_temp.battle_troop_id $game_troop.setup(@troop_id) s1 = $data_system.words.attack s2 = $data_system.words.skill s3 = $data_system.words.guard s4 = $data_system.words.item @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4]) @actor_command_window.y = 160 @actor_command_window.back_opacity = 160 @actor_command_window.active = false @actor_command_window.visible = false @party_command_window = Window_PartyCommand.new @help_window = Window_Help.new @help_window.back_opacity = 160 @help_window.visible = false @status_window = Window_BattleStatus.new @message_window = Window_Message.new @spriteset = Spriteset_Battle.new @wait_count = 0 if $data_system.battle_transition == "" Graphics.transition(20) else Graphics.transition(40, "Graphics/Transitions/" + $data_system.battle_transition) end start_phase1 loop do Graphics.update Input.update update if $scene != self break end end $game_map.refresh Graphics.freeze @actor_command_window.dispose @party_command_window.dispose @help_window.dispose @status_window.dispose @message_window.dispose if @skill_window != nil @skill_window.dispose end if @item_window != nil @item_window.dispose end if @result_window != nil @result_window.dispose end @spriteset.dispose ### Début de l'ajout par Krazplay pour sa nouvelle fenêtre d'exp ### @fond = Window_Base.new(0,0,640,480) coordx = [5,320, 5,320] coordy = [12, 12, 248, 248] @window = [] for i in 0...$game_party.actors.size actor = $game_party.actors[i] @window[i] = Window_Result.new(coordx[i], coordy[i]) @window[i].refresh(actor,0) if @levelup[i] != nil #correction d'un bug, n'oubliez pas le end plus bas if @levelup[i] > 0 @window[i].refresh(actor, @levelup[i]) @window[i].showlvlup(actor) end end #voila le end qui va avec la correction end if $data_system.battle_transition == "" Graphics.transition(20) else Graphics.transition(20, "Graphics/Transitions/" + $data_system.battle_transition) end loop do Graphics.update Input.update if Input.trigger?(Input::C) break end end for i in 0...$game_party.actors.size @window[i].dispose end @fond.dispose ### Fin de l'ajout par Krazplay pour sa nouvelle fenêtre d'exp ### if $scene.is_a?(Scene_Title) Graphics.transition Graphics.freeze end if $BTEST and not $scene.is_a?(Scene_Gameover) $scene = nil end end
def start_phase5 @phase = 5 $game_system.me_play($game_system.battle_end_me) $game_system.bgm_play($game_temp.map_bgm) exp = 0 gold = 0 treasures = [] for enemy in $game_troop.enemies unless enemy.hidden exp += enemy.exp gold += enemy.gold if rand(100) < enemy.treasure_prob if enemy.item_id > 0 treasures.push($data_items[enemy.item_id]) end if enemy.weapon_id > 0 treasures.push($data_weapons[enemy.weapon_id]) end if enemy.armor_id > 0 treasures.push($data_armors[enemy.armor_id]) end end end end treasures = treasures[0..5] @levelup = [] # Cette ligne-là est à ajouter si vous ne voullez pas copier # tout le scrîpt for i in 0...$game_party.actors.size actor = $game_party.actors[i] if actor.cant_get_exp? == false last_level = actor.level actor.exp += exp @levelup[i] = actor.level - last_level # Cette ligne-là aussi # if actor.level > last_level @status_window.level_up(i) end end end $game_party.gain_gold(gold) for item in treasures case item when RPG::Item $game_party.gain_item(item.id, 1) when RPG::Weapon $game_party.gain_weapon(item.id, 1) when RPG::Armor $game_party.gain_armor(item.id, 1) end end @result_window = Window_BattleResult.new(exp, gold, treasures) @phase5_wait_count = 100 end end Et dans Partie2 cela: - Citation :
- #==============================================================================
# ■ Nouvelle fenêtre d'exp par Krazplay Partie 2 #------------------------------------------------------------------------------ # Créer un nouveau scrîpt au-dessus de main et copier celui-là dedans. # Tout ce qui est sous la définition refresh est ce qui apparait tout le temps # Tout ce qui est sous la définition showlvlup est ce qui n'apparait qu'en # cas de level up #==============================================================================
class Window_Result < Window_Base def initialize(x,y) super(x, y, 315, 220) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize self.back_opacity = 255 end def refresh(actor,levelenmoins) self.contents.clear self.contents.font.color = Color.new(255, 50, 50, 255) self.contents.font.size = 24 draw_actor_battler(actor,50,90,30) draw_actor_battler(actor,110,90,60) draw_actor_battler(actor,170,90,90) if levelenmoins == 0 draw_actor_battler(actor,230,90,250) end largeur_nom = contents.text_size(actor.name).width self.contents.draw_text(width/2 - largeur_nom/2 -16, 0, 99, 24, actor.name) self.contents.font.color = Color.new(100, 255, 100, 255) self.contents.font.size = 19 self.contents.draw_text(0,25, 99, 24, "Level") self.contents.font.color = normal_color self.contents.draw_text(10, 45, 99, 24, "HP") self.contents.draw_text(10, 63, 99, 24, "MP") self.contents.font.size = 18 self.contents.draw_text(0, 83, 99, 24, "Force") self.contents.draw_text(0, 103, 99, 24, "Dexterité") self.contents.draw_text(0, 123, 99, 24, "Agilité") self.contents.draw_text(0, 143, 99, 24, "Intelligence") self.contents.font.color = Color.new(125, 255, 125, 255) self.contents.draw_text(60, 170, 99, 24, "NEXT") @levelenmoins = levelenmoins @lvl = actor.level-levelenmoins self.contents.font.color = normal_color self.contents.draw_text(80, 25, 30, 24, @lvl.to_s,2) self.contents.draw_text(60, 45, 50, 24, $data_actors[actor.id].parameters[0, @lvl].to_s,2) self.contents.draw_text(60, 63, 50, 24, $data_actors[actor.id].parameters[1, @lvl].to_s,2) self.contents.draw_text(80, 83, 30, 24, $data_actors[actor.id].parameters[2, @lvl].to_s,2) self.contents.draw_text(80, 103, 30, 24, $data_actors[actor.id].parameters[3, @lvl].to_s,2) self.contents.draw_text(80, 123, 30, 24, $data_actors[actor.id].parameters[4, @lvl].to_s,2) self.contents.draw_text(80, 143, 30, 24, $data_actors[actor.id].parameters[5, @lvl].to_s,2) self.contents.draw_text(140, 170, 70, 24, actor.next_rest_exp_s.to_s,1) end def showlvlup(actor) hpgagne = $data_actors[actor.id].parameters[0, actor.level] - $data_actors[actor.id].parameters[0, @lvl] mpgagne = $data_actors[actor.id].parameters[1, actor.level] - $data_actors[actor.id].parameters[1, @lvl] forcegagne = $data_actors[actor.id].parameters[2, actor.level] - $data_actors[actor.id].parameters[2, @lvl] dexgagne = $data_actors[actor.id].parameters[3, actor.level] - $data_actors[actor.id].parameters[3, @lvl] agigagne = $data_actors[actor.id].parameters[4, actor.level] - $data_actors[actor.id].parameters[4, @lvl] intgagne = $data_actors[actor.id].parameters[5, actor.level] - $data_actors[actor.id].parameters[5, @lvl] self.contents.font.color = Color.new(100, 255, 100, 255) self.contents.font.size = 19 self.contents.draw_text(50, 25, 99, 24, "UP !") self.contents.font.color = Color.new(20, 255, 20, 255) self.contents.font.size = 18 self.contents.draw_text(210, 25, 99, 24, actor.level.to_s) self.contents.draw_text(190, 45, 40, 24, $data_actors[actor.id].parameters[0, actor.level].to_s,2) self.contents.draw_text(190, 63, 40, 24, $data_actors[actor.id].parameters[1, actor.level].to_s,2) self.contents.draw_text(200, 83, 30, 24, $data_actors[actor.id].parameters[2, actor.level].to_s,2) self.contents.draw_text(200, 103, 30, 24, $data_actors[actor.id].parameters[3, actor.level].to_s,2) self.contents.draw_text(200, 123, 30, 24, $data_actors[actor.id].parameters[4, actor.level].to_s,2) self.contents.draw_text(200, 143, 30, 24, $data_actors[actor.id].parameters[5, actor.level].to_s,2) self.contents.font.color = Color.new(100, 255, 255, 255) self.contents.draw_text(140, 25, 20, 24, @levelenmoins.to_s,2) self.contents.draw_text(130, 45, 40, 24, hpgagne.to_s,2) self.contents.draw_text(130, 63, 40, 24, mpgagne.to_s,2) self.contents.draw_text(140, 83, 30, 24, forcegagne.to_s,2) self.contents.draw_text(140, 103, 30, 24, dexgagne.to_s,2) self.contents.draw_text(140, 123, 30, 24, agigagne.to_s,2) self.contents.draw_text(140, 143, 30, 24, intgagne.to_s,2) self.contents.font.color = Color.new(255, 100, 100, 255) h = [25,45,63,83,103,123,143] for i in 0...7 self.contents.draw_text(120, h[i], 20, 24, "+") end for i in 0...7 self.contents.draw_text(180, h[i], 20, 24, "=") end end def draw_actor_battler(actor, x, y, transparence=255) bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue) cw = bitmap.width ch = bitmap.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x - cw / 2, y - ch / 2, bitmap, src_rect, transparence) end end Et voilà, le résultat : | |
|