Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Caterpillar system help

Cait

Member

I decided to use the script from RPG Advocates site, but I kept getting errors. The one I keep getting is for the "Script 'game party' line 445: SyntaxError" All the line reads is "end" and when I delete that one, I get another error, except for the one above it. Which reads the same thing, I am obviously doing something wrong, but for the life of me, I can't figure out what. I added the two sections above "Main", and put the new scripts in the ones with the same name, except the "Module_Game_Player" which I have in its own section above main.
 

Cait

Member

Thanks to some thinking, and redoing the entire thing, I got past my original error. So I was able to start a test game, but when I tried to start a new game, it read a new error. This one, in the picture.

http://img.photobucket.com/albums/v489/ ... /Error.png[/IMG][/IMG]


So, I checked the script, it was this part in the additional parts that I had recently added.

# ------------------------------------
def moveto( x, y )
super
(47) $game_party.moveto_party_actors( x, y )
end
# ------------------------------------

It says that is a "NoMethodError"
 

khmp

Sponsor

Wait I think you installed it wrong Cait. Could you post the code of the caterpillar script or a link to where it can be found? And you should fix the Game_Player by copying the code from an unaltered Game_Player script and pasting over the one you just changed.
 

khmp

Sponsor

You don't need to edit any pre-existing scripts to get this to work. I think there's a more simplistic script to accomplish this task. That aside I want you to replace all the scripts you changed to install this script, with the corresponding originals. Insert an empty code section in the script editor right above Main and paste the following:

Code:
TRAIN_ACTOR_TRANSPARENT_SWITCH = true
TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX = 20
# ------------------------------------
DOWN_LEFT  = 1
DOWN_RIGHT = 3
UP_LEFT    = 7
UP_RIGHT  = 9
JUMP      = 5
# ------------------------------------
class Game_Party_Actor < Game_Character
# ------------------------------------
  def initialize
    super()
    @through = true
  end
# ------------------------------------
  def setup(actor)
    if actor != nil
      @character_name = actor.character_name
      @character_hue = actor.character_hue
    else
      @character_name = ""
      @character_hue = 0
    end
    @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
# ------------------------------------  
  def move_down(turn_enabled = true)
    if turn_enabled
      turn_down
    end
    if passable?(@x, @y, Input::DOWN)
      turn_down
      @y += 1
    end
  end
# ------------------------------------ 
  def move_left(turn_enabled = true)
    if turn_enabled
      turn_left
    end
    if passable?(@x, @y, Input::LEFT)
      turn_left
      @x -= 1
    end
  end
# ------------------------------------
  def move_right(turn_enabled = true)
    if turn_enabled
      turn_right
    end
    if passable?(@x, @y, Input::RIGHT)
      turn_right
      @x += 1
    end
  end
# ------------------------------------ 
  def move_up(turn_enabled = true)
    if turn_enabled
      turn_up
    end
    if passable?(@x, @y, Input::UP)
      turn_up
      @y -= 1
    end
  end
# ------------------------------------
  def move_lower_left
    unless @direction_fix
      @direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input::DOWN : @direction)
    end
    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))
      @x -= 1
      @y += 1
    end
  end
# ------------------------------------ 
  def move_lower_right
    unless @direction_fix
      @direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input::DOWN : @direction)
    end
    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))
      @x += 1
      @y += 1
    end
  end
# ------------------------------------ 
  def move_upper_left
    unless @direction_fix
      @direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::DOWN ? Input::UP : @direction)
    end
    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))
      @x -= 1
      @y -= 1
    end
  end
# ------------------------------------
  def move_upper_right
    unless @direction_fix
      @direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::DOWN ? Input::UP : @direction)
    end
    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))
      @x += 1
      @y -= 1
    end
  end
# ------------------------------------
  def set_move_speed(move_speed)
    @move_speed = move_speed
  end
end

class Spriteset_Map
# ------------------------------------
  def setup_actor_character_sprites?
    return @setup_actor_character_sprites_flag != nil
  end
# ------------------------------------
  def setup_actor_character_sprites(characters)
    if !setup_actor_character_sprites?
      index_game_player = 0
      @character_sprites.each_index do |i|
        if @character_sprites[i].character.instance_of?(Game_Player)
          index_game_player = i
          break
        end
      end
      for character in characters.reverse
        @character_sprites.unshift(
          Sprite_Character.new(@viewport1, character)
        )
      end
      @setup_actor_character_sprites_flag = true
    end
  end
end

class Scene_Map
# ------------------------------------
  def setup_actor_character_sprites(characters)
    @spriteset.setup_actor_character_sprites(characters)
  end
end

class Game_Party
# ------------------------------------
  def set_transparent_actors(transparent)
    @transparent = transparent
  end
# ------------------------------------
  def setup_actor_character_sprites
    if @characters == nil
      @characters = []
      for i in 1 .. 4
        @characters.push(Game_Party_Actor.new)
      end
    end
    if @actors_chach == nil
      @actors_chach = []
    end
    if @actors_chach != @actors
      @actors_chach = @actors.clone
      for i in 1 .. 4
        @characters[i - 1].setup(actors[i])
      end
    end
    if $scene.instance_of?(Scene_Map)
      $scene.setup_actor_character_sprites(@characters)
    end
  end
# ------------------------------------
  def update_party_actors
    setup_actor_character_sprites
    transparent = $game_player.transparent
    if transparent == false
      if TRAIN_ACTOR_TRANSPARENT_SWITCH
        transparent = $game_switches[TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX]
      else
        transparent = $game_player.transparent
      end
    end
    for character in @characters
      character.transparent = transparent
      character.set_move_speed($game_player.get_move_speed)
      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
    for i in 0 .. 10
      @move_list[i] = nil
    end
  end
  def move_party_actors
    if @move_list == nil
      @move_list = []
      for i in 0 .. 10
        @move_list[i] = nil
      end
    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 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

module Game_Player_Module
# ------------------------------------
  def update
    $game_party.update_party_actors
    super
  end
# ------------------------------------
  def moveto( x, y )
    super
    $game_party.moveto_party_actors( 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
    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
    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
    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
    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_x = @x + x_plus
    new_y = @y + y_plus
    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
# ------------------------------------
 def get_move_speed
    return @move_speed
  end
end

class Game_Player
  include Game_Player_Module
end
 

Cait

Member

I did, exactly as you said, and used the joined code. Worked, immediately with no errors whatsoever. Thank you so much. It was so much easier than the other one.
 

Cait

Member

Argh! Here's a new one for you. How about you get a treasure chest, and the other character(s) in your party vanish? Even when you leave the screen, they don't come back again. It's odd, because I thought it was the variables I was using in the chest. However, they disappear even when I changed the chest. Any ideas on this one?

UPDATE: I figured out the problem that the system doesn't like switches, in the chest, and think that solved my problem. I don't know when I face other things like cut scenes or things of that nature. I deal with it, I suppose.

Odd update: Strange is that it is only one a single map, that doesn't like switches. I swear!
 
hey i got the same script and it works fine and stuff ty for that but..... i have cutscenes where my plaer is invisable but now my followers are not so what should i do???? I was thinking mabe i could just put an event for when you enter towns the script gets activated but any help would be nice :D
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top