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 6317
241 아이템 아이템창변경 27 카르닉스 2010.02.26 3642
240 이동 및 탈것 아하! 그렇구나의 3D 신기술 체험 30 아하!잘봤어요. 2010.02.28 4774
239 이동 및 탈것 아하! 그렇구나의 3D 신기술 체험 2 23 아하!잘봤어요. 2010.02.28 3834
238 이동 및 탈것 아하! 그렇구나의 3D 신기술 체험 3 14 아하!잘봤어요. 2010.02.28 4262
237 파티 KGC-대규모파티 25 rgnrk001 2010.03.01 3781
236 저장 렉없은 자동 세이브 15 알피지GM 2010.03.07 2328
235 전투 ABS_v3액션 알피지 46 file 알피지GM 2010.03.07 5809
234 온라인 게임화면을 전체화면으로 하기 27 file 이씨 2010.03.09 4062
233 전투 srpg용 스크립트라는데 4 세죠 2010.03.26 3525
232 이동 및 탈것 새로운 픽셀 이동 스크립트 27 file 케나이 2010.04.10 3499
231 타이틀/게임오버 [펌]색다른 게임오버 스크립트 14 file 또라에몽 2010.05.09 4271
» 기타 endroll 주석 번역 6 file insertend 2010.05.15 1640
229 전투 [RTAB]HP/SH/EXP 게이지바 ver 1.00 44 file 환상 러브텔 2010.05.22 5342
228 타이틀/게임오버 타이틀을 아오오니처럼 만들어보자! 43 file Tassy 2010.06.02 5441
227 메시지 말풍선 표시 스크립트 48 file insertend 2010.06.06 5170
226 [자작]게임내에서 필요한 파일 체크하기 / 디버깅 막기 17 file JACKY 2010.06.11 2515
225 이동 및 탈것 8방향이동, Shift키 누르면 대쉬 63 WinHouse 2010.06.12 4028
224 기타 데이터베이스 자체 제한 해체 XP Ver. 13 THE풀잎 2010.07.04 2171
223 메뉴 메이플스토리처럼 메뉴를^^ 57 file 딸기님 2010.07.13 7161
222 메뉴 새로운 메뉴 15 file 또라에몽 2010.07.17 5323
Board Pagination Prev 1 ... 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 ... 52 Next
/ 52