조회 수 2858 추천 수 4 댓글 15
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
#==============================================================================
# ■ 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
  • ?
    DaBaNg 2007.02.04 16:11
    멋있군요
  • ?
    rpg견습생 2007.02.26 10:22
    어디다 넣어야함?
  • ?
    김종민 2007.03.16 21:16
    펫을 만들려고 하는데요, 아이템으로 대체할수없을가요?
  • ?
    DaBaNg 2007.04.14 09:12
    네 주인공들을 펫 모양으로 바꾸시고 이름도 변경하시면 되요!
  • ?
    인간 2007.06.09 13:39
    이거 스크립트상의 어디에 넣어야 해요?
  • ?
    에린 2007.07.20 17:54
    아, 감사합니다
  • profile
    해적 2007.08.10 04:35
    이거 최고다 포켓몬스터 옐로우 버젼식으로 만들 수 있겠따
  • ?
    이승호 2007.08.14 16:42
    와우 성공이닷 이것은 아이큐 100은 넘고 노력 99%인것 같은데요..
    Main 위에 설정해주어야 합니다.. 그리고 그 제목은 Member_Train 으로 설정해주세요..
    성공하기를 빕니다..!! 화이팅
  • ?
    백종성 2007.08.17 23:18
    아 정말 감사 함다.
  • ?
    곽정훈 2007.08.26 16:22
    이거 이승호님 처럼 하고 그냥 부쳐느면 되나요? 어떻게 적용시켜요 ? ㅜㅜ;
  • ?
    김세훈 2008.01.14 18:03
    대단한대요??
  • ?
    김세훈 2008.02.18 16:56
    진짜 멋지네요!
    제가 원하던것 그대로!!
  • ?
    Lupang 2010.05.02 07:28

    와 멋있다 감사합니다

  • ?
    wogns456 2010.06.02 09:07

    동료랑 같이 싸울려면 어케해야해요??????

     

     

  • ?
    앙크바르만 2011.07.08 17:01

    장점: 매우쉽고, 좋은 스크립트다.

    단점: 액알(니오팅 스크립트중 DB의 몬스터를 수정함으로서 액알을 형성시키는 스크립트를 말한것)

    과 같이 쓸경우 오류가 난다.


List of Articles
분류 제목 글쓴이 날짜 조회 수 추천 수
공지사항 일본어 스크립트를 번역하기 좋은 번역사이트 두곳입니다 ruby 2010.01.09 22088 0
공지사항 스크립트 게시판 관리자' ruby ' 입니다 ruby 2010.01.09 20728 0
공지사항 일본 스크립트/소스 공유 포럼 4 니오티 2010.01.05 22259 0
이동관련 주인공 또는 npc 그림자 18 file 루비 2007.08.06 3145 5
메뉴관련 RPG XP 테스트플레이 할때 '뉴게임' '콘티뉴' '슛다운' 바꾸기 [중복이면 죄송] 12 이정한 2007.03.07 4153 18
제한변경 알피지 XP 래밸 9999되개 만들기 17 조한철ㅋ 2006.01.18 3482 8
장르변경 TBS 배틀(SRPG) 11 file 아디안 2007.02.27 3482 4
세이브 렉없는 자동세이브 스크립트. 7 샤이닉 2007.02.20 2408 8
기타 더욱더 간편하게! 에메스엔의 귀차니즘 탈출! 4 샤이닉 2007.02.20 2358 2
제한변경 소지금 한계 없애기 7 니오티 2007.02.20 2502 2
전투관련 턴알 게이지바 변경 스크립트 (HP/SP) 3 file 니오티 2007.02.20 3984 2
전투관련 게이지 확인창 스크립트 (HP/SP/EXP) 4 file 니오티 2007.02.20 3540 5
온라인 온라인스크립트 1.7 28 file 아디안 2007.02.16 5503 27
메뉴관련 메뉴 반투명화 스크립트 2 windshy 2007.02.15 2315 4
온라인 RPG XP 온라인 스크립트 25 file 니오티 2007.02.15 6873 6
메뉴관련 링메뉴 스크립트 16 windshy 2007.02.03 2980 4
이동관련 동료 따라오게 만들기 (파랜드 택틱스 3 형태) 15 니오티 2007.02.01 2858 4
맵관련 인터페이스에 현재 맵명 표기하기 17 니오티 2007.02.01 2798 3
기타 몬스터 도감 6 니오티 2007.02.01 2872 3
메뉴관련 메인 메뉴, 기본아이콘으로 꾸미기. 4 니오티 2007.02.01 2301 3
제한변경 저장 공간 15 슬롯으로 늘리기 4 니오티 2007.02.01 1996 2
기타 돈맡기기 시스템 8 히카루 2007.01.31 3358 2
기타 한글입력기 16 file 히카루 2007.01.31 14282 1
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

Copyright ⓒ Nioting All Rights Reserved. (since 1999)    개인정보
        

Fatal error: Cannot access property sessionController::$lifetime in /web/old/xe/modules/session/session.controller.php on line 45