질문과 답변

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 12458
기타 RMMV 전투를 시작하면 파티는 혼자인데 2명이 추가되서 나와요. ㅜㅜ 1 자유와바람 2021.03.30 45
기타 RMVXA 스타처럼 건물생성 1 소커 2021.03.26 41
기타 RMMV 스샷처럼 HP바 설정하는거 어떻게 하는지 아시나요? 카르네스아리엔 2020.12.31 92
기타 RMVXA 스킬을 mp 대신 hp를 소모시키게 할 수 있나요? 1 겜만들고싶다앙 2021.01.01 122
기타 RMMV 기록하는 플러그인있나요? 1 백월화(白月華) 2023.03.26 39
기타 RMMV 타이틀 화면 질문 2 한빛님 2019.11.19 366
기타 사이트 이용 갑자기 아방스에서 차단 당했다고 떴었는데 8ㅇ8 왜그런거죠 폴트 2021.01.01 145
기타 RMVXA vx ace) 특수 플래그 '대타(대리)'를 모티브 삼아 새로운 스킬을 만들고 싶습니다 5 게임이만들고파 2020.12.29 99
기타 RMMV 기본 캐릭터 크기를 늘리는 방법을 알고 싶습니다. 3 Ri노 2019.11.20 171
기타 RMMV 메뉴창의 몇몇 것 들을 지우고 제 마음대로 나오게 하고 싶어요. 1 file 퐁핑퐁 2019.07.27 196
기타 RMMV 번들 적용법좀 알려주세요~ 1 yessky 2020.02.22 103
기타 RMXP 혹시 이 일본 스크립트 사이트들 스크립트 소장하고 계신분 계신가요? 오늘밤어때 2019.02.27 95
기타 RMMV 특정 직업의 특정 게이지바를 삭제하고 싶어요 2 투캉 2019.02.16 116
기타 RMMV 타이틀 화면을 직접 만들고싶어요. 2 file 퐁핑퐁 2019.11.18 350
기타 RMVXA 테두리색을 바꾸면 굵기도 바뀌고 폰트가 적용이 안됩니다.. 3 file 스피아 2019.03.01 360
기타 RMMV Rpg maker mv를 사용하는 초보자 입니다 9 꽃돼지 2019.03.06 245
기타 RMVXA 흑백 스킬 애니메이션을 만들었는데 검은 색이 계속 투명처리가 됩니다 2 file 오황불 2020.12.31 89
기타 툴선택 Inside 같은 3d 횡스크롤 게임 만들려면 뭐를 공부해야할까요? 1 몬티파이톤 2018.12.25 165
기타 툴선택 mv vs vx ace 2 이나다 2018.12.25 621
기타 RMMV 맵 이동뒤에 플래이어 캐릭터가 움직이지 않아요 2 미이인트 2018.12.27 95
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ... 83 Next
/ 83