The RPG Maker Resource Kit

RMRK RPG Maker Creation => VX => VX Scripts Database => Topic started by: Synthesize on January 20, 2008, 08:37:15 PM

Title: [RMVX] Stand/Walk/Run
Post by: Synthesize on January 20, 2008, 08:37:15 PM
Script Name: Stand/Walk/Run
Written By: Synthesize
Current Version: V.2.00A
Release Date: January 26, 2008

What is this script?
This script allows running and animations for running. It also allows idle stances (Show the sprite when he is not moving).

Features:
 - Allows you to have running animations
 - Allows you to have idle animations
 - Allows you to specify the time before the actor goes idle
 - Allows you to have run points
 - Allows you to customize how many run points are restored
 - Turn everything ON/OFF

Version History:
 Version 2.00A
  - The script should actually work now =D

 Version 1.00A
  - First release
  - Converted from my RMXP Version

DEMO:
 Triton Server (http://204.191.115.42:43179/RMVX/StandWalkRun.zip)

Spoiler for The Script:
Code: [Select]
#===============================================================================
# Stand/Walk/Run Script --- RMVX Version
#===============================================================================
# Written by Synthesize
# Version 2.00
# January 26, 2008
#===============================================================================
#                       * This script is untested *
#===============================================================================
# Customization
#-------------------------------------------------------------------------------
module StandWalkRun
  Use_run = true   # Use Run Points?
  Use_run_sprite = true    # Use a Running sprite?
  Run_sprite_suffix = '_run'   # Running Sprite Suffix
  Run_points = 100   # The maximum amount of Run Points
  Run_points_restore = 60   # 1 Run Point is restored in X Frames
  Restore_run_while_walking = true   # Restore points while walking?
  Use_idle_sprite = true   # Use Idle Sprite?
  Idle_sprite_suffix = '_idle'   # idle Sprite Suffix
  Use_anime = true   # Animate your Idle Sprite?
  Idle_time = 240    # Time before sprite is animated
  # Save a character set in your Charset folder with the Character set file name + the suffix specified above.
  # As an example, Actor1.png will become Actor1_run.png when running and Actor1_idle.png for standing
  # You may use the same sets for different actors. The way that works, is the character set is changed to
  # the character sprite on the _run/_idle sprite set at the same location as it was on Actor1.png.
  # So for example you use all eight sprites from Actor1, then each of those playable characters will
  # use the same graphic set but each will use a different running/standing animation.
end
#-------------------------------------------------------------------------------
# Scene_Map:: The main functions of the script are here
#-------------------------------------------------------------------------------
class Scene_Map < Scene_Base
  # Aliases
  alias syn_map_update update
  alias syn_map_start start
  #-----------------------------------------------------------------------------
  # Initiate variables
  #-----------------------------------------------------------------------------
  def start
    $game_player.old_character_name = $game_player.character_name
    @wait_time = 0
    @wait_time2 = 0
    syn_map_start
  end
  #-----------------------------------------------------------------------------
  # Rewrite Scene_Change to reset sprite
  #-----------------------------------------------------------------------------
  def update_scene_change
    return if $game_player.moving?
    case $game_temp.next_scene
    when "battle"
      call_idle($game_player.old_character_name, false)
      call_battle
    when "shop"
      call_idle($game_player.old_character_name, false)
      call_shop
    when "name"
      call_idle($game_player.old_character_name, false)
      call_name
    when "menu"
      call_idle($game_player.old_character_name, false)
      call_menu
    when "save"
      call_idle($game_player.old_character_name, false)
      call_save
    when "debug"
      call_idle($game_player.old_character_name, false)
      call_debug
    when "gameover"
      call_gameover
    when "title"
      call_title
    else
      $game_temp.next_scene = nil
    end
  end
  #-----------------------------------------------------------------------------
  # Update:: Update the scene
  #-----------------------------------------------------------------------------
  def update
    syn_map_update
    if Input.dir4 == 0
      wait(1, false) if StandWalkRun::Use_idle_sprite
      call_idle($game_player.character_name + StandWalkRun::Idle_sprite_suffix, StandWalkRun::Use_anime) if @wait_time == StandWalkRun::Idle_time
      $game_temp.syn_state = "idle"
      restore_run if StandWalkRun::Use_run
    else
      $game_temp.syn_state = ""
      restore_run if StandWalkRun::Restore_run_while_walking
      call_idle($game_player.old_character_name, false) if $game_player.character_name != $game_player.old_character_name
    end
  end
  #-----------------------------------------------------------------------------
  # Call_Idle:: Sets and animates the idle Sprite
  #-----------------------------------------------------------------------------
  def call_idle(sprite, anime)
    $game_player.set_step_anime(anime)
    $game_player.set_graphic(sprite, 0)
  end
  #-----------------------------------------------------------------------------
  # Restore_Run: Restore Run Points
  #-----------------------------------------------------------------------------
  def restore_run
    if $game_player.run_points < StandWalkRun::Run_points
      wait(1, true)
      $game_player.run_points += 1 if @wait_time2 == StandWalkRun::Run_points_restore
      @wait_time2 = 0 if @wait_time2 == StandWalkRun::Run_points_restore
    end
  end
  #-----------------------------------------------------------------------------
  # Wait:: Allows Wait Times
  #-----------------------------------------------------------------------------
  def wait(duration, value)
    for i in 0...duration
      @wait_time += 1 if value == false
      @wait_time2 += 1 if value
      break if i >= duration / 2
    end
  end
end 
#-------------------------------------------------------------------------------
# Game_Temp:: Create current state
#-------------------------------------------------------------------------------
class Game_Temp
  attr_accessor :syn_state
  alias syn_temp_init initialize
  def initialize
    @syn_state = ""
    syn_temp_init
  end
end
#-------------------------------------------------------------------------------
# Game_Character:: Create the Change_Sprite method
#-------------------------------------------------------------------------------
class Game_Character
  # Attr(s)
  attr_accessor :old_character_name
  attr_accessor :run_points
  alias syn_ch_init initialize
  #-----------------------------------------------------------------------------
  # Initialize Variables
  #-----------------------------------------------------------------------------
  def initialize
    @run_points = StandWalkRun::Run_points
    syn_ch_init
  end
  #-----------------------------------------------------------------------------
  # Set Setp Animation
  #-----------------------------------------------------------------------------
  def set_step_anime(value)
    @step_anime = value
    return @step_anime
  end
end
#-------------------------------------------------------------------------------
# Game_Player:: This handles the dash process
#-------------------------------------------------------------------------------
class Game_Player < Game_Character
  alias syn_player_update update
  alias syn_player_dash dash?
  def dash?
    return false if @run_points == 0 and StandWalkRun::Use_run
    syn_player_dash
  end
  #-----------------------------------------------------------------------------
  # Update:: Update the scene
  #----------------------------------------------------------------------------
  def update
    if dash?
      unless $game_temp.syn_state == "idle"
        set_graphic(@character_name + StandWalkRun::Run_sprite_suffix, 0) if StandWalkRun::Use_run_sprite
        @run_points -= 1
        syn_player_update
      end
    else
      changed = false
      syn_player_update
    end
  end
end
#-------------------------------------------------------------------------------
#            * This script is not compatible with RPG Maker XP *
#-------------------------------------------------------------------------------
# Written by Synthesize
# Version 2.00
# Requested by Cerulean Sky
#===============================================================================
# Stand/Walk/Run   - RMVX Version
#===============================================================================

Questions? Concerns? Post.
Title: Re: [RMVX] Stand/Walk/Run
Post by: Synthesize on January 28, 2008, 07:15:25 AM
Fixed all of the known bugs and added some features. The script should actually work now =D
Title: Re: [RMVX] Stand/Walk/Run
Post by: modern algebra on January 28, 2008, 03:34:33 PM
:P

It might be a good idea to write out how the additional animations are saved. Do you save the animation files as <filename> + idle, run? Combine them all into one file? Maybe it's there and I'm just blind though  :D

EDIT::

I just noticed that is set by the user by the idle and run_sprite_suffix constants in the module. I still think it should be made more explicit however.
Title: Re: [RMVX] Stand/Walk/Run
Post by: Ghareeb on January 28, 2008, 04:28:36 PM
Nice script.  ;D
Title: Re: [RMVX] Stand/Walk/Run
Post by: BloodyChaos on February 22, 2008, 11:47:29 PM
So doas this Script make it so you  can run or walk like in Final Fantasy 7?
Title: Re: [RMVX] Stand/Walk/Run
Post by: Yukan on June 25, 2008, 11:26:17 PM
So doas this Script make it so you  can run or walk like in Final Fantasy 7?
You can run by holding shift with RPG Maker VX, by default. (unless you click 'disable dashing' in the map properties of that map)
Title: Re: [RMVX] Stand/Walk/Run
Post by: Zero2008 on December 04, 2008, 07:49:06 PM
Hey there. I got a question! I was wondering wouldnt it be better to add support of this script to the catterpillar script?
like when you dash, the other characters following you will have the same effect. The same with the idle. i always wanted that!