Sign in to follow this  
Followers 0
xXDarkDragonXx

[RMVX] Seguimiento al Héroe

9 posts in this topic

[center]Seguimiento al Héroe[/center]
[center]VERSION: 1.0[/center]

INTRODUCCIÓN

Hace que los aliados que tengas en el grupo sigan al héroe principal (ese que manejas por el mapa).

CARACTERÍSTICAS
  • Permite poner la máxima cantidad de aliados a seguirte; por defecto: 8
  • Permite activar y desactivar el seguimiento; por defecto el interruptor es el 2
SCREENSHOT

user posted image

DEMO

No hace falta. xD.png

SCRIPT

[spoiler]
CODE
 # MAX_SIZE is the max size of the followers.
 # CATERPILLAR is the switch to turn on or off followers. The default is 2
 #--------------------------------------------------------------------------
 # * Constants
 #--------------------------------------------------------------------------
 MAX_SIZE = 8
 CATERPILLAR = 2

class Game_Player
 #--------------------------------------------------------------------------
 # * Move Down
 #     turn_enabled : a flag permits direction change on that spot
 #--------------------------------------------------------------------------
 def move_down(turn_enabled = true)    
   super(turn_enabled)
 end
 #--------------------------------------------------------------------------
 # * Move Left
 #     turn_enabled : a flag permits direction change on that spot
 #--------------------------------------------------------------------------
 def move_left(turn_enabled = true)
   super(turn_enabled)
 end
 #--------------------------------------------------------------------------
 # * Move Right
 #     turn_enabled : a flag permits direction change on that spot
 #--------------------------------------------------------------------------
 def move_right(turn_enabled = true)
   super(turn_enabled)
 end
 #--------------------------------------------------------------------------
 # * Move up
 #     turn_enabled : a flag permits direction change on that spot
 #--------------------------------------------------------------------------
 def move_up(turn_enabled = true)
   super(turn_enabled)
 end
 #--------------------------------------------------------------------------
 # * Move Lower Left
 #--------------------------------------------------------------------------
 def move_lower_left
   super
 end
 #--------------------------------------------------------------------------
 # * Move Lower Right
 #--------------------------------------------------------------------------
 def move_lower_right
   super
 end
 #--------------------------------------------------------------------------
 # * Move Upper Left
 #--------------------------------------------------------------------------
 def move_upper_left
   super
 end
 #--------------------------------------------------------------------------
 # * Move Upper Right
 #--------------------------------------------------------------------------
 def move_upper_right
   super
 end
end

class Game_Follower < Game_Character
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_reader   :actor
 attr_accessor :move_speed
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(actor)
   super()
   @through = true
   @actor = actor
 end
 #--------------------------------------------------------------------------
 # * Set Actor
 #--------------------------------------------------------------------------
 def actor=(actor)
   @actor = actor
   setup
 end
 #--------------------------------------------------------------------------
 # * Setup
 #--------------------------------------------------------------------------
 def setup
   if @actor != nil      
     @character_name = $game_actors[@actor].character_name
     @character_index = $game_actors[@actor].character_index
   else
     @character_name = ""
     @character_index = 0
   end
   @opacity = 255
   @blend_type = 0
   @priority_type = 0
 end
 
 #--------------------------------------------------------------------------
 # * Screen Z
 #--------------------------------------------------------------------------
 def screen_z
   if $game_player.x == @x and $game_player.y == @y
     return $game_player.screen_z - 1
   end
   super
 end
 #--------------------------------------------------------------------------
 # * Same Position Starting Determinant (Disabled)
 #--------------------------------------------------------------------------
 def check_event_trigger_here(triggers)
   result = false
   return result
 end
 #--------------------------------------------------------------------------
 # * Front Envent Starting Determinant (Disabled)
 #--------------------------------------------------------------------------
 def check_event_trigger_there(triggers)
   result = false
   return result
 end
 #--------------------------------------------------------------------------
 # * Touch Event Starting Determinant (Disabled)
 #--------------------------------------------------------------------------
 def check_event_trigger_touch(x, y)
   result = false
   return result
 end
