Avangs

  • 게임 정보
    • 게임 소개
    • 게임 리뷰
    • 게임 실황
    • 게임 공략
    • 모바일 테스트
  • 게임 작품new
    • 완성작 게임
    • 체험판 게임
    • 한글판 게임new
    • 온라인 게임
    • 추천작 제작자 저장소
  • 투표선정 작품
    • 아방스 추천작
    • 완성 기대작
    • 투표 신청
    • 투표소
    • 투표 결과
  • 강좌
    • 아방스 칼럼
    • 비주얼노벨 강좌
    • 알만툴 강좌
      • MZ 강좌
      • MV 강좌
      • VX Ace 강좌
      • VX 강좌
      • XP 강좌
      • 2003 강좌
      • 2000 강좌
    • 게임메이커 강좌
    • 울프툴 강좌
    • 3D 게임제작 강좌
    • 2D 게임제작 강좌
    • 그래픽 제작 강좌
    • 기타 강좌
  • 질문과 답변
    • 자주 묻는 질문
    • 질문과 답변
    • 제작의뢰
  • 커뮤니티
    • 구인·구직·외주
    • 테스트 요청
    • 자유게시판
    • 게임계 소식
    • 유머&정보
    • 사이트링크
    • 이벤트&대회
  • 창작
    • 게임 기획
    • 맵배치
    • 글쓰기
    • 그리기
    • 음악
  • 자료실
    • 게임제작툴
    • 예제 및 샘플
    • 그래픽 소재
      • 오리지널 소재
      • 이차창작 소재
      • 수정·개조 소재
      • 외부 소재
    • 사운드 소재
    • 확장·플러그인·스크립트
      • MZ 플러그인
      • MV 플러그인
      • Ace 스크립트
      • VX 스크립트
      • XP 스크립트
      • 2k3 플러그인
      • VN 플러그인·확장
    • 외부 소재사이트
    • 기타 자료
      • 한글화툴
      • 무료 폰트
      • 유틸리티
    • 디자인 참고자료
  • 고객센터
    • 공지사항
    • 건의 및 신고
    • 핫 이슈
로그인 회원가입
Avangs
  • 게임 정보
    • 게임 소개
    • 게임 리뷰
    • 게임 실황
    • 게임 공략
    • 모바일 테스트
  • 게임 작품new
    • 완성작 게임
    • 체험판 게임
    • 한글판 게임new
    • 온라인 게임
    • 추천작 제작자 저장소
  • 투표선정 작품
    • 아방스 추천작
    • 완성 기대작
    • 투표 신청
    • 투표소
    • 투표 결과
  • 강좌
    • 아방스 칼럼
    • 비주얼노벨 강좌
    • 알만툴 강좌
      • MZ 강좌
      • MV 강좌
      • VX Ace 강좌
      • VX 강좌
      • XP 강좌
      • 2003 강좌
      • 2000 강좌
    • 게임메이커 강좌
    • 울프툴 강좌
    • 3D 게임제작 강좌
    • 2D 게임제작 강좌
    • 그래픽 제작 강좌
    • 기타 강좌
  • 질문과 답변
    • 자주 묻는 질문
    • 질문과 답변
    • 제작의뢰
  • 커뮤니티
    • 구인·구직·외주
    • 테스트 요청
    • 자유게시판
    • 게임계 소식
    • 유머&정보
    • 사이트링크
    • 이벤트&대회
  • 창작
    • 게임 기획
    • 맵배치
    • 글쓰기
    • 그리기
    • 음악
  • 자료실
    • 게임제작툴
    • 예제 및 샘플
    • 그래픽 소재
      • 오리지널 소재
      • 이차창작 소재
      • 수정·개조 소재
      • 외부 소재
    • 사운드 소재
    • 확장·플러그인·스크립트
      • MZ 플러그인
      • MV 플러그인
      • Ace 스크립트
      • VX 스크립트
      • XP 스크립트
      • 2k3 플러그인
      • VN 플러그인·확장
    • 외부 소재사이트
    • 기타 자료
      • 한글화툴
      • 무료 폰트
      • 유틸리티
    • 디자인 참고자료
  • 고객센터
    • 공지사항
    • 건의 및 신고
    • 핫 이슈
