RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
caterpillar

0 Members and 2 Guests are viewing this topic.

***
Rep:
Level 87
????
Another script i found on google not very descriptive
Main site:http://www.rpgmakerbrasil.com/forum/f43/rmvx-caterpillar-script-231.html
Spoiler for:
Code: [Select]
class Game_Player
  #--------------------------------------------------------------------------
  # * Move Down
  #     turn_enabled : a flag permits direction change on that spot
  #--------------------------------------------------------------------------
  def move_down(turn_enabled = true)   
    super(turn_enabled)
  end
  #--------------------------------------------------------------------------
  # * Move Left
  #     turn_enabled : a flag permits direction change on that spot
  #--------------------------------------------------------------------------
  def move_left(turn_enabled = true)
    super(turn_enabled)
  end
  #--------------------------------------------------------------------------
  # * Move Right
  #     turn_enabled : a flag permits direction change on that spot
  #--------------------------------------------------------------------------
  def move_right(turn_enabled = true)
    super(turn_enabled)
  end
  #--------------------------------------------------------------------------
  # * Move up
  #     turn_enabled : a flag permits direction change on that spot
  #--------------------------------------------------------------------------
  def move_up(turn_enabled = true)
    super(turn_enabled)
  end
  #--------------------------------------------------------------------------
  # * Move Lower Left
  #--------------------------------------------------------------------------
  def move_lower_left
    super
  end
  #--------------------------------------------------------------------------
  # * Move Lower Right
  #--------------------------------------------------------------------------
  def move_lower_right
    super
  end
  #--------------------------------------------------------------------------
  # * Move Upper Left
  #--------------------------------------------------------------------------
  def move_upper_left
    super
  end
  #--------------------------------------------------------------------------
  # * Move Upper Right
  #--------------------------------------------------------------------------
  def move_upper_right
    super
  end
end

class Game_Follower < Game_Character
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :actor
  attr_accessor :move_speed
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(actor)
    super()
    @through = true
    @actor = actor
  end
  #--------------------------------------------------------------------------
  # * Set Actor
  #--------------------------------------------------------------------------
  def actor=(actor)
    @actor = actor
    setup
  end
  #--------------------------------------------------------------------------
  # * Setup
  #--------------------------------------------------------------------------
  def setup
    if @actor != nil     
      @character_name = $game_actors[@actor].character_name
      @character_index = $game_actors[@actor].character_index
    else
      @character_name = ""
      @character_index = 0
    end
    @opacity = 255
    @blend_type = 0
    @priority_type = 0
  end
 
  #--------------------------------------------------------------------------
  # * Screen Z
  #--------------------------------------------------------------------------
  def screen_z
    if $game_player.x == @x and $game_player.y == @y
      return $game_player.screen_z - 1
    end
    super
  end
  #--------------------------------------------------------------------------
  # * Same Position Starting Determinant (Disabled)
  #--------------------------------------------------------------------------
  def check_event_trigger_here(triggers)
    result = false
    return result
  end
  #--------------------------------------------------------------------------
  # * Front Envent Starting Determinant (Disabled)
  #--------------------------------------------------------------------------
  def check_event_trigger_there(triggers)
    result = false
    return result
  end
  #--------------------------------------------------------------------------
  # * Touch Event Starting Determinant (Disabled)
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    result = false
    return result
  end
end

class Spriteset_Map
  alias_method :spriteset_map_create_characters, :create_characters
  def create_characters
    spriteset_map_create_characters
    $game_party.followers.each do |char|
      @character_sprites << Sprite_Character.new(@viewport1, char)
    end
  end
end

