질문과 답변

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
플러그인 사용 RMXP UNIS 마우스 클릭이 안되는데 어케해야하나요? 마이메이 2021.07.11 63
에러 해결 RMVXA RGSS301.dll 파일 사라짐 오류 이름뭐하지 2023.12.31 63
기타 RMVXA 최대 스킬 수를 제한할 수 있습니까? Arfish 2021.03.18 63
RMVXA (해결) window_selectable 클래스에서 승계받은 몇 개의 클래스가 한 씬에서 모두 작동할 때 1 안나카레리나 2018.08.26 63
에러 해결 RMVX 윈도우 스킨을 바꾸었더니 문자가 표시되지 않습니다 탓카 2019.09.18 63
플러그인 사용 RMMV yep battle action sequence에서 치명타가 떳을때 7 무명시절 2023.02.24 63
플러그인 생성 RMMV RMMV에서 npm 사용하는 방법 (윈도우 바탕화면 변경) 1 LV 2023.05.14 63
플러그인 추천 RMMV 아이템을 조합하는데 사용하는 플러그인이 있나요? 1 pokapoka 2024.07.08 63
플러그인 추천 RMMV MV 인벤토리 변경하는 플러그인이 있을까요? 2 머리큰두두 2023.09.19 64
스크립트 작성 RMMV 아이템을 범위로 제거하거나 얻는것은 어떻게 하나요? 1 kochun51 2020.07.09 64
RMVXA 턴제 전투 중에 키 입력시 이벤트 발생 기폭 2017.01.21 64
에러 해결 RMVXA 이 이벤트를 실행하면 CTRL을 누른 듯이 벽을 통과하고 다른 이벤트들이 실행이 안 됩니다. file 우좌 2019.08.27 64
이벤트 작성 RMMV 타이머관련 질문입니다 1 짓기귀찮아 2021.04.14 64
이벤트 작성 RMVX 인벤토리 조합 어떻게 해요? file 2021.08.21 64
에러 해결 RMMV 플레이 테스트가 실행되지 않습니다 file 참치캔통 2024.04.21 64
기본툴 사용법 RMMV rpg mv 특정맵에서 세이브기능 없애기 2 abang 2023.04.13 64
기본툴 사용법 RMMV mv 스위치 관하여 4 아렌에 2023.04.28 64
RMMV 게임파일은 어디서찾는건가요?? 류넷 2018.06.06 65
턴제 전투 RMMV Luk 관련 상태이상 확률 공식이 궁금합니다. wkdrn33 2020.04.27 65
기타 RMMV 대화창을 두개 띄우는 플러그인인데 동시에 안뜨네요 무명시절 2023.02.06 65
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ... 517 Next
/ 517