05-12-2017, 10:12 PM
(This post was last modified: 05-15-2017, 08:20 AM by Keeroh.
Edit Reason: To add Links
)
Hello! First of all, I'm glad to have joined this forum. It looks like a friendly and active place. I've posted here because I'm having a problem of campatibility between 2 scripts.
I'm using KGC_MultiAttack script to make an attack or skill have multiple hits and MOG XP - Combo Display V1.0, which shows a combo hit count during the battle. The problem that I'm having is that the combo hit count does not display the multi hit attacks, it just counts the first hit.
Is there anyone who knows scripting to help modify the Combo Display to make it count the multiple hits or know of any other solution? I'm wanting to make these two work because I'm planning on adding achievements and one of them would be achieving a high number of hits or high max damage.
Thanks for your attention!
Edit:
Combo_Hud
Combo_Number
[/url][url=http://imgur.com/Zr2fvA0]Combo_Damage
Edit2: removed KGC's code since I'll be using Mea's Multistrike
I'm using KGC_MultiAttack script to make an attack or skill have multiple hits and MOG XP - Combo Display V1.0, which shows a combo hit count during the battle. The problem that I'm having is that the combo hit count does not display the multi hit attacks, it just counts the first hit.
Is there anyone who knows scripting to help modify the Combo Display to make it count the multiple hits or know of any other solution? I'm wanting to make these two work because I'm planning on adding achievements and one of them would be achieving a high number of hits or high max damage.
Thanks for your attention!
Code:
#==============================================================================
# +++ 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 = 40
# Cancelar a contagem de Combo caso o inimigo acertar o herói.
ENEMY_CANCEL_COMBO = true
# Posição geral das imagens. X Y
COMBO_POSITION = [440,60]
# 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
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
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
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
def dispose
@combo_bitmap.dispose
@combo.bitmap.dispose
@combo.dispose
@hud.bitmap.dispose
@hud.dispose
@total_bitmap.dispose
@total.bitmap.dispose
@total.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
end
#--------------------------------------------------------------------------
# ● Slide Update
#--------------------------------------------------------------------------
def slide_update
return if @combo.visible == false
if $game_temp.combo_time > 0 and @combo_wait == false
$game_temp.combo_time -= 1 if TIME_COUNT == true
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
@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
Edit:
Combo_Hud
Combo_Number
[/url][url=http://imgur.com/Zr2fvA0]Combo_Damage
Edit2: removed KGC's code since I'll be using Mea's Multistrike