XP 스크립트

다른건 아니고 그냥 endroll주석 번역한거 밖에 없어요 딴거 기대하지 마세요...

#==============================================================================
# *오타 가능성 잇음
# ★ endroll ver 1.6                                         [2008-06-04]
#------------------------------------------------------------------------------
#   텍스트 파일을 읽어들여 엔드롤 시키는 스크립트입니다。
#
#   텍스트 파일의 문자 코드는, UTF-8으로 지정해 주세요。
#   (메모장등에서, 보존시에 선택할 수 있습니다)
#   웨이트를 걸치고 싶은 경우는, 문장중에 wait<숫자>로 기술해 주세요。
#   이것에 의해, 그 행이 표시되기 직전에 숫자분 웨이트 합니다。
#    (예 : wait20 이 행의 표시전에 웨이트를 던졌습니다??)
#
#   이벤트 커멘드[스크립트]로 이하를 쓰는 것에 의해서 개시합니다。
#------------------------------------------------------------------------------
#  ○ start_er
#       엔드 롤을 개시
#------------------------------------------------------------------------------
# 스크립트 : shun  (Simp : http://simp.u-abel.net)
#==============================================================================


#==============================================================================
# □ Endr
#------------------------------------------------------------------------------
#   Simp 의 스크립트 소재 [엔드 롤] 의 설정을 취급하는 모듈입니다。
# 정수를 각각의 클래스, 모듈로부터 참조합니다。
#------------------------------------------------------------------------------
#   스크립트 유저는, 이 모듈로 정의하는 정수를 변경하는 것으로써 설정을 변경할 수
# 있습니다。
#==============================================================================

module Endr
  #
  # ◇ 파일
  #
  FILE_PATH = "endroll"      # 파일의 패스 (문자 코드는 UTF-8, 확장자(extension) 불요)
  REVERSE = false            # 텍스트의 행을 역방향에 읽을지
  #
  # ◇ 폰트
  #
  FONT  = "돋움"              # 텍스트의 폰트
  SIZE  = 17                             # 텍스트의 font size
  COLOR = Color.new(255, 255, 255, 255)  # 텍스트의 색
  ALIGN = 0                             # 아라인??
                                         #  (0..왼쪽 가지런히 해 1..centering, 2..오른쪽맞춤)
  MARGIN1 = 8                            # 행간의 여백
  MARGIN2 = 32                           # 좌우의 여백
  #
  # ◇ 효과
  #
  SPEED = 2            # 스크롤 속도 (수치가 클 수록 빠른, 부의 값으로 역방향)
  BACK_GROUND = ""      # 배경 그래픽 (Graphics/Gameovers 내)
  BGM = ""  # BGM (Audio/BGM 内)
  #
  # ◇ 웨이트
  #
  START = 120           # 개시까지의 트란지션에 걸치는 프레임수
  WAIT = 80             # 종료후, 입력 가능하게 될 때까지의, 웨이트수
  NOINPUT = true        # 입력을 기다리지 않고 종료하는 (true)인가 반대 (false)인가
  FINISH = 40           # 타이틀 화면으로 돌아올 때의 트란지션의 프레임수
  #
  # ◇ 복귀
  #
  BACK = 1              # 돌아오는 씬
                        #  (0..게임을 종료, 1..타이틀, 2..맵)
  MAP = [0, -1, -1]     # 맵으로 돌아오는 경우의 귀가처 (배열)
                        #  ([맵의 ID, X 좌표, Y 좌표]
                        #    ...ID 는 0, 좌표는 -1 으로 변화 없음
end


#==============================================================================
# ■ Interpreter
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  # ○ 엔드 롤을 개시
  #--------------------------------------------------------------------------
  def start_er
    $scene = Scene_Endroll.new
    return true
  end
end


#==============================================================================
# □ Scene_Endroll
#------------------------------------------------------------------------------
#  엔드 롤 화면의 처리를 실시하는 클래스입니다。
#==============================================================================