class Game_Party
  #--------------------------------------------------------------------------
  # * Constants
  #--------------------------------------------------------------------------
  MAX_SIZE = 8
  CATERPILLAR = 2
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :followers
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_party_initialize, :initialize
  def initialize
    trick_caterpillar_party_initialize
    @followers = Array.new(MAX_SIZE - 1) {Game_Follower.new(nil)}
    @move_list = []
  end
  #--------------------------------------------------------------------------
  # * Update Followers
  #--------------------------------------------------------------------------
  def update_followers
    flag = $game_player.transparent || $game_switches[CATERPILLAR]
    @followers.each_with_index do |char, i|
      char.actor = @actors[i + 1]
      char.move_speed = $game_player.move_speed
      if $game_player.dash?
        char.move_speed += 1
      end
      char.update
      char.transparent = flag
    end
  end
  #--------------------------------------------------------------------------
  # * Move To Party
  #--------------------------------------------------------------------------
  def moveto_party(x, y)
    @followers.each {|char| char.moveto(x, y)}
    @move_list.clear
  end
  #--------------------------------------------------------------------------
  # * Move Party
  #--------------------------------------------------------------------------
  def move_party
    @move_list.each_index do |i|
      if @followers[i] == nil
        @move_list[i...@move_list.size] = nil
        next
      end
      case @move_list[i].type
      when 2
        @followers[i].move_down(*@move_list[i].args)
      when 4
        @followers[i].move_left(*@move_list[i].args)
      when 6
        @followers[i].move_right(*@move_list[i].args)
      when 8
        @followers[i].move_up(*@move_list[i].args)
      when j
        @followers[i].move_lower_left
      when 3
        @followers[i].move_lower_right
      when 7
        @followers[i].move_upper_left
      when 9
        @followers[i].move_upper_right
      when 5
        @followers[i].jump(*@move_list[i].args)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Add Move List
  #--------------------------------------------------------------------------
  def update_move(type, *args)
    move_party
    @move_list.unshift(Game_MoveListElement.new(type, args))
  end
end

class Game_MoveListElement
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(type, args)
    @type = type
    @args = args
  end
  #--------------------------------------------------------------------------
  # * Type
  #--------------------------------------------------------------------------
  def type
    return @type
  end
  #--------------------------------------------------------------------------
  # * Args
  #--------------------------------------------------------------------------
  def args
    return @args
  end
end

class Game_Player
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :move_speed
 
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_update, :update
  def update
    $game_party.update_followers
    trick_caterpillar_player_update
  end
  #--------------------------------------------------------------------------
  # * Moveto
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_moveto, :moveto
  def moveto(x, y)
    $game_party.moveto_party(x, y)
    trick_caterpillar_player_moveto(x, y)
  end
  #--------------------------------------------------------------------------
  # * Move Down
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_move_down, :move_down
  def move_down(turn_enabled = true)
    if passable?(@x, @y+1)
      $game_party.update_move(2, turn_enabled)
    end   
    trick_caterpillar_player_move_down(turn_enabled)   
  end
  #--------------------------------------------------------------------------
  # * Move Left
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_move_left, :move_left
  def move_left(turn_enabled = true)
    if passable?(@x-1, @y)
      $game_party.update_move(4, turn_enabled)
    end
    trick_caterpillar_player_move_left(turn_enabled)
  end
  #--------------------------------------------------------------------------
  # * Move Right
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_move_right, :move_right
  def move_right(turn_enabled = true)
    if passable?(@x+1, @y)
      $game_party.update_move(6, turn_enabled)
    end
    trick_caterpillar_player_move_right(turn_enabled)
  end
  #--------------------------------------------------------------------------
  # * Move Up
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_move_up, :move_up
  def move_up(turn_enabled = true)
    if passable?(@x, @y-1)
      $game_party.update_move(8, turn_enabled)
    end
    trick_caterpillar_player_move_up(turn_enabled)
  end
  #--------------------------------------------------------------------------
  # * Move Lower Left
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_move_lower_left, :move_lower_left
  def move_lower_left
    if passable?(@x - 1, @y) and passable?(@x, @y + 1)
      $game_party.update_move(1)
    end
    trick_caterpillar_player_move_lower_left
  end
  #--------------------------------------------------------------------------
  # * Move Lower Right
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_move_lower_right, :move_lower_right
  def move_lower_right
    if passable?(@x + 1, @y) and passable?(@x, @y + 1)
      $game_party.update_move(3)
    end
    trick_caterpillar_player_move_lower_right
  end
  #--------------------------------------------------------------------------
  # * Move Upper Left
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_move_upper_left, :move_upper_left
  def move_upper_left
    if passable?(@x - 1, @y) and passable?(@x, @y - 1)
      $game_party.update_move(7)
    end
    trick_caterpillar_player_move_upper_left
  end
  #--------------------------------------------------------------------------
  # * Move Upper Right
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_move_upper_right, :move_upper_right
  def move_upper_right
    if passable?(@x + 1, @y) and passable?(@x, @y - 1)
      $game_party.update_move(9)
    end
    trick_caterpillar_player_move_upper_right
  end
  #--------------------------------------------------------------------------
  # * Jump
  #--------------------------------------------------------------------------
  alias_method :trick_caterpillar_player_jump, :jump
  def jump(x_plus, y_plus)
    new_x = @x + x_plus
    new_y = @y + y_plus
    if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y)
      $game_party.update_move(5, x_plus, y_plus)
    end
    trick_caterpillar_player_jump(x_plus, y_plus)
  end
