Guest Access
Go to page : 1, 2, 3
Administrator
Administrator
Administrator
profile
Automatically makes an event for additional actors in your party!
(No, this is not an ALLY script.)
some where in cyberspace...
G@MeF@Ce
profile
XAS CATERPILLAR!
Version:1.1 Current version
Author:gameface101
Date:2/4/2011
Version:1.1 Current version
Author:gameface101
Date:2/4/2011
Planned Future Versions
- newer version will work with XPLAT!
- when actor is hit/knock back, trailing events will regroup
- trailing events will be faded when that event's actor is knockedout
Description
Automatically makes an event for additional actors in your party!
(No, this is not an ALLY script.)
Features
- Plug and play!
- Works great with the XAS Leader Switch!
Screenshots
Instructions
Simply copy and paste above "main" and below "xas system" scripts.The script
- Spoiler:
- Code:
################################################################################
#※※※※====== XAS CATERPILLAR script V1.1 by gameface101 2-4-2011 ======※※※※
#based off of Fukuyama's original train_actor *free to use and must give credit
################################################################################
module XAS_CAT
# When true, switch control is used
TRANSPARENT_SWITCH = true
# When TRANSPARENT_SWITCH is true, transparency will be activated when the switch of this number is on
TRANSPARENT_SWITCHES_INDEX = 20
# Maximum actors in your party
XCAT_ACTORS_SIZE_MAX = 4
# Constants
DOWN_LEFT = 1
DOWN_RIGHT = 3
UP_LEFT = 7
UP_RIGHT = 9
JUMP = 10#5
# Put any actor IDs who should have a "stopped animation" if in the caterpillar
# i.e. if a party member "is floating" it will look stupid if he suddenly stops
ACTOR_IDS = [2, 3, 4]
end
#==============================================================================
# ■ Spriteset_Map_Module
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================
module XAS_CAT
module Spriteset_Map_Module
def setup_actor_character_sprites?
return @setup_actor_character_sprites_flag != nil
end
def setup_actor_character_sprites(characters)
if !setup_actor_character_sprites?
for character in characters.reverse
@character_sprites.unshift(
Sprite_Character.new(@viewport1, character)
)
end
@setup_actor_character_sprites_flag = true
end
end
end
end
class Spriteset_Map
include XAS_CAT::Spriteset_Map_Module
end
#==============================================================================
# ■ Scene_Map_Module
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================
module XAS_CAT
module Scene_Map_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
end
class Scene_Map
include XAS_CAT::Scene_Map_Module
end
#==============================================================================
# ■ Game_Party_Module
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================
module XAS_CAT
module Game_Party_Module
attr_reader :characters
def update_party_order() return actors end
def setup_actor_character_sprites
if @characters.nil?
@characters = []
for i in 1 ... XCAT_ACTORS_SIZE_MAX
@characters.push(Game_Party_Actor.new)
end
end
setup_actors = update_party_order
for i in 1 ... XCAT_ACTORS_SIZE_MAX
@characters[i - 1].setup(setup_actors[i])
end
if $scene.class.method_defined?('setup_actor_character_sprites')
$scene.setup_actor_character_sprites(@characters)
end
end
def update_party_actors
update_party_order
setup_actor_character_sprites
transparent = $game_player.transparent
$game_player.refresh#
$game_map.refresh#test
if transparent == false and TRANSPARENT_SWITCH
transparent = $game_switches[TRANSPARENT_SWITCHES_INDEX]
end
for character in @characters
character.transparent = transparent
character.move_speed = $game_player.move_speed
if ACTOR_IDS.include?(character.cp_id) #for stopped animation
character.step_anime = true #for stopped animation
else #stopped animation
character.step_anime = $game_player.step_anime
end #for stopped animation
character.update
end
end
def moveto_party_actors( x, y )
setup_actor_character_sprites
for character in @characters
character.moveto( x, y )
end
@move_list = [] if @move_list == nil
move_list_setup
end
def move_party_actors
if @move_list == nil
@move_list = []
move_list_setup
end
@move_list.each_index do |i|
if @characters[i] != nil
case @move_list[i].type
when Input::DOWN
@characters[i].move_down(@move_list[i].args[0])
when Input::LEFT
@characters[i].move_left(@move_list[i].args[0])
when Input::RIGHT
@characters[i].move_right(@move_list[i].args[0])
when Input::UP
@characters[i].move_up(@move_list[i].args[0])
when DOWN_LEFT
@characters[i].move_lower_left
when DOWN_RIGHT
@characters[i].move_lower_right
when UP_LEFT
@characters[i].move_upper_left
when UP_RIGHT
@characters[i].move_upper_right
when JUMP
@characters[i].jump(@move_list[i].args[0],@move_list[i].args[1])
end
end
end
end
class Move_List_Element
def initialize(type,args)
@type = type
@args = args
end
def type() return @type end
def args() return @args end
end
def move_list_setup
for i in 0 .. XCAT_ACTORS_SIZE_MAX
@move_list[i] = nil
end
end
def add_move_list(type,*args)
@move_list.unshift(Move_List_Element.new(type,args)).pop
end
def move_down_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::DOWN,turn_enabled)
end
def move_left_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::LEFT,turn_enabled)
end
def move_right_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::RIGHT,turn_enabled)
end
def move_up_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::UP,turn_enabled)
end
def move_lower_left_party_actors
move_party_actors
add_move_list(DOWN_LEFT)
end
def move_lower_right_party_actors
move_party_actors
add_move_list(DOWN_RIGHT)
end
def move_upper_left_party_actors
move_party_actors
add_move_list(UP_LEFT)
end
def move_upper_right_party_actors
move_party_actors
add_move_list(UP_RIGHT)
end
def jump_party_actors(x_plus, y_plus)
move_party_actors
add_move_list(JUMP,x_plus, y_plus)
end
end
end
class Game_Party
include XAS_CAT::Game_Party_Module
end
#==============================================================================
# ■ Game_Player_Module
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================
module XAS_CAT
module Game_Player_Module
attr_reader :move_speed
attr_reader :step_anime
def update_party_actors
$game_party.update_party_actors
$game_party.actors.each do |actor|
@character_name = actor.character_name
@character_hue = actor.character_hue
break
end
end
def update
update_party_actors
super
end
def moveto( x, y )
$game_party.moveto_party_actors( x, y )
super( x, y )
end
def move_down(turn_enabled = true)
if passable?(@x, @y, Input::DOWN)
$game_party.move_down_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_left(turn_enabled = true)
if passable?(@x, @y, Input::LEFT)
$game_party.move_left_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_right(turn_enabled = true)
if passable?(@x, @y, Input::RIGHT)
$game_party.move_right_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_up(turn_enabled = true)
if passable?(@x, @y, Input::UP)
$game_party.move_up_party_actors(turn_enabled)
end
super(turn_enabled)
end
#======================================================[ move methods for events
def move_lower_left
# When possible to move from down→left or from left→down
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
$game_party.move_lower_left_party_actors
end
super
end
def move_lower_right
# When possible to move from down→right or from right→down
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
$game_party.move_lower_right_party_actors
end
super
end
def move_upper_left
# When possible to move from up→left or from left→up
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
$game_party.move_upper_left_party_actors
end
super
end
def move_upper_right
# When possible to move from up→right or from right→up
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
$game_party.move_upper_right_party_actors
end
super
end
def jump(x_plus, y_plus)
# New coordinates are calculated
new_x = @x + x_plus
new_y = @y + y_plus
# When addition values are (0,0), it is possible to jump to the destination
if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
$game_party.jump_party_actors(x_plus, y_plus)
end
super(x_plus, y_plus)
end
end
end
class Game_Player
include XAS_CAT::Game_Player_Module
end
#==============================================================================
# ■ Game_Event_Module
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================
module XAS_CAT
module Game_Event_Module
#--------------------------------------------------------------------------
# ● Judgement determined
# x : X coordinates
# y : Y coordinates
# d : Direction (0,2,4,6,8) ※ 0 = Checks if all directions are not able to be passed (for a jump)
# return : Passing is impossible (false), possible (true)
#--------------------------------------------------------------------------
def passable?(x, y, d)
result = super(x, y, d)
if result
# New coordinates are searched for
new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
# Loops for actor in train
for actor in $game_party.characters
# When displayed
if not actor.character_name.empty?
# When actor's coordinates correspond to the destination
if actor.x == new_x and actor.y == new_y
# When event
return false if self != $game_player
end
end
end
end
return result
end
end
end
class Game_Event
include XAS_CAT::Game_Event_Module
end
#==============================================================================
# ■ Game_Party_Actor
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================
module XAS_CAT
class Game_Party_Actor < Game_Character
attr_reader :cp_id
attr_writer :move_speed
attr_writer :step_anime
def initialize
super()
@through = true
end
#for XAS
def battler
return $game_party.actors[1]#0
end
def dead?
return self.battler == nil ? false : self.battler.dead?
end
#for XAS
def setup(actor)
# The file name and hue of the character are set
@cp_id = $data_actors[actor.id].id
if actor != nil
@character_name = actor.character_name
@character_hue = actor.character_hue
else
@character_name = ""
@character_hue = 0
end
# Opacity and blending method are initialized
@opacity = 255
@blend_type = 0
end
def screen_z(height = 0)
if $game_player.x == @x and $game_player.y == @y
return $game_player.screen_z(height) - 1
end
super(height)
end
#--------------------------------------------------------------------------
# ● Move down
# turn_enabled : Flag that permits direction change on the spot
#--------------------------------------------------------------------------
def move_down(turn_enabled = true)
# Face down
turn_down if turn_enabled
# When possible to pass
if passable?(@x, @y, Input::DOWN)
# Face down
turn_down
# Update coordinates
@y += 1
end
end
#--------------------------------------------------------------------------
# ● Move left
# turn_enabled : Flag that permits direction change on the spot
#--------------------------------------------------------------------------
def move_left(turn_enabled = true)
# Face left
turn_left if turn_enabled
# When possible to pass
if passable?(@x, @y, Input::LEFT)
# Face left
turn_left
# Update coordinates
@x -= 1
end
end
#--------------------------------------------------------------------------
# ● Move right
# turn_enabled : Flag that permits direction change on the spot
#--------------------------------------------------------------------------
def move_right(turn_enabled = true)
# Face right
turn_right if turn_enabled
# When possible to pass
if passable?(@x, @y, Input::RIGHT)
# Face right
turn_right
# Update coordinates
@x += 1
end
end
#--------------------------------------------------------------------------
# ● Move up
# turn_enabled : Flag that permits direction change on the spot
#--------------------------------------------------------------------------
def move_up(turn_enabled = true)
# Face up
turn_up if turn_enabled
# When possible to pass
if passable?(@x, @y, Input::UP)
# Face up
turn_up
# Update coordinates
@y -= 1
end
end
#--------------------------------------------------------------------------
# ● Move lower left
#--------------------------------------------------------------------------
def move_lower_left
# When no direction fixation
unless @direction_fix
# Turn left when facing right, turn down when facing up
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input::DOWN : @direction)
end
# When possible to move from down→left or from left→down
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
# Update coordinates
@x -= 1
@y += 1
end
end
#--------------------------------------------------------------------------
# ● Move lower right
#--------------------------------------------------------------------------
def move_lower_right
# When no direction fixation
unless @direction_fix
# Turn right when facing left, turn down when facing up
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input::DOWN : @direction)
end
# When possible to move from down→right or from right→down
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
# Update coordinates
@x += 1
@y += 1
end
end
#--------------------------------------------------------------------------
# ● move upper left
#--------------------------------------------------------------------------
def move_upper_left
# When no direction fixation
unless @direction_fix
# Turn left when facing right, turn up when facing down
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::DOWN ? Input::UP : @direction)
end
# When possible to move from up→left or from left→up
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
# Update coordinates
@x -= 1
@y -= 1
end
end
#--------------------------------------------------------------------------
# ● move upper right
#--------------------------------------------------------------------------
def move_upper_right
# When no direction fixation
unless @direction_fix
# Turn right when facing left, turn up when facing down
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::DOWN ? Input::UP : @direction)
end
# When possible to move from up→right or from right→up
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
# Update coordinates
@x += 1
@y -= 1
end
end
end
end
Support
some where in cyberspace...
Known Compatibility Issues
I'm certain there's a bunch! (ha! just threw it together)- trailing events don't fade or disappear when actors are dead.
- when leader is knockedback trailing events don't regroup
damage pop appears on second actor
Restrictions
free to use must give credit!Administrator
Show Signature
Poster Mcposty
Poster Mcposty
Poster Mcposty
profile
MotionM
profile
So say if Actor#2 is KO'd then he would still be following? I rather like that idea. Good work GF!trailing events don't fade or disappear when actors are knockedout.
Poster Mcposty
Show Signature
EVENTALIST
EVENTALIST
EVENTALIST
profile
mr_wiggles
profile
nice gface im gonna take a look at this when i get the time.
EVENTALIST
Show Signature
EVENTALIST
Administrator
Administrator
Administrator
profile
G@MeF@Ce
profile
@wiggles - thanks man, maybe you can help me kill them bugs ^,^
and some compatibility issues with the platformer script.
oh and I used your script template!
and some compatibility issues with the platformer script.
oh and I used your script template!
Administrator
Show Signature
Active Member
Active Member
Active Member
profile
LiTTleDRAgo
profile
is this updated?
it seems not compatible with falling system
it seems not compatible with falling system
Active Member
Show Signature
Administrator
Administrator
Administrator
profile
this could sure use an update, not only for the falling system but for the latest switch leader as well. I still need to get it working so that when a player dies, that trailing events opacity lowers to appear ghost like.
G@MeF@Ce
profile
is this updated?
it seems not compatible with falling system
this could sure use an update, not only for the falling system but for the latest switch leader as well. I still need to get it working so that when a player dies, that trailing events opacity lowers to appear ghost like.
Administrator
Show Signature
Active Member
Active Member
Active Member
profile
LiTTleDRAgo
profile
also, the trailing event can go through a wall / walking in the air should be fixed too
Active Member
Show Signature
Administrator
Administrator
Administrator
profile
G@MeF@Ce
profile
Yeah having a fully functional caterpiller for the ABS would kik@$$!
this being used with XAS makes it more complex. HELP!
haha
this being used with XAS makes it more complex. HELP!
haha
Administrator
Show Signature
Active Member
Active Member
Active Member
profile
LiTTleDRAgo
profile
i trying to edit this, but the character pose seems not working, could someone help me?
----edit----
nevermind, I guess I figured it out
----edit----
nevermind, I guess I figured it out
Active Member
Show Signature
Active Member
Active Member
Active Member
profile
LiTTleDRAgo
profile
test edit
-----removed-----
-----removed-----
Active Member
Show Signature
Go to page : 1, 2, 3
GAMEFACE101 » MEDIA » PLAY with CODE! » PLAY with CODE (scripts and software) » RGSS (RMXP SCRIPTS) »RMXP + XAS = CATERPILLAR!
Similar topics