赞 | 3 |
VIP | 0 |
好人卡 | 39 |
积分 | 1 |
经验 | 101436 |
最后登录 | 2017-9-1 |
在线时间 | 2276 小时 |
Lv1.梦旅人 路人党员
- 梦石
- 0
- 星屑
- 52
- 在线时间
- 2276 小时
- 注册时间
- 2010-12-30
- 帖子
- 3225
|
这个脚本本身就有bug,害我搞了好久==- #==============================================================================
- # +++ MOG XP - Combo Display V1.0 +++
- #==============================================================================
- # By Moghunter
- # http://www.atelier-rgss.com/
- #==============================================================================
- # ■ Apresenta a quantidade de acertos no alvo e o dano maximo.
- # ---------------------------------------------------------------------------
- # É necessário ter os arquivos imagens na pasta Graphics/Windoskins.
- # Combo_Damage.png
- # Combo_Hud.png
- # Combo_Number.png
- #==============================================================================
- module MOG_COMBO_DISPLAY
- #Ativar tempo para fazer combo.
- TIME_COUNT = true
- # Tempo para fazer um combo. (40 = 1s)
- COMBO_TIME = 200#★连段的等待时间,请增加一个值槽表示等待时间的减少,等待时间为0时值槽不显示
- # Cancelar a contagem de Combo caso o inimigo acertar o herói.
- ENEMY_CANCEL_COMBO = false
- # Posição geral das imagens. X Y
- COMBO_POSITION = [10,80]
- # Posição do número de HITS. X Y
- HIT_POSITION = [15,20]
- # Posição do número de dano. X Y
- TOTAL_POSITION = [60,-20]
- # Prioridade das imagens.
- PRIORITY_Z = 50
- # 时间槽颜色
- TIME_COLOR = Color.new(255,0,0,160)
- end
- #===============================================================================
- # ■ Game_Temp
- #===============================================================================
- class Game_Temp
- attr_accessor :combo_hit
- attr_accessor :max_damage
- attr_accessor :combo_time
- #--------------------------------------------------------------------------
- # ● initialize
- #--------------------------------------------------------------------------
- alias mog_combo_display_initialize initialize
- def initialize
- @combo_hit = 0
- @max_damage = 0
- @combo_time = 0
- mog_combo_display_initialize
- end
- end
- #===============================================================================
- # ■ Combo_Sprite_Hud
- #===============================================================================
- class Combo_Sprite_Hud < Sprite
- attr_accessor :combo_wait
- include MOG_COMBO_DISPLAY
-
- #--------------------------------------------------------------------------
- # ● Initialize
- #--------------------------------------------------------------------------
- def initialize
- super
- @combo_wait = false
- $game_temp.combo_time = 0
- $game_temp.combo_hit = 0
- $game_temp.max_damage = 0
- @combo_hit_old = 0
- @animation_speed = 0
- @pos_x = COMBO_POSITION[0]
- @pos_x_fix = 0
- @pos_y = COMBO_POSITION[1]
- create_combo_sprite
- create_total_damage_sprite
- create_hud_sprite
- create_time_sprite
- end
- #--------------------------------------------------------------------------
- # ● Create Hud Sprite
- #--------------------------------------------------------------------------
- def create_hud_sprite
- @hud = Sprite.new
- @hud.bitmap = RPG::Cache.windowskin("Combo_HUD")
- @hud.z = PRIORITY_Z
- @hud.x = COMBO_POSITION[0]
- @hud.y = COMBO_POSITION[1]
- @hud.opacity = 250
- @hud.visible = false
- end
- #--------------------------------------------------------------------------
- # ● Create Total Damage Sprite
- #--------------------------------------------------------------------------
- def create_total_damage_sprite
- @total_image = RPG::Cache.windowskin("Combo_damage")
- @total_bitmap = Bitmap.new(@combo_image.width,@combo_image.height)
- @total = Sprite.new
- @total.bitmap = @total_bitmap
- @total_im_cw = @total_image.width / 10
- @total_im_ch = @total_image.height
- @total_number_text = $game_temp.max_damage.abs.to_s.split(//)
- for r in 0..@total_number_text.size - 1
- @total_number_abs = @total_number_text[r].to_i
- @total_src_rect = Rect.new(@total_im_cw * @total_number_abs, 0, @total_im_cw, @total_im_ch)
- @total_bitmap.blt(40 + ((@total_im_cw - 12) * r), 0, @total_image, @total_src_rect)
- end
- @total.z = PRIORITY_Z + 1
- @total_orig_x = COMBO_POSITION[0] + TOTAL_POSITION[0]
- @total_orig_y = COMBO_POSITION[1] + TOTAL_POSITION[1]
- @total.x = @total_orig_x
- @total.y = @total_orig_y
- @total.zoom_x = 1.00
- @total.zoom_y = 1.00
- @total.opacity = 250
- @total.visible = false
- end
- #--------------------------------------------------------------------------
- # ● Create Combo Number
- #--------------------------------------------------------------------------
- def create_combo_sprite
- @combo_image = RPG::Cache.windowskin("Combo_Number")
- @combo_bitmap = Bitmap.new(@combo_image.width,@combo_image.height)
- @combo = Sprite.new
- @combo.bitmap = @combo_bitmap
- @combo_im_cw = @combo_image.width / 10
- @combo_im_ch = @combo_image.height
- @combo_number_text = $game_temp.combo_hit.abs.to_s.split(//)
- for r in 0..@combo_number_text.size - 1
- @combo_number_abs = @combo_number_text[r].to_i
- @combo_src_rect = Rect.new(@combo_im_cw * @combo_number_abs, 0, @combo_im_cw, @combo_im_ch)
- @combo_bitmap.blt(40 + ((@combo_im_cw - 12) * r), 0, @combo_image, @combo_src_rect)
- end
- @combo.z = PRIORITY_Z + 2
- @combo_orig_x = COMBO_POSITION[0] + HIT_POSITION[0]
- @combo_orig_y = COMBO_POSITION[1] + HIT_POSITION[1]
- @pos_x_fix = (@combo_im_cw / 2 * @combo_number_text.size)
- @combo.x = @combo_orig_x - @pos_x_fix
- @combo.y = @combo_orig_y
- @combo.zoom_x = 1.00
- @combo.zoom_y = 1.00
- @combo.opacity = 250
- @combo.visible = false
- end
-
- #--------------------------------------------------------------------------
- # ● 创造时间槽
- #--------------------------------------------------------------------------
- def create_time_sprite
- [url=home.php?mod=space&uid=134219]@Time[/url] = Sprite.new
- @time.z = PRIORITY_Z
- @time.x = COMBO_POSITION[0] + 1
- @time.y = COMBO_POSITION[1] + @hud.bitmap.height + 5
- @time.bitmap = Bitmap.new(@hud.bitmap.width - 2, 10)
- @time.bitmap.fill_rect(0,0,@hud.bitmap.width - 2, 10,TIME_COLOR)
- @time.visible = false
- end
-
- #--------------------------------------------------------------------------
- # ● Dispose
- #--------------------------------------------------------------------------
- def dispose
- @combo_bitmap.dispose
- @combo.bitmap.dispose
- @combo.dispose
- @hud.bitmap.dispose
- @hud.dispose
- @total_bitmap.dispose
- @total.bitmap.dispose
- @total.dispose
- @time.bitmap.dispose
- @time.dispose
- super
- end
-
- #--------------------------------------------------------------------------
- # ● Refresh
- #--------------------------------------------------------------------------
- def refresh
- @combo_hit_old = $game_temp.combo_hit
- @combo.bitmap.clear
- @total.bitmap.clear
- @combo_number_text = $game_temp.combo_hit.abs.to_s.split(//)
- for r in 0..@combo_number_text.size - 1
- @combo_number_abs = @combo_number_text[r].to_i
- @combo_src_rect = Rect.new(@combo_im_cw * @combo_number_abs, 0, @combo_im_cw, @combo_im_ch)
- @combo_bitmap.blt(40 + ((@combo_im_cw - 12) * r), 0, @combo_image, @combo_src_rect)
- end
- @total_number_text = $game_temp.max_damage.abs.to_s.split(//)
- for r in 0..@total_number_text.size - 1
- @total_number_abs = @total_number_text[r].to_i
- @total_src_rect = Rect.new(@total_im_cw * @total_number_abs, 0, @total_im_cw, @total_im_ch)
- @total_bitmap.blt(40 + ((@total_im_cw - 12) * r), 20, @total_image, @total_src_rect)
- end
- #Combo Position
- @pos_x_fix = (@combo_im_cw / 2 * @combo_number_text.size)
- @combo.x = @combo_orig_x - @pos_x_fix
- @combo.y = @combo_orig_y
- @combo.zoom_x = 2
- @combo.zoom_y = 2
- @combo.opacity = 70
- @combo.visible = true
- #Total Position
- @total.x = @total_orig_x + 20
- @total.y = @total_orig_y
- @total.opacity = 100
- @total.visible = true
- #Hud Position
- @hud.x = COMBO_POSITION[0]
- @hud.y = COMBO_POSITION[1]
- @hud.opacity = 255
- @hud.visible = true
- @time.visible = true
- end
-
- #--------------------------------------------------------------------------
- # ● Slide Update
- #--------------------------------------------------------------------------
- def slide_update
- return if @combo.visible == false
- if $game_temp.combo_time > 0 # and !@combo_wait
- $game_temp.combo_time -= 1 if TIME_COUNT
- @time.zoom_x = ($game_temp.combo_time/COMBO_TIME.to_f)
- end
- if $game_temp.combo_time > 0 and $game_temp.combo_hit > 0
- #Total Damage
- if @total.x > @total_orig_x
- @total.x -= 1
- @total.opacity += 8
- else
- @total.x = @total_orig_x
- @total.opacity = 255
- end
- #Combo
- if @combo.zoom_x > 1.00
- @combo.zoom_x -= 0.05
- @combo.zoom_y -= 0.05
- @combo.opacity += 8
- else
- @combo.zoom_x = 1
- @combo.zoom_y = 1
- @combo.opacity = 255
- @combo.x = @combo_orig_x - @pos_x_fix
- @combo.y = @combo_orig_y
- end
- elsif $game_temp.combo_time == 0 and @combo.visible == true
- @time.visible = false
- @combo.x -= 5
- @combo.opacity -= 10
- @total.x -= 3
- @total.opacity -= 10
- @hud.x += 5
- @hud.opacity -= 10
- $game_temp.combo_hit = 0
- @combo_hit_old = $game_temp.combo_hit
- $game_temp.max_damage = 0
- if @combo.opacity <= 0
- @combo.visible = false
- @total.visible = false
- @hud.visible = false
- end
- end
- end
-
- #--------------------------------------------------------------------------
- # ● Cancel
- #--------------------------------------------------------------------------
- def cancel
- $game_temp.combo_hit = 0
- $game_temp.max_damage = 0
- $game_temp.combo_time = 0
- @combo_hit_old = $game_temp.combo_hit
- end
- #--------------------------------------------------------------------------
- # ● Clear
- #--------------------------------------------------------------------------
- def clear
- $game_temp.combo_time = 0
- end
- #--------------------------------------------------------------------------
- # ● Update
- #--------------------------------------------------------------------------
- def update
- super
- refresh if $game_temp.combo_hit != @combo_hit_old
- slide_update
- end
- end
- #===============================================================================
- # ■ Scene_Battle
- #===============================================================================
- class Scene_Battle
- include MOG_COMBO_DISPLAY
-
- #--------------------------------------------------------------------------
- # ● main
- #--------------------------------------------------------------------------
- alias mog_combo_main main
- def main
- create_cb_sprite
- mog_combo_main
- dispose_cb_sprite
- end
-
- #--------------------------------------------------------------------------
- # ● create_cb_sprite
- #--------------------------------------------------------------------------
- def create_cb_sprite
- @combo_sprite = Combo_Sprite_Hud.new
- end
-
- #--------------------------------------------------------------------------
- # ● dispose_cb_sprite
- #--------------------------------------------------------------------------
- def dispose_cb_sprite
- @combo_sprite.dispose
- end
-
- #--------------------------------------------------------------------------
- # ● update
- #--------------------------------------------------------------------------
- alias mog_combo_update update
- def update
- mog_combo_update
- @combo_sprite.update
- end
-
- #--------------------------------------------------------------------------
- # ● mog_combo_start_phase1
- #--------------------------------------------------------------------------
- alias mog_combo_start_phase2 start_phase2
- def start_phase2
- @combo_sprite.combo_wait = false
- mog_combo_start_phase2
- end
-
- #--------------------------------------------------------------------------
- # ● start_phase4
- #--------------------------------------------------------------------------
- alias mog_combo_display_start_phase4 start_phase4
- def start_phase4
- @combo_sprite.combo_wait = true
- mog_combo_display_start_phase4
- end
-
- #--------------------------------------------------------------------------
- # ● update_phase4_step5
- #--------------------------------------------------------------------------
- alias mog_combo_display_update_phase4_step5 update_phase4_step5
- def update_phase4_step5
- for target in @target_battlers
- if target.damage != nil and target.damage.is_a?(Numeric) and
- target.damage.to_i > 0
- if target.is_a?(Game_Enemy)
- $game_temp.combo_hit += 1
- $game_temp.max_damage += target.damage.to_i
- $game_temp.combo_time = COMBO_TIME
- else
- $game_temp.combo_time = 0 if ENEMY_CANCEL_COMBO == true
- end
- end
- end
- mog_combo_display_update_phase4_step5
- end
-
- #--------------------------------------------------------------------------
- # ● Start After Battle Phase
- #--------------------------------------------------------------------------
- alias mog_combo_start_phase5 start_phase5
- def start_phase5
- @combo_sprite.clear
- mog_combo_start_phase5
- end
- end
- $mog_rgssxp_combo_display = true
复制代码 |
评分
-
查看全部评分
|