end###########
###########
###########

**
Rep:
Level 86
I'm pretty sure this made by Trickster and ported to VX by Diedrupo.

I remembered screenshot and script without header.  ;)

***
Rep:
Level 86
I hate everyone except the ones I don't hate...
Man, this script is so frigging short! To think how long the one for XP is... great find by the way, I was just looking for that!

EDIT:
Quote
Man, this script is so frigging short! To think how long the one for XP is...
Okay, I might've been wrong theree, I didn't excactly take a look at the line numbers, and it seemed it took less time to select the script than usual, that's why...
« Last Edit: April 03, 2008, 02:00:02 PM by Demonic Blade »
I wonder how many of my-reps are there for a reason, and not just because some jackass wanted to show off in front of some other jackasses...?
Probably a lot of them - and those people sure as hell don't deserve my pity, let alone my disgust.
That's right, let's see some more -Rep'ing! BOOYEAH!!

**
Rep:
Level 84
anyway to make this compatible with this script??


Spoiler for:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ?  Adjustable Speed & 8-Way Directional Movement - KGC_Dash_8DirMove  ? VX ?
#_/ ?                       Last Update: 2008/05/29                            ?
#_/ ?               Translation and Updates by by Mr. Anonymous                ?
#_/-----------------------------------------------------------------------------
#_/  This script adds 8-way-directional movement and speed adjustment settings.
#_/   Note: Still need to finish documentation concerning 8DIR_ANIMATION
#_/=============================================================================
#_/ Install: Insert below KGC_TilesetExtension.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_

#==============================================================================#
#                               ? Customization ?                              #
#==============================================================================#

module KGC
 module Dash_8DirMove
  #                       ? 8-Way Directional Movement ?
  # true = Enables the character to move in diagonal directions.
  # false = Disable diagonal movement, restricting the player to the default
  #         movement system of up, down, left, and right.
  ENABLE_8DIR = true
 
  #                       ? 8-Way Directional Animation ?
  #  I believe this toggle is to allow the system to use 8-way directional
  #  animations for charactersets who have the additional cells to do so.
  #  By default an image with the additional frames should be suffixed with a #
  ENABLE_8DIR_ANIMATION = false

  #                               ? Walk Speed ?
  #  Allows you to change the default rate of speed the actor walks.
  #  A DEFAULT_WALK_SPEED of 4 is the default RMVX walk speed.
  DEFAULT_WALK_SPEED = 4
 
  #                               ? Dash Speed ?
  #  Allows you to change the default rate of speed the actor dashes.
  #  A DASH_SPEED_RATE of 3 is the default RMVX dash speed.
  DASH_SPEED_RATE    = 3
 end
end

#------------------------------------------------------------------------------#

$imported = {} if $imported == nil
$imported["Dash_8DirMove"] = true

module KGC::Dash_8DirMove
  # Image Suffix
  SLANT_SUFFIX = "#"
end

