Ace 스크립트

http://mya.moonmelody.com/rpg-maker-vx-ace-script-ko-particle/

위곳이 링크입니다.

 

이게 중복인지는 모르겠는데, 중복이면 자삭하겠습니다.

 

이 스크립트는 어느정도 알만툴을 쓰신분들이면 알것같습니다. [을;를]을 넣으면 한국어에 받힘이 있냐 없냐를 조사해 을 과 를중 하나를 문장에 집어넣는 것입니다.

 

예를 들어 몬스터가 나타날때 Vocab 스크립트에 "[[이;가]] 등장했다!" 라고 적고, 슬라임이 나타났다고 한다면

"슬라임이 나타났다" 처럼 한국어를 자연스럽게 나오게 하는 것입니다.

 

--------------------------------------------------------------------------------------------------------------------------------

 

## RPG 쯔꾸르 VX Ace용 한국어 조사 처리 스크립트 120905 by Chiri
##
## 사용법 : 받침 유무에 따라 자동으로 조사 처리를 원하는 부분에
##          ['받침이 있을 경우의 조사';'받침이 없을 경우의 조사']
##          와 같은 형식으로 입력해 주시면 됩니다.
##           예 - \N[1][은;는] 1280골드[을;를] 얻었다!
##          이벤트의 텍스트 출력 및 전투 스크립트 등 윈도에서 출력되는
##          부분이라면 거의 사용이 가능할 것입니다.
##         
##          A1 스크립트와의 겸용이 가능합니다. A1 스크립트와 함께 사용하실 때에는
##          Window_Base 클래스 부분은 삭제한 후 A1_System 클래스 부분의 주석을
##          지워주시기 바랍니다.
##
## fallroot님(http://dailyupgrade.me/), superkdk님(http://blog.superkdk.com/)의
## 스크립트를 참고 및 빌려썼습니다. 감사드립니다.

class Window_Base
  def convert_escape_characters(text)
    result = text.to_s.clone
    result.gsub!(/\\/)            { "\e" }
    result.gsub!(/\e\e/)          { "\\" }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
    result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
    result.gsub!(/\eG/i)          { Vocab::currency_unit }
    result.gsub!(/(?<=(.{1}))\[\[(.?\;.?)\]\]/) { Korean.get_proposition($1, $2) } # 한국어 조사 처리 함수를 부르는 부분
    result.gsub!(/(?<=(.{1}))\[(.?\;.?)\]/) { Korean.get_proposition($1, $2) } # 한국어 조사 처리 함수를 부르는 부분
    result
  end
end

##class A1_System::CommonModule
##  def convert_escape_characters(text)
##    result = text.to_s.clone
##    result.gsub!(/\\/)                           { "\e" }
##    result.gsub!(/\e\e/)                         { "\\" }
##    result.gsub!(/\eV\[(\d+)\]/i)                { $game_variables[$1.to_i] }
##    result.gsub!(/\eV\[(\d+)\]/i)                { $game_variables[$1.to_i] }
##    result.gsub!(/\eN\[(\d+)\]/i)                { actor_name($1.to_i) }
##    result.gsub!(/\eP\[(\d+)\]/i)                { party_member_name($1.to_i) }
##    result.gsub!(/\eG/i)                         { Vocab::currency_unit }
##    result.gsub!(/(?<=(.{1}))\[\[(.?\;.?)\]\]/) { Korean.get_proposition($1, $2) } # 한국어 조사 처리 함수를 부르는 부분
##    result.gsub!(/(?<=(.{1}))\[(.?\;.?)\]/) { Korean.get_proposition($1, $2) } # 한국어 조사 처리 함수를 부르는 부분
##    loop { result = result.sub(/<s>(.+?)<\/s>/i) { eval($1) }; break unless $1 }
##    result
##  end
##end
  
class Korean
  # http://dailyupgrade.me/
  # 받침에 따른 알맞은 조사를 구한다.
  PROPOSITIONS = {'이' => '가', '은' => '는', '을' => '를', '과' => '와', '으' => ''}
  KOREANNUMBER = {'1' => '일', '2' => '이', '3' => '삼', '4' => '사', '5' => '오', '6' => '육', '7' => '칠', '8' => '팔', '9' => '구', '0' => '영'}
  KOREANALPHABET = {'A' => '이', 'B' => '비', 'C' => '씨', 'D' => '디', 'E' => '이', 'F' => '프', 'G' => '지', 'H' => '치', 'I' => '이', 'J' => '이', 'K' => '이', 'L' => '엘', 'M' => '엠', 'N' => '엔', 'O' => '오', 'P' => '피', 'Q' => '큐', 'R' => '알', 'S' => '스', 'T' => '티', 'U' => '유', 'V' => '이', 'W' => '유', 'X' => '스', 'Y' => '이', 'Z' => '트'}
  KOREANALPHABETFULL = {'A' => '이', 'B' => '비', 'C' => '씨', 'D' => '디', 'E' => '이', 'F' => '프', 'G' => '지', 'H' => '치', 'I' => '이', 'J' => '이', 'K' => '이', 'L' => '엘', 'M' => '엠', 'N' => '엔', 'O' => '오', 'P' => '피', 'Q' => '큐', 'R' => '알', 'S' => '스', 'T' => '티', 'U' => '유', 'V' => '이', 'W' => '유', 'X' => '스', 'Y' => '이', 'Z' => '트'}
 
  def self.get_proposition word, proposition
 
    proposition1 = proposition.split(';')
 
    if word.to_i > 0
      word = KOREANNUMBER[word]
    end
    if word == "0"
      word = KOREANNUMBER[word]
    end
 
    if word.scan(/[A-Z]/).size > 0
      word = KOREANALPHABET[word]
    end
    if word.scan(/[a-z]/).size > 0
      word = KOREANALPHABET[word.upcase]
    end
    if word.scan(/[A-Z]/).size > 0
      word = KOREANALPHABETFULL[word]
    end
 
    word.separate
    # 받침이 없을 때
    if word.separate[2] == ""
      proposition1[1]
    # 받침이 있을 때
    else
      proposition1[0]
    end
  end
