Double tapping the direction keys for running in BABS

Started by Stray, September 20, 2012, 03:38:16 pm

Previous topic - Next topic

Stray

I need a script which makes the hero running in Blizz-ABS when you double tap a direction key.

So that's what I need. If anyone has a script or something, I'd be very thankful. :]
I'm very grateful to you all for your great help.

Stray

I think it would be very useful while playing. You could flee more easily from enemies.
I'm very grateful to you all for your great help.

Stray

Sorry for bumping again.
There were so many complex issues, problems and stuff I had posted in the request section... I thought this would be a really tiny one?
I'm very grateful to you all for your great help.

KK20

It's the way how BABS processes running/sneaking/walking. Someone would have to modify the way that works first before even getting to the script request.

Here's a double tap script by Gambaface101, however it won't work if you try throwing it in with BABS. I'm pretty busy until November.
Spoiler: ShowHide

################################################################################
#
#                        -[DOUBLE TAP DASH & BLURRR]-
#                               by Gameface101 v.2
#                                  1-28-10
#
# double tap to dash concept from Gamba's ABS
# and trails script by Zues81
#
# free to use
# credits to Gamba,Zues81,Gameface101
#
# Instructions:
# Copy and Paste above Main script in script Database (F11)
# then setup options in the module.
#
# to blur event:
# $game_map.events[X].blur = true
#
# to stop event blur:
# $game_map.events[X].blur = false
#
# X = Event ID number
#
################################################################################
module G101_DTDB

NORMAL_SPEED = 4 #-----------------------------------------=[set normal speed]
DASH_SPEED = 5.5 #-------------------------------------------=[set dash speed]
TIME = 4 #------------------------------------------=[time between double tap]
SWITCHIMP = 0 #-----------------------------------=[switch for sliding on/off]
TILEIMP = 7 #------------------------------------------=[tile ID stop sliding]
CHARACTER_DASH_GRAPHIC = "_dash" #----------------------=["NAME_dash" graphic]
STOP_DASH = 0 #-----------=[stop sliding - 0 release key - 1 when move direct]
DISABLE_TIRED_FROM_DASH = true #---------------------=[permanent dash or tire]
DASH_TIME = 100 #-------------------------------------=[how much time to dash]
RECHARGE_TIME = 1 #-------------------------------------------=[recharge time]
START_RECHARGE_TIME = 1 #-------------------=[the instant recharge will begin]
BLUR_LENGTH = 16
BLUR_TYPE = 0# 0=Normal 1=Light 2=Dark

end

#------------------------------------------------------------------------=[DASH]

class Game_Character
attr_accessor :move_speed
attr_accessor :time_dash
attr_accessor :character_name
alias double_tap_dash_initialize initialize
def initialize
   @time_dash = 0
   double_tap_dash_initialize
end
end

module RPG_FileTest
def RPG_FileTest.character_exist?(filename)
   return RPG::Cache.character(filename, 0) rescue return false
end
end

class Game_Map 
attr_accessor :time_dash
attr_accessor :dashing
alias dash_setup setup
def setup(map_id)
@dash = []
for i in 2..8
   @dash[i] = 0
end
@time_c = 0
@dashing = false
@direction = 0
@time_rec = 0
$game_player.time_dash = G101_DTDB::DASH_TIME if @time_dash == nil
dash_setup(map_id)
end

alias dash_update update
def update
dash_update
if $game_map.terrain_tag($game_player.x , $game_player.y) == G101_DTDB::TILEIMP
   $game_player.character_name = $game_party.actors[0].character_name if $game_player.character_name == $game_party.actors[0].character_name + G101_DTDB::CHARACTER_DASH_GRAPHIC
   if @time_rec == G101_DTDB::START_RECHARGE_TIME
     $game_player.time_dash += (G101_DTDB::DASH_TIME.to_f/(100/G101_DTDB::RECHARGE_TIME.to_f)).to_i if $game_player.time_dash < G101_DTDB::DASH_TIME
     @time_rec = 0
   else
     @time_rec += 1
   end