#==============================================================================
# ? KGC::Commands
#==============================================================================

module KGC::Commands
  module_function
  #--------------------------------------------------------------------------
  # ? Reset Walk Speed
  #--------------------------------------------------------------------------
  def reset_walk_speed
    $game_player.reset_move_speed
  end
  #--------------------------------------------------------------------------
  # ? Set Walk Speed
  #-------------------------------------------------------------------------- 
  def set_walk_speed(value)
    $game_system.temp_walk_speed = value
  end
  #--------------------------------------------------------------------------
  # ? Set Dash Speed
  #-------------------------------------------------------------------------- 
  def set_dash_speed(value)
    $game_system.temp_dash_speed = value
  end
end

class Game_Interpreter
  include KGC::Commands
end

#==============================================================================
# ? Game_System
#   * Added by Mr. Anonymous 5/29/08
#==============================================================================
class Game_System
  #--------------------------------------------------------------------------
  # ? Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :temp_dash_speed          # Temporary Dash Speed
  attr_accessor :temp_walk_speed          # Temporary Walk Speed
  #--------------------------------------------------------------------------
  # ? Initialize
  #--------------------------------------------------------------------------
  alias initialize_KGC_Dash_8DirMove initialize
  def initialize
    initialize_KGC_Dash_8DirMove
    @temp_dash_speed = nil
    @temp_walk_speed = nil
  end
 
end
#==============================================================================
# ? Game_Party
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ? Decrease Steps
  #--------------------------------------------------------------------------
  def decrease_steps
    @steps -= 1
  end
end

#==============================================================================
# ? Game_Character
#==============================================================================

class Game_Character
  #--------------------------------------------------------------------------
  # ? Direction (?-Way Movement)
  #--------------------------------------------------------------------------
  def direction_8dir
    return @direction
  end
  #--------------------------------------------------------------------------
  # ? Set Direction
  #     direction : Directions
  #--------------------------------------------------------------------------
  alias set_direction_KGC_Dash_8DirMove set_direction
  def set_direction(direction)
    last_dir = @direction

    set_direction_KGC_Dash_8DirMove(direction)

    if !@direction_fix && direction != 0
      @direction_8dir = direction
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias move_lower_left_KGC_Dash_8DirMove move_lower_left
  def move_lower_left
    move_lower_left_KGC_Dash_8DirMove

    @direction_8dir = 1 unless @direction_fix
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias move_lower_right_KGC_Dash_8DirMove move_lower_right
  def move_lower_right
    move_lower_right_KGC_Dash_8DirMove

    @direction_8dir = 3 unless @direction_fix
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias move_upper_left_KGC_Dash_8DirMove move_upper_left
  def move_upper_left
    move_upper_left_KGC_Dash_8DirMove

    @direction_8dir = 7 unless @direction_fix
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias move_upper_right_KGC_Dash_8DirMove move_upper_right
  def move_upper_right
    move_upper_right_KGC_Dash_8DirMove

    @direction_8dir = 9 unless @direction_fix
  end
end

#==============================================================================
# ? Game_Player
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  alias initialize_KGC_Dash_8DirMove initialize
  def initialize
    initialize_KGC_Dash_8DirMove

    reset_move_speed
  end
  #--------------------------------------------------------------------------
  # ? ?? (????)
  #--------------------------------------------------------------------------
  def direction_8dir
    @direction_8dir = @direction if @direction_8dir == nil
    return @direction_8dir
  end
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  def reset_move_speed
    @move_speed = KGC::Dash_8DirMove::DEFAULT_WALK_SPEED
    $game_system.temp_dash_speed = nil
    $game_system.temp_walk_speed = nil
  end

 
