设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 927|回复: 0
打印 上一主题 下一主题

[已经过期] 求大神帮忙解决经验位置偏差太大找不到怎么修改

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
51 小时
注册时间
2016-7-9
帖子
38
跳转到指定楼层
1
发表于 2016-7-31 14:55:04 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
#==============================================================================
# +++ MOG - Battle Result (1.6) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com
#==============================================================================
# Apresentação animada do resultado da batalha.
#==============================================================================
# Arquivos necessários. (Graphics/System)
#
# Result.png
# Result_Layout.png
# Result_Levelup.png
# Result_Levelword.png
# Result_Number_1.png
# Result_Number_2.png
#
#==============================================================================
# Histórico (Version History)
#==============================================================================
# 1.6 - Melhoria na codificação.
# 1.5 - Correção do Bug da experiência compartilhada.
# 1.4 - Compatibilidade com o script de pause.
# 1.3 - Melhoria do código e compatibilidade.
# 1.2 - Melhoria do código e compatibilidade.
#     - Adição de sons.
# 1.1 - Corrigido o erro de apresentar o Resultado ao fugir ou perder a batalha.
#==============================================================================
module MOG_BATLE_RESULT
  #Posição do EXP.
  RESULT_EXP_POSITION = [440,80]
  #Posição do GOLD.
  RESULT_GOLD_POSITION = [476,125]
  #Posição da palavra LeveL UP.
  RESULT_LEVELWORD_POSITION = [0,0]
  #Posição do Level.
  RESULT_LEVEL_POSITION = [230,-7]
  #Posição dos parâmetros
  RESULT_PARAMETER_POSITION = [70,70]
  #Posição da janela de skill.
  RESULT_NEW_SKILL_POSITION = [240,230]
  #Definição da animação de Level UP.
  RESULT_LEVELUP_ANIMATION_ID = 37
end

#~ $imported = {} if $imported.nil?
#~ $imported[:mog_battler_result] = true

#==============================================================================
# ■ Game Temp
#==============================================================================
class Game_Temp
  attr_accessor :level_parameter
  attr_accessor :level_parameter_old
  attr_accessor :result
  attr_accessor :battle_end

  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  alias mog_result_initialize initialize
  def initialize
      @level_parameter = []
      @level_parameter_old = []
      @result = false
      @battle_end = false
      mog_result_initialize
  end

end

#==============================================================================
# ■ Game Actor
#==============================================================================
class Game_Actor < Game_Battler

  #--------------------------------------------------------------------------
  # ● Display_level_up
  #--------------------------------------------------------------------------
  alias mog_result_display_level_up display_level_up
  def display_level_up(new_skills)
      if $game_temp.result
         $game_temp.level_parameter = [@level,new_skills]
         return
      end   
      mog_result_display_level_up(new_skills)
  end

end

#==============================================================================
# ■ BattleManager
#==============================================================================
module BattleManager
  
  #--------------------------------------------------------------------------
  # ● Process Victory
  #--------------------------------------------------------------------------
  def self.process_victory
      play_battle_end_me
      replay_bgm_and_bgs
      battle_end(0)
      SceneManager.return
      return true
  end
   
end

#==============================================================================
# ■ Spriteset Battle
#==============================================================================
class Scene_Battle < Scene_Base
  
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------               
  alias mog_battle_result_pre_terminate pre_terminate
  def pre_terminate
      execute_result if can_enable_battle_result?
      mog_battle_result_pre_terminate
  end  
  
  #--------------------------------------------------------------------------
  # ● Can Enable Battle Result?
  #--------------------------------------------------------------------------   
  def can_enable_battle_result?
      return false if !$game_troop.all_dead?
      return false if $game_party.members.empty?
      return false if $game_party.all_dead?      
      return true
  end
   
  #--------------------------------------------------------------------------
  # ● Execute Result
  #--------------------------------------------------------------------------                  
  def execute_result
      @result = Battle_Result.new
      if $mog_rgss3_combo_count != nil
         $game_temp.combo_time = 0 rescue nil
      end   
      loop do
           @result.update
           @spriteset.update
           Graphics.update
           Input.update
           break if @result.victory_phase == 10
      end
      @result.dispose
  end  
  
