02-16-2009, 06:09 PM
(This post was last modified: 11-11-2025, 10:11 PM by DerVVulfman.)
Caterpillar System
Version 1.0
by Woratana
Release Date: 16/02/2009
Introduction
It's just that one day I feel like scripting caterpillar system. I've never done it before, and it would teach me something.
So I tried, and here is the result.
It's probably need more work to make it perfect. :P Because I think my algorithm so far is not the best one.
Please let me know if you find any bugs. ^^/
Enjoy~^^
Features
Version 1.0
- Unlimited following members
- Switch to hide/show following members temporarily
Screenshots
![[Image: QgE1p6i.jpg]](https://i.imgur.com/QgE1p6i.jpg)
Script
I decided to keep script on my blog. So it won't have conflict with any site's rule I post this topic.
http://boxsuke.exteen.com/20090216/vx-cate...tem-by-woratana]Woratana's Site (Found 404ed by AVGB-KBGaming
Instruction
- Setup script in the SETUP part
- The complete instruction is included in the script
Author's Notes
Free for use in your work if credit is included.
If you want to post it on any forum, please link to this topic.
Bug Report?
Please give me these informations:
Version 1.0
by Woratana
Release Date: 16/02/2009
Introduction
It's just that one day I feel like scripting caterpillar system. I've never done it before, and it would teach me something.
So I tried, and here is the result.
It's probably need more work to make it perfect. :P Because I think my algorithm so far is not the best one.
Please let me know if you find any bugs. ^^/
Enjoy~^^
Features
Version 1.0
- Unlimited following members
- Switch to hide/show following members temporarily
Screenshots
![[Image: QgE1p6i.jpg]](https://i.imgur.com/QgE1p6i.jpg)
Script
I decided to keep script on my blog. So it won't have conflict with any site's rule I post this topic.
http://boxsuke.exteen.com/20090216/vx-cate...tem-by-woratana]Woratana's Site (Found 404ed by AVGB-KBGaming
Code:
#===============================================================
# ● [VX] ◦ Plug 'n Play Caterpillar System ◦ □
# * Create party members follow the player on map *
#--------------------------------------------------------------
# ◦ by Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Released on: 29/02/2009
# ◦ Version: 2.0
#--------------------------------------------------------------
# ◦ Update:
#--------------------------------------------------------------
# □ Version 2.0 (29/02/2009)
# - Fix direction bug
# - Fix vehicle bug
# - Add max following members
# □ Version 1.5 (17/02/2009)
# - Fix dash bug
# - More compatible with script that edit Spriteset_Map.create_characters
#--------------------------------------------------------------
# ◦ Compatibility:
#--------------------------------------------------------------
# □ This script will rewrite 0 method(s):
#
#
# □ This script will alias 14 method(s):
# Spriteset_Map.create_characters
# Spriteset_Map.update_characters
# Game_Player.move_down
# Game_Player.move_left
# Game_Player.move_right
# Game_Player.move_up
# Game_Player.move_lower_left
# Game_Player.move_lower_right
# Game_Player.move_upper_left
# Game_Player.move_upper_right
# Game_Player.jump
# Game_Player.get_off_vehicle
# Game_Player.moveto
# Game_Map.setup
#
# □ This script should work with most scripts
#
#--------------------------------------------------------------
# ◦ Installation:
#--------------------------------------------------------------
# 1) This script should be placed JUST BEFORE ▼ Main Process.
#
# □ Like this:
# ▼ Materials
# ...
# ...
# * Caterpillar System
# ▼ Main Process
# Main
#
# 2) Setup this script in Setup Part below.
#
#--------------------------------------------------------------
# ◦ How to use:
#--------------------------------------------------------------
# □ Place this script and setup in the setup part.
#
#=================================================================
module Wora
#=================================================================
# ++ Setup Part
#-----------------------------------------------------------------
CATERPILLAR_HIDE_SWITCH = 1
# Turn ON this switch to HIDE caterpillar actors
# Turn OFF this switch to SHOW caterpillar actors
CATERPILLAR_MAX_ACTORS = 5
# Maximum number of the following actors
#-----------------------------------------------------------------
def self.add_upd_cater(code = nil)
# Add new move action to caterpillar
$game_cateracter.each_index do |i|
act = $game_cateracter[i]
eval($cater_movelist[$cater_movelist.size - 1 - i])
end
$cater_movelist.shift
$cater_movelist.push(code) unless code.nil?
end
def self.reset_cater_pos
# Reset caterpillar position
$game_cateracter.each_index {|i| $game_cateracter[i].refresh }
$cater_movelist = Array.new(Wora::CATERPILLAR_MAX_ACTORS - 1) {''}
end
end
class Game_WCateracter < Game_Character
attr_accessor :actor
def initialize(member_id)
super()
@wmember_id = member_id
refresh
end
def update(*args)
super(*args)
actor = $game_party.members[@wmember_id]
unless actor.nil?
@character_name = actor.character_name
@character_index = actor.character_index
@transparent = ($game_switches[Wora::CATERPILLAR_HIDE_SWITCH] or
$game_player.in_vehicle? or $game_player.transparent)
@opacity = $game_player.opacity
@move_speed = $game_player.move_speed + ($game_player.dash? ? 1 : 0)
else
@character_name = ''
@character_index = 0
end
end
def screen_z
return $game_player.screen_z
end
def check_event_trigger_touch(x, y)
return false
end
def passable?(x, y)
return true
end
def refresh
@direction = $game_player.direction
moveto($game_player.x, $game_player.y)
end
end
class Spriteset_Map
alias wora_cater_sprmap_crechara create_characters
alias wora_cater_sprmap_updchara update_characters
#--------------------------------------------------------------------------
# * Create Character Sprite
#--------------------------------------------------------------------------
def create_characters(*args)
wora_cater_sprmap_crechara(*args)
# Remove Game_Player sprite, this will be add later
((@character_sprites.size-1)..0).each do |i|
next if @character_sprites[i].nil?
if @character_sprites[i].character.is_a?(Game_Player)
@character_sprites[i].dispose
@character_sprites.delete_at(i)
break
end
end
# Create party members sprite
(1..(Wora::CATERPILLAR_MAX_ACTORS-1)).each do |n|
@character_sprites.push(Sprite_Character.new(@viewport1, $game_cateracter[n-1]))
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
end
#--------------------------------------------------------------------------
# * Update Character Sprite
#--------------------------------------------------------------------------
def update_characters(*args)
$game_cateracter.each {|cater| cater.update }
wora_cater_sprmap_updchara(*args)
end
end
class Game_Player < Game_Character
attr_reader :move_speed
unless method_defined?('wora_cater_gampla_movdown')
alias wora_cater_gampla_movdown move_down
alias wora_cater_gampla_movleft move_left
alias wora_cater_gampla_movright move_right
alias wora_cater_gampla_movup move_up
alias wora_cater_gampla_movll move_lower_left
alias wora_cater_gampla_movlr move_lower_right
alias wora_cater_gampla_movul move_upper_left
alias wora_cater_gampla_movur move_upper_right
alias wora_cater_gampla_jump jump
alias wora_cater_gampla_getoffveh get_off_vehicle
alias wora_cater_gampla_moveto moveto
#--------------------------------------------------------------------------
# * Move Down
#--------------------------------------------------------------------------
def move_down(turn_ok = true)
wora_cater_gampla_movdown(turn_ok)
Wora.add_upd_cater("act.move_down(#{turn_ok})") unless @move_failed
end
#--------------------------------------------------------------------------
# * Move Left
#--------------------------------------------------------------------------
def move_left(turn_ok = true)
wora_cater_gampla_movleft(turn_ok)
Wora.add_upd_cater("act.move_left(#{turn_ok})") unless @move_failed
end
#--------------------------------------------------------------------------
# * Move Right
#--------------------------------------------------------------------------
def move_right(turn_ok = true)
wora_cater_gampla_movright(turn_ok)
Wora.add_upd_cater("act.move_right(#{turn_ok})") unless @move_failed
end
#--------------------------------------------------------------------------
# * Move up
#--------------------------------------------------------------------------
def move_up(turn_ok = true)
wora_cater_gampla_movup(turn_ok)
Wora.add_upd_cater("act.move_up(#{turn_ok})") unless @move_failed
end
#--------------------------------------------------------------------------
# * Move Lower Left
#--------------------------------------------------------------------------
def move_lower_left
wora_cater_gampla_movll
Wora.add_upd_cater('act.move_lower_left') unless @move_failed
end
#--------------------------------------------------------------------------
# * Move Lower Right
#--------------------------------------------------------------------------
def move_lower_right
wora_cater_gampla_movlr
Wora.add_upd_cater('act.move_lower_right') unless @move_failed
end
#--------------------------------------------------------------------------
# * Move Upper Left
#--------------------------------------------------------------------------
def move_upper_left
wora_cater_gampla_movul
Wora.add_upd_cater('act.move_upper_left') unless @move_failed
end
#--------------------------------------------------------------------------
# * Move Upper Right
#--------------------------------------------------------------------------
def move_upper_right
wora_cater_gampla_movur
Wora.add_upd_cater('act.move_upper_right') unless @move_failed
end
#--------------------------------------------------------------------------
# * Jump
#--------------------------------------------------------------------------
def jump(x, y)
wora_cater_gampla_jump(x, y)
Wora.add_upd_cater("act.jump(#{x},#{y})")
end
#--------------------------------------------------------------------------
# * Get Off Vehicle
#--------------------------------------------------------------------------
def get_off_vehicle(*args)
wora_cater_gampla_getoffveh(*args)
Wora.reset_cater_pos
end
#--------------------------------------------------------------------------
# * Move to Designated Position
#--------------------------------------------------------------------------
def moveto(*args)
wora_cater_gampla_moveto(*args)
Wora.reset_cater_pos
end
end
end
class Game_Map
attr_accessor :events
alias wora_cater_gammap_setup setup
def setup(*args)
wora_cater_gammap_setup(*args)
# Create caterpillar actors
$game_cateracter = []
(1..(Wora::CATERPILLAR_MAX_ACTORS-1)).each do |n|
$game_cateracter.push(Game_WCateracter.new(n))
end
$cater_movelist = Array.new(Wora::CATERPILLAR_MAX_ACTORS - 1) {''}
end
endInstruction
- Setup script in the SETUP part
- The complete instruction is included in the script
Author's Notes
Free for use in your work if credit is included.
If you want to post it on any forum, please link to this topic.
Bug Report?
Please give me these informations:
Quote:- What is it says in error window?
- When is it get error? (Right after run game, when you choose something, etc.)
- What have you changed in setting part?
- Do you have any other scripts running in your game that may crash with this script?


![[Image: SP1-Musician.png]](https://www.save-point.org/images/userbars/SP1-Musician.png)
![[Image: SP1-Singer.png]](https://www.save-point.org/images/userbars/SP1-Singer.png)
![[Image: SP1-Writer.png]](https://www.save-point.org/images/userbars/SP1-Writer.png)
![[Image: SP1-Eventer.png]](https://www.save-point.org/images/userbars/SP1-Eventer.png)
![[Image: SP1-Mapper.png]](https://www.save-point.org/images/userbars/SP1-Mapper.png)
![[Image: SP1-Designer.png]](https://www.save-point.org/images/userbars/SP1-Designer.png)
![[Image: QrnbKlx.jpg]](https://i.imgur.com/QrnbKlx.jpg)
![[Image: sGz1ErF.png]](https://i.imgur.com/sGz1ErF.png)
![[Image: liM4ikn.png]](https://i.imgur.com/liM4ikn.png)
![[Image: fdzKgZA.png]](https://i.imgur.com/fdzKgZA.png)
![[Image: sj0H81z.png]](https://i.imgur.com/sj0H81z.png)
![[Image: QL7oRau.png]](https://i.imgur.com/QL7oRau.png)
![[Image: uSqjY09.png]](https://i.imgur.com/uSqjY09.png)
![[Image: GAA3qE9.png]](https://i.imgur.com/GAA3qE9.png)
![[Image: 2Hmnx1G.png]](https://i.imgur.com/2Hmnx1G.png)
![[Image: BwtNdKw.png%5B]](https://i.imgur.com/BwtNdKw.png%5B)