if KGC::Dash_8DirMove::ENABLE_8DIR
  #--------------------------------------------------------------------------
  # ? ??????????????
  #--------------------------------------------------------------------------
  def move_by_input
    return unless movable?
    return if $game_map.interpreter.running?

    last_steps = $game_party.steps

    case Input.dir8
    when 1;  move_down; move_left; @direction = 2
    when 2;  move_down
    when 3;  move_down; move_right; @direction = 6
    when 4;  move_left
    when 6;  move_right
    when 7;  move_up; move_left; @direction = 4
    when 8;  move_up
    when 9;  move_up; move_right; @direction = 8
    else;    return
    end
    @direction_8dir = Input.dir8

    # ????????????
    if $game_party.steps - last_steps == 2
      $game_party.decrease_steps
    end
   
  end
end  # ENABLE_8DIR

  #--------------------------------------------------------------------------
  # ? Upate Movement
  #--------------------------------------------------------------------------
  def update_move
    distance = 2 ** @move_speed   # ?????????????
    if dash?                      # ????????????
      distance *= KGC::Dash_8DirMove::DASH_SPEED_RATE
      #--------------------------------------------------------------------
      # ? Process Temp Walk/Dash Speed
      #   * Added by Mr. Anonymous 5/29/08
      #--------------------------------------------------------------------
      if $game_system.temp_dash_speed == nil
        @move_speed = KGC::Dash_8DirMove::DASH_SPEED_RATE
      else
        @move_speed = $game_system.temp_dash_speed
      end
    else
      if $game_system.temp_walk_speed == nil
         @move_speed = KGC::Dash_8DirMove::DEFAULT_WALK_SPEED
      else
         @move_speed = $game_system.temp_walk_speed
         # Automatically adjust move frequency to move speed.
=begin
         if $game_system.temp_walk_speed <= 4
           @move_frequency = 6
         elsif $game_system.temp_walk_speed == 3
           @move_frequency = 5
         elsif $game_system.temp_walk_speed == 2
           @move_frequency = 3
         elsif $game_system.temp_walk_speed == 1
           @move_frequency = 3
         end
=end
       end
       #--- End 5/29/08 Update
    end
    distance = Integer(distance)

    @real_x = [@real_x - distance, @x * 256].max if @x * 256 < @real_x
    @real_x = [@real_x + distance, @x * 256].min if @x * 256 > @real_x
    @real_y = [@real_y - distance, @y * 256].max if @y * 256 < @real_y
    @real_y = [@real_y + distance, @y * 256].min if @y * 256 > @real_y
    update_bush_depth unless moving?
    if @walk_anime
      @anime_count += 1.5
    elsif @step_anime
      @anime_count += 1
    end   
  end
end

#==============================================================================
# ? Sprite_Character
#==============================================================================

if KGC::Dash_8DirMove::ENABLE_8DIR_ANIMATION

class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # ? ??
  #--------------------------------------------------------------------------
  SLANT_ANIME_TABLE = { 1=>2, 3=>6, 7=>4, 9=>8 }
  #--------------------------------------------------------------------------
  # ? ????????????
  #--------------------------------------------------------------------------
  alias update_bitmap_KGC_Dash_8DirMove update_bitmap
  def update_bitmap
    name_changed = (@character_name != @character.character_name)

    update_bitmap_KGC_Dash_8DirMove

    if @tile_id > 0             # ???????
      @enable_slant = false
      return
    end
    return unless name_changed  # ???????

    # ???????????
    @enable_slant = true
    begin
      @character_name_slant = @character_name + KGC::Dash_8DirMove::SLANT_SUFFIX
      Cache.character(@character_name_slant)
    rescue
      @enable_slant = false
    end
  end
  #--------------------------------------------------------------------------
  # ? ????????
  #--------------------------------------------------------------------------
  alias update_src_rect_KGC_Dash_8DirMove update_src_rect
  def update_src_rect
    return if @tile_id > 0  # ?????

    if @enable_slant
      update_src_rect_for_slant
    else
      update_src_rect_KGC_Dash_8DirMove
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #--------------------------------------------------------------------------
  def update_src_rect_for_slant
    index = @character.character_index
    pattern = @character.pattern < 3 ? @character.pattern : 1
    sx = (index % 4 * 3 + pattern) * @cw

    dir = @character.direction_8dir
    case dir % 2
    when 0  # ????
      if @last_slant
        self.bitmap = Cache.character(@character_name)
        @last_slant = false
      end
    else    # ??
      unless @last_slant
        self.bitmap = Cache.character(@character_name_slant)
        @last_slant = true
      end
      # Convert 1, 3, 7, 9 ? 2, 6, 4, 8
      dir = SLANT_ANIME_TABLE[dir]
    end

    sy = (index / 4 * 4 + (dir - 2) / 2) * @ch
    self.src_rect.set(sx, sy, @cw, @ch)
  end
