[XP] Animation & Movement Script

Started by Zexion, April 30, 2013, 08:56:05 pm

Previous topic - Next topic

Zexion

April 30, 2013, 08:56:05 pm Last Edit: April 08, 2014, 06:20:10 pm by Zexion
Animation & Movement Script
Authors: Zexion
Version: 1.5
Type: Enhanced Movement System
Key Term: Custom Movement System



Introduction

I created this script because I really loved the features of some of the scripts out there. Two in particular were DerVVulfman's Multi-Pose Charset Script and Dirties re-write that allows for vertical correction and a custom number of frames per charset. They both had features I disliked though. DerVVulfman's had too many features, that I just felt that I didn't need laying around. Dirties was highly incompatible because it is a full rewrite.
Though this is also a full rewrite, it also has just enough features to be of great use.



Features


  • Optional 8 directional movement - Does not require 8 directional poses

  • Optional 8 pose charset - Can be any number of frames by adding "iso"

  • Ability to customize ANY charset's frames by adding "cs_#"

  • Vertical correction - for charsets whose feet do not touch the bottom. "v_#"

  • Option to use first frame as a "standing" frame (1 frame idle) with "stn" tag




Screenshots

Spoiler: ShowHide



Demo

No demo, but will make one upon request.


Script

Place above main:
Spoiler: ShowHide

#==============================================================================#
# * Movement & Animation Script
# By Zexion
# Sections by Dirtie & DerVVulfman
# Helped by KK20
# Version 1.5
#==============================================================================#
# With this script you can enable eight directional movement without the need
# of a custom character graphic. You can modify graphics on a per-file basis
# which allows for tons of custom character files. You can have 8 directional
# characters along side 4 directional characters and use an optional "standing"
# graphic as the first sprite of the charset.
#==============================================================================#
# Directions:
# Place below the default scripts.
# Adjustments take place in the file name. Add tags to a filename to change
# the way it works. You can configure some of those tags here.
#-------------------------
# Default Tags include:
# "iso" - Converts a file into an 8 pose charset. Do not use this & the "vs_#"
# tag in the same file name.
# "stn" - Looks for an additional sprite at the start of the graphic for a
# standing graphic. E.g. If you have 5 walking frames you can use this to ensure
# that the first sprite is a standing sprite and doesn't play in the walking
# animation loop.
#-------------------------
# Other Tags (non-custom) include:
# (Please note that "#" represents a number you must enter)
# "a_#" - Control the speed of an animation. 14 is good for longer animations.
# "vs_#" - The number of poses a file contains. E.g: vs_1 allows only 1 pose.
# "cs_#" - The number of frames a file contains. E.g: cs_4 allows 4 animated frames.
# "h_#" - Horizontal Shift : Allows for a file to be properly centered horizontally without editing.
# "v_#" - Vertical Shift : Allows for a file to be properly centered vertically without editing.
#==============================================================================#
module ANIM_DATA
                 SPEED = 14                # Default animation speed
                 ISO_TAG = "iso"           # Tag for 8 pose charset.
                 EIGHT_DIR = true          # Does not require certain number
                                           # of frames, or custom charset.
                 STND_TAG = "stn"          # This uses the first pose as
                                           # a standing pose. Useful for
                                           # larger animation sheets.
end

