Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Needs/Wants for RTAB

Counterattack: COMPLETE!

UPDATE:
I have most of the above done, now I need some window help.
First I'd like the overall composition shown in the spoiler. 3 thin horizontal bars, one for each character spanning most of the screen horizontally. The block on the bottom right corner is the command window. I want that space to be blank or an empty window until it's their turn. In the command window, a transparent image of the character would be nice.
Similarly I'd like an image of the character in each horizontal bar (as shown on the right hand side).
Each character is a lot different than the last so I need different stuff for each. They all have the basic HP and ATB right below that. To the right is more personal/unique stuff. The top character has a meter representing his SP(it's generally out of 100(%)).
The middle character doesn't have SP/AP/MP so I'd just like some information displayed there instead, which is a currently equipped/activated ability.
The bottom character has very little SP... 6 in fact, but they are Bullets instead. So I'd like a pictoral representation for each point(you can see he has 4/6 bullet remaining).

Now, sorta separately. I need a pictoral representation of a value next to an enemy as they take damage. This is the current combo on that enemy. Under that you can see two bars. One is definitely the ATB, but I'd like to be able to plug in other values like HP or made up stuff like Stun. When the ATB is filled, then the combo resets back to zero (erasing the number and 'hits').

I already know how to get the values the way I want them, i just need to be able to have several bars under the enemy as well as the one pictoral (though they are literal numbers) representation defined by these variables.

Thank you so much! Let me know if it's too vague or you need more info. Please reply/PM if you can help!
-Kicks

http://img469.imageshack.us/img469/7963/windomockuppq8.png[/IMG]



PS
There is my artistic talents at your command if you prove yourself in helping me. I do sprites, animation, concept art, and am working on a process to take my drawings and paintings into backgrounds (but they'd be more like preredered style background rather than flexible chipsets-so perhaps more useful for battle backgrounds, but I plan on using it for map graphics as well)

PPS
Don't wanna sound desperate, but I would just really like to convey how much I need help on this. I am beyond serious in my attitude toward making games. I have finally finished the important part of the preliminary planning and have just been crankin' out sprites because I can't really get started on the battle system I have planned for about 2 years. Well... Good Luck to all on their own projects and I hope we can all help eachother do great things. ^_^
 
Counter attack? Has anyone made a 'counterattack' script for any battlesystem? Seeing one as a basis would help.

This counter will increase by one (1) every time that enemy is hit by an attack.
Sounds more like the 'OverDrive' script. THAT script's 'bar' can increase when you get hit, and when it fills... your 'overdrive' skill can be used. When you use it, then the OD bar empties. Basically, like the Final Fantasy Limit Break.

If that's the case, look for OverDrive in the Forum Script Listings'... Custom Battle Add-On section.
 
Actually the atb and hit-counter was for the enemies. I need to be able to display and reference a value based on how many times the enemy has been hit before it's their turn.

And a basic counter attack, I believe, would be fairly simple with 'Forced Action.'
If I could just set it off when the specific player is hit, then make the target in the 'Forced Action' command script based off of the initial enemy attacker.
 
Just reread this post request. Sounds like a variation of the OverDrive/Limit Break system... getting hit causing points... except that the 'Skill' is an automatically triggered 'Attack' that won't take the counter-attacking battler's turn.

It won't, right?

TO ANYONE. THIS WOULD BE AN INGENIOUS SCRIPT: RTAB OR OTHERWISE. CROSS-PLATFORMING (both systems) WOULD BE APPRECIATED.
 
BTW, because I'm desperate, I'm not only willing to offer up my labor and expertise, but monetary compensation as well.
If you expect cash, then it'd better be awesome, but I want no less for my game.
(maybe i'll post in the sponsor thread...)
 
I have an additional question...
I'm having trouble with the 'User Animation' synching up correctly with 'Target Animation'. When my user animation is around 6~7 frames, it is easy to synch up, but when they get bigger like 8~11, the target animation plays very late. To me this seems like the delay between the two is defined by the final frames of the user animation. However all my experimenting yielded lame results.
So my question is...
Where in the default or RTAB or Animated Battlers script is the timing for the 'target animation' in relation to the 'user animation' for weapons and skills? Or if you know the timing relations fill me in... or if you know how to fix it also please let me know. Thanks a bundle!
-K
 
Into the fires of forever we will fly through the heavens
With the power of the universe we stand strong together
Through the force of power, it will soon reach the hour
For victory we ride, Fury of the Bump!
 
Yeah I got that squared away, homey. Thanks! (i made a big post about it in the RTAB thread).
Editing first post for new stuff.

So we have this, on line 3705 under the battle status window class in RTAB...

def initialize
x = (4 - $game_party.actors.size) * 80
width = $game_party.actors.size * 160
super(x, 320, width, 160)
self.back_opacity = 255
@actor_window = []
for i in 0...$game_party.actors.size
@actor_window.push(Window_ActorStatus.new(i, x + i * 160))
end
@level_up_flags = [false, false, false, false]
refresh
end

I'd just like someone to explain all the stuff here. I sorta have it, but its a bit crazy.
Right now it uses x because the status windows are arranged horizontally in the game. However, my preferred one (see first post spoiler) has them arranged vertically.
So... if you can help, hook me up!
 
http://img183.imageshack.us/img183/8245/windowalmostdi6.png[/IMG]

I'm using a display script I stumbled upon in a demo of Utopian Chaos
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
super(0, 320, 480, 160)
self.opacity = 0
@windows = []
@faces = []
for i in 0...$game_party.actors.size
@windows = Window_ActorStatus.new(i, i * 60 + 300)
end
@level_up_flags = [false, false, false, false]
refresh
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
super
for window in @windows
window.update
end
end
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
def dispose
for i in 0...$game_party.actors.size
@windows.dispose
end
super
end
#--------------------------------------------------------------------------
# ● Refresh
#--------------------------------------------------------------------------
def refresh(number = 0)
if number == 0
count = 0
for window in @windows
window.refresh(@level_up_flags[count])
count += 1
end
else
@windows[number - 1].refresh(@level_up_flags[number - 1])
end
end
#--------------------------------------------------------------------------
# ● AT Refresh
#--------------------------------------------------------------------------
def at_refresh(number = 0)
if number == 0
for window in @windows
window.at_refresh
end
else
@windows[number - 1].at_refresh
end
end
end

#==============================================================================
# â–  Window_ActorStatus
#==============================================================================

class Window_ActorStatus < Window_Base
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
#def initialize(id, x)
# @id = id
# super(x, 320, 160, 160)
# self.contents = Bitmap.new(width - 32, height - 32)
# self.back_opacity = 255
# actor = $game_party.actors[@id]
# @name = actor.name
# @maxhp = actor.maxhp
# @maxsp = actor.maxsp
# @hp = actor.hp
# @sp = actor.sp
# @state = make_battler_state_text(actor, 120, true)
# @windows = []
# for i in 0...5
# @windows.push(Window_DetailsStatus.new(actor, i, x))
# end
# refresh(false)
#end

def initialize(id, y)
@id = id
super(0, y, 480, 60)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 255
actor = $game_party.actors[@id]
@name = actor.name
@maxhp = actor.maxhp
@maxsp = actor.maxsp
@hp = actor.hp
@sp = actor.sp
@state = make_battler_state_text(actor, 120, true)
@windows = []
for i in 0...5
@windows.push(Window_DetailsStatus.new(actor, i, x))
end
refresh(false)
end



#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
for window in @windows
window.update
end
end
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
def dispose
for window in @windows
window.dispose
end
super
end
#--------------------------------------------------------------------------
# ● Refresh
#--------------------------------------------------------------------------
def refresh(level_up_flags)
self.contents.clear
actor = $game_party.actors[@id]
@windows[0].refresh(actor) if @name != actor.name
@windows[1].refresh(actor) if @maxhp != actor.maxhp or @hp != actor.hp
@windows[2].refresh(actor) if @maxsp != actor.maxsp or @sp != actor.sp
@windows[3].refresh(actor, level_up_flags) if
(@state != make_battler_state_text(actor, 120, true) or level_up_flags)
@name = actor.name
@maxhp = actor.maxhp
@maxsp = actor.maxsp
@hp = actor.hp
@sp = actor.sp
@state = make_battler_state_text(actor, 120, true)
end
#--------------------------------------------------------------------------
# ● AT Refresh
#--------------------------------------------------------------------------
def at_refresh
@windows[4].refresh($game_party.actors[@id])
end
end

#==============================================================================
# â–  Window_DetailsStatus
#==============================================================================

class Window_DetailsStatus < Window_Base
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize(actor, id, x)
@status_id = id
super(x, 320 + id * 26, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
#self.contents.font.name = $fontface
#self.contents.font.size = $fontsize
self.opacity = 0
self.back_opacity = 0
refresh(actor, false)
end
#--------------------------------------------------------------------------
# ● Refresh
#--------------------------------------------------------------------------
def refresh(actor, level_up_flags = false)
self.contents.clear
case @status_id
when 0
draw_actor_name(actor, 4, 0)
when 1
draw_actor_hp(actor, 4, 4, 120)
when 2
draw_actor_sp(actor, 4, 4, 120)
when 3
if level_up_flags
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120, 32, "LEVEL UP!")
else
draw_actor_state(actor, 4, 0)
end
when 4
draw_actor_atg(actor, 4, 0, 120)
end
end
end

#==============================================================================
# â–  Window_Base
#==============================================================================

class Window_Base
#--------------------------------------------------------------------------
# ● Draw Actor HP Meter
#--------------------------------------------------------------------------
alias cbs_draw_actor_hp draw_actor_hp
def draw_actor_hp(actor, x, y, width = 146, height = 5)
bg = Color.new( 0, 0, 0, 160)
c1 = Color.new(175, 0, 0, 160)
c2 = Color.new(255, 0, 0, 255)
self.contents.fill_rect(x, y, width, height, bg)
width2 = width * actor.hp / actor.maxhp
gradient(x + 1, y + 1, width2 - 2, height - 2, c1, c2)
cbs_draw_actor_hp(actor, x, y, width)
end
#--------------------------------------------------------------------------
# ● Draw Actor SP Meter
#--------------------------------------------------------------------------
alias cbs_draw_actor_sp draw_actor_sp
def draw_actor_sp(actor, x, y, width = 146, height = 5)
bg = Color.new( 0, 0, 0, 160)
c1 = Color.new( 0, 175, 0, 160)
c2 = Color.new( 0, 255, 0, 255)
self.contents.fill_rect(x, y, width, height, bg)
width2 = width * actor.sp / actor.maxsp
gradient(x + 1, y + 1, width2 - 2, height - 2, c1, c2)
cbs_draw_actor_sp(actor, x, y, width)
end
#--------------------------------------------------------------------------
# ● Draw Gradient
#--------------------------------------------------------------------------
def gradient(x, y, width, height, c1, c2)
for i in 1..width
x2 = x + i - 1
r = c1.red * (width - i) / width + c2.red * i / width
g = c1.green * (width - i) / width + c2.green * i / width
b = c1.blue * (width - i) / width + c2.blue * i / width
a = c1.alpha * (width - i) / width + c2.alpha * i / width
self.contents.fill_rect(x2, y, 1, height, Color.new(r, g, b, a))
end
end
#--------------------------------------------------------------------------
# ● Make State Text
#--------------------------------------------------------------------------
def make_battler_state_text(battler, width, need_normal)
brackets_width = self.contents.text_size("Status: ").width
text = ""
for i in battler.states
if $data_states.rating >= 1
if text == ""
text = $data_states.name
else
new_text = text + "/" + $data_states.name
text_width = self.contents.text_size(new_text).width
if text_width > width - brackets_width
break
end
text = new_text
end
end
end
if text == ""
if need_normal
text = "Status: Normal"
end
else
text = "Status: " + text
end
return text
end
end

Now how do I align up all the stuff(name, hp, sp, atb) horizontally in my windows instead of crammed on top of each other?

EDIT
Nevermind! I got it figured out too... Though when I position the items(sp,hp,etc...) they get cut off if i move them too high even if i redifine the size of the bitmap.
What's goin on?
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top