Jump to content
Rpg²S Forum

*Caterpillar Script


Larryhazard
 Share

Recommended Posts

Ho cercato nel forum il Caterpillar script, ma non sono riuscito a trovarlo.
Così l'ho cercato su google, e l'ho trovato in questo sito.

Caterpillar Script

Autore: Reone662

Descrizione: Lo script mostra i personaggi del party nella mappa che seguono il personaggio principale.

Istruzioni per l'uso: Aprite una nuova classe sopra il Main e incollate questo

 

 

# train_actor
=begin

Caterpillar walking script

Copyright © 2005 fukuyama

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

[url="http://www.gnu.org/licenses/lgpl.html"]http://www.gnu.org/licenses/lgpl.html[/url]
[url="http://www.opensource.gr.jp/lesser/lgpl.ja.html"]http://www.opensource.gr.jp/lesser/lgpl.ja.html[/url]

=end

# Config.rb
#==============================================================================
# ■ Train_Actor::Config
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================

module Train_Actor
	
	# ●Switch setup for transparent status
	# When true, switch control is used
	# TRANSPARENT_SWITCH = true
	TRANSPARENT_SWITCH = false
	
	# ●Switch number for transparent status
	# When TRANSPARENT_SWITCH is true, transparency will be activated when the switch of this number is on
	TRANSPARENT_SWITCHES_INDEX = 20
	
	# ●Maximum number of actors
	# There will be support for a large number of people in a party in the future...
	TRAIN_ACTOR_SIZE_MAX = 4
	
	# Constants
	DOWN_LEFT = 1
	DOWN_RIGHT = 3
	UP_LEFT = 7
	UP_RIGHT = 9
	JUMP = 5
	
end

# rgss

# Spriteset_Map_Module.rb
#==============================================================================
# ■ Spriteset_Map_Module
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================

module Train_Actor
	
	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 Train_Actor::Spriteset_Map_Module
end

# Scene_Map_Module.rb
#==============================================================================
# ■ Scene_Map_Module
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================

module Train_Actor
	
	module Scene_Map_Module
		def setup_actor_character_sprites(characters)
			@spriteset.setup_actor_character_sprites(characters)
		end
	end
	
end

class Scene_Map
	include Train_Actor::Scene_Map_Module
end

# Game_Party_Module.rb
#==============================================================================
# ■ Game_Party_Module
#------------------------------------------------------------------------------
# Caterpillar movement of actor is carried out on map
#==============================================================================

module Train_Actor
	
	module Game_Party_Module
		attr_reader :characters
		def actors_dead?
			for actor in actors
				if actor.dead?
					return true
				end
			end
			return false
		end
		def update_party_order
			if not actors_dead?
				return actors
			end
			alive_actors = []
			dead_actors = []
			for actor in actors
				if actor.dead?
					dead_actors.push actor
				else
					alive_actors.push actor
				end
			end
			return alive_actors + dead_actors
		end
		def setup_actor_character_sprites
			if @characters.nil?
				@characters = []
				for i in 1 ... TRAIN_ACTOR_SIZE_MAX
					@characters.push(Game_Party_Actor.new)
				end
			end
			setup_actors = update_party_order
			for i in 1 ... TRAIN_ACTOR_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
			if transparent == false
				if TRANSPARENT_SWITCH
					transparent = $game_switches[TRANSPARENT_SWITCHES_INDEX]
				end
			end
			for character in @characters
				character.transparent = transparent
				character.move_speed = $game_player.move_speed
				character.step_anime = $game_player.step_anime
				character.update
			end
		end
		def moveto_party_actors( x, y )
			setup_actor_character_sprites
			for character in @characters
				character.moveto( x, y )
			end
			if @move_list == nil
				@move_list = []
			end
			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 .. TRAIN_ACTOR_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 Train_Actor::Game_Party_Module
		end
		
		# Game_Player_Module.rb
		#==============================================================================
		# ■ Game_Player_Module
		#------------------------------------------------------------------------------
		# Caterpillar movement of actor is carried out on map
		#==============================================================================
		
		module Train_Actor
			
			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|
						if actor.dead?
							next
						end
						@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
				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 Train_Actor::Game_Player_Module
		end
		
		# Game_Event_Module.rb
		#==============================================================================
		# ■ Game_Event_Module
		#------------------------------------------------------------------------------
		# Caterpillar movement of actor is carried out on map
		#==============================================================================
		
		module Train_Actor
			
			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
									if self != $game_player
										# Passing is impossible
										return false
									end
								end
							end
						end
					end
					return result
				end
			end
			
		end
		
		class Game_Event
			include Train_Actor::Game_Event_Module
		end
		
		# Game_Party_Actor.rb
		#==============================================================================
		# ■ Game_Party_Actor
		#------------------------------------------------------------------------------
		# Caterpillar movement of actor is carried out on map
		#==============================================================================
		
		module Train_Actor
			
			class Game_Party_Actor < Game_Character
				attr_writer :move_speed
				attr_writer :step_anime
				
				def initialize
					super()
					@through = true
				end
				def setup(actor)
					# The file name and hue of the character are set
					if actor != nil and (not actor.dead?) # When dead, it is erased for the time being...
						@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
					if turn_enabled
						turn_down
					end
					# 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
					if turn_enabled
						turn_left
					end
					# 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
					if turn_enabled
						turn_right
					end
					# 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
					if turn_enabled
						turn_up
					end
					# 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

 