로그인 회원가입

NOTICE

공지사항
더보기
  • 서버 안정성 및 보안 강화 조치 04.20

Recently Added Games

최근 등록 게임
  • 어드벤쳐 고철에 파묻힌 데모나 (屑鉄まとうデモナ) newfile 08.19
  • 어드벤쳐 비올레 저택의 시온 : 꽃눈의 저택|RPG Maker MZ 단편 심리공포 어드벤처 file 08.17
  • 기타 (똥 주의)그저 똥을 누러 가는 게임 Re:Boot updatefile 08.16
  • 롤플레잉 SACCHARINE SYNC (DEMO) 배포 file 08.12
  • 기타 (완성작) 야구장에 가자4 file 2 07.07
메시지
2009.02.22 18:23

◆메세지 윈도우 개조 -KGC_MessageAlter◆

백호
조회 수 3558 추천 수 0 댓글 3
크게 작게 위로 아래로 댓글로 가기 인쇄
크게 작게 위로 아래로 댓글로 가기 인쇄
제가 한글화 했어여 ㅎㅎㅎ- 어머 ;

중복이면 댓글로

--------------- 이밑 부터 드래그


#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆메세지 윈도우 개조 -KGC_MessageAlter◆
#_/----------------------------------------------------------------------------
#_/ 메세지 윈도우를 개조해, 미묘한 기능을 추가합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ 커스터마이즈 항목 ★
#==============================================================================

module KGC
# ◆윈도우 사이즈 자동조정 초기설정
MSGA_AUTO_ADJUST_DEFAULT = true
# ◆스크롤 기능 초기설정
MSGA_SCROLL_DEFAULT = false

# ◆스크롤 속도【단위:px】
MSGA_SCROLL_SPEED = 4
# ◆최하부 도달 필수
# true 로 하면, 최하부까지 스크롤 하지 않는다고 메세지를 지울 수 없다
MSGA_MUST_LOWEST = false

# ◆얼굴 그래픽 전용 윈도우를 사용
MSGA_FACE_WINDOW = true
# ◆이름 윈도우의 세로폭
# 문자 사이즈도 자동조정(48?64 당을 추천)
MSGA_NAME_WINDOW_HEIGHT = 48
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["MessageAlter"] = true

#==============================================================================
# ■ Game_System
#==============================================================================

class Game_System
#--------------------------------------------------------------------------
# ● 공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_accessor :message_auto_adjust # 메세지 윈도우 자동 사이즈 조정
attr_accessor :message_align # 메세지 윈도우 아라인
attr_accessor :message_scroll # 메세지 윈도우 스크롤
attr_accessor :name_window_skin # 이름 윈도우 스킨
attr_accessor :face_window_skin # 얼굴 그래픽 전용 윈도우 스킨
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
alias initialize_KGC_MessageAlter initialize
def initialize
# 원래의 처리를 실행
initialize_KGC_MessageAlter

@message_auto_adjust = KGC::MSGA_AUTO_ADJUST_DEFAULT
@message_align = 0
@message_scroll = KGC::MSGA_SCROLL_DEFAULT
@name_window_skin = nil
@face_window_skin = nil
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_Message
#==============================================================================

class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
alias initialize_KGC_MessageAlter initialize
def initialize
# 원래의 처리를 실행
initialize_KGC_MessageAlter

# 이름용 소형 윈도우 작성
@name_window = Window_Base.new(80, 240, 160, KGC::MSGA_NAME_WINDOW_HEIGHT)
@name_window.visible = false
@name_window.back_opacity = 160
@name_window.z = 9999
# 얼굴 그래픽 전용 윈도우 작성
@face_window = Window_Base.new(0, 0, 32, 32)
@face_window.visible = false
@face_window.back_opacity = 160
@face_window.z = 9998
end
#--------------------------------------------------------------------------
# ● 해방
#--------------------------------------------------------------------------
alias dispose_KGC_MessageAlter dispose
def dispose
# 윈도우 해방
@name_window.dispose
@face_window.dispose