end

#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
  include MOG_BATLE_RESULT
  
  attr_accessor :victory_phase
   
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------      
  def initialize
      $game_temp.battle_end = true
      $game_temp.result = true
      @victory_phase = 0
      @victory_wait_duration = 0
      @fade_result_window = false
      create_victory_sprites
  end
  
  #--------------------------------------------------------------------------
  # ● Create Victory Sprites
  #--------------------------------------------------------------------------   
  def create_victory_sprites
      @result_number = Cache.system("Result_Number_1")
      @result_number2 = Cache.system("Result_Number_2")
      @result_cw = @result_number.width / 10
      @result_ch = @result_number.height / 2         
      @result2_cw = @result_number2.width / 10
      @result2_ch = @result_number2.height / 2  
      create_victory_text
      create_victory_layout
      create_victory_exp
      create_victory_gold
      create_window_treasure
  end  

  #--------------------------------------------------------------------------
  # ● Victory Wait ?
  #--------------------------------------------------------------------------        
  def victory_wait?
      return false if @victory_wait_duration <= 0
      @victory_wait_duration -= 1
      return true
  end     
  
  #--------------------------------------------------------------------------
  # ● End Victory
  #--------------------------------------------------------------------------   
  def end_victory
      @victory_wait_duration = 10
      dispose
  end
  
  #--------------------------------------------------------------------------
  # ● Create Victory Layout
  #--------------------------------------------------------------------------      
  def create_victory_layout
      return if @victory_layout_sprite != nil
      @victory_layout_sprite = Sprite.new
      @victory_layout_sprite.z = 1001
      @victory_layout_sprite.x = 70
      @victory_layout_sprite.bitmap = Cache.system("Result_Layout"+rand(15).to_s)
      @victory_layout_sprite.zoom_x = 2.0
      @victory_layout_sprite.opacity = 0
  end  
  
  #--------------------------------------------------------------------------
  # ● Create Victory Text
  #--------------------------------------------------------------------------      
  def create_victory_text
      return if @victory_sprite != nil
      @victory_sprite = Sprite.new
      @victory_sprite.z = 1000
      @victory_sprite.bitmap = Cache.system("Result")
      @victory_sprite.ox = @victory_sprite.width / 2
      @victory_sprite.oy = @victory_sprite.height / 2
      @victory_sprite.x = @victory_sprite.ox
      @victory_sprite.y = @victory_sprite.oy
      @victory_sprite.zoom_x = 1.5
      @victory_sprite.zoom_y = 1.5
      @victory_sprite.opacity = 0   
  end  
  
end

#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
  
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------      
  def dispose
      $game_temp.result = false
      $game_temp.battle_end = false
      @victory_sprite.bitmap.dispose
      @victory_sprite.dispose
      @victory_layout_sprite.bitmap.dispose
      @victory_layout_sprite.dispose
      @exp_number.bitmap.dispose
      @exp_number.dispose
      @gold_number.bitmap.dispose
      @gold_number.dispose
      @result_number.dispose
      @window_treasure.dispose
      dispose_level_up      
      @result_number.dispose
      @result_number2.dispose
      @tr_viewport.dispose
  end  
   
  #--------------------------------------------------------------------------
  # ● Dispose Result Actor Bitmap
  #--------------------------------------------------------------------------              
  def dispose_result_actor_bitmap
      return if @result_actor_sprite == nil
      return if @result_actor_sprite.bitmap == nil
      @result_actor_sprite.bitmap.dispose
  end
  
  #--------------------------------------------------------------------------
  # ● Dispose Level UP
  #--------------------------------------------------------------------------        
  def dispose_level_up
      return if @levelup_layout == nil
      @levelup_layout.bitmap.dispose
      @levelup_layout.dispose
      @levelup_word.bitmap.dispose
      @levelup_word.dispose
      @result_actor_sprite.bitmap.dispose
      @result_actor_sprite.dispose
      @parameter_sprite.bitmap.dispose
      @parameter_sprite.dispose
      @level_sprite.bitmap.dispose
      @level_sprite.dispose
      if @new_skill_window != nil
         @new_skill_window.dispose
      end   
  end
  
