[Script VX]Caterpillar (aliados te siguen)

Ir abajo

[Script VX]Caterpillar (aliados te siguen) Empty [Script VX]Caterpillar (aliados te siguen)

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

Creado por: Trickster. Editado por Diedrupo de RPGRevolution.
Función: Permite que se vean los aliados en mapa y te sigan. MAX_SIZE es el número máximo de aliados que te siguen, 4 por defecto. CATERPILLAR es el interruptor que debes activar para que funcione el script. 5 por defecto.
Código:

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

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 Miér Feb 05, 2020 5:46 am, editado 2 veces
JapoZero
JapoZero
Héroe
Héroe

Masculino
Chile
RPG Maker : MV
Mensajes : 804
Monedas : 4031
Reputación : 301
Localización : Chile

Volver arriba Ir abajo

[Script VX]Caterpillar (aliados te siguen) Empty Re: [Script VX]Caterpillar (aliados te siguen)

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 : 877
Monedas : 4356
Reputación : 114
Edad : 34
Localización : Florida (pueblo fantasma), Chile

Volver arriba Ir abajo

Volver arriba


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