end

end  # ENABLE_8DIR_ANIMATION

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/  The original untranslated version of this script can be found here:
# http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/map&tech=dash_8dir_move
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_

if possible appreciated
i think its even mergable for an experienced scripter, maybe an idea???

**
Rep:
Level 84
???Ž?? ?_ƒí?????
I like this SCRIPT  :(
Like a song  :blizj:
----------------->->Bad English<-<----------------

**
Rep: +0/-0Level 85
Jimmy Hendrix- True Guitar Hero
anyway to make this compatible with this script??


Spoiler for:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ?  Adjustable Speed & 8-Way Directional Movement - KGC_Dash_8DirMove  ? VX ?
#_/ ?                       Last Update: 2008/05/29                            ?
#_/ ?               Translation and Updates by by Mr. Anonymous                ?
#_/-----------------------------------------------------------------------------
#_/  This script adds 8-way-directional movement and speed adjustment settings.
#_/   Note: Still need to finish documentation concerning 8DIR_ANIMATION
#_/=============================================================================
#_/ Install: Insert below KGC_TilesetExtension.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_

#==============================================================================#
#                               ? Customization ?                              #
#==============================================================================#

module KGC
 module Dash_8DirMove
  #                       ? 8-Way Directional Movement ?
  # true = Enables the character to move in diagonal directions.
  # false = Disable diagonal movement, restricting the player to the default
  #         movement system of up, down, left, and right.
  ENABLE_8DIR = true
 
  #                       ? 8-Way Directional Animation ?
  #  I believe this toggle is to allow the system to use 8-way directional
  #  animations for charactersets who have the additional cells to do so.
  #  By default an image with the additional frames should be suffixed with a #
  ENABLE_8DIR_ANIMATION = false

  #                               ? Walk Speed ?
  #  Allows you to change the default rate of speed the actor walks.
  #  A DEFAULT_WALK_SPEED of 4 is the default RMVX walk speed.
  DEFAULT_WALK_SPEED = 4
 
  #                               ? Dash Speed ?
  #  Allows you to change the default rate of speed the actor dashes.
  #  A DASH_SPEED_RATE of 3 is the default RMVX dash speed.
  DASH_SPEED_RATE    = 3
 end
end

#------------------------------------------------------------------------------#

$imported = {} if $imported == nil
$imported["Dash_8DirMove"] = true

module KGC::Dash_8DirMove
  # Image Suffix
  SLANT_SUFFIX = "#"
end

#==============================================================================
# ? KGC::Commands
#==============================================================================

module KGC::Commands
  module_function
  #--------------------------------------------------------------------------
  # ? Reset Walk Speed
  #--------------------------------------------------------------------------
  def reset_walk_speed
    $game_player.reset_move_speed
  end
  #--------------------------------------------------------------------------
  # ? Set Walk Speed
  #-------------------------------------------------------------------------- 
  def set_walk_speed(value)
    $game_system.temp_walk_speed = value
  end
  #--------------------------------------------------------------------------
  # ? Set Dash Speed
  #-------------------------------------------------------------------------- 
  def set_dash_speed(value)
    $game_system.temp_dash_speed = value
  end
end

class Game_Interpreter
  include KGC::Commands
end

#==============================================================================
# ? Game_System
#   * Added by Mr. Anonymous 5/29/08
#==============================================================================
class Game_System
  #--------------------------------------------------------------------------
  # ? Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :temp_dash_speed          # Temporary Dash Speed
  attr_accessor :temp_walk_speed          # Temporary Walk Speed
  #--------------------------------------------------------------------------
  # ? Initialize
  #--------------------------------------------------------------------------
  alias initialize_KGC_Dash_8DirMove initialize
  def initialize
    initialize_KGC_Dash_8DirMove
    @temp_dash_speed = nil
    @temp_walk_speed = nil
  end
 
end
#==============================================================================
# ? Game_Party
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ? Decrease Steps
  #--------------------------------------------------------------------------
  def decrease_steps
    @steps -= 1
  end
end

#==============================================================================
# ? Game_Character
#==============================================================================

class Game_Character
  #--------------------------------------------------------------------------
  # ? Direction (?-Way Movement)
  #--------------------------------------------------------------------------
  def direction_8dir
    return @direction
  end
  #--------------------------------------------------------------------------
  # ? Set Direction
  #     direction : Directions
  #--------------------------------------------------------------------------
  alias set_direction_KGC_Dash_8DirMove set_direction
  def set_direction(direction)
    last_dir = @direction

    set_direction_KGC_Dash_8DirMove(direction)

    if !@direction_fix && direction != 0
      @direction_8dir = direction
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias move_lower_left_KGC_Dash_8DirMove move_lower_left
  def move_lower_left
    move_lower_left_KGC_Dash_8DirMove

    @direction_8dir = 1 unless @direction_fix
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias move_lower_right_KGC_Dash_8DirMove move_lower_right
  def move_lower_right
    move_lower_right_KGC_Dash_8DirMove

    @direction_8dir = 3 unless @direction_fix
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias move_upper_left_KGC_Dash_8DirMove move_upper_left
  def move_upper_left
    move_upper_left_KGC_Dash_8DirMove

    @direction_8dir = 7 unless @direction_fix
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias move_upper_right_KGC_Dash_8DirMove move_upper_right
  def move_upper_right
    move_upper_right_KGC_Dash_8DirMove

    @direction_8dir = 9 unless @direction_fix
  end
end

#==============================================================================
# ? Game_Player
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  alias initialize_KGC_Dash_8DirMove initialize
  def initialize
    initialize_KGC_Dash_8DirMove

    reset_move_speed
  end
  #--------------------------------------------------------------------------
  # ? ?? (????)
  #--------------------------------------------------------------------------
  def direction_8dir
    @direction_8dir = @direction if @direction_8dir == nil
    return @direction_8dir
  end
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  def reset_move_speed
    @move_speed = KGC::Dash_8DirMove::DEFAULT_WALK_SPEED
    $game_system.temp_dash_speed = nil
    $game_system.temp_walk_speed = nil
  end

 
if KGC::Dash_8DirMove::ENABLE_8DIR
  #--------------------------------------------------------------------------
  # ? ??????????????
  #--------------------------------------------------------------------------
  def move_by_input
    return unless movable?
    return if $game_map.interpreter.running?

    last_steps = $game_party.steps

    case Input.dir8
    when 1;  move_down; move_left; @direction = 2
    when 2;  move_down
    when 3;  move_down; move_right; @direction = 6
    when 4;  move_left
    when 6;  move_right
    when 7;  move_up; move_left; @direction = 4
    when 8;  move_up
    when 9;  move_up; move_right; @direction = 8
    else;    return
    end
    @direction_8dir = Input.dir8

    # ????????????
    if $game_party.steps - last_steps == 2
      $game_party.decrease_steps
    end
   
  end
end  # ENABLE_8DIR

  #--------------------------------------------------------------------------
  # ? Upate Movement
  #--------------------------------------------------------------------------
  def update_move
    distance = 2 ** @move_speed   # ?????????????
    if dash?                      # ????????????
      distance *= KGC::Dash_8DirMove::DASH_SPEED_RATE
      #--------------------------------------------------------------------
      # ? Process Temp Walk/Dash Speed
      #   * Added by Mr. Anonymous 5/29/08
      #--------------------------------------------------------------------
      if $game_system.temp_dash_speed == nil
        @move_speed = KGC::Dash_8DirMove::DASH_SPEED_RATE
      else
        @move_speed = $game_system.temp_dash_speed
      end
    else
      if $game_system.temp_walk_speed == nil
         @move_speed = KGC::Dash_8DirMove::DEFAULT_WALK_SPEED
      else
         @move_speed = $game_system.temp_walk_speed
         # Automatically adjust move frequency to move speed.
=begin
         if $game_system.temp_walk_speed <= 4
           @move_frequency = 6
         elsif $game_system.temp_walk_speed == 3
           @move_frequency = 5
         elsif $game_system.temp_walk_speed == 2
           @move_frequency = 3
         elsif $game_system.temp_walk_speed == 1
           @move_frequency = 3
         end
=end
       end
       #--- End 5/29/08 Update
    end
    distance = Integer(distance)

    @real_x = [@real_x - distance, @x * 256].max if @x * 256 < @real_x
    @real_x = [@real_x + distance, @x * 256].min if @x * 256 > @real_x
    @real_y = [@real_y - distance, @y * 256].max if @y * 256 < @real_y
    @real_y = [@real_y + distance, @y * 256].min if @y * 256 > @real_y
    update_bush_depth unless moving?
    if @walk_anime
      @anime_count += 1.5
    elsif @step_anime
      @anime_count += 1
    end  
  end
end

#==============================================================================
# ? Sprite_Character
#==============================================================================

if KGC::Dash_8DirMove::ENABLE_8DIR_ANIMATION

class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # ? ??
  #--------------------------------------------------------------------------
  SLANT_ANIME_TABLE = { 1=>2, 3=>6, 7=>4, 9=>8 }
  #--------------------------------------------------------------------------
  # ? ????????????
  #--------------------------------------------------------------------------
  alias update_bitmap_KGC_Dash_8DirMove update_bitmap
  def update_bitmap
    name_changed = (@character_name != @character.character_name)

    update_bitmap_KGC_Dash_8DirMove

    if @tile_id > 0             # ???????
      @enable_slant = false
      return
    end
    return unless name_changed  # ???????

    # ???????????
    @enable_slant = true
    begin
      @character_name_slant = @character_name + KGC::Dash_8DirMove::SLANT_SUFFIX
      Cache.character(@character_name_slant)
    rescue
      @enable_slant = false
    end
  end
  #--------------------------------------------------------------------------
  # ? ????????
  #--------------------------------------------------------------------------
  alias update_src_rect_KGC_Dash_8DirMove update_src_rect
  def update_src_rect
    return if @tile_id > 0  # ?????

    if @enable_slant
      update_src_rect_for_slant
    else
      update_src_rect_KGC_Dash_8DirMove
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #--------------------------------------------------------------------------
  def update_src_rect_for_slant
    index = @character.character_index
    pattern = @character.pattern < 3 ? @character.pattern : 1
    sx = (index % 4 * 3 + pattern) * @cw

    dir = @character.direction_8dir
    case dir % 2
    when 0  # ????
      if @last_slant
        self.bitmap = Cache.character(@character_name)
        @last_slant = false
      end
    else    # ??
      unless @last_slant
        self.bitmap = Cache.character(@character_name_slant)
        @last_slant = true
      end
      # Convert 1, 3, 7, 9 ? 2, 6, 4, 8
      dir = SLANT_ANIME_TABLE[dir]
    end

    sy = (index / 4 * 4 + (dir - 2) / 2) * @ch
    self.src_rect.set(sx, sy, @cw, @ch)
  end
end

end  # ENABLE_8DIR_ANIMATION

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/  The original untranslated version of this script can be found here:
# http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/map&tech=dash_8dir_move
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_

if possible appreciated
i think its even mergable for an experienced scripter, maybe an idea???

1. this script is awesome
2. Black Olrac KGC has a caterpillar script that works with it, tell me if u want a link
God blessed us with food:
We killed it with poverty:

God blessed us with light:
We murdered it with global warming:

God blessed us with land:
We raped it with America: