질문과 답변

Extra Form

파티원에 들어왔을때 캐릭터따라와야되잟아요

어떻게해야되죠?

Comment '2'
  • ?
    케로로 2010.11.27 10:58

    최강전사님이 제공해주신 스크립트이면 아방스님이 올려주셧습니다.

    이 아래의 여백을 스크립트 에디터에 삽입하여 주시면 되겠습니다

     

     

     

    #==============================================================================
    # ■ Member_Train
    #------------------------------------------------------------------------------
    #  동료를 기차처럼 나란히 따라오게 만드는 클레스입니다.
    #==============================================================================

    module Train_Actor

    # ●투명상태용 스윗치 설정
    # true 라면 스윗치 제어를 실시한다
    # TRANSPARENT_SWITCH = true
    TRANSPARENT_SWITCH = false

    # ●투명상태용 스윗치 번호
    # TRANSPARENT_SWITCH 가 true 로 , 이 번호의 스윗치가 ON라면 투명하게 된다
    TRANSPARENT_SWITCHES_INDEX = 20

    # ●엑터의 최대수
    # 장래적으로 많은 사람 파티를 생기게 되면…
    TRAIN_ACTOR_SIZE_MAX = 4

    # 정수
    #Input::DOWN  = 2
    #Input::LEFT  = 4
    #Input::RIGHT = 6
    #Input::UP    = 8
    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
        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
           (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

      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
          @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))
          $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

    # Train_Actor

  • ?
    이치노세 2010.11.29 18:09

    239번째줄이이상하다고

    안되던데 왜그거져?


List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12384
RMXP 캐릭터가 가만히 서있을 때 움직이게 하는 방법을 알려주세요.ㅜ 2 나는청춘 2011.10.20 2476
RMVX (rpgvx)기차스크립트 사용법(스크립트 사용법) 5 ba람이 2011.10.19 2027
RMVX VX 윈도우7에서 테스트플레이시... 3 Luciel 2011.10.19 1959
GM 반복 1 Jhon 2011.10.18 1742
RMXP [스크립트] 주인공 이름 표시 일시적으로 안되게 하기 2 뮤리온。 2011.10.17 1168
기타 우스이의 회 홈페이지 주소... 1 허브한잎 2011.10.17 2299
RMXP RPG XP에서 RPG2k, RPG2k3 BGM 사용하기 (mid파일) 2 뮤리온。 2011.10.17 2639
RMXP 아오오니같은 게임만들때.... 3 이지눙 2011.10.17 2801
RMXP XP버전에서 얼굴그래픽 넣는 방법 2 m양 2011.10.16 2334
RMVX rpg vx 벽만들기 1 판다냐옹 2011.10.15 2050
RMVX 스크립트 쓸때 alias 1 EuclidE 2011.10.15 1561
GM rpg만들기 제일쉬운거 4 cerod 2011.10.14 1911
RMXP 스크립트폍집기에서 1 곱등이틀러 2011.10.12 2182
RMVX vampyr SBABS-Requiem ABS 9버전 오류.. 다시올립니다. 3 이런게상세 2011.10.12 2291
기타 아방스에서 완성작게임자료실,일반게임자료실의 차이점은 무엇인가요? 1 라유 2011.10.12 1185
RMVX 스크립트 짜기 12 Jhon 2011.10.11 1474
RMXP XP게임 만들기 질문이요!! 2 로돌프 2011.10.10 1838
RMXP 윈도우7의 알만툴XP 페이드아웃 오류 1 겨울별 2011.10.10 3020
RMVX 도감 스크립트 추가질문입니다. 1 라스트루마 2011.10.10 1675
RMVX 액션 알피지에 대해.... 1 꼬마게이머 2011.10.09 1838
Board Pagination Prev 1 ... 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 ... 515 Next
/ 515