XP 스크립트

#==============================================================================
# ★ 촬영 기술 var 1.0 (07.2.12)  by shun 번역: 인간(jty1025)
#------------------------------------------------------------------------------
#   맵 화면에서 스크롤을 카메라풍으로 늦추거나
#   플레이어와는 독립시켜 스크롤 시키거나 할 수 있습니다.
#==============================================================================

module SIMP
  #--------------------------------------------------------------------------
  # ○ 설정
  #--------------------------------------------------------------------------
  #
  # 스크롤 속도

  #
  CAMERA_MIN_SPEED = 1            # 최저한의 스크롤 속도
  CAMERA_DELEY = 2                # 속도 보정 (값이 큰 만큼 늦는다)
  #
  # 독립 스크롤
  #
  CAMERA_SCROLL_SWITCH = 48       # 스크롤 금지 스위치의 번호
  CAMERA_SCROLL_KEY = Input::A    # 스크롤을 개시하는 버튼 (Input::<버튼>)
  CAMERA_SCROLL_SPEED = 5        # 스크롤 하는 기본 속도
  CAMERA_SCROLL_DIR8 = true       # 8 방향 입력
end

class Game_Map
  #--------------------------------------------------------------------------
  # ● 공개 인스턴스 변수
  #--------------------------------------------------------------------------
  attr_writer   :real_display_x           # X 좌표 (실좌표)
  attr_writer   :real_display_y           # Y 좌표 (실좌표)
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  alias camera_initialize initialize
  def initialize
    camera_initialize
    @real_display_x = 0
    @real_display_y = 0
  end
  #--------------------------------------------------------------------------
  # ● 셋업
  #     map_id : 맵 ID
  #--------------------------------------------------------------------------
  alias camera_setup setup
  def setup(map_id)
    camera_setup(map_id)
    @real_display_x = 0
    @real_display_y = 0
  end
  #--------------------------------------------------------------------------
  # ● 표시 X 좌표 * 128
  #--------------------------------------------------------------------------
  def display_x
    return @real_display_x
  end
  #--------------------------------------------------------------------------
  # ● 표시 Y 좌표 * 128
  #--------------------------------------------------------------------------
  def display_y
    return @real_display_y
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  alias camera_update update
  def update
    camera_update
    dx = @display_x - @real_display_x
    unless dx == 0
      speed = get_speed(dx.abs)
      distance = 2 ** speed
      if dx > 0
        @real_display_x = [@real_display_x + distance, @display_x].min
      else
        @real_display_x = [@real_display_x - distance, @display_x].max
      end
    end
    dy = @display_y - @real_display_y
    unless dy == 0
      speed = get_speed(dy.abs)
      distance = 2 ** speed
      if dy > 0
        @real_display_y = [@real_display_y + distance, @display_y].min
      else
        @real_display_y = [@real_display_y - distance, @display_y].max
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ 스크롤 속도를 취득

  #     distance : 움직이는 목표까지의 거리

  #--------------------------------------------------------------------------
  def get_speed(distance)
    return [SIMP::CAMERA_MIN_SPEED, distance / 32 - SIMP::CAMERA_DELEY].max
  end
end

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  alias camera_update update
  def update
    # 이동중, 이벤트 실행중, 이동 루트 강제중,
    # 메세지 윈도우 표시중의 머지않아도 아닌 경우

    unless moving? or $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      # 스크롤 키가 밀렸을 경우, 독립 스크롤 플래그를 유효하게 한다

      if Input.trigger?(SIMP::CAMERA_SCROLL_KEY) and @scroll != true and
         $game_switches[SIMP::CAMERA_SCROLL_SWITCH] != true
        # 결정 SE 를 연주

        $game_system.se_play($data_system.decision_se)
        @scroll = true
        Input.update
      end
    end
    # 독립 스크롤중의 경우
    if @scroll
      super
      update_scroll
    else
      camera_update
    end
  end
  #--------------------------------------------------------------------------
  # ○ 프레임 갱신 (독립 스크롤)
  #--------------------------------------------------------------------------
  def update_scroll
    # 스크롤 키가 밀렸을 경우
    if Input.trigger?(SIMP::CAMERA_SCROLL_KEY)
      # 캔슬 SE 를 연주
      $game_system.se_play($data_system.cancel_se)
      # 플레이어에 화면을 되돌린다
      center(@x, @y)
      # 독립 스크롤 플래그를 무효로 한다
      @scroll = false
      return
    end
    distance = 2 ** SIMP::CAMERA_SCROLL_SPEED
    # 방향 버튼이 밀리고 있으면, 그 방향에 스크롤
    dir = (SIMP::CAMERA_SCROLL_DIR8 ? Input.dir8 : Input.dir4)
    case dir
    when 1
      $game_map.scroll_down(distance)
      $game_map.scroll_left(distance)
    when 2
      $game_map.scroll_down(distance)
    when 3
      $game_map.scroll_down(distance)
      $game_map.scroll_right(distance)
    when 4
      $game_map.scroll_left(distance)
    when 6
      $game_map.scroll_right(distance)
    when 7
      $game_map.scroll_left(distance)
      $game_map.scroll_up(distance)
    when 8
      $game_map.scroll_up(distance)
    when 9
      $game_map.scroll_right(distance)
      $game_map.scroll_up(distance)
    end
  end
  #--------------------------------------------------------------------------
  # ● 화면 중앙에 오도록(듯이) 맵의 표시 위치를 설정
  #--------------------------------------------------------------------------
  alias camera_center center
  def center(x, y)
    camera_center(x, y)
    $game_map.real_display_x = $game_map.display_x
    $game_map.real_display_y = $game_map.display_y
  end
