XP 스크립트

십자군의 rpg세상에서 퍼왔습니다.. 한글자씩뜬다군요.. 소리도나오고 #============================================================================== # ■ Window_Message #------------------------------------------------------------------------------ #  문장 표시에 사용하는 메세지 윈도우입니다. #============================================================================== class Window_Message < Window_Selectable #-------------------------------------------------------------------------- # ● 오브젝트 초기화 #-------------------------------------------------------------------------- def initialize super(80, 304, 480, 160) self.contents = Bitmap.new(width - 32, height - 32) self.visible = false self.z = 9998 @update_text = true #★ @fade_in = false @fade_out = false @contents_showing = false @cursor_width = 0 self.active = false self.index = -1 end #-------------------------------------------------------------------------- # ● 해방 #-------------------------------------------------------------------------- def dispose terminate_message $game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #-------------------------------------------------------------------------- # ● 메세지 종료 처리 #-------------------------------------------------------------------------- def terminate_message self.active = false self.pause = false self.index = -1 self.contents.clear @update_text = true #★ # 표시중 플래그를 클리어 @contents_showing = false # 메세지 콜백을 부르는 if $game_temp.message_proc != nil $game_temp.message_proc.call end # 문장 , 선택사항 , 수치 입력에 관한 변수를 클리어 $game_temp.message_text = nil $game_temp.message_proc = nil $game_temp.choice_start = 99 $game_temp.choice_max = 0 $game_temp.choice_cancel_type = 0 $game_temp.choice_proc = nil $game_temp.num_input_start = 99 $game_temp.num_input_variable_id = 0 $game_temp.num_input_digits_max = 0 # 골드 윈도우를 개방 if @gold_window != nil @gold_window.dispose @gold_window = nil end end #-------------------------------------------------------------------------- # ★ 리프레쉬 #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color @x = @y = 0 @cursor_width = 0 # 선택사항이라면 인덴트를 실시하는 if $game_temp.choice_start == 0 @x = 8 end # 표시 기다리는 메세지가 있는 경우 if $game_temp.message_text != nil @text = $game_temp.message_text # 제어 문자 처리 begin last_text = @text.clone @text.gsub!(/\[Vv][([0-9]+)]/) { $game_variables[$1.to_i] } end until @text == last_text @text.gsub!(/\[Nn][([0-9]+)]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end # 편의상 ,"\\" 을 "00" 에 변환 @text.gsub!(/\\/) { "00" } # "\C" 을 "01" 에 ,"\G" 를 "02" 에 변환 @text.gsub!(/\[Cc][([0-9]+)]/) { "01[#{$1}]" } @text.gsub!(/\[Gg]/) { "02" } end end #-------------------------------------------------------------------------- # ● 윈도우의 위치와 불투명도의 설정 #-------------------------------------------------------------------------- def reset_window if $game_temp.in_battle self.y = 16 else case $game_system.message_position when 0 # 상 self.y = 16 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 self.back_opacity = 160 end #-------------------------------------------------------------------------- # ★ 문자의 갱신 #-------------------------------------------------------------------------- def update_text # 표시 기다리는 메세지가 있는 경우 if @text != nil # c 에 1 문자를 취득 (문자를 취득할 수 없게 될 때까지 루프) while ((c = @text.slice!(/./m)) != nil) # \ 의 경우 if c == "00" # 본래의 문자에 되돌리는 c = "\" end # C[n] 의 경우 if c == "01" # 문자색을 변경 @text.sub!(/[([0-9]+)]/, "") color = $1.to_i if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end 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 # 개행 문자의 경우 if c == "n" # 선택사항이라면 커서의 폭을 갱신 if @y >= $game_temp.choice_start @cursor_width = [@cursor_width, @x].max end # y 에 1 를 가산 @y += 1 @x = 0 # 선택사항이라면 인덴트를 실시하는 if @y >= $game_temp.choice_start @x = 8 end # 다음의 문자에 next end # 문자를 묘화 self.contents.draw_text(4 + @x, 32 * @y, 40, 32, c) # x 에 묘화 한 문자의 폭을 가산 @x += self.contents.text_size(c).width # 결정 SE 을 연주 $game_system.se_play($data_system.decision_se) return end 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 @input_number_window.y = self.y + $game_temp.num_input_start * 32 end @update_text = false #★ end #-------------------------------------------------------------------------- # ● 프레임 갱신 #-------------------------------------------------------------------------- def update super # 용명의 경우★ if @fade_in self.contents_opacity = 255 if @input_number_window != nil @input_number_window.contents_opacity = 255 end if self.contents_opacity == 255 @fade_in = false end 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 if @update_text update_text return end # 선택사항의 표시중이 아니면 포즈 싸인을 표시 if $game_temp.choice_max == 0 self.pause = true end if self.pause == true && Input.dir4 != 0 terminate_message end # 캔슬 if Input.trigger?(Input::B) if $game_temp.choice_max > 0 and $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 terminate_message if self.pause == true 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 terminate_message end return end # 페이드아웃중 이외로 표시 기다리는 메세지나 선택사항이 있는 경우 if @fade_out == false and $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 = 0 if self.opacity == 0 self.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, n * 32, @cursor_width, 32) else self.cursor_rect.empty end end end