# 원래의 처리를 실행
dispose_KGC_MessageAlter
end
#--------------------------------------------------------------------------
# ● 리프레쉬
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# 윈도우 초기화
initialize_window
# 문자열 버퍼 작성
text_buf, trans_x = [Bitmap.new(608, 32)], [0]
# 메세지 윈도우 자동 사이즈 조정이 오프의 경우
unless $game_system.message_auto_adjust
self.contents = Bitmap.new(width - 32, height - 32)
end
text_buf[0].font.color = self.normal_color
x = y = max_x = 0
@cursor_width = 0
# 선택사항이라면 인덴트를 실시한다
x = 8 if $game_temp.choice_start == 0
# 표시 기다리는 메세지가 있는 경우
if $game_temp.message_text != nil
text = $game_temp.message_text
# 제어 문자 처리
begin
last_text = text.clone
text.gsub!(/\[V][(d+)]/i) { $game_variables[$1.to_i] }
text.gsub!(/\IN[(d+)]/i) { $data_items[$1.to_i] == nil ?
"" : $data_items[$1.to_i].name }
text.gsub!(/\WN[(d+)]/i) { $data_weapons[$1.to_i] == nil ?
"" : $data_weapons[$1.to_i].name }
text.gsub!(/\AN[(d+)]/i) { $data_armors[$1.to_i] == nil ?
"" : $data_armors[$1.to_i].name }
end until text == last_text
text.gsub!(/\[N][(d+)]/i) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
# 편의상,"\\" 을 "00" 에 변환
text.gsub!(/\\/) { "00" }
# "\C" 를 "01" 에,"\G" 를 "02" 에 변환
text.gsub!(/\[C][(d+)]/i) { "01[#{$1}]" }
text.gsub!(/\[G]/i) { "02" }
text.gsub!(/\AL[(d+)]/i) { "x10[#{$1}]" }
text.gsub!(/\IT[(d+)]/i) { "x11[#{$1}]" }
text.gsub!(/\WP[(d+)]/i) { "x12[#{$1}]" }
text.gsub!(/\AR[(d+)]/i) { "x13[#{$1}]" }
# c 에 1 문자를 취득 (문자를 취득할 수 없게 될 때까지 루프)
while ((c = text.slice!(/./m)) != nil)
# \ 의 경우
if c == "00"
# 본래의 문자에 되돌린다
c = "\"
end
# C[n] 의 경우
if c == "01"
# 문자색을 변경
text.sub!(/[(d+)]/, "")
color = $1.to_i
if color >= 0 && color <= 7
text_buf[y].font.color = self.text_color(color)
end
# 다음의 문자에
next
end
# G 의 경우
if c == "02"
# 골드 윈도우를 작성
if @gold_window == nil
@gold_window = Window_Gold.new
@gold_window.x = 560 - @gold_window.width
if $game_temp.in_battle
@gold_window.y = 192
else
@gold_window.y = self.y >= 128 ? 32 : 384
end
@gold_window.opacity = self.opacity
@gold_window.back_opacity = self.back_opacity
end
# 다음의 문자에
next
end
# AL[n] 의 경우
if c == "x10"
# 아라인 타입을 변경
text.sub!(/[(d+)]/, "")
align = $1.to_i
# 다음의 문자에
next
end
# 개행 문자의 경우
if c == "n"
# 선택사항이라면 커서의 폭을 갱신
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
# y 에 1 을 가산
y += 1
# 새로운 문자열 버퍼를 작성
text_buf[y] = Bitmap.new(608, 32)
text_buf[y].font.color = self.normal_color
# x 의 최대치 갱신 판정
max_x = [x, max_x].max
# x 를 초기화
x = 0
# 선택사항이라면 인덴트를 실시한다
x = 8 if y >= $game_temp.choice_start
# 다음의 문자에
next
end
# IT[n] 의 경우
if c == "x11"
text.sub!(/[(d+)]/, "")
item = $data_items[$1.to_i]
if item != nil
# 아이템명을 아이콘 첨부로 묘화
icon = RPG::Cache.icon(item.icon_name)
text_buf[y].blt(x + 4, [(32 - icon.height) / 2, 0].max, icon, icon.rect)
x += icon.width + 8
cx = text_buf[y].text_size(item.name).width + 8
text_buf[y].draw_text(x, 0, cx, 32, item.name)
x += cx - 8
end
next
end
# WP[n] 의 경우
if c == "x12"
text.sub!(/[(d+)]/, "")
item = $data_weapons[$1.to_i]
if item != nil
# 무기명을 아이콘 첨부로 묘화
icon = RPG::Cache.icon(item.icon_name)
text_buf[y].blt(x + 4, [(32 - icon.height) / 2, 0].max, icon, icon.rect)
x += icon.width + 8
cx = text_buf[y].text_size(item.name).width + 8
text_buf[y].draw_text(x, 0, cx, 32, item.name)
x += cx - 8
end
next
end
# AR[n] 의 경우
if c == "x13"
text.sub!(/[(d+)]/, "")
item = $data_armors[$1.to_i]
if item != nil
# 무기명을 아이콘 첨부로 묘화
icon = RPG::Cache.icon(item.icon_name)
text_buf[y].blt(x + 4, [(32 - icon.height) / 2, 0].max, icon, icon.rect)
x += icon.width + 8
cx = text_buf[y].text_size(item.name).width + 8
text_buf[y].draw_text(x, 0, cx, 32, item.name)
x += cx - 8
end
next
end
# 문자를 묘화
text_buf[y].draw_text(4 + x, 0, 40, 32, c)
# x 에 묘화 한 문자의 폭을 가산
x += text_buf[y].text_size(c).width
# 전송용 X좌표 보존
trans_x[y] = x
# 선택사항의 경우는 인덴트분 되돌린다
trans_x[y] += 12 if $game_temp.choice_max > 0
end
end
# 메세지 윈도우 자동 사이즈 조정이 온의 경우
if $game_system.message_auto_adjust
# 수치 입력의 경우는 1행 여분으로 추가
y += 1 if $game_temp.num_input_variable_id > 0
# 윈도우 사이즈를 조정
self.width = max_x + 48
self.height = [y, 4].min * 32 + 32
# 얼굴 그래픽이 존재하는 경우
if @face_bitmap != nil && !KGC::MSGA_FACE_WINDOW
# 윈도우의 폭을 가산
self.width += @face_bitmap.width + 16
# 윈도우의 높이가 얼굴 그래픽보다 작은 경우
if @face_bitmap.height + 32 > self.height
# 얼굴 그래픽보다 큰 사이즈로 설정
self.height = @face_bitmap.height + 32
end
self.contents = Bitmap.new(width - 32, [y * 32, @face_bitmap.height].max)
face_y = (self.contents.height - @face_bitmap.height) / 2
# 얼굴 그래픽이 좌측 표시의 경우
if $msg_face[1] == 0
@text_x = @face_bitmap.width + 16
self.contents.blt(8, face_y, @face_bitmap,
Rect.new(0, 0, @face_bitmap.width, @face_bitmap.height))
else
@text_x = 0
self.contents.blt(self.contents.width - @face_bitmap.width - 8,
face_y, @face_bitmap,
Rect.new(0, 0, @face_bitmap.width, @face_bitmap.height))
end
else
@text_x = 0
self.contents = Bitmap.new(width - 32, y * 32)
end
# 메세지 윈도우 자동 사이즈 조정이 오프의 경우
else
# 얼굴 그래픽이 존재하는 경우
if @face_bitmap != nil && !KGC::MSGA_FACE_WINDOW
# 윈도우의 높이가 얼굴 그래픽보다 작은 경우
if @face_bitmap.height + 32 > self.height
# 얼굴 그래픽보다 큰 사이즈로 설정
self.height = @face_bitmap.height + 32
end
face_y = (self.contents.height - @face_bitmap.height) / 2
# 얼굴 그래픽이 좌측 표시의 경우
if $msg_face[1] == 0
@text_x = @face_bitmap.width + 16
self.contents.blt(8, face_y, @face_bitmap,
Rect.new(0, 0, @face_bitmap.width, @face_bitmap.height))
else
@text_x = 0
self.contents.blt(self.contents.width - @face_bitmap.width - 8,
face_y, @face_bitmap,
Rect.new(0, 0, @face_bitmap.width, @face_bitmap.height))
end
else
@text_x = 0
end
end
# 윈도우 내용을 묘화
for i in 0...text_buf.size
next if text_buf[i] == nil
trans_x[i] = 0 if trans_x[i] == nil
# 전송용 X좌표 설정
align = $game_system.message_align if align == nil
case align
when 0, nil # 좌측
tx = @text_x
when 1 # 중앙
if $msg_face != nil && $msg_face[1] == 1
tx = (self.contents.width - trans_x[i] - @face_bitmap.width - 16) / 2
else
tx = (self.contents.width - trans_x[i] + @text_x) / 2
end
when 2 # 우측
if $msg_face != nil && $msg_face[1] == 0
tx = self.contents.width - trans_x[i] - 8
elsif $msg_face != nil && $msg_face[1] == 1
tx = self.contents.width - trans_x[i] - @face_bitmap.width - 24
else
tx = self.contents.width - trans_x[i] + @text_x - 8
end
end
self.contents.blt(tx, i * 32, text_buf[i], text_buf[i].rect)
text_buf[i].dispose
end
# 선택사항의 경우
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
# 수치 입력의 경우
if $game_temp.num_input_variable_id > 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8 + @text_x
@input_number_window.y = self.y + $game_temp.num_input_start * 32
# 메세지 윈도우 자동 사이즈 조정이 온의 경우
if $game_system.message_auto_adjust
# 윈도우의 폭을 조정
self.width = [self.width, @input_number_window.width + 16].max
# 윈도우를 중앙에 이동
centering_window
# 수치 입력 윈도우 위치를 조정
@input_number_window.x = self.x + 8 + @text_x
end
end
# 이름이 설정되어 있는 경우, 이름 표시
if $msg_name != nil
fs = [[22 - (64 - KGC::MSGA_NAME_WINDOW_HEIGHT) / 4, 12].max, 80].min
bitmap = Bitmap.new(32, 32)
bitmap.font.size = fs
cx = bitmap.text_size($msg_name).width
@name_window.width = cx + 32
@name_window.contents.dispose if @name_window.contents != nil
@name_window.contents = Bitmap.new(cx, KGC::MSGA_NAME_WINDOW_HEIGHT - 32)
@name_window.contents.font.size = fs
@name_window.contents.draw_text(0, 0, cx + 8, KGC::MSGA_NAME_WINDOW_HEIGHT - 32, $msg_name)
@name_window.visible = true
if $game_system.name_window_skin != nil
@name_window.windowskin = RPG::Cache.windowskin($game_system.name_window_skin)
else
@name_window.windowskin = self.windowskin
end
# 이름이 설정되어 있지 않은 경우, 윈도우 소거
else
@name_window.visible = false
end
    # 얼굴 그래픽 전용 윈도우 표시
