질문과 답변

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
스크립트 사용 RMMV (해결)Alert 사용 후 이벤트가 클릭도 안했는데 스킵됩니다ㅜㅜ 2 file STRS 2019.06.14 130
이벤트 작성 RMMV 뭐가 문제일까요 1 file 이나다 2019.03.04 130
RMVXA Rpg maker vxa 스크립트 1 ikmyung 2018.12.03 130
기타 혹시 맵타일중 XP맵타일크기룰 VX ACE로 바꿀방법없을까요? LWH 2018.09.06 130
RMVXA 스크립트 내에서 플레이어의 정보를 조작하고 싶은데요 4 이경로 2018.07.07 130
RMVXA 맵 배포하는 사이트같은거 아시는분 계신가요? 1 VXA러너 2016.10.04 130
RMVXA 알피지 만들기 vx ace질문이요 좀 급합니다 3 등심몬 2017.01.25 130
RMMV 쉬운질문1개랑 중간질문1개 어려운질문1개 2 잠행인 2016.07.24 130
RMMV 질문이 있습니다! MV 관련 오류입니다. 조하루 2016.07.07 130
RMVXA 안녕하세요 ~ 혹시 데이터베이스 애니메이션에 사용되는 모든 사운드 소리를 한꺼번에 줄이거나 키울 수 있을까요? DJN 2016.07.06 130
RMVXA 패시브 스킬 만드는 것 좀 도와주세요 ㅠ 투척민 2016.05.31 130
스크립트 추천 RMVX 스킬 턴안넘어가고 즉시시전 스크립트 듀라듀라셀 2020.12.01 130
RMVXA 더 빠르게 병렬처리를 하게 만드는 방법 LOOK 2015.11.18 130
RMMV 폭발물 피하는 오브젝트를 만들고 싶은데... 4 naonori 2017.03.25 130
스크립트 사용 RMVXA vx ace QTE 1 mkccip 2020.05.19 130
RMVX 제가 벽면에다가 지도를 걸고 이벤트 설정을 했는데 작동이 안되네요. 2 오노래오노래신나는노래 2018.03.16 130
RMVXA 상태이상에 커먼이벤트 적용하기 1 동생 2017.06.05 130
기타 rpgmv 스트립트 의뢰 관련 견적 궁금합니다 3 비스뀌 2018.03.14 130
RMMV 타일셋 이미지는 있는데 1 Banwall087 2018.03.25 130
RMVXA 기술을 사용할때 시전 시 그림이나 소리 삽입이요 1 AccelHacker 2016.11.23 130
Board Pagination Prev 1 ... 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 ... 516 Next
/ 516