다른건 아니고 그냥 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