Últimos temas
» Necesito Charas de Aves para VX
por ChronoTXT Hoy a las 2:17 am

» Ayuda con el temporizador
por navivy Ayer a las 9:44 pm

» Eventos comunes que siga en todo los mapas
por navivy Ayer a las 5:11 pm

» [MV]Butterfly Paradox
por DopellSerch Mar Sep 17, 2019 6:29 am

» INSANE (juego de terror y puzzles)
por GRECO21 Lun Sep 16, 2019 4:25 am

» [Engine Vx Ace] Forzar Cerraduras (Versión 1.3)
por IvalteK_Dev Dom Sep 15, 2019 10:48 pm

» Como cambio esto?...
por Shy_Cream Dom Sep 15, 2019 9:05 pm

» [MV] ¿Cómo mover un sprite?
por DopellSerch Dom Sep 15, 2019 8:14 pm

» Zaza no konpasu (La Brújula de Zaza) [VXACE]
por Pocari Dom Sep 15, 2019 7:17 pm

» Pokemon Destiny
por Xaveguex Dom Sep 15, 2019 7:07 pm

» El Dia Z - Demo
por EdwarPlay Sáb Sep 14, 2019 8:08 pm

» Animación Habilidad de Enemigos RPGMAKER VX ACE
por Metatron Sáb Sep 14, 2019 3:16 am


[VX]Caterpillar/Seguimiento

Ir abajo

[VX]Caterpillar/Seguimiento Empty [VX]Caterpillar/Seguimiento

Mensaje por JapoZero el Lun Feb 10, 2014 5:29 pm

En primer lugar, si no saben que es un script caterpillar,pff xD, en segundo lugar, es el tipico seguir al heroe para los juegos, donde te salen todos los personajes del grupo siguiendo al protagonista, yo lo uso ya que uso vx y no ace, les puede servir, es activable y desactivable:
Para activarlo, hay que activar el interruptor 220, pero pueden cambiarlo en la linea que dice "CATERPILLAR = X". Max Size es el tamaño máximo de la fila de personajes, que también se puede cambiar de la misma manera.

Hecho por Trickster, eitado por Diedrupo de RPGRevolution.

Código:

# 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 = 220

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 10
      @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

MAX_SIZE es para poner la maxima cantidad de seguidores del heroe
CATERPILLAR es el switch que activa/desactiva el script.


Espero que les guste, yo lo uso. Salu2


Última edición por JapoZero el Jue Mayo 28, 2015 1:36 am, editado 1 vez
JapoZero
JapoZero
Héroe
Héroe

Masculino
Chile
RPG Maker : MV
Mensajes : 706
Monedas : 4356
Reputación : 284
Localización : Chile

Volver arriba Ir abajo

[VX]Caterpillar/Seguimiento Empty Re: [VX]Caterpillar/Seguimiento

Mensaje por KRiZaLiD el Jue Mar 06, 2014 2:44 pm

Gracias Japo! este script siempre lo había deseado! La verdad es que no me habia dado el tiempo de buscarlo, pues no le tomé tanta importancia, pero con esto mi proyecto va a quedar mas bonito. xD

gracias de nuevo Japo! te ganaste +1

se despide KRiZ

EDITADO!:
Cuando usé este script, tenía el problema de que los personajes pasaban por debajo de muchos eventos. Por ejemplo, tenia un puente(creado por un evento), y los personajes su prioridad era baja, asi que pasaban por debajo(desaparecian) y sólo me veia mi personaje principal.
De esta manera se soluciona: (gracias a Turbi que me ha enseñado)
Código:
@priority_type = 9999999
 En la linea 99 deben cambiar la prioridad, borran el 0 y escriben 999999 como ven arriba en el código.


Última edición por KRiZaLiD el Jue Mayo 28, 2015 1:38 am, editado 1 vez (Razón : ayuda para arreglar problema)
KRiZaLiD
KRiZaLiD
Moderador
Moderador

Masculino
Chile
RPG Maker : Vx
Mensajes : 856
Monedas : 4331
Reputación : 110
Edad : 34
Localización : Florida (pueblo fantasma), Chile

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.