if $msg_face != nil && KGC::MSGA_FACE_WINDOW
@face_window.width = @face_bitmap.width + 32
@face_window.height = [@face_bitmap.height + 32, self.height].max
self.height = [@face_window.height, self.height].max
face_y = (@face_window.height - @face_bitmap.height - 32) / 2
@face_window.contents.dispose if @face_window.contents != nil
@face_window.contents = Bitmap.new(@face_window.width - 32, @face_window.height - 32)
@face_window.contents.blt(0, face_y, @face_bitmap, @face_bitmap.rect)
if $game_system.face_window_skin != nil
@face_window.windowskin = RPG::Cache.windowskin($game_system.face_window_skin)
else
@face_window.windowskin = self.windowskin
end
@face_window.visible = true
else
@face_window.visible = false
end
# 중앙에 이동
centering_window
end
#--------------------------------------------------------------------------
# ● 윈도우 설정 초기화
#--------------------------------------------------------------------------
def initialize_window
if $msg_face == nil || $msg_face[0] == nil || $msg_face[1] == nil
@face_bitmap.dispose if @face_bitmap != nil
@face_bitmap = nil
self.width = 480
else
@face_bitmap = RPG::Cache.picture($msg_face[0])
self.width = KGC::MSGA_FACE_WINDOW ? 480 : 496 + @face_bitmap.width
end
centering_window
self.y = 304
self.oy = 0
self.height = 160
reset_window