class Scene_Endroll
  #--------------------------------------------------------------------------
  # ● 메인 처리
  #--------------------------------------------------------------------------
  def main
    # 파일을 읽어들여
    open(Endr::FILE_PATH + ".txt", "rb") {|file| @text = file.readlines}
    @text[0] = @text[0][-(@text[0].size - 1), @text[0].size - 1]
    @text.reverse! if Endr::REVERSE
    @index = 0
    # 1 행의 높이를 취득
    test = Bitmap.new(1, 1)
    test.font.name, test.font.size = Endr::FONT, Endr::SIZE
    @height = test.text_size(@text[0]).height + Endr::MARGIN1
    # 각종 스프라이트를 작성
    @sprites = []
    @sprites[0] = (Endr::SPEED > 0 ? make_sprite(480) : make_sprite(0-@height))
    @bg = Sprite.new
    @bg.bitmap = RPG::Cache.gameover(Endr::BACK_GROUND)
    # 웨이트 카운트를 초기화
    @wait_count = 0
    # BGM, BGS 를 정지
    $game_system.bgm_play(nil)
    $game_system.bgs_play(nil)
    # 트란지션 실행
    Graphics.transition(Endr::START)
    # BGM 을 연주 개시
 #   Audio.bgm_play("Audio/BGM/" + Endr::BGM)
    # 메인 루프
    loop do
      # 게임 화면을 갱신
      Graphics.update
      # 입력 정보를 갱신
      Input.update
      # 프레임 갱신
      update
      # 화면이 바뀌면 루프를 중단
      break if $scene != self
    end
    # 트란지션 준비
    Graphics.freeze
    # 각종 스프라이트를 해방
    @bg.bitmap.dispose
    @bg.dispose
    # 트란지션 실행
    Graphics.transition(Endr::FINISH)
    # 트란지션 준비
    Graphics.freeze
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    # 웨이트 카운트를 줄인다
    return (@wait_count -= 1) if @wait_count > 0
    # 종료 플래그가 유효한 경우
    if @finish_indicating
      # B 또는 C 버튼이 밀렸을 경우
      if Input.trigger?(Input::B) or Input.trigger?(Input::C) or Endr::NOINPUT
        Audio.se_play("Audio/SE/025-Door02",100,100)
        case Endr::BACK
        when 0 ; $scene = nil
        when 1 ; $scene = Scene_Title.new
        when 2
          # 새로운 맵을 셋업
          $game_map.setup(Endr::MAP[0]) unless Endr::MAP[0] == 0
          # 플레이어의 위치를 설정
          x = (Endr::MAP[1] == -1 ? $game_player.x : Endr::MAP[1])
          y = (Endr::MAP[2] == -1 ? $game_player.y : Endr::MAP[2])
          $game_player.moveto(x, y)
          $scene = Scene_Map.new
        end
      end
      return
    end
    # 행을 진행시킨다
    update_sprites
    # 마지막 행까지 끝났을 경우
    if @finish_writing and @sprites.empty?
      # 웨이트 카운트를 세트
      @wait_count = Endr::WAIT
      # 종료 플래그를 세트
      @finish_indicating = true
    end
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신 (스프라이트)
  #--------------------------------------------------------------------------
  def update_sprites
    dispose_flag = false
    @sprites.each {|sprite|
      sprite.update
      sprite.y -= Endr::SPEED
      dispose_flag = true if Endr::SPEED > 0 and sprite.y + @height < 0
      dispose_flag = true if Endr::SPEED < 0 and sprite.y > 480
    }
    if dispose_flag
      @sprites[0].bitmap.dispose
      @sprites[0].dispose
      @sprites.shift
    end
    return if @finish_writing
    # 스프라이트를 작성
    if Endr::SPEED > 0
      if @sprites[-1].y + @height < 480
        @sprites.push(make_sprite(@sprites[-1].y + @height))
      end
    else
      if @sprites[-1].y > 0
        @sprites.push(make_sprite(-@height))
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 문자열의 스프라이트를 작성
  #     y : 작성처 Y 좌표
  #--------------------------------------------------------------------------
  def make_sprite(y)
    sprite = Sprite.new
    sprite.x, sprite.y = Endr::MARGIN2, y
    s_width = 640 - Endr::MARGIN2 * 2
    sprite.bitmap = Bitmap.new(s_width, @height)
    sprite.bitmap.font.name  = Endr::FONT
    sprite.bitmap.font.size  = Endr::SIZE
    sprite.bitmap.font.color = Endr::COLOR
    string = @text[@index].chomp
    # 웨이트 처리
    unless string[/wait([0-9]*)/].nil?
      @wait_count = $1.to_i
      string[/wait[0-9]*/] = ""
    end
    sprite.bitmap.draw_text(0, 0, s_width, @height, string, Endr::ALIGN)
    @index += 1
    @finish_writing = true if @index == @text.size
    return sprite
  end