end

  #--------------------------------------------------------------------------

Comment '16'
  • profile
    푸솜양 2012.09.18 19:28
    오오오.. 진짜 좋네요 부드럽게 움직이는게 자연스럽고 보기 좋아요~
    잘 쓸게요 감사합니다!
  • profile
    빈군 2012.09.24 18:26

    우와.. 감사합니다 이렇게 좋아질줄 상상도 못햇어요

  • ?
    콰르 2012.11.05 13:57
    엄청 부드럽게 움직이네요. 감사합니다.
  • profile
    gee드래곤 2012.11.17 15:55
    써봤는데 괜찮네요
  • ?
    이알라 2012.12.06 11:03
    정말 좋은 스크립트 감사드립니다.
    아주 매끄럽게 진행이 되네요!
  • ?
    기림 2013.03.09 14:03
    우와 고맙습니다
    엄청고퀄이다
  • ?
    생파 2013.03.30 20:11
    와, 정말 유용한 스크립트네요.
  • ?
    알피지에엑스피 2013.07.24 15:14
    감사여!
  • ?
    R피쥐 2013.08.30 23:49
    부드럽게 움직여서 편하네요 감사합니다.
  • ?
    AVANGS주니 2013.10.11 19:24
    감사합니다! 잘쓸꼐요!~!
  • ?
    카스라이트 2013.12.15 14:08
    전왜안될까요.. ㅠ
  • profile
    ☆쭈딘★ 2013.12.22 09:32
    스크립트를 제대로 입력 하신거 맞으신지...
    제대로 입력을 안하면 자동으로 되지 않습니다.
  • ?
    카스라이트 2014.05.24 03:52

    다른거랑 겹쳐서 그런가봐요.. 뭐랑겹쳤으려나 ㅠㅠ 하고싶은데아쉽네요

     

    새게임누르고 적용하면되긴하는데.. ㅠ.ㅠ 왜안되는거지

  • profile
    아방스닉넴 2014.11.23 01:50
    와 부드럽네요!!
  • ?
    hcop12 2015.01.27 20:04
    복붙했는데 왜안될까요?
  • ?
    금향꽃 2015.09.24 21:26
    오류가 뜨네요ㅠㅠ
    Erro no Script , em 46 na linha 'Nameover'
    undefined method 'setup' for class 'Game_Map'
    이라고 뜨는데.. 뭐가 문제인 걸까요ㅠㅠ

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6208
341 이동 및 탈것 대쉬 밑에 꺼 MP가 깍기는거 1 백호 2009.02.22 1467
340 장비 MultiSlots! 2.4 by DerVVulfman 2 Alkaid 2011.09.05 1466
339 HUD 맵 이름 표시 by Slipknot@rmxp.net (SDK호환) 2 백호 2009.02.22 1463
338 메뉴 FF7형식의 메뉴로 변경하는 스크립트 1 file 백호 2009.02.21 1463
337 전투 SG_Batte Retry ver.4 by sandgolem 2 백호 2009.02.22 1460
336 전투 추적 공격 스크립트 백호 2009.02.21 1460
335 전투 Minkoff's Animated Battlers - Enhanced 13.4 by DerVVulfman 2 Alkaid 2011.07.13 1458
334 전투 S ABS_NonSDK ver 1 file 백호 2009.02.22 1458
333 기타 sandgolem Script Archive (RMXP SDK 1.5 이상 필요) file Alkaid 2011.02.17 1453
332 기타 프리 윈도우 스크립트 (상입오두막 출처) 6 백호 2009.02.21 1449
331 기타 필드에서 경험치%를 표시합니다. 4 file 백호 2009.02.22 1448
330 전투 배틀 리포트 화면 변경 스크립트 2 file 백호 2009.02.21 1444
329 전투 전투 난이도 설정 스크립트 file 백호 2009.02.21 1442
328 전투 Mr. Mo's ABS Ultimate by DerVVulfman Alkaid 2011.09.05 1438
327 스킬 Grouping and Details 8.1 by DerVVulfman 4 file Alkaid 2011.04.18 1437
326 전투 대전게임 Fighter 1 file 백호 2009.02.21 1436
325 기타 모험 일기 스크립트 2 file 백호 2009.02.21 1436
324 메뉴 Leidy's Ring Command Window 1.2 by DerVVulfman Alkaid 2012.09.09 1433
323 전투 Mr Mo DVV Addon #20~#21 Alkaid 2011.09.05 1432
322 전투 KGC_AutoRecover(매턴 자동 회복) 1 백호 2009.02.22 1432
Board Pagination Prev 1 ... 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ... 52 Next
/ 52