#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
# This section by:
# Dirtie & Zexion
# 16th December 2006
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
class Game_Actor < Game_Battler
 #--------------------------------------------------------------------------
 # * Get Number of Frames for Character Graphic
 #--------------------------------------------------------------------------
 def character_frames
   @character_name.gsub(/cs\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 4
 end
 #--------------------------------------------------------------------------
 # * Get Number of Rows for Character Graphic (allows for 1 row charsets.
 #--------------------------------------------------------------------------
 def character_rows
   @character_name.gsub(/vs\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 4
 end
 #--------------------------------------------------------------------------
 # * Control the speed of an animation (is no longer affected by move_speed
 #--------------------------------------------------------------------------
 def animation_speed
   @character_name.gsub(/a\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return ANIM_DATA::SPEED
 end
end
class Sprite_Character < RPG::Sprite
 #--------------------------------------------------------------------------
 # * Get Number of Frames for Character Graphic
 #--------------------------------------------------------------------------
 def character_frames
   @character_name.gsub(/cs\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 4
 end
 #--------------------------------------------------------------------------
 # * Get Number of Rows for Character Graphic (allows for 1 row charsets.
 #--------------------------------------------------------------------------
 def character_rows
   @character_name.gsub(/vs\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 4
 end
 #--------------------------------------------------------------------------
 # * Control the speed of an animation (is no longer affected by move_speed
 #--------------------------------------------------------------------------
 def animation_speed
   @character_name.gsub(/a\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return ANIM_DATA::SPEED
 end
end
class Game_Character
 #--------------------------------------------------------------------------
 # * Get Number of Frames for Character Graphic
 #--------------------------------------------------------------------------
 def character_frames
   @character_name.gsub(/cs\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 4
 end
 #--------------------------------------------------------------------------
 # * Get Number of Rows for Character Graphic (allows for 1 row charsets.
 #--------------------------------------------------------------------------
 def character_rows
   @character_name.gsub(/vs\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 4
 end
 #--------------------------------------------------------------------------
 # * Control the speed of an animation (is no longer affected by move_speed
 #--------------------------------------------------------------------------
 def animation_speed
   @character_name.gsub(/a\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return ANIM_DATA::SPEED
 end
 #--------------------------------------------------------------------------
 # * Get Vertical Adjustment for Character Graphic
 #--------------------------------------------------------------------------
 def character_adjust_y
   @character_name.gsub(/v\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 0
 end
 #--------------------------------------------------------------------------
 # * Get Horizontal Adjustment for Character Graphic
 #--------------------------------------------------------------------------
 def character_adjust_x
   @character_name.gsub(/h\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 0
 end
end

class Window_Base < Window
 #--------------------------------------------------------------------------
 # * Get Vertical Adjustment for Character Graphic
 #--------------------------------------------------------------------------
 def character_adjust_y(actor)
   actor.character_name.gsub(/v\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 0
 end
 #--------------------------------------------------------------------------
 # * Get Horizontal Adjustment for Character Graphic
 #--------------------------------------------------------------------------
 def character_adjust_x(actor)
   actor.character_name.gsub(/h\_(\d+)/) do
     if $1 != @character_name
       return $1.to_i
     end
   end
   return 0
 end
 #--------------------------------------------------------------------------
 # * Draw Graphic
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #--------------------------------------------------------------------------
 def draw_actor_graphic(actor, x, y)
   yalign = character_adjust_y(actor)
   xalign = character_adjust_x(actor)
   bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
   cw = bitmap.width / actor.character_frames
   if actor.character_name.include?(ANIM_DATA::ISO_TAG)
     ch = bitmap.height / 8
   else
     ch = bitmap.height / 4
   end
   src_rect = Rect.new(0, ch * 2, cw, ch)
   self.contents.blt(x - cw / 2 + xalign, y - ch + yalign, bitmap, src_rect)
 end
end
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
# End of section by: Dirtie & Zexion
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#

#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
# This section by:
# DerVVulfman
# Zexion
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
class Game_Character  
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_reader   :step_anime               # Holds a sprite's step flag
 attr_reader   :walk_anime               # Holds an event's movement flag
 attr_reader   :stop_count               # The number of steps left to count
 attr_reader   :jump_count               # The number of steps in a jump
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   # Branch with jumping, moving, and stopping
   if jumping?
     update_jump
   elsif moving?
     update_move
   else
     update_stop
   end
   if @anime_count > 18 - (self.animation_speed)
     # If stop animation is OFF when stopping
     if not @step_anime and @stop_count > 0
       # Return to original pattern
       @pattern = @original_pattern
     # If stop animation is ON when moving
     else
       # Update pattern
       @pattern = (@pattern + 1) % self.character_frames
     end
     # Clear animation count
     @anime_count = 0
   end
   # If waiting
   if @wait_count > 0
     # Reduce wait count
     @wait_count -= 1
     return
   end
   # If move route is forced
   if @move_route_forcing
     # Custom move
     move_type_custom
     return
   end
   # When waiting for event execution or locked
   if @starting or lock?
     # Not moving by self
     return
   end
   # If stop count exceeds a certain value (computed from move frequency)
   if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
     # Branch by move type
     case @move_type
     when 1  # Random
       move_type_random
     when 2  # Approach
       move_type_toward_player
     when 3  # Custom
       move_type_custom
     end
   end
 end
 
 #--------------------------------------------------------------------------
 # * Move Lower Left
 #--------------------------------------------------------------------------
 def move_lower_left
   # If no direction fix
   unless @direction_fix
     turn_down_left
   end
   # When a down to left or a left to down course is passable
   if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 4)) or
      (passable?(@x, @y, 4) and passable?(@x - 1, @y, 2))
     # Update coordinates
     @x -= 1
     @y += 1
     # Increase steps
     increase_steps
   end
 end
 #--------------------------------------------------------------------------
 # * Move Lower Right
 #--------------------------------------------------------------------------
 def move_lower_right
   # If no direction fix
   unless @direction_fix
     turn_down_right
   end
   # When a down to right or a right to down course is passable
   if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 6)) or
      (passable?(@x, @y, 6) and passable?(@x + 1, @y, 2))
     # Update coordinates
     @x += 1
     @y += 1
     # Increase steps
     increase_steps
   end
 end
 #--------------------------------------------------------------------------
 # * Move Upper Left
 #--------------------------------------------------------------------------
 def move_upper_left
   # If no direction fix
   unless @direction_fix
     turn_up_left
   end
   # When an up to left or a left to up course is passable
   if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 4)) or
      (passable?(@x, @y, 4) and passable?(@x - 1, @y, 8))
     # Update coordinates
     @x -= 1
     @y -= 1
     # Increase steps
     increase_steps
   end
 end
 #--------------------------------------------------------------------------
 # * Move Upper Right
 #--------------------------------------------------------------------------
 def move_upper_right
   # If no direction fix
   unless @direction_fix
     turn_up_right
   end
   # When an up to right or a right to up course is passable
   if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 6)) or
      (passable?(@x, @y, 6) and passable?(@x + 1, @y, 8))
     # Update coordinates
     @x += 1
     @y -= 1
     # Increase steps
     increase_steps
   end
 end
 #--------------------------------------------------------------------------
 # * Turn Up Left (Added for diagonal animation)
 #--------------------------------------------------------------------------  
 def turn_up_left
   unless @direction_fix
     if @character_name.include?(ANIM_DATA::ISO_TAG)
       @direction = 7
     else
       # Face left if facing right, and face up if facing down
     @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
     end      
   end
 end
 #--------------------------------------------------------------------------
 # * Turn Up Right (Added for diagonal animation)
 #--------------------------------------------------------------------------  
 def turn_up_right
   unless @direction_fix
     if @character_name.include?(ANIM_DATA::ISO_TAG)
       @direction = 9
     else
       # Face right if facing left, and face up if facing down
     @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Turn Down Left (Added for diagonal animation)
 #--------------------------------------------------------------------------  
 def turn_down_left
   unless @direction_fix
     if @character_name.include?(ANIM_DATA::ISO_TAG)
       # Face down-left
       @direction = 1
     else
       # Face down is facing right or up
     @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)      
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Turn Down Right (Added for diagonal animation)
 #--------------------------------------------------------------------------  
 def turn_down_right
   unless @direction_fix
     if @character_name.include?(ANIM_DATA::ISO_TAG)
       @direction = 3
     else
       # Face right if facing left, and face down if facing up
     @direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
     end
   end
 end

 #------------------------------------------------------------------------
# * Move Random
#------------------------------------------------------------------------
 def move_random
   case rand(8)
     when 0 ; move_down(false)
     when 1 ; move_left(false)
     when 2 ; move_right(false)
     when 3 ; move_up(false)
     when 4 ; move_lower_left
     when 5 ; move_lower_right
     when 6 ; move_upper_left
     when 7 ; move_upper_right  
   end
 end
#------------------------------------------------------------------------
# * Move Toward Player
#------------------------------------------------------------------------
 def move_toward_player
   sx = @x - $game_player.x
   sy = @y - $game_player.y
   return if sx == 0 and sy == 0
   abs_sx = sx.abs
   abs_sy = sy.abs
   if abs_sx == abs_sy
     rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
   end
   if abs_sx
     move_upper_right  if sx < 0 and sy > 0
     move_upper_left   if sx > 0 and sy > 0
     move_lower_left   if sx > 0 and sy < 0
     move_lower_right  if sx < 0 and sy < 0
     move_right        if sx < 0
     move_left         if sx > 0
     move_up           if sy > 0
     move_down         if sy < 0
   end
 end
 
 #------------------------------------------------------------------------
# * Move Away from Player
#------------------------------------------------------------------------
 def move_away_from_player
   sx = @x - $game_player.x
   sy = @y - $game_player.y
   return if sx == 0 and sy == 0
   abs_sx = sx.abs
   abs_sy = sy.abs
   if abs_sx == abs_sy
     rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
   end
   if abs_sx
     move_lower_left   if sx < 0 and sy > 0
     move_lower_right  if sx > 0 and sy > 0
     move_upper_right  if sx > 0 and sy < 0
     move_upper_left   if sx < 0 and sy < 0
     move_left         if sx < 0
     move_right        if sx > 0
     move_down         if sy > 0    
     move_up           if sy < 0
   end
 end
 
 #--------------------------------------------------------------------------
 # * Set Custom Animation
 #--------------------------------------------------------------------------
 def set_custom_anim
   return if @animating
   @frame_count    = self.character_frames
   @animating      = true
   @anim_wait      = 40
   @pattern        = 0
   @direction_fix  = true
 end  
end

#==============================================================================
# ** Sprite_Character
#------------------------------------------------------------------------------
#  This sprite is used to display the character.It observes the Game_Character
#  class and automatically changes sprite conditions.
#==============================================================================

class Sprite_Character < RPG::Sprite
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :character                # character
 attr_accessor :pattern
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     viewport  : viewport
 #     character : character (Game_Character)
 #--------------------------------------------------------------------------
 def initialize(viewport, character = nil)
   super(viewport)
   @character = character
   update
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   super
   # If tile ID, file name, or hue are different from current ones
   if @tile_id != @character.tile_id or
      @character_name != @character.character_name or
      @character_hue != @character.character_hue
     # Remember tile ID, file name, and hue
     @tile_id = @character.tile_id
     @character_name = @character.character_name
     @character_hue = @character.character_hue
     # If tile ID value is valid
     if @tile_id >= 384
       self.bitmap = RPG::Cache.tile($game_map.tileset_name,
         @tile_id, @character.character_hue)
       self.src_rect.set(0, 0, 32, 32)
       self.ox = 16
       self.oy = 32
     # If tile ID value is invalid
     else
       self.bitmap = RPG::Cache.character(@character.character_name,
         @character.character_hue)
       if @character.character_name.include?(ANIM_DATA::STND_TAG)
           @cw = bitmap.width / (self.character_frames + 1)
       else
           @cw = bitmap.width / self.character_frames
       end
       if @character.character_name.include?(ANIM_DATA::ISO_TAG)
         @ch = bitmap.height / 8
       else
         @ch = bitmap.height / self.character_rows
       end
       if @character.character_adjust_x != nil
         self.ox = (@cw - @character.character_adjust_x) / 2
       else
         self.ox = @cw / 2
       end
       if @character.character_adjust_y != nil
         self.oy = @ch - @character.character_adjust_y
       else
         self.oy = @ch
       end
     end
   end
   # Set visible situation
   self.visible = (not @character.transparent)
   # If graphic is character
   if @tile_id == 0
       if not @character.step_anime and @character.stop_count > 0
         sx = (@character.pattern) * @cw
       else      
         # If event's Movement flag is checked (or player sprite)
         if @character.walk_anime                  
           # Set rectangular transfer
           if @character.character_name.include?(ANIM_DATA::STND_TAG)
               sx = (@character.pattern + 1) * @cw
           else
             sx = @character.pattern * @cw
           end
         else
           sx = @character.pattern * @cw
         end
       end
   # Basic direction value
     dir = @character.direction
     # If a custom character in use
     if @character.character_name.include?(ANIM_DATA::ISO_TAG)
         dec = (dir == 7 or dir== 9) ? 3 : 1   # directional movement.
         sy = (dir - dec) * @ch    
       else
         sy = (dir - 2) / 2 * @ch        
     end
     # Typical block transfer
     self.src_rect.set(sx, sy, @cw, @ch)
   end
   # Set sprite coordinates
   self.x = @character.screen_x
   self.y = @character.screen_y
   self.z = @character.screen_z(@ch)
   # Set opacity level, blend method, and bush depth
   self.opacity = @character.opacity
   self.blend_type = @character.blend_type
   self.bush_depth = @character.bush_depth
   # Animation
   if @character.animation_id != 0
     animation = $data_animations[@character.animation_id]
     animation(animation, true)
     @character.animation_id = 0
   end
 end
end

#==============================================================================
# ** Game_Player
#------------------------------------------------------------------------------
#  This class handles the player. Its functions include event starting
#  determinants and map scrolling. Refer to "$game_player" for the one
#  instance of this class.
#==============================================================================

class Game_Player < Game_Character
@@poin1 = 0    
 @@poin2 = 0
 @@wait_time = 0
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :waiting
 attr_accessor :wait_time
#------------------------------------------------------------------------
# * Update Character Movement
#------------------------------------------------------------------------
def update
last_moving = moving?
   #----------------------------------------------------------------------
   #  * Movement Handling
   #----------------------------------------------------------------------
     unless moving? or $game_system.map_interpreter.running? or
     @move_route_forcing or $game_temp.message_window_showing  
       if ANIM_DATA::EIGHT_DIR == true
           case Input.dir8
             when 1 ; move_lower_left
             when 3 ; move_lower_right
             when 7 ; move_upper_left
             when 9 ; move_upper_right
             when 2 ; move_down
             when 4 ; move_left
             when 6 ; move_right
             when 8 ; move_up
           end
       else      
         case Input.dir4
           when 2 ; move_down
           when 4 ; move_left
           when 6 ; move_right
           when 8 ; move_up
         end
       end
     end
   #----------------------------------------------------------------------
   #  * Screen Positioning
   #----------------------------------------------------------------------
   last_real_x = @real_x
   last_real_y = @real_y
   super
   if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
     $game_map.scroll_down(@real_y - last_real_y)
   end
   if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
     $game_map.scroll_left(last_real_x - @real_x)
   end
   if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
     $game_map.scroll_right(@real_x - last_real_x)
   end
   if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
     $game_map.scroll_up(last_real_y - @real_y)
   end
   #----------------------------------------------------------------------
   #  * Encounter and Event Processing
   #----------------------------------------------------------------------
   unless moving?
     if last_moving
       result = check_event_trigger_here([1,2])
       if result == false
         unless $DEBUG and Input.press?(Input::CTRL)
           @encounter_count -= 1 if @encounter_count > 0
         end
       end
     end
     if Input.trigger?(Input::C)
       check_event_trigger_here([0])
       check_event_trigger_there([0,1,2])
     end
   end
end
 #------------------------------------------------------------------------
 #  * Encounter and Event Processing
 #------------------------------------------------------------------------  
 def idle_wait(duration, value)
   for i in 0...duration
     @@wait_time += 1 if value == false
     break if i >= duration / 2
   end
 end
end




Instructions

Explained pretty thoroughly in the script!


Compatibility

I don't think it is compatible with other movement scripts, may cause issues with pixel movement. Haven't tried it with blizz abs, but there is a 75% chance that it is not compatible. Should work with SDK, but not tested.


Credits and Thanks


  • DerVVulfman for base of 8-directional movement.

  • Dirtie for the frame calculation

  • Me for Mashing the scripts together

  • KK20 for helping with my mashing errors :P




Author's Notes

Here is an 8 directional charset that you can use as an example.
Aluxes iso.png
It is simply an iso charset, you can still add cs_8 to make it have 8 walking frames, or stn to make it have a stand frame.

If you have a suggestion,
Spoiler: ShowHide
you can shove it. (jk)
please feel free to comment :) I'll try my best to add or help you add anything you want to it.

KK20

Forgot the XP tag in the subject.

Instructions are misleading: You say to put values in between square brackets when naming the files, but it doesn't work that way (at least, how your gsub is setup). Also might want to note how the character graphics should be designed in terms of directional facing.

+1 for scripting (woo!)





   


   
   


   
   

Other Projects
RPG Maker XP AceUpgrade RMXP to RMVXA performance!
XPA TilemapTilemap rewrite with many features, including custom resolution!



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

Join the CP Discord Server!

Zexion

April 30, 2013, 09:38:45 pm #2 Last Edit: April 30, 2013, 10:19:17 pm by Zexion
Quote from: KK20 on April 30, 2013, 09:15:16 pm
Forgot the XP tag in the subject.

Dang, I always forget something, haha. Thanks for fixing it :P

Quote from: KK20 on April 30, 2013, 09:15:16 pm
Instructions are misleading: You say to put values in between square brackets when naming the files, but it doesn't work that way (at least, how your gsub is setup). Also might want to note how the character graphics should be designed in terms of directional facing.

OMG, I totally forgot. Those were the instructions I wrote when I first planned it out haha. I'll fix it now.
Also, I'll add an 8 pose of aluxes as an example :P

Quote from: KK20 on April 30, 2013, 09:15:16 pm
+1 for scripting (woo!)


Yeah, woo!! VIVA SCRIPTING!!! :rockit: *goes crazy* :w00t:

EDIT: Updated the instructions within the script, and also added an example charset of Aluxes in the Author's Notes section, showing how to use the 8 directional poses.

Zexion

May 14, 2013, 11:17:22 pm #3 Last Edit: May 26, 2013, 06:32:49 am by Zexion
Updated to version 1.1

KK20 Fixed a bug that I found in the script which prevented character sets without the iso tag from working properly.

5/26/2013
Updated to version 1.2

Fixed the draw_actor_graphic definition.

WhiteRose

This script is just perfect for a super-secret old project that I am resurrecting, but unfortunately, I get a syntax error when I put it in my game. :(

It's on line 633, so I think it's a problem with a method not being closed with an "end" or something that like. I actually tried adding an "end" to the script, and it ran without any trouble, but I couldn't move in eight directions, so that didn't end up accomplishing much. Haha.

Zexion

Yeah I'm gonna take a look at this script tomorrow because there are a few bugs other than that

WhiteRose

Quote from: Zexion on October 31, 2013, 10:20:23 pm
Yeah I'm gonna take a look at this script tomorrow because there are a few bugs other than that


Great! No rush, though.

KK20

While you're at it, you should try to make it BlizzABS compatible.





   


   
   


   
   

Other Projects
RPG Maker XP AceUpgrade RMXP to RMVXA performance!
XPA TilemapTilemap rewrite with many features, including custom resolution!



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

Join the CP Discord Server!

hirasu

Quote from: KK20 on November 01, 2013, 07:26:00 pm
While you're at it, you should try to make it BlizzABS compatible.


I want it too! This is perfekt for my project  :D

Zexion

November 02, 2013, 09:43:33 pm #9 Last Edit: November 04, 2013, 03:12:05 pm by Zexion
I'll work on it this week. I've been really busy lately, and my free time goes to my project. I promise that I will fix all bugs with it (including the event graphics being wacked out). I will try to make it blizz abs compatible but honestly I don't know if I can. Hopefully my scriptiness is good enough. :

Edit: I've updated the script with the fixed version that I had all along o.o  In any case, the script that I had posted on here was not actually v1.2 so I won't change that :s
I don't know if I was imagining this bug, but it seems that the events also use the correct graphics when moving in eight directions without eight poses. (Previously they would randomly disappear.)

Edit: From re-reading it seems that KK20 fixed that bug a while back,

WhiteRose

November 05, 2013, 12:24:37 am #10 Last Edit: November 05, 2013, 12:30:08 am by WhiteRose
Hahaha. We all make mistakes like that sometimes. :P I'm glad it was so easy to fix! I'll definitely be giving this a try in my project. Thanks for your help!

EDIT: I just gave it a try and it looks like it's working perfectly. It gives a nice Earthbound-style feel to the movement. Great work. :)

Zexion

April 08, 2014, 05:58:20 pm #11 Last Edit: April 08, 2014, 06:15:32 pm by Zexion
original post: ShowHide
It's really nice if you combine it with pixel movement :P buuut that can be a hassle sometimes..

Edit: Updated to Version 1.3
Added horizontal adjustment with "h_#"

Updated to Version 1.5 (Which was my latest version that I never released)
Added a fix for draw_actor_graphic
Added character rows with vs_# : Allows for 1 frame 1 pose charsets. Eg any picture can be saved as a charset with vs_1 cs_1
Fixed a limit that the old code placed : Previously it would not read numbers that were more than one digit. Very small fix, but it's fixed now.
Added animation speed control. Now there is a default animation speed, which is configurable and you can set a custom speed by using a_# in the file name.

(I might have posted the wrong version, but it will be fixed in a bit)
Fixed.