end

Comment '6'
  • profile
    Lathrion 2010.05.15 21:26

    정말 감사합니다!!!

  • ?
    이럭저력 2010.05.17 14:28

    감사합니다~

  • ?
    내로미 2010.05.22 23:43

    이거 무슨 스크립트이죠?

    설명 좀 부탁드립니다.

  • ?
    내로미 2010.05.27 22:28

    네. 알겠습니다 ㅎㅎ^^

  • ?
    insertend 2010.05.23 15:38

    이벤트에서 스크립트창에 start_er 을 입력하면

    endroll이라고 저장해 놓은 텍스트가 게임화면에 나오는 겁니다..

    아오오니 엔딩에 출처등이 나오는거라 하면 알아들으시겟죠?

  • ?
    화살난사10억발!!! 2010.07.31 12:44

    이런 스크립트가...


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6202
34 기타 레벨업시 전회복 by ccoa 8 백호 2009.02.22 2514
33 기타 멤버 교체 11 file 백호 2009.02.22 2529
32 기타 현재시간표시 33 file 코아 코스튬 2010.10.09 2529
31 기타 암울한스크립트? 엔딩후 캐릭터 이어서 새로운 게임시작 스크립트 5 *ps인간 2009.01.26 2533
30 기타 [RGSS XP] 게임 해상도 조절 스크립트 (*2) 11 file Cheapmunk 2014.10.03 2573
29 기타 4방향 마우스 스크립트 12 file 아방스 2009.02.28 2666
28 기타 몬스터 도감 18 file 백호 2009.02.22 2669
27 기타 appletree님 요청) 화면 명암 주기 3 file 뮤바보 2013.01.31 2727
26 기타 [KGC]HP&SP게이지 색다른것(글씨와 게이지가 안겹침) 10 file 백호 2009.02.21 2732
25 기타 폰트 자동 설치 스크립트 12 file 백호 2009.02.22 2865
24 기타 몬스터도감 - 개량형 ? 7 file 백호 2009.02.22 2884
23 기타 스탭 롤 9 file 허걱 2009.08.13 2907
22 기타 플레이어 발소리 스크립트 20 백호 2009.02.22 3108
21 기타 턴제새로운거. 39 file 이안 2010.01.17 3297
20 기타 횡스크롤 스크립트 한국말 번역. 15 file 백호 2009.02.21 3315
19 기타 레벨9999만들기스크립 23 해파리 2009.04.10 3344
18 기타 한글 입력 스크립트 입니다. (vx -> xp) 23 file 헤르코스 2009.04.18 3400
17 기타 FPLE 2 - First Person Labyrinth Explorer by MGC 1 Alkaid 2012.01.17 3415
16 기타 3d 렌더링스크립트 어렵게 찾음 9 라구나 2011.03.05 3610
15 기타 [신기술 체험] RPGXP 3D 9 file 백호 2009.02.22 3637
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 Next
/ 13