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
1021 키입력 한글입력스크립트 16 file 아방스 2007.11.09 11828
1020 온라인 채팅 가능 온라인 스크립트 배포 107 file 아방스 2009.01.03 10685
1019 온라인 RPG 만들기 xp 온라인 스크립트 33 아방스 2007.11.09 9601
1018 맵/타일 [유니크급] RPG XP 게임을 3D화로 보자! Neo Mode7 script / 52 file 쉴더 2009.02.28 9447
1017 온라인 온라인 스크립트 Unis Net RMXP 공식 배포! 25 file 뮤바보 2011.12.25 9403
1016 온라인 광넷[ 광땡 온라인 + 넷플레이 ] 62 - 하늘 - 2009.08.02 9003
1015 전투 [액알]neo_a-rpg_module_1[1][1].2 스크립트 83 file 은빛바람 2009.10.03 8307
1014 이름입력 대화창에 얼굴, 이름 띄우기 37 킬라롯 2008.11.09 7497
1013 온라인 넷플레이1.7.0+abs5.5+한챗 49 쀍뛝쒧 2009.01.24 7289
1012 메뉴 메이플스토리처럼 메뉴를^^ 57 file 딸기님 2010.07.13 7145
1011 메시지 대화창에 얼굴 그래픽 띠우기 73 아방스 2007.11.09 7119
1010 스킬 ABP액알 v1.2 스킬추가, 버그수정판 36 file 백호 2009.02.22 6920
1009 전투 [신기술 체험] 강회된 횡스크롤 액알 13 file 백호 2009.02.22 6841
1008 메뉴 온라인메뉴처럼!! 메이플 메뉴처럼!! 변신~스크립트 33 WMN 2008.03.17 6824
1007 그래픽 화면을 부드럽게 해주는스크립트[ 아주 유용] 56 file - 하늘 - 2009.08.05 6566
1006 온라인 Mr.Metring NPE 1.0 [RPG XP 온라인 스크립트] 35 아방스 2009.01.07 6535
1005 이름입력 케릭터 위에 또는 NPC 위에 이름 뛰우기 [헬악이님 제공] 49 file 아방스 2007.11.09 6414
1004 액터 시트르산의 XP용 감정 말풍선 표시 스크립트 37 file 시트르산 2011.01.25 6114
1003 HUD 주인공,NPC이름 머리 나타내기 49 file 송긔 2010.11.28 6067
1002 전투 액알 스크립트 24 백호 2009.02.22 6017
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52