#--------------------------------------------------------------------------
# ● 윈도우를 중앙에 이동
#--------------------------------------------------------------------------
def centering_window
if @face_window.visible && $msg_face != nil
cx = 640 - self.width - @face_window.width
case $msg_face[1]
when 1 # 오른쪽
@face_window.x = cx / 2 + self.width
self.x = cx / 2
@name_window.x = self.x
else # 왼쪽
@face_window.x = cx / 2
self.x = cx / 2 + @face_window.width
@name_window.x = @face_window.x
end
else
cx = 640 - self.width
self.x = cx / 2
@name_window.x = self.x
end
end
#--------------------------------------------------------------------------
# ● 윈도우의 위치와 불투명도의 설정
#--------------------------------------------------------------------------
def reset_window
if $game_temp.in_battle
self.y = 32
else
case $game_system.message_position
when 0 # 상
self.y = 32
when 1 # 중
self.y = 160
when 2 # 하
self.y = 304
end
end
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
@name_window.y = self.y - KGC::MSGA_NAME_WINDOW_HEIGHT + 16
@name_window.opacity = self.opacity
@face_window.y = self.y
@face_window.opacity = self.opacity
self.back_opacity = 160
self.pause = false
end
 #--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
def update
super
# 윈도우를 갱신
@name_window.update
@face_window.update
# 용명의 경우
if @fade_in
self.contents_opacity += 24
@name_window.contents_opacity += 24 if $msg_name != nil
@face_window.contents_opacity += 24 if $msg_face != nil
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
return
end
# 수치 입력중의 경우
if @input_number_window != nil
@input_number_window.update
# 결정
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$game_variables[$game_temp.num_input_variable_id] =
@input_number_window.number
$game_map.need_refresh = true
# 수치 입력 윈도우를 해방
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
  # 메세지 표시중의 경우
