rpgmaker吧 关注:13,878贴子:24,447
  • 11回复贴,共1

求让人物跟在主角后面得脚本

只看楼主收藏回复

求让人物跟在主角后面得脚本,最好直接发,不要告诉网站


1楼2011-08-09 17:57回复
    我也想知啊555- -、


    2楼2011-08-09 18:23
    回复
      2025-06-22 03:36:04
      广告
      要XP的还是VX的?


      IP属地:广西来自手机贴吧3楼2011-08-09 21:02
      回复
        度娘啊你连脚本也不让我发么难道里面有广告么?= =
        只能委屈你留个邮箱了= =


        4楼2011-08-10 00:07
        回复
          脚本来啦~~~~~~~~~
          脚本功能
          实现了让自己的队友跟在你后面的效果,以前的勇者斗恶龙是这样子的吧……还有仙剑1等经典游戏
          使用方法
          复制全部脚本内容,在Main脚本之前按insert,插入此脚本全部内容。
          注意!如果要在游戏中关闭跟随,请参考脚本注释!
          --------------------------------------------------------------------------------
          脚本内容
          #==============================================================================
          # 本脚本来自www.66RPG.com,使用和转载请保留此信息
          #==============================================================================
          # ————————————————————————————————————
          # ▼▲▼ XRXS13. パーティ列车移动 ver.1.02 ▼▲▼
          # by fukuyama
          #
          # Train_Actor
          #
          # fukuyama@alles.or.jp
          # http://www4.big.or.jp/~fukuyama/rgss/Train_Actor.txt
          #
          module Train_Actor
          #是否使用停止跟随的方法,也就是说,这里false改为true的时候,如果TRANSPARENT_SWITCHES_INDEX
          #开关打开,跟随的人物就消失了(其实只是变成透明而已)
          TRANSPARENT_SWITCH = false
          TRANSPARENT_SWITCHES_INDEX = 20
          #举例:第一个为true,第二个为20,则打开20号开关,后面的人都没了。
          #跟随人数的最大数目,可以更改为2、3什么的。
          TRAIN_ACTOR_SIZE_MAX = 4
          # 定数
          #Input::DOWN = 2
          #Input::LEFT = 4
          #Input::RIGHT = 6
          #Input::UP = 6
          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
          #--------------------------------------------------------------------------
          # ● 下に移动
          # turn_enabled : その场での向き変更を许可するフラグ
          #--------------------------------------------------------------------------
          def move_down(turn_enabled = true)
          # 下を向く
          if turn_enabled
          turn_down
          end
          # 通行可能な场合
          if passable?(@x, @y, Input::DOWN)
          # 下を向く
          turn_down
          # 座标を更新
          @y += 1
          


          5楼2011-08-10 00:50
          回复
            end
            end
            #--------------------------------------------------------------------------
            # ● 左に移动
            # turn_enabled : その场での向き変更を许可するフラグ
            #--------------------------------------------------------------------------
            def move_left(turn_enabled = true)
            # 左を向く
            if turn_enabled
            turn_left
            end
            # 通行可能な场合
            if passable?(@x, @y, Input::LEFT)
            # 左を向く
            turn_left
            # 座标を更新
            @x -= 1
            end
            end
            #--------------------------------------------------------------------------
            # ● 右に移动
            # turn_enabled : その场での向き変更を许可するフラグ
            #--------------------------------------------------------------------------
            def move_right(turn_enabled = true)
            # 右を向く
            if turn_enabled
            turn_right
            end
            # 通行可能な场合
            if passable?(@x, @y, Input::RIGHT)
            # 右を向く
            turn_right
            # 座标を更新
            @x += 1
            end
            end
            #--------------------------------------------------------------------------
            # ● 上に移动
            # turn_enabled : その场での向き変更を许可するフラグ
            #--------------------------------------------------------------------------
            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
            


            6楼2011-08-10 00:50
            回复
              (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)
              


              7楼2011-08-10 00:50
              回复
                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
                


                8楼2011-08-10 00:50
                回复
                  2025-06-22 03:30:04
                  广告
                  end
                  end
                  attr_writer :move_speed
                  attr_writer :step_anime
                  end
                  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?
                  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
                  module Scene_Map_Module
                  def setup_actor_character_sprites(characters)
                  @spriteset.setup_actor_character_sprites(characters)
                  end
                  end
                  module Game_Party_Module
                  def set_transparent_actors(transparent)
                  @transparent = transparent
                  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
                  for i in 1 ... TRAIN_ACTOR_SIZE_MAX
                  @characters[i - 1].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
                  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
                  


                  9楼2011-08-10 00:50
                  回复
                    @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
                    module Game_Player_Module
                    def update
                    $game_party.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
                    # 下→左、左→下 のどちらかのコースが通行可能な场合
                    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))
                    


                    10楼2011-08-10 00:50
                    回复
                      $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
                      # 加算値が (0,0) の场合か、ジャンプ先が通行可能な场合
                      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
                      attr_reader :move_speed
                      attr_reader :step_anime
                      end
                      end # module Train_Actor
                      class Game_Party
                      include Train_Actor::Game_Party_Module
                      end
                      class Game_Player
                      include Train_Actor::Game_Player_Module
                      end
                      class Spriteset_Map
                      include Train_Actor::Spriteset_Map_Module
                      end
                      class Scene_Map
                      include Train_Actor::Scene_Map_Module
                      end
                      #==============================================================================
                      # 本脚本来自www.66RPG.com,使用和转载请保留此信息
                      #==============================================================================
                      


                      11楼2011-08-10 00:50
                      回复
                        谢谢拉


                        12楼2011-08-10 11:25
                        回复