Bugs e Conflitti Noti: Per quanto ne so, nessuno.

Edited by Dilos
Script monoriga sistemato.

Citazioni varie:

 

 

"Ah, noi del 2000, avevamo Twilight, Justin Bieber, siamo stati i primi su facebook, quanto siamo fighi noi, altro che questi ragazzini del 2020 che si drogano con la realtà virtuale via AmuSphere o usano il teletrasporto invece di andare in motorino come facevamo noi."

 

<< Se un uomo è questo il giorno, e la mia ascia.>>

Meo Verrocchio

 

<<Not a lot of people know what it feels like to be angry, in your bones. I mean, they understand, foster parents, everybody understands, for awhile. Then they want the angry little kid to do something he knows he can't do, move on. So after awhile they stop understanding.>>

 

«boia ma c'avete una bella faccia a dire che il metal è una truffa! Ma se da un pò di tempo a questa parte non fate altro che rompere il cazzo ai poveri ascoltatori onesti di musica brutta che vorrebbero solo esser lasciati n pace mentre sragionate dello sghoegaze e dei vostri trend da finocchi. A me pare che aa vera truffa sono i nerd che non hanno mai sentito un disco di ozzy osbourne o che fino a l'anno scorso non avevano presente nemmeno una canzone dei black sabbath ma che ora incensano gli earth e i gli sleep perchè va di moda il doom sulle riviste fiche. Questa sì che è gente che mi fa incazzare. I metallari panzoni che ascoltano il viching invece mi fanno al più tenerezza nella loro sfiga.

Bravi andate tutti a parlare di come son fenomeni i boris perché fanno i dischi con merzbow e "OH MIO DIO COME SONO SPERIMENTALI\RIBELLICHIC" però mi raccomando continuate a pensare che i death sono doom e che slogun è uno che suona con giuliano palma.

Se c'è qualcuno che magari come me con certe cose metal ci è cresciuto spero che detesterà quanto me questa tendenza di trovare gruppi metal giusti da rivalutare perché c'hanno influenze funky\trip hop\ska e quindi sono geni della sperimentazione e tardi panzoni che fanno semplicemente la loro musica e non si meritano nulla visto che non c'hanno la copertina su blow up.

L'unica cosa che vi meritate è zingales.»

 

<<It’s bullshit like “Oh man, you’re a geek now, but just bear with it! Once you’re outta high school away from all these jocks you’re gonna RUN SHIT” that makes the veins in my forehead want to be outside of my fucking skin. Most people quickly realize that life is not a movie sometime shortly after high school or college. Many geeky, nerdy people do not because we have Special Snowflake Syndrome. We’re different or told that we’re different and we think that somehow things will balance out cosmically. We’ll get the girl or guy or anime body pillow. We’ll have the money and success. We’ll be the ones who are happy. And that will happen because…well, we had a rough time in the beginning so it will equal out cuz…magic! What you need to do is take off your “The Geek Shall Inherit the Earth” tshirt, put a bar of soap in it, twist it up, and then beat your fucking face in with it. You will not be handed anything because you were awkward and quirky growing up. Well, unless you’re a girl with that highly marketable Felicia Day-quirk… then you might get to date a dickhead for a year or two and more followers on Instagram than your male counterpart of equal or lesser value.>>

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...