end
 
class String
  # http://blog.superkdk.com/?p=68
  # 한글 초성, 중성, 종성. (UTF-8 이어야 함)
  @@chosung = ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ']
  @@jungsung = ['ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ']
  @@jongsung = ['', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ']
  # UTF-8 형식의 문자열을 분해한다.
  def separate
    separated = []
 
    self.unpack('U*').each do |c|
      n = (c & 0xFFFF).to_i
 
      # 유니코드 2.0 한글의 범위 : AC00(가) ~ D7A3(힣)
      if n >= 0xAC00 && n <= 0xD7A3
        n = n-0xAC00
        n1 = n / (21 * 28)  # 초성 : ‘가’ ~ ‘깋’ -> ‘ㄱ’
        n = n % (21 * 28)  # ‘가’ ~ ‘깋’에서의 순서
        n2 = n / 28;    # 중성
        n3 = n % 28;    # 종성
 
        separated << @@chosung[n1] << @@jungsung[n2] << @@jongsung[n3]
      else
#        separated << c.to_a.pack('U')
      end
    end
     separated
  end
end

Who's Ilike게임

profile

소재 多

추진력 無

  • ?
    이호박 2012.10.22 16:42
    어디에 스크립트를 넣으면 되죠?
  • profile
    Ilike게임 2012.10.22 19:10
    스크립트 밑쪽에 있는 main스크립트 바로위에 새창을 만들어 복사해 그대로 붙이시면 됩니다.
  • ?
    이호박 2012.11.12 20:14
    이걸 문장에 \N[1][[이;가]] 같이 쓰고 싶은데, 그렇게 되지가 않네요 ㅠㅠ
  • profile
    Ilike게임 2012.11.12 20:51
    응?
    \N[1] 는 안써봐서 모르는데...
    한번 찾아볼께요
  • ?
    시옷청룡 2013.07.11 13:23
    감사합니당~ [을;를] 이게 맞는거죠? [[을;를]] 이게 아니라
  • profile
    Ilike게임 2013.09.15 22:21
    둘다 해보는게 안전빵
  • profile
    천둥번들 2019.06.23 18:58
    와 감사합니다

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 5592
공지 RPG VX ACE 유용한 링크 모음 16 아방스 2012.01.03 29398
97 전투 SRPG 컨버터 for Ace (SRPGコンバータ for Ace) by AD.Bank 27 file 습작 2012.04.17 7304
96 HUD SpriteIcon - 화면에 아이콘 그리기 4 file 허걱 2013.02.24 3649
95 전투 SPRG 컨버터 NEXT 1 file 게임애호가 2016.06.09 1925
94 스킬 Skill Cost Manager - Yanfly 4 file Rondo 2013.04.09 2638
93 변수/스위치 Simple self switches(간단한 셀프 스위치) 4 한국사수련생 2013.10.04 1453
92 전투 Sideview08 Ace 테스트 버전 (인 듯 합니다) 5 재규어 2012.01.24 4409
91 상점 Shop Stock < 상점에서 판매하는 아이템의 수량 제한 > 2 file 스리아씨 2013.09.26 1899
90 변수/스위치 Self_Variables (셀프 변수 시스템) 16 file 허걱 2012.12.17 2308
89 전투 Schala 전투 시스템 (XAS에 의해 구동) 11 홍색의환상향 2013.05.05 5354
88 저장 Scene_File Comfirmation by JohnBolton Alkaid 2013.02.13 2431
87 기타 Sapphire Action System IV v4.4br(엑알 스크립트) 6 file 꿈꾸는사람 2012.08.02 4542
86 전투 RPG VX Ace 전투 대사 한글화 37 재규어 2012.01.04 20317
85 이동 및 탈것 RPG VX ACE ( RGSS3_8direction_move_v1.01 ) 8방향 스크립트 17 file 쿠쿠밥솥 2012.01.24 5448
84 상태/속성 RGSS3_스테이터스 표시 확장(추가) by tomoaky 4 file 아이미르 2013.01.03 3995
83 버그픽스 RGSS3 Unofficial Bug Fix Snippets Alkaid 2015.09.09 686
82 키입력 RGSS3 Input Full + UTF-8 Input by Cidiomar 1 Alkaid 2012.09.08 2460
81 그래픽 RGSS3 - CompositeGraphics 1 file 쿠쿠밥솥 2014.01.17 2650
80 HUD ReinoRpg Hudre 5 file 스리아씨 2013.09.22 2820
79 기타 regendo - MenuScreen While Message 혜인 2014.01.23 1443
78 전투 Ra TBS Alpha by Eshra 1 file 습작 2013.05.13 3875
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11