Who's 백호

?

이상혁입니다.

http://elab.kr

Comment '6'
  • ?
    요소보니따 2009.08.21 09:54
    뭔 스크립트를 이렇게 써줘요..다 직접쓰란 소린가
  • ?
    카이어덱터 2010.01.02 01:36

    컥... 엔터 누르면서 수정해야 될듯 ㅠ.ㅠ

  • profile
    lksnmkl97 2010.02.14 21:40

    수정부탁//

  • ?
    백영군 2012.12.28 02:12
    헐 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
  • ?
    마니아(홍담) 2013.02.08 07:21

    제가 그 노가다 개행 처리를 해줬습니다. -_-


    출처 : 유니트릭 - 마니아 님
    XP/VX/Ace 스크립트 - 한 글자 씩 말을 띄우는 스크립트 (고전 게임 형식, 역전재판, 대화, 띄우기) (http://unitrick.co.kr/pdsrmscr/9722)

  • ?
    크로커(K) 2013.05.26 12:48
    감사합니다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6169
821 장비 장비창을 다른거로 바꾸기 [헬악이님 제공] 10 file 아방스 2007.11.09 3049
820 전투 심플액알 더더 수정(스위치, 변수) 17 file 백호 2009.02.21 3046
819 타이틀/게임오버 게임오버 화면 에서 커맨드 윈도우 스크립트 12 file 백호 2009.02.21 3031
818 메뉴 제가 쓰고있는 메뉴 13 file 백호 2009.02.21 3030
817 키입력 AInput Module 3.10 by vgvgf (전체키, 마우스 입력) 6 file Alkaid 2010.09.01 3030
816 전투 GTBS 1.4 스크립트 9 아방스 2009.02.05 3028
815 메뉴 링 메뉴 소지금,플레이시간 추가 버젼 17 Neowitch* 2008.04.20 3022
» 메시지 한글자씩 뜨는 스크립트 6 백호 2009.02.21 3001
813 아이템 아이템획득스크립트 ps인간 2009.01.23 2993
812 HUD 맵이름 넣기(bs님의 강의랑 다르게 스크립트로) 16 file 아방스 2007.11.09 2982
811 전투 횡스크롤형식의 스크립트 7 백호 2009.02.21 2980
810 전투 CTB by Charlie Fleed 3.1 - FF10 스타일의 전투시스템 6 Alkaid 2010.09.10 2975
809 이동 및 탈것 캐릭터 이동 프레임? 증가 스크립트 9 백호 2009.02.21 2969
808 맵/타일 World Map version 1.2 11 백호 2009.02.22 2962
807 아이템 [신기술 체험] 인벤토리 8 file 백호 2009.02.22 2962
806 메뉴 메뉴 단축키 스크립트 14 백호 2009.02.22 2958
805 그래픽 WhiteFlute - BitmapEX 4 file JACKY 2012.12.10 2953
804 메뉴 Mog-메뉴업그레이드? ps인간 2009.01.23 2948
803 전투 Mr.mo's SBABS Lite 5 6 아방스마니아 2010.11.14 2947
802 HUD 맵 이름을 표시해주는 스크립트입니다. 25 임희성 2011.02.12 2939
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