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.

Dash Script, trying to make the blurr follow jump arc.

Illitum

Sponsor

I am using a really nice dash script that dashed upon double tapping a direction and allows for an extra character set when dashing. While dashing there is also a blur behind the character which is customisable in length.
I want to modify it so:

1. When dashing it turns on game switch 001 and when not dashing, it turns the switch off. (solved)

2. When I'm dashing and I hit an event that causes the character to jump, the blur doesn't jump but merely runs in a straight line towards the landing spot. I want the blur to trail behind in the jump (thus jumping also).

Here is the script in question:

(updated with the game.switch changes added. :)
Code:
 

################################################################################

#

#                        -[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_switches[1]=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_switches[1]=false

     $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
 

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