end

#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------  
  def update
      if $mog_rgss3_pause != nil
         update_pause if MOG_PAUSE::PAUSE_SCENE_BATTLE
      end   
      return if @victory_phase == nil
      update_victory_fade if @fade_result_window
      return if victory_wait?
      case @victory_phase
         when 0;  update_victory_initial
         when 1;  update_victory_initial2
         when 2;  update_victory_initial3
         when 3;  update_victory_exp
         when 4;  update_victory_gold
         when 5;  update_victory_item
         when 6;  update_victory_levelup
         when 9;  update_skip_result
      end
      if Input.trigger?(:C)
         if @victory_phase == 10
            end_victory
         elsif @victory_phase.between?(1,5)
            Sound.play_cursor
            @victory_phase = 9
         end         
      end   
  end
  
  #--------------------------------------------------------------------------
  # ● Skip Result
  #--------------------------------------------------------------------------         
  def update_skip_result
      @victory_sprite.opacity -= 10
      @victory_sprite.visible = false
      @victory_layout_sprite.opacity += 10
      @victory_layout_sprite.zoom_x = 1.00
      @gold_number.opacity += 10
      @gold_number.zoom_x = 1.00
      @gold_number.zoom_y = 1.00
      @exp_number.opacity += 10
      @exp_number.zoom_x = 1.00
      @exp_number.zoom_y = 1.00      
      @window_treasure.contents_opacity += 10
      if @exp_old != @exp_total
         @exp_old = @exp_total
         refresh_exp_number
      end
      if @gold_old = @gold_total  
         @gold_old = @gold_total
         refresh_gold_number
      end   
      @window_treasure.x = 0
      update_victory_item if @window_treasure.contents_opacity == 255
  end  
  
  #--------------------------------------------------------------------------
  # ● Update Victory Fade
  #--------------------------------------------------------------------------      
  def update_victory_fade
      fade_speed = 10
      @victory_sprite.opacity -= fade_speed
      @victory_layout_sprite.opacity -= fade_speed
      @gold_number.opacity -= fade_speed
      @exp_number.opacity -= fade_speed
      @window_treasure.contents_opacity -= fade_speed
  end
  
  #--------------------------------------------------------------------------
  # ● 更新胜利初始
  #--------------------------------------------------------------------------      
  def update_victory_initial
      @victory_sprite.zoom_x -= 0.01
      @victory_sprite.zoom_y -= 0.01
      @victory_sprite.opacity += 10
      if @victory_sprite.zoom_x <= 1.00
         @victory_sprite.zoom_x = 1
         @victory_sprite.zoom_y = 1
         @victory_sprite.opacity = 255
         @victory_phase = 1
         @victory_wait_duration = 20
      end
  end

  #--------------------------------------------------------------------------
  # ● Update Victory Initial 2
  #--------------------------------------------------------------------------      
  def update_victory_initial2
      @victory_sprite.zoom_x += 0.01
      @victory_sprite.zoom_y += 0.01
      @victory_sprite.opacity -= 10
      if @victory_sprite.opacity <= 0
         @victory_sprite.zoom_x = 1
         @victory_sprite.zoom_y = 1
         @victory_sprite.opacity = 0
         @victory_phase = 2
      end
  end

  #--------------------------------------------------------------------------
  # ● Update Victory Initial 3
  #--------------------------------------------------------------------------        
  def update_victory_initial3   
      @victory_layout_sprite.zoom_x -= 0.02
      @victory_layout_sprite.opacity += 10
      if @victory_layout_sprite.zoom_x <= 1.00
         @victory_layout_sprite.zoom_x = 1
         @victory_layout_sprite.opacity = 255
         @victory_phase = 3
      end              
  end   
      
end