end

class Spriteset_Map
 alias_method :spriteset_map_create_characters, :create_characters
 def create_characters
   spriteset_map_create_characters
   $game_party.followers.each do |char|
     @character_sprites << Sprite_Character.new(@viewport1, char)
   end
 end
end

class Game_Party

 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_reader :followers
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_party_initialize, :initialize
 def initialize
   trick_caterpillar_party_initialize
   @followers = Array.new(MAX_SIZE - 1) {Game_Follower.new(nil)}
   @move_list = []
 end
 #--------------------------------------------------------------------------
 # * Update Followers
 #--------------------------------------------------------------------------
 def update_followers
   flag = $game_player.transparent || $game_switches[CATERPILLAR]
   @followers.each_with_index do |char, i|
     char.actor = @actors[i + 1]
     char.move_speed = $game_player.move_speed
     if $game_player.dash?
       char.move_speed += 1
     end
     char.update
     char.transparent = flag
   end
 end
 #--------------------------------------------------------------------------
 # * Move To Party
 #--------------------------------------------------------------------------
 def moveto_party(x, y)
   @followers.each {|char| char.moveto(x, y)}
   @move_list.clear
 end
 #--------------------------------------------------------------------------
 # * Move Party
 #--------------------------------------------------------------------------
 def move_party
   @move_list.each_index do |i|
     if @followers[i] == nil
       @move_list[i...@move_list.size] = nil
       next
     end
     case @move_list[i].type
     when 2
       @followers[i].move_down(*@move_list[i].args)
     when 4
       @followers[i].move_left(*@move_list[i].args)
     when 6
       @followers[i].move_right(*@move_list[i].args)
     when 8
       @followers[i].move_up(*@move_list[i].args)
     when j
       @followers[i].move_lower_left
     when 3
       @followers[i].move_lower_right
     when 7
       @followers[i].move_upper_left
     when 9
       @followers[i].move_upper_right
     when 5
       @followers[i].jump(*@move_list[i].args)
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Add Move List
 #--------------------------------------------------------------------------
 def update_move(type, *args)
   move_party
   @move_list.unshift(Game_MoveListElement.new(type, args))
 end
end

class Game_MoveListElement
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(type, args)
   @type = type
   @args = args
 end
 #--------------------------------------------------------------------------
 # * Type
 #--------------------------------------------------------------------------
 def type
   return @type
 end
 #--------------------------------------------------------------------------
 # * Args
 #--------------------------------------------------------------------------
 def args
   return @args
 end
end

