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 6153
34 기타 Free Window Demo 1 file 백호 2009.02.22 1002
33 기타 FPLE 2 - First Person Labyrinth Explorer by MGC 1 Alkaid 2012.01.17 3415
32 기타 Etude87_Bone_Animation_Character ver.1.2 4 습작 2012.07.06 1255
» 기타 endroll 주석 번역 6 file insertend 2010.05.15 1638
30 기타 Encounter Control by SephirothSpawn (SDK호환) 4 file 백호 2009.02.22 1157
29 기타 Economy System by Nick@Creation Asylum 1 file 백호 2009.02.22 934
28 기타 Dynamic Stores by Astro_mech@rmxp.net 1 file 백호 2009.02.22 878
27 기타 Drago - Custom Resolution by LiTTleDRAgo Alkaid 2014.02.13 1110
26 기타 Difficulty Options by SephirothSpawn 백호 2009.02.22 869
25 기타 Defining Encounter Areas by RPG Advocate (사용법 첨부) file 백호 2009.02.22 1201
24 기타 Damage Reductions by SephirothSpawn (SDK호환) 1 백호 2009.02.22 779
23 기타 Crafting/Recipe system script by Axe Man Deke 백호 2009.02.22 829
22 기타 Complete Climate and Time System 1.2 by ForeverZer0 1 Alkaid 2010.09.17 1310
21 기타 Character Creator by Leon@Creation Asylum 2 file 백호 2009.02.22 1511
20 기타 Chaos Project Debug System 1.06b by Blizzard file Alkaid 2010.09.07 1367
19 기타 CG모드 도입 스크립트 file 백호 2009.02.21 1383
18 기타 CG그림 감상 스크립트 file 백호 2009.02.21 1735
17 기타 Book Event v2 by Bruth 5 백호 2009.02.22 1694
16 기타 Boat Script 백호 2009.02.21 729
15 기타 ATS-Advanced Time System 1 file 백호 2009.02.21 964
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 Next
/ 13