if @contents_showing
# 스크롤 최대 위치를 계산
scroll_max = self.contents.height - (self.height - 32)
# 선택사항의 표시중이 아니면 포즈 싸인을 표시
if $game_temp.choice_max == 0
self.pause = true
end
# 캔슬
if Input.trigger?(Input::B) && $game_temp.choice_max > 0 &&
$game_temp.choice_cancel_type > 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
# 결정
if Input.trigger?(Input::C)
if $game_temp.choice_max > 0
$game_system.se_play($data_system.decision_se)
$game_temp.choice_proc.call(self.index)
end
# 스크롤 기능이 온, 한편 선택사항이 아닌 경우
if $game_system.message_scroll && $game_temp.choice_max == 0
# 최하부 도달 판정
if KGC::MSGA_MUST_LOWEST
terminate_message if self.oy == scroll_max
else
terminate_message
end
else
terminate_message
end
end
    # 스크롤 기능이 온, 한편 선택사항이 아닌 경우
if $game_system.message_scroll && $game_temp.choice_max == 0
# 방향 버튼 위가 밀리고 있는 경우
if Input.press?(Input::UP)
self.oy = [self.oy - KGC::MSGA_SCROLL_SPEED, 0].max
# 방향 버튼아래가 밀리고 있는 경우
elsif Input.press?(Input::DOWN)
self.oy = [self.oy + KGC::MSGA_SCROLL_SPEED, scroll_max].min
# R 버튼이 밀렸을 경우
elsif Input.repeat?(Input::R)
self.oy = [self.oy + (self.height - 32), scroll_max].min
# L 버튼이 밀렸을 경우
elsif Input.repeat?(Input::L)
self.oy = [self.oy - (self.height - 32), 0].max
end
# 윈도우 최하부에 이르렀을 경우
if $game_temp.choice_max == 0 && self.oy == scroll_max
# 포즈 싸인을 표시
self.pause = true
else
# 포즈 싸인을 소거
self.pause = false
end
end
return
end
  # 페이드아웃중 이외로 표시 기다리는 메세지나 선택사항이 있는 경우
