질문과 답변

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 12387
기타 RMVXA 애니메이션 끊김현상 문제 file 랑브 2022.05.11 148
플러그인 사용 RMMV "특정이름을 입력했을 때 이벤트 발생하기" 질문입니다! 2 소랭소랭 2021.01.26 148
이벤트 작성 RMMV 스위치를 내리고 다시 켰을때, 이벤트의 커스텀 경로를 초기화 하고 싶습니다. 1 file 겐마 2020.09.29 148
플러그인 추천 RMMV Hp와 TP 바 등등 그래픽 수정하는 법/텍스트 효과음 BLT 2020.05.19 148
기본툴 사용법 RMVX 데미지 공식을 바꾸고싶어요 3 백말띠 2019.09.25 148
이벤트 작성 RMMV 플레이어 주위만 밝게 만들 때 문제점 3 file 소녀160 2019.05.20 148
기본툴 사용법 RMVXA 맵칩 인테리어 배경 1 vxa초보자님 2019.04.05 148
RMVX 도시맵 블록 4 키작은꼬마 2017.02.21 148
RMVX 전투화면에 캐릭터 스프라이트 그래픽 넣는 방법 파란손만두 2016.08.06 148
RMVXA 8방향 모션 설정하고 싶습니다. 1 raco 2016.06.24 148
RMXP 게임오류 2 file A방스방스 2016.03.19 148
RMVXA end가 몇개 필요하죠? 5 게임잘날아가는닝겐 2015.09.20 148
RMVXA 이벤트위에 가만히 서있어도 이벤트가 동작하는법 1 가시밭 2015.06.10 148
액션 전투 RMMV 이거 왜 두번 데미지 들어가는걸까요? 2 file 건빵빠 2020.03.25 148
RMVXA 몬스터가 주인공과 접촉시 몬스터가 총 움직인 거리 구하기! 3 file 니꺼해 2017.06.11 148
기타 MV에서 apk로 변환하려는데, intel XDK가 이상하네요 3 file pdm0822 2017.10.08 148
RMXP 알만툴xp RpgmakerXP 대화창 질문 file Paragas 2018.03.23 148
턴제 전투 RMVXA 전투에서 바꾸는기능 추가? 4 현작가 2022.02.21 148
스크립트 작성 RMMV 타이틀 메뉴 나가기 활성화 1 원혁 2021.05.23 147
기본툴 사용법 RMVXA 캐릭터 그래픽체인지 질문 3 file twrr 2019.07.12 147
Board Pagination Prev 1 ... 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 ... 516 Next
/ 516