#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result

  #--------------------------------------------------------------------------
  # ● Create Victory Exp
  #--------------------------------------------------------------------------      
  def create_victory_exp
      @exp_number = Sprite.new
      @exp_number.bitmap = Bitmap.new(@result_number.width,@result_ch)
      @exp_number.z = 1002
      @exp_number.y = RESULT_EXP_POSITION[1]
      @exp_number.zoom_x = 2
      @exp_number.zoom_y = 2
      @exp_total = $game_troop.exp_total
      @exp_number.opacity = 0
      @exp_old = 0
      @exp_ref = ((1 * @exp_total) / 111).truncate rescue nil
      @exp_ref = 1 if @exp_ref < 1 or @exp_ref == nil      
      @exp_ref = 0 if @exp_total == 0
      refresh_exp_number
  end
  
  #--------------------------------------------------------------------------
  # ● Update Victory Exp
  #--------------------------------------------------------------------------        
  def update_victory_exp
      update_exp_sprite
      update_exp_number
  end
  
  #--------------------------------------------------------------------------
  # ● Update EXP Sprite
  #--------------------------------------------------------------------------         
  def update_exp_sprite
      @exp_number.opacity += 15
      if @exp_number.zoom_x > 1.00
         @exp_number.zoom_x -= 0.03
         @exp_number.zoom_x = 1.00 if @exp_number.zoom_x <= 1.00
      end
      @exp_number.zoom_y = @exp_number.zoom_x
      if (@exp_old >= @exp_total) and @exp_number.zoom_x == 1.00
         @victory_phase = 4
         Sound.play_cursor
      end   
  end

  #--------------------------------------------------------------------------
  # ● Refresh Exp Number
  #--------------------------------------------------------------------------        
  def refresh_exp_number
      @exp_number.bitmap.clear
      draw_result_exp(@exp_old, 0,0)      
  end

  #--------------------------------------------------------------------------
  # ● Update Exp_number
  #--------------------------------------------------------------------------
  def update_exp_number
      return if @exp_old == @exp_total
      @exp_old += @exp_ref
      @exp_old = @exp_total if @exp_old > @exp_total
      refresh_exp_number
  end

  #--------------------------------------------------------------------------
  # ● Draw Result EXP
  #--------------------------------------------------------------------------        
  def draw_result_exp(value,x,y)
      ncw = @result_cw
      nch = @result_ch
      number = value.abs.to_s.split(//)
      x2 = x - (number.size * ncw)
      @exp_number.ox = (number.size * ncw) / 2
      @exp_number.oy = @result_ch / 2
      @exp_number.x = (RESULT_EXP_POSITION[0] + @result_cw + @exp_number.ox) - (number.size * ncw)
      for r in 0..number.size - 1
          number_abs = number[r].to_i
          nsrc_rect = Rect.new(ncw * number_abs, 0, ncw, nch)
          @exp_number.bitmap.blt(x + (ncw *  r), y, @result_number, nsrc_rect)        
      end
  end

end

#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result

  #--------------------------------------------------------------------------
  # ● Create Victory Gold
  #--------------------------------------------------------------------------      
  def create_victory_gold
      @gold_number = Sprite.new
      @gold_number.bitmap = Bitmap.new(@result_number.width,@result_ch)
      @gold_number.z = 1002
      @gold_number.y = RESULT_GOLD_POSITION[1]
      @gold_number.opacity = 0
      @gold_number.zoom_x = 2
      @gold_number.zoom_y = 2      
      @gold_total = $game_troop.gold_total
      @gold_old = 0
      @gold_ref = ((1 * @gold_total) / 111).truncate rescue nil
      @gold_ref = 1 if @gold_ref < 1 or @gold_ref == nil      
      @gold_ref = 0 if @gold_total == 0
      $game_party.gain_gold($game_troop.gold_total)
      refresh_gold_number
  end   
  
  #--------------------------------------------------------------------------
  # ● Update Victory Gold
  #--------------------------------------------------------------------------        
  def update_victory_gold
      update_gold_sprite
      update_gold_number
  end
  
  #--------------------------------------------------------------------------
  # ● Update GOLD Sprite
  #--------------------------------------------------------------------------         
  def update_gold_sprite
      @gold_number.opacity += 15
      if @gold_number.zoom_x > 1.00
         @gold_number.zoom_x -= 0.03
         @gold_number.zoom_x = 1.00 if @gold_number.zoom_x <= 1.00
      end
      @gold_number.zoom_y = @gold_number.zoom_x
      if @gold_old >= @gold_total and @gold_number.zoom_x == 1.00
         @victory_phase = 5
         Sound.play_cursor
      end   
  end  
  
  #--------------------------------------------------------------------------
  # ● Refresh gold Number
  #--------------------------------------------------------------------------        
  def refresh_gold_number
      @gold_number.bitmap.clear
      draw_result_gold(@gold_old, 0,0)      
  end
  
  #--------------------------------------------------------------------------
  # ● Update Gold Number
  #--------------------------------------------------------------------------
  def update_gold_number
      return if @gold_old == @gold_total
      @gold_old += @gold_ref
      @gold_old = @gold_total if @gold_old > @gold_total
      refresh_gold_number
  end      
  
  #--------------------------------------------------------------------------
  # ● Draw Result Gold
  #--------------------------------------------------------------------------        
  def draw_result_gold(value,x,y)
      ncw = @result_cw
      nch = @result_ch
      number = value.abs.to_s.split(//)
      x2 = x - (number.size * ncw)
      @gold_number.ox = (number.size * ncw) / 2
      @gold_number.oy = @result_ch / 2
      @gold_number.x = (RESULT_GOLD_POSITION[0] + @result_cw + @gold_number.ox) - (number.size * ncw)
      for r in 0..number.size - 1
          number_abs = number[r].to_i
          nsrc_rect = Rect.new(ncw * number_abs, @result_ch, ncw, nch)
          @gold_number.bitmap.blt(x + (ncw *  r), y, @result_number, nsrc_rect)        
      end
  end

end

#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
  
  #--------------------------------------------------------------------------
  # ● 创建窗口的宝藏
  #--------------------------------------------------------------------------            
  def create_window_treasure
      @tr_viewport = Viewport.new(65, 164, 576, 210)
      @tr_viewport.z = 1003
      @window_treasure = Window_Treasure.new
      @window_treasure.viewport = @tr_viewport
  end  
  
  #--------------------------------------------------------------------------
  # ● 创建窗口的宝藏
  #--------------------------------------------------------------------------         
  def update_victory_item
      @window_treasure.update
      @actor_level = []
      return if @window_treasure.x != 0 and @victory_phase >= 6
      @victory_phase = 6
      if $data_system.opt_extra_exp
         @result_member_max = $game_party.members.size
      else
         @result_member_max = $game_party.battle_members.size
      end
      @result_member_id = 0
  end
  
end

#==============================================================================
# ■ Window Treasure
#==============================================================================
class Window_Treasure < Window_Base

  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  def initialize
      super(-640,-10,600, 300)
      self.opacity = 0
      self.contents_opacity = 0
      self.contents.font.size = 20
      self.contents.font.bold = true
      self.z = 1003
      @range_max = 256
      @wait_time = 20
      @scroll = false
      draw_treasure
  end

  #--------------------------------------------------------------------------
  # ● Draw_Treasure
  #--------------------------------------------------------------------------  
  def draw_treasure
      contents.clear
      t_index = 0
      $game_troop.make_drop_items.each do |item|      
         yi = (t_index / 3) * 32
         $game_party.gain_item(item, 1)
         draw_item_name(item, 0, yi, true, 200)
         t_index += 3
     end
     @range_max = (t_index / 3) * 32
     @scroll = true if t_index > 1#1
  end  
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------  
  def update
      super
      self.contents_opacity += 10
      if @scroll and self.contents_opacity == 255
         @wait_time -= 1 if  @wait_time > 0
         return if @wait_time > 0
         self.y -= 1
         self.y = 200 if self.y < -@range_max
         @wait_time = 20 if self.y == -10
      end
  end

end



#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
  
  #--------------------------------------------------------------------------
  # ● Create Levelup
  #--------------------------------------------------------------------------            
  def create_levelup
      if @levelup_layout == nil
         @levelup_layout = Sprite.new
         @levelup_layout.z = 1000
         @levelup_layout.bitmap = Cache.system("Result_Levelup")
      end
      if @levelup_word == nil
         @levelup_word = Sprite.new
         @levelup_word.z = 1001
         @levelup_word.bitmap = Cache.system("Result_Levelword")
         @levelup_word.ox = @levelup_word.bitmap.width / 2
         @levelup_word.oy = @levelup_word.bitmap.height / 2
         @levelup_word.x = @levelup_word.ox + RESULT_LEVELWORD_POSITION[0]
         @levelup_word.y = @levelup_word.oy + RESULT_LEVELWORD_POSITION[1]
      end
      @levelup_word.blend_type = 1
      @levelup_word.zoom_x = 2
      @levelup_word.zoom_y = 2      
  end  
  
  #--------------------------------------------------------------------------
  # ● Create Parameter Number
  #--------------------------------------------------------------------------              
  def create_parameter_number
      if @parameter_sprite == nil
         @parameter_sprite = Sprite.new
         @parameter_sprite.bitmap = Bitmap.new(250,220)
         @parameter_sprite.z = 1001
         @parameter_sprite.x = RESULT_PARAMETER_POSITION[0]
         @parameter_sprite.y = RESULT_PARAMETER_POSITION[1]
         @parameter_sprite.bitmap.font.size = 16
         @parameter_sprite.bitmap.font.bold = true         
      end
      refresh_parameter
  end
  
  #--------------------------------------------------------------------------
  # ● Refresh Parameter
  #--------------------------------------------------------------------------               
  def refresh_parameter
       @parameter_animation = 0
       @parameter_sprite.bitmap.clear
       @parameter_sprite.opacity = 0
       @parameter_sprite.x = RESULT_PARAMETER_POSITION[0] - 200
       actor_old = $game_temp.level_parameter_old
       draw_result_parameter(@actor_result.mhp,actor_old[1],0,28 * 0)
       draw_result_parameter(@actor_result.mmp,actor_old[2],0,28 * 1)
       draw_result_parameter(@actor_result.atk,actor_old[3],0,28 * 2)
       draw_result_parameter(@actor_result.def,actor_old[4],0,28 * 3)
       draw_result_parameter(@actor_result.mat,actor_old[5],0,28 * 4)
       draw_result_parameter(@actor_result.mdf,actor_old[6],0,28 * 5)
       draw_result_parameter(@actor_result.agi,actor_old[7],0,28 * 6)
       draw_result_parameter(@actor_result.luk,actor_old[8],0,28 * 7)
  end  
  
  #--------------------------------------------------------------------------
  # ● Draw Result EXP
  #--------------------------------------------------------------------------        
  def draw_result_parameter(value,value2,x,y)
      ncw = @result2_cw
      nch = @result2_ch
      number = value.abs.to_s.split(//)
      x2 = x + (number.size * ncw) + 16
      for r in 0..number.size - 1
          number_abs = number[r].to_i
          nsrc_rect = Rect.new(ncw * number_abs, 0, ncw, nch)
          @parameter_sprite.bitmap.blt(x + (ncw *  r), y, @result_number2, nsrc_rect)        
      end
      value3 = value - value2
      par = ""
      if value > value2
         par = "+"
         @parameter_sprite.bitmap.font.color = Color.new(50,255,255)
      elsif value < value2
         par = ""
         @parameter_sprite.bitmap.font.color = Color.new(255,155,100)
      end
      return if value == value2
      @parameter_sprite.bitmap.draw_text(x2,y - 8,100,32,par.to_s + value3.to_s,0)   
  end  
  
  #--------------------------------------------------------------------------
  # ● Create Result Actor
  #--------------------------------------------------------------------------            
  def create_result_actor
      if @result_actor_sprite == nil
         @result_actor_sprite = Sprite.new
         @result_actor_sprite.z = 999
      end
      dispose_result_actor_bitmap
      @result_actor_sprite.bitmap = Cache.picture("Actor1")
      @result_actor_org = [380 - (@result_actor_sprite.bitmap.width / 2), Graphics.height - @result_actor_sprite.bitmap.height]
      @result_actor_sprite.x = @result_actor_org[0] + 200
      @result_actor_sprite.y = @result_actor_org[1]
      @result_actor_sprite.opacity = 0
  end  

  #--------------------------------------------------------------------------
  # ● Check New Skill
  #--------------------------------------------------------------------------              
  def check_new_skill
      @new_skills = $game_temp.level_parameter[1]
      @new_skills_index = 0
  end
     
  #--------------------------------------------------------------------------
  # ● Show New Skill
  #--------------------------------------------------------------------------               
  def show_new_skill(start = false)
      Sound.play_recovery unless start
      @new_skill_window.draw_new_skill(@new_skills[@new_skills_index])
      @new_skills_index += 1
      if @new_skills_index == @new_skills.size or
         @new_skills[@new_skills_index] == nil
         @new_skills = nil
      end   
  end
  
  #--------------------------------------------------------------------------
  # ● Check Level UP
  #--------------------------------------------------------------------------            
  def check_level_up   
      if @new_skills != nil and !@new_skills.empty?
         show_new_skill
         return
      end  
      for battler_id in @result_member_id..@result_member_max
          actor_result = $game_party.members[@result_member_id]  
          $game_temp.level_parameter = [] if $game_temp.level_parameter == nil
          $game_temp.level_parameter_old = [] if $game_temp.level_parameter_old == nil
          $game_temp.level_parameter.clear
          $game_temp.level_parameter_old.clear
          $game_temp.level_parameter_old = [actor_result.level,actor_result.mhp,actor_result.mmp,
          actor_result.atk, actor_result.def, actor_result.mat, actor_result.mdf, actor_result.agi, actor_result.luk] rescue nil
          actor_result.gain_exp($game_troop.exp_total) rescue nil
          @result_member_id += 1
          @new_skills = nil
          @new_skills_index = 0
          if $game_temp.level_parameter != nil and !$game_temp.level_parameter.empty?
             show_level_result
             break
          end   
      end
      return if !$game_temp.level_parameter.empty?
      @victory_phase = 10 if @result_member_id >= @result_member_max
  end  
  
  #--------------------------------------------------------------------------
  # ● Create Level
  #--------------------------------------------------------------------------               
  def create_level
      if @level_sprite == nil
         @level_sprite = Sprite.new
         @level_sprite.bitmap = Bitmap.new(200,64)
         @level_sprite.z = 1002
      end      
      @level_sprite.bitmap.font.size = 48
      @level_sprite.bitmap.font.bold = true
      @level_sprite.x = RESULT_LEVEL_POSITION[0]
      @level_sprite.y = RESULT_LEVEL_POSITION[1]
      @level_sprite.bitmap.clear
      @level_sprite.bitmap.font.color = Color.new(255,255,255)
      @level_sprite.bitmap.draw_text(0,0,100,64,@actor_result.level,1)
      levelup = @actor_result.level - $game_temp.level_parameter_old[0]
      @level_sprite.bitmap.font.color = Color.new(50,255,255)
      @level_sprite.bitmap.font.size = 18
      @level_sprite.bitmap.draw_text(80,0,100,64,"+" + levelup.to_s ,0)
  end
  
  #--------------------------------------------------------------------------
  # ● Create New Skill Windos
  #--------------------------------------------------------------------------                  
  def create_new_skill_window
      if @new_skill_window == nil
         @new_skill_window = Window_Result_Skill.new
      end   
      @new_skill_window.x = RESULT_NEW_SKILL_POSITION[0]
      @new_skill_window.y = RESULT_NEW_SKILL_POSITION[1]
      check_new_skill
      if @new_skills != nil and !@new_skills.empty?
         show_new_skill
      else  
         @new_skill_window.x = -640
      end
  end  
  
  #--------------------------------------------------------------------------
  # ● Show Level Result
  #--------------------------------------------------------------------------              
  def show_level_result
      Sound.play_cursor
      @actor_result = $game_party.members[@result_member_id - 1] rescue nil
      return if @actor_result == nil
      @actor_result.animation_id = RESULT_LEVELUP_ANIMATION_ID
      @fade_result_window = true
      create_levelup
      create_level
      create_parameter_number
      create_result_actor
      create_new_skill_window
  end  
  
end

#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
  
  #--------------------------------------------------------------------------
  # ● Update Victory Item
  #--------------------------------------------------------------------------         
  def update_victory_levelup      
       check_level_up if Input.trigger?(:C)
       update_show_levelup
       if @levelup_layout == nil
          @window_treasure.update
       else
          @window_treasure.contents_opacity -= 15
       end
  end
  
  #--------------------------------------------------------------------------
  # ● Update Show Level UP
  #--------------------------------------------------------------------------            
  def update_show_levelup
      return if @levelup_layout == nil
      return if @result_actor_sprite == nil
      @new_skill_window.update
      if @result_actor_sprite.x > @result_actor_org[0]
         @result_actor_sprite.x -= 5
         @result_actor_sprite.opacity += 7
         if @result_actor_sprite.x <= @result_actor_org[0]
            @result_actor_sprite.x = @result_actor_org[0]
            @result_actor_sprite.opacity = 255
         end
      end
      if @levelup_word.zoom_x > 1.00
         @levelup_word.zoom_x -= 0.03
         if @levelup_word.zoom_x < 1.00
            @levelup_word.zoom_x = 1.00
            @levelup_word.blend_type = 0
         end
      end
      @levelup_word.zoom_y = @levelup_word.zoom_x
      if @parameter_sprite.x < 70
         @parameter_sprite.opacity += 13
         @parameter_sprite.x += 5
         if @parameter_sprite.x >= 70
            @parameter_sprite.opacity = 255
            @parameter_sprite.x = 70
         end   
      end  
  end   
  
end

#==============================================================================
# ■ Window Result Skill
#==============================================================================
class Window_Result_Skill < Window_Base

  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  def initialize
      super(0,0, 270, 58)
      self.opacity = 160
      self.contents_opacity = 255
      self.contents.font.name = "Arial"
      self.contents.font.bold = true
      self.z = 1003
      @animation_time = 999
      @org = [MOG_BATLE_RESULT::RESULT_NEW_SKILL_POSITION[0],MOG_BATLE_RESULT::RESULT_NEW_SKILL_POSITION[1]]
  end

  #--------------------------------------------------------------------------
  # ● DrawNew Skill
  #--------------------------------------------------------------------------  
  def draw_new_skill(skill)
      contents.clear
      self.contents.font.size = 16
      self.contents.font.color = Color.new(100,200,100)
      contents.draw_text(0,0,100,32, "学会技能;",0)
      self.contents.font.color = Color.new(255,255,255)
      draw_item_name_skill(skill,100,0, true, 170)
      self.x = @org[0]
      self.y = @org[1]
      @animation_time = 0
      self.opacity = 0
      self.contents_opacity = 0      
  end  
  
  #--------------------------------------------------------------------------
  # ● Draw Item Name
  #--------------------------------------------------------------------------
  def draw_item_name_skill(item, x, y, enabled = true, width = 172)
      return unless item
      draw_icon(item.icon_index, x, y, enabled)
      change_color(normal_color, enabled)
      draw_text(x + 24, y + 4, width, line_height, item.name)
  end
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------  
  def update
      super
      return if @animation_time == 999  
      @animation_time += 1 if @animation_time != 999
      case @animation_time
          when 0..30
            self.y -= 1
            self.opacity += 5
            self.contents_opacity += 5                  
          when 31..60
            self.y += 1
            self.opacity += 5
            self.contents_opacity += 5                     
          else
            self.y = @org[1]
            self.opacity = 255
            self.contents_opacity = 255
            @animation_time = 999      
      end
  end  
   
end

QQ截图20160731145357.png (520.78 KB, 下载次数: 11)

QQ截图20160731145357.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 19:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表