if !@fade_out && $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
reset_window
refresh
Graphics.frame_reset
self.visible = true
self.contents_opacity = 0
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
return
end
# 표시해야 할 메세지가 없지만, 윈도우가 가시 상태의 경우
if self.visible
@fade_out = true
self.opacity -= 48
@name_window.opacity -= 48
@face_window.opacity -= 48
if self.opacity == 0
self.visible = false
@name_window.visible = false
@face_window.visible = false
@fade_out = false
$game_temp.message_window_showing = false
end
return
end
  end
#--------------------------------------------------------------------------
# ● 커서의 구형 갱신
#--------------------------------------------------------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8 + @text_x, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Interpreter (분할 정의 3)
#==============================================================================

class Interpreter
#--------------------------------------------------------------------------
# ● 문장의 표시
#--------------------------------------------------------------------------
def command_101
# 다른 문장이 message_text 로 설정 끝나, 한편 스크롤 기능이 오프의 경우
if $game_temp.message_text != nil && !$game_system.message_scroll
# 종료
return false
end
# 메세지 종료 대기중 플래그 및 콜백을 설정
@message_waiting = true
$game_temp.message_proc = Proc.new { @message_waiting = false }
# message_text 에 1 행 째를 설정
$game_temp.message_text = @list[@index].parameters[0] + "n"
line_count = 1
# 루프
loop {
      # 다음의 이벤트 커멘드가 문장 2 행 째 이후의 경우
      if @list[@index+1].code == 401
# message_text 에 2 행 째 이후를 추가
$game_temp.message_text += @list[@index+1].parameters[0] + "n"
line_count += 1    # 이벤트 커멘드가 문장 2 행 째 이후가 아닌 경우
      else
    # 다음의 이벤트 커멘드가 문장 표시, 한편 스크롤 기능이 온의 경우
if @list[@index+1].code == 101 && $game_system.message_scroll
# message_text 에 다음의 문장을 추가
$game_temp.message_text += @list[@index+1].parameters[0] + "n"
line_count += 1
# 인덱스를 진행시킨다
@index += 1
next
        # 다음의 이벤트 커멘드가 선택사항의 표시의 경우
        elsif @list[@index+1].code == 102
# 선택사항이 화면에 들어가는 경우
if @list[@index+1].parameters[0].size <= 4 - line_count
# 인덱스를 진행시킨다
@index += 1
# 선택사항의 셋업
$game_temp.choice_start = line_count
setup_choices(@list[@index].parameters)
end
# 다음의 이벤트 커멘드가 수치 입력의 처리의 경우
elsif @list[@index+1].code == 103
# 수치 입력 윈도우가 화면에 들어가는 경우
if line_count < 4
# 인덱스를 진행시킨다
@index += 1
# 수치 입력의 셋업
$game_temp.num_input_start = line_count
$game_temp.num_input_variable_id = @list[@index].parameters[0]
$game_temp.num_input_digits_max = @list[@index].parameters[1]
end
end
# 계속
return true
end
# 인덱스를 진행시킨다
@index += 1
}
end
end

