03-08-2008, 05:02 AM 
	
	
	
		This is not my script!, the original author is modern algebra
What does it do?
It lets you use rmxp type charsets in vx, all the instructions are in the script! It actually lets you customize the amount of frames for each image. So you could have 3 like vx, 4 like xp, or more.
  			
		
	
	
	
	What does it do?
It lets you use rmxp type charsets in vx, all the instructions are in the script! It actually lets you customize the amount of frames for each image. So you could have 3 like vx, 4 like xp, or more.
 Content Hidden
  			Code:
#==============================================================================
# Extra Movement Frames v. 1.0
# Author: modern algebra (rmrk.net)
# Date: January 20, 2008
#------------------------------------------------------------------------------
# Instructions:
# Insert this script above main in the database. To add a character with
# extra movement frames, simply rename the character graphic to something
# of the form:
# !$%[<number of movement frames>]<Regular name>
#
# Example: !$%[4]001-Fighter01
# That would make the graphic 001-Fighter01 be interpreted as having 4 frames
#------------------------------------------------------------------------------
# ** Game_Character
#------------------------------------------------------------------------------
# Summary of changes:
# aliased methods - update_animation
# new class variables - height divisor, width divisor
# new methods - calculate_divisors
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :height_divisor    # The height of a single frame
  attr_reader :width_divisor     # number of frames in the x direction
  #--------------------------------------------------------------------------
  # * Calculate Divisors
  #--------------------------------------------------------------------------
  # Sets up the instance variables required
  #--------------------------------------------------------------------------
  def calculate_divisors
    return unless @previous_character.nil? || @previous_character != @character_name
    bitmap = Cache.character (@character_name)
    sign = @character_name[/^[\!\$].[\%]\[\d*\]/]
    if !sign.nil? && sign.size > 5
      @original_pattern = 0
      @width_divisor = sign[4, sign.size - 5].to_i
      @height_divisor = 4
    elsif !sign.nil? && sign.include? ('$')
      @width_divisor = 3
      @height_divisor = 4
    else
      @width_divisor = 12
      @height_divisor = 8
    end
    @previous_character = @character_name
  end
  #--------------------------------------------------------------------------
  # * Update Animation
  #--------------------------------------------------------------------------
  # Change the hard coded values to ones dependent on character graphic format
  #--------------------------------------------------------------------------
  alias ma_extra_movement_frames_anim_upd update_animation
  def update_animation
    saved_anime_count = @anime_count
    pattern_original = @pattern
    speed = @move_speed + (dash? ? 1 : 0)
    ma_extra_movement_frames_anim_upd
    if (saved_anime_count > (18 - speed * 2)) && (@step_anime || (@stop_count <= 0))
      @pattern = (pattern_original + 1) % @width_divisor
    end
  end
end
#==============================================================================
# * Sprite Character
#------------------------------------------------------------------------------
# Summary of changes:
# aliased methods - update_src_rect, update_bitmap
#==============================================================================
class Sprite_Character
  #--------------------------------------------------------------------------
  # * Update Src Rect
  #--------------------------------------------------------------------------
  # Interpret multiple movement frames: Changed pattern
  #--------------------------------------------------------------------------
  alias ma_extra_movement_frames_src_rect_upd update_src_rect
  def update_src_rect
    if @tile_id == 0
      ma_extra_movement_frames_src_rect_upd
      index = @character.character_index
      pattern = @character.pattern < @character.width_divisor ? @character.pattern : 1
      sx = (index % 4 * 3 + pattern) * @cw
      sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
  end
  #--------------------------------------------------------------------------
  # * Update Bitmap
  #--------------------------------------------------------------------------
  # Change hard coded values to ones dependent on character graphic
  #--------------------------------------------------------------------------
  alias ma_extra_movement_frames_bmp_upd update_bitmap
  def update_bitmap
    @character.calculate_divisors
    saved_tile_id = @tile_id
    saved_character_name = @character_name
    saved_character_index = @character_index
    ma_extra_movement_frames_bmp_upd
    if saved_tile_id != @character.tile_id or
      saved_character_name != @character.character_name or
      saved_character_index != @character.character_index
      unless @tile_id > 0
        @cw = bitmap.width / @character.width_divisor
        @ch = bitmap.height / @character.height_divisor
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
  end
end
#==============================================================================
# ** Window Base
#------------------------------------------------------------------------------
# Summary of changes:
# overwritten methods - draw_character
#==============================================================================
class Window_Base
  #--------------------------------------------------------------------------
  # * Draw Charater (overwritten for extra movement frames)
  # character_name : the name of the character file
  # character_index : the index of the character in the file
  # x : the x position to draw
  # y : the y position to draw
  #--------------------------------------------------------------------------
  def draw_character(character_name, character_index, x, y)
    return if character_name == nil
    bitmap = Cache.character(character_name)
    sign = character_name[/^[\!\$].[\%]\[\d*\]/]
    if !sign.nil? && sign.size > 5
      cw = bitmap.width / sign[4, sign.size - 5].to_i
      ch = bitmap.height / 4
    elsif sign != nil and sign.include?('$')
      cw = bitmap.width / 3
      ch = bitmap.height / 4
    else
      cw = bitmap.width / 12
      ch = bitmap.height / 8
    end
    n = character_index
    src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
end
 
 
 Extra Movement Frames
 Extra Movement Frames 