end
if $game_switches[G101_DTDB::SWITCHIMP] == false and $game_map.terrain_tag($game_player.x , $game_player.y) != G101_DTDB::TILEIMP
   
   if @dashing == true
     $game_player.blur = true#
     newname = $game_party.actors[0].character_name + G101_DTDB::CHARACTER_DASH_GRAPHIC if $game_party.actors[0].hp > 0
     $game_player.character_name = newname if $game_player.character_name != newname and
     RPG_FileTest.character_exist?(newname)
     if G101_DTDB::DISABLE_TIRED_FROM_DASH == false
       $game_player.time_dash -= 1
     end
     $game_player.move_speed = G101_DTDB::DASH_SPEED
     if G101_DTDB::STOP_DASH == 0
       unless Input.press?(Input::DOWN) or Input.press?(Input::LEFT) or
          Input.press?(Input::RIGHT) or Input.press?(Input::UP)
          @dashing = false
          $game_player.blur = false#
       end
     elsif G101_DTDB::STOP_DASH == 1
       unless Input.press?(@keyboard) and @direction == $game_player.direction
         @dashing = false
       end
     end
     if $game_player.time_dash <= 0 and G101_DTDB::DISABLE_TIRED_FROM_DASH == false
       @dashing = false
       $game_player.blur = false#
     end
   else
     $game_player.character_name = $game_party.actors[0].character_name if $game_player.character_name == $game_party.actors[0].character_name + G101_DTDB::CHARACTER_DASH_GRAPHIC
     
     if @time_rec == G101_DTDB::START_RECHARGE_TIME
       $game_player.time_dash += (G101_DTDB::DASH_TIME.to_f/(100/G101_DTDB::RECHARGE_TIME.to_f)).to_i if $game_player.time_dash < G101_DTDB::DASH_TIME
       @time_rec = 0
     else
       @time_rec += 1
     end
     $game_player.move_speed = G101_DTDB::NORMAL_SPEED if $game_player.move_speed == G101_DTDB::DASH_SPEED
     dir = $game_player.direction

     case dir
       when 2
         @keyboard = Input::DOWN
       when 4
         @keyboard = Input::LEFT
       when 6
         @keyboard = Input::RIGHT
       when 8
         @keyboard = Input::UP
     end 
           
     if @dash[dir] == 1

       if Input.press?(@keyboard)
         for i in 2..8
           if i != dir
             @dash[i] = 0
           end
         end
       else
         @dash[dir] = 2
         for i in 2..8
           if i != dir
             @dash[i] = 0
           end
         end
       end

     elsif @dash[dir] == 2
       if @time_c < (G101_DTDB::TIME)
         @time_c += 1
         if Input.press?(@keyboard)
           @time_c = 0
           @dash[dir] = 0
           @dashing = true
           @direction = $game_player.direction
         end
       end
       if @time_c > (G101_DTDB::TIME)
         @time_c = 0
         @dash[dir] = 0
       end
     else
       @time_c = 0
       if Input.press?(@keyboard)
         @dash[dir] = 1
         for i in 2..8
           if i != dir
               @dash[i] = 0
           end
         end
       end
     end
   end
end
end
end
#------------------------------------------------------------------------=[BLUR]
$blurr_images = G101_DTDB::BLUR_LENGTH
$transparence = G101_DTDB::BLUR_TYPE

class Game_Character

attr_accessor :blur

alias spriteset_map_initialize initialize
def initialize
   spriteset_map_initialize
   @blur = false
end
end

class Spriteset_Map

alias spriteset_map_update update
def update
   if $blurr_images != @last_blurr_images
     @last_blurr_images = $blurr_images
     if @blur_sprites != nil
       for blur_sprite in @blur_sprites.values
         blur_sprite.dispose
       end
       @blur_sprites = nil
     end
   end
   if @blur_sprites == nil
     @blur_sprites = {}
     for i in 0...$blurr_images
       @blur_sprites[i] = Sprite_Blur.new(@viewport1, $game_player)
       @blur_sprites[i].opacity = 256 / $blurr_images * i
     end
   end
   for id in $game_map.events.keys.sort
     event = $game_map.events[id]
     if event.blur == true and @blur_sprites[id * $blurr_images] == nil
       for i in 0...$blurr_images
         @blur_sprites[id * $blurr_images + i] = Sprite_Blur.new(@viewport1, event)
         @blur_sprites[id * $blurr_images + i].opacity = 256 / $blurr_images * i
       end
     end
   end
   for blur_sprite in @blur_sprites.values
     blur_sprite.update
   end
   spriteset_map_update
end

alias spriteset_map_dispose dispose
def dispose
   spriteset_map_dispose
   for blur_sprite in @blur_sprites.values
     blur_sprite.dispose
   end
end
end

class Sprite_Blur < Sprite

attr_accessor :real_x
attr_accessor :real_y
attr_accessor :character

def initialize(viewport, character)
   super(viewport)
   self.opacity = 0
   @character = character
   update
end

def update
   if self.opacity == 0
     super
     if @character_name != @character.character_name or @character_hue != @character.character_hue
       @character_name = @character.character_name
       @character_hue = @character.character_hue
       self.bitmap = RPG::Cache.character(@character_name,@character_hue)
       self.blend_type = $transparence
       @cw = bitmap.width / 4
       @ch = bitmap.height / 4
       self.ox = @cw / 2
       self.oy = @ch
     end
     self.visible = (not @character.transparent and @character.blur)
     sx = @character.pattern * @cw
     sy = (@character.direction - 2) / 2 * @ch
     self.src_rect.set(sx, sy, @cw, @ch)
     self.opacity = 255
     self.z = @character.screen_z(@ch) - 1
     @real_x = @character.real_x
     @real_y = @character.real_y
     update
   else
     self.opacity -= 256 / ($blurr_images - 1)
     self.x = (@real_x - $game_map.display_x + 3)/4 + 16
     self.y = (@real_y - $game_map.display_y + 3)/4 + 32
   end
end
end

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

Stray

I like the effect of the script. If it only was working. Well, thanks for sending this.
You did really much for me. I appreciate that.

If anyone else has a script for it, that would be so awesome.
I'm very grateful to you all for your great help.

Zexion

Isn't there some way to check if the input is being repeated? You could do like a script call through an event. something like

Spoiler: ShowHide
if input.repeat?("right arrow")
The right button is being pressed.
change speed = 4
else
change speed = 3
end
else
change speed = 3
end


Not exactly sure if that would work, and also I know for sure that is not the right script call for that :P blizz abs changes the input thingy so the
if input.repeat?(right arrow)

part is wrong.

KK20

Nah, repeat wouldn't achieve the same effect--the player could just hold down a direction and, within a second or so, would have a running character. It would require two variables: one that acts as a frame counter and another that stores the current direction. When a direction is pressed, it stores it into direction and sets counter to zero. Each frame, counter increases by 1. If the player hits the same directional key again (Input.trigger?) before counter reaches a certain amount, the running effect is true. While running is true, we no longer need to process/update counter and direction. However, once Input.dir4 == 0 (no direction key is being pressed), running is false and we now process the two variables again.

But, as I said, until someone edits the player movement BABS, we can't even start doing this request. (Actually, I'd really like it if BABS could change how it processes player movement. The fact that it resets the player's move speed to normal every frame and then changes the move speed based on if RUNNING or SNEAKING keys are held is quite restrictive. For example, combos cannot modify the game player's speed, yet it works perfectly fine on allies and enemies.)

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

winkio

Agreed.  In what I have finished so far of v3.0, running and sneaking behave as independent bonuses to move speed, which still allows you to change the base movement speed underneath.  I did that with the idea of haste/slow status effects in mind, but you are right that it also opens up a lot of options for combos.

Stray

I am still for this. If anyone has some time now? :>
I'm very grateful to you all for your great help.

KK20

I'd much rather wait for the BABS update and work with the newer move speed edit than try to come up with something from scratch.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!