Who's 백호

?

이상혁입니다.

http://elab.kr

0 추천 0 비추천
Facebook Twitter Google Pinterest KakaoStory Band
위로 아래로 댓글로 가기 인쇄
에디터 선택하기
✔ 텍스트 모드 ✔ 에디터 모드
?
댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
Comment '3'
  • ?
    Aerkers 2009.02.28 14:08
    마음에 드는 스크립트네요, 잘쓸게요,
    댓글
  • ?
    L Triple 2010.02.26 23:51

    잘써보겠습니다.

    좋은 자료 언제나 감사 하구요 ^^

    댓글
  • ?
    L Triple 2010.02.26 23:56

    다른 스크립트랑 겹쳐서

    오류가 나는군요.

    안타깝네요 .

    댓글

Category
  • 그래픽(16)
  • 맵/타일(15)
  • 메뉴(88)
  • 메시지(26)
  • 미니맵(9)
  • 버그픽스(0)
  • 변수/스위치(10)
  • 상점(14)
  • 상태/속성(8)
  • 스킬(49)
  • 아이템(34)
  • 액터(4)
  • 원경(0)
  • 영상(7)
  • 오디오(8)
  • 온라인(23)
  • 이동 및 탈것(62)
  • 이름입력(10)
  • 장비(34)
  • 저장(34)
  • 전투(174)
  • 제작도구(1)
  • 직업(2)
  • 퀘스트(3)
  • 키입력(18)
  • 타이틀/게임오버(24)
  • 파티(11)
  • HUD(34)
  • 기타(254)
List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 10174
1021 제작도구 [XP/VX/VXA] Doodad's Editor by newold Alkaid 2020.07.12 601
1020 메시지 Taylor's Simple Message System 2000 Alkaid 2020.07.05 437
1019 이름입력 한글조합입력기(영어가능) file 조규진1 2019.11.10 746
1018 맵/타일 맵연결 스크립트 (데모첨부) file 게임애호가 2018.06.15 910
1017 전투 전투중에 장비들 교체하기 file 레이스89 2017.08.19 942
1016 온라인 인터넷 웹 상에서의 시간을 취득하는 스크립트 1 이우 2016.05.24 1100
1015 장비 착용한 장비에 따라 모습이 달라지는 스크립트 예제 5 file 게임애호가 2015.02.14 2259
1014 기타 [All RGSS] File-Ex file Cheapmunk 2014.12.29 1108
1013 기타 [All RGSS] FileTest (Unicode) file Cheapmunk 2014.12.29 750
1012 기타 [RGSS XP] 게임 해상도 조절 스크립트 (*2) 11 file Cheapmunk 2014.10.03 2867
1011 그래픽 Drago - Custom Resolution II 1 Alkaid 2014.09.10 1267
1010 기타 레벨업스크립트(xp) 2 게임을만들자! 2014.08.05 1950
1009 메뉴 MOG - Scroll Bar for XP file 습작 2014.07.06 1732
1008 기타 [All RGSS] 윈도우 메세지박스 스크립트 (Completed ver) 5 file Cheapmunk 2014.06.22 2397
1007 기타 [All RGSS] 게임 다중 실행 방지 스크립트 1 file Cheapmunk 2014.05.24 1567
1006 기타 RM2kXP file 습작 2014.03.17 1713
1005 기타 [All RGSS] 윈도우 커서 숨기기/보이기 1 file Cheapmunk 2014.03.02 2161
1004 기타 Drago - Custom Resolution by LiTTleDRAgo Alkaid 2014.02.13 1317
1003 그래픽 [XP/VX/VXA] Drago - Transition Pack Alkaid 2014.02.13 1387
1002 기타 [XP/VX/VXA] Map Screenshot by LiTTleDRAgo 1 Alkaid 2014.02.13 1045
쓰기
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
AVANGS

게임 제작, 창작, 자료, 강좌를 연결하는 커뮤니티

  • 개인정보 취급방침

Copyright © 2026 Avangs