Multi Attack & Combo Display - Keeroh - 05-12-2017
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!
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
RE: Multi Attack & Combo Display - DerVVulfman - 05-13-2017
First, there are a few things to note.
Of the Moghunter script.... Grrraarrrr.... can he just make clean code? It's like looking at spaghetti! Great visuals, but ... uggh. HOWEVER, the script requires three graphics which you did not supply. This also needs "Combo_Damage.png", "Combo_Hud.png" and "Combo_Number.png" which you did not supply. These will need to go within the Graphics\Windowskins folder. Please supply them within your first post. It would be helpful.
Of the KGC script. Well.... I went to the site and read the terms of use of the KGC scripts. They are kinda harsh. One of their terms is that you can not post their scripts elsewhere (whoops... the above script will 'eventually' be removed). And another term is that you can't even provide a hot link to their script links. MAN, that's not just tough, but insane! And third, you can't make a commercial game with their works. Seriously, it's like they don't want anyone asking for help elsewhere? Jerks.
What you may NOT realize is that the KGC script requires another script: The KGC_FrameShadowText script. This other KGC script defines the 'draw_frame_text' method which the MultiAttack script relies upon for a few features. Fortunately, I have the whole original DevProject of theirs. I wish I translated it into English though (headaches). But at least you know I have THAT covered.
I take it that you want it to show a damage pop for each strike? For example, if Aluxes had a special 'OCTO-STRIKE' attack which delivered 8 slashing blows on a target that you would have 8 individual attacks? The KGC script is a bit poor in execution. It doesn't do justice to that as it shows the final attack with the # of hits .... waits.... and then shows the final hit damage 'again' with the # of hits. Messy.
You may want to look at Mea's MultiSTRIKE by .... me? The code may not count the number of hits like the KGC script, but it is much smaller and solves that issue.
STILL.... the Moghunter script does need those graphics.
RE: Multi Attack & Combo Display - Keeroh - 05-13-2017
Thanks for the fast reply!
I edited the post with the links for "Combo_Damage.png", "Combo_Hud.png" and "Combo_Number.png". For now they are just the ones that were in the demo, but they serve their purpose of making the script works.
About KGC scripts, I didn't know they were so strict! I was sure the scripts were fine to use commercially, but i believe you are not supposed to trust google translate too much Maybe I will send an email to them asking for permission since I'm using a lot of useful scripts.
What I wanted was to make the combo hit count the max damage of the multiple hits. For example, if octo-slash did 8 attacks of 100 damage, instead of showing 800 damage, Mog's Combo Hit would show the damage of only the first attack, but it would be very cool if it counted the number of hits too. I wasn't planning on asking for this because I assumed it would be a difficult request
I tried using Mea's MultiSTRIKE and it works fine! The only issue I have is an extra damage popping at the end of the animation
RE: Multi Attack & Combo Display - DerVVulfman - 05-14-2017
Whoops! I forgot to upload Mea after fixing that issue a couple years ago. It didn't take much, just adding a value into the BattleActions class to see if the attacker is performing a MultiStrike. If he is, it erases the initial 'default' attack so only the remaining 'multiStrikes' affect the target(s).
I didn't adapt it to give you a final tally, but that shouldn't be TOO hard. It just needs to have another value to add all the hits together and 'pop' them too.
For some rendering fun, you may find that Moggy isn't the only person who used graphics for damage displays. We have a few damage display scripts in the forum, beginning with Cogwheel's. Of course, there are also versions that edit the font used in the damage displays.
Meanwhile.... Yeah, KGC's terms have been the same for over a decade. I first thought they were up for grabs like everyone else. That is, I thought that until I used an online translator to read all the terms. *BARF!* You can't even make a hotlink to an individual script thread!?
If you have a bunch of KGC scripts, you may want to make another thread like "Anyone have scripts equivalent to these KGC scripts?" In it, just list each script and what each script accomplishes in some level of detail.
AND.... if you're done with the KGC script above, can you kindly delete it from your initial post? That would show you're good with Mea if that's the case.
RE: Multi Attack & Combo Display - DerVVulfman - 05-14-2017
Yeah. KGC. KDC. I was like "WhatTheHell?" too.
RE: Multi Attack & Combo Display - DerVVulfman - 05-14-2017
Given this...
Quote:Who Viewed Online:
Bounty Hunter Lani Today 02:40 PM
Keeroh Today 02:06 PM
LiTTleDRAgo Today 01:55 PM
... I know you already read my last post.
Well, gotta let you know I made a new version of Mea's MultiStrike. It doesn't COUNT the number of strikes, but it can show the accumulated total damage delivered when all the hits have been delivered. Heck, the 'total' hits can be used in place of the individual strike pops if you want!
...... Workin' on your list?
RE: Multi Attack & Combo Display - Keeroh - 05-15-2017
(05-14-2017, 06:25 PM)DerVVulfman Wrote: Whoops! I forgot to upload Mea after fixing that issue a couple years ago. It didn't take much, just adding a value into the BattleActions class to see if the attacker is performing a MultiStrike. If he is, it erases the initial 'default' attack so only the remaining 'multiStrikes' affect the target(s).
I didn't adapt it to give you a final tally, but that shouldn't be TOO hard. It just needs to have another value to add all the hits together and 'pop' them too.
For some rendering fun, you may find that Moggy isn't the only person who used graphics for damage displays. We have a few damage display scripts in the forum, beginning with Cogwheel's. Of course, there are also versions that edit the font used in the damage displays.
Meanwhile.... Yeah, KGC's terms have been the same for over a decade. I first thought they were up for grabs like everyone else. That is, I thought that until I used an online translator to read all the terms. *BARF!* You can't even make a hotlink to an individual script thread!?
If you have a bunch of KGC scripts, you may want to make another thread like "Anyone have scripts equivalent to these KGC scripts?" In it, just list each script and what each script accomplishes in some level of detail.
AND.... if you're done with the KGC script above, can you kindly delete it from your initial post? That would show you're good with Mea if that's the case.
Hello!
I used the new Mea's Multistrike and at first it worked. It showed the max damage in the combo count, but the damage popping after each hit was not appearing. After a little observation I saw that the opacity in animation was 255 instead of 254. When i put 254, the damage of the attack turned 0
I don't know why this happened but probably must be some conflict with another script, i'll continue testing and see
RE: Multi Attack & Combo Display - DerVVulfman - 05-15-2017
Er, I have the SWITCH in the configuration system set to only show the final totals. This means, individual hits won't show... only the final total. It can be configured to show individual hits. I wanted you to have a choice of showing all hits and/or just the final total.
RE: Multi Attack & Combo Display - Keeroh - 05-15-2017
I've set MS_TOTALPOP to true and MS_TOTALONLY to false and it should show all the hits + the total damage, but instead all the damage that i did was zero. Some script must be conflicting with this one
Edit: When i commented KGC's Action Count Battle it worked
RE: Multi Attack & Combo Display - DerVVulfman - 05-15-2017
Ya must have ACB posted 'below' mine. Overwriting it in essence. If you put it below KGC's ACB, it would prolly work.
|