class Game_Player
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_reader :move_speed
 
 #--------------------------------------------------------------------------
 # * Update
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_update, :update
 def update
   $game_party.update_followers
   trick_caterpillar_player_update
 end
 #--------------------------------------------------------------------------
 # * Moveto
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_moveto, :moveto
 def moveto(x, y)
   $game_party.moveto_party(x, y)
   trick_caterpillar_player_moveto(x, y)
 end
 #--------------------------------------------------------------------------
 # * Move Down
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_move_down, :move_down
 def move_down(turn_enabled = true)
   if passable?(@x, @y+1)
     $game_party.update_move(2, turn_enabled)
   end    
   trick_caterpillar_player_move_down(turn_enabled)    
 end
 #--------------------------------------------------------------------------
 # * Move Left
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_move_left, :move_left
 def move_left(turn_enabled = true)
   if passable?(@x-1, @y)
     $game_party.update_move(4, turn_enabled)
   end
   trick_caterpillar_player_move_left(turn_enabled)
 end
 #--------------------------------------------------------------------------
 # * Move Right
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_move_right, :move_right
 def move_right(turn_enabled = true)
   if passable?(@x+1, @y)
     $game_party.update_move(6, turn_enabled)
   end
   trick_caterpillar_player_move_right(turn_enabled)
 end
 #--------------------------------------------------------------------------
 # * Move Up
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_move_up, :move_up
 def move_up(turn_enabled = true)
   if passable?(@x, @y-1)
     $game_party.update_move(8, turn_enabled)
   end
   trick_caterpillar_player_move_up(turn_enabled)
 end
 #--------------------------------------------------------------------------
 # * Move Lower Left
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_move_lower_left, :move_lower_left
 def move_lower_left
   if passable?(@x - 1, @y) and passable?(@x, @y + 1)
     $game_party.update_move(1)
   end
   trick_caterpillar_player_move_lower_left
 end
 #--------------------------------------------------------------------------
 # * Move Lower Right
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_move_lower_right, :move_lower_right
 def move_lower_right
   if passable?(@x + 1, @y) and passable?(@x, @y + 1)
     $game_party.update_move(3)
   end
   trick_caterpillar_player_move_lower_right
 end
 #--------------------------------------------------------------------------
 # * Move Upper Left
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_move_upper_left, :move_upper_left
 def move_upper_left
   if passable?(@x - 1, @y) and passable?(@x, @y - 1)
     $game_party.update_move(7)
   end
   trick_caterpillar_player_move_upper_left
 end
 #--------------------------------------------------------------------------
 # * Move Upper Right
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_move_upper_right, :move_upper_right
 def move_upper_right
   if passable?(@x + 1, @y) and passable?(@x, @y - 1)
     $game_party.update_move(9)
   end
   trick_caterpillar_player_move_upper_right
 end
 #--------------------------------------------------------------------------
 # * Jump
 #--------------------------------------------------------------------------
 alias_method :trick_caterpillar_player_jump, :jump
 def jump(x_plus, y_plus)
   new_x = @x + x_plus
   new_y = @y + y_plus
   if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y)
     $game_party.update_move(5, x_plus, y_plus)
   end
   trick_caterpillar_player_jump(x_plus, y_plus)
 end
end
[/spoiler]

INSTRUCCIONES

Simplemente coloca el script arriba de Main y edita a tu gusto lo siguiente:

CODE
 # MAX_SIZE is the max size of the followers.
 # CATERPILLAR is the switch to turn on or off followers. The default is 2
 #--------------------------------------------------------------------------
 # * Constants
 #--------------------------------------------------------------------------
 MAX_SIZE = 8
 CATERPILLAR = 2


MAX_SIZE - Máximo de aliados que pueden seguir al héroe principal
CATERPILLAR - Interruptor que activa o desactiva el sistema

CRÉDITOS

Trickster, Diedrupo por la conversión. Edited by Fegarur
0

Share this post


Link to post
Share on other sites
Aver, si enciendo el interruptor de CATERPILLAR, los aliados dejan de seguirme, o si lo enciendo me siguen, O.o?
0

Share this post


Link to post
Share on other sites
Sin probarlo, supongo que será que con el interruptor encendido te siguen, y con él apagado dejan de seguirte.
0

Share this post


Link to post
Share on other sites
no funciona con los personajes del Xp
0

Share this post


Link to post
Share on other sites
A mi n me funciona... y eso k antes si lo hacia
0

Share this post


Link to post
Share on other sites
Si no nos cuentas nada más es difícil que podamos ayudarte. Por si era eso, arreglé la codificación del primer post donde está el script.
0

Share this post


Link to post
Share on other sites

Hola, tengo un problema, resulta que el script me funciona muy bien, pero cuando tengo este otro script activo:

 

http://vz4.net/foro/index.php/topic/5220-sonido-de-pisadas/

 

pues dejan de funcionarme, los 2, si activo el interruptor para que me siga el perosnaje mio ni se mueve, y en el otro sccript pues no se oyen las pisadas.

0

Share this post


Link to post
Share on other sites

Estoy seguro , lo que es - una forma falsa .

 

0

Share this post


Link to post
Share on other sites

La pregunta es interesante, yo tambien voy a participar en el debate . Juntos podemos llegar a una respuesta correcta. Estoy seguro .

 

0

Share this post


Link to post
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
Sign in to follow this  
Followers 0