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 5593
공지 RPG VX ACE 유용한 링크 모음 16 아방스 2012.01.03 29399
97 버그픽스 VXAce SP1 2 Alkaid 2013.02.15 2080
96 스킬 VXAce 경험치 스킬습득 스크립트 3 file 아이미르 2012.10.27 2758
95 전투 VXAce 사이드뷰 스크립트 (번역) 23 아이미르 2012.12.10 6380
94 상점 VXAce 상점 스크립트 V0.9 17 아이미르 2012.06.29 5399
93 아이템 VXAce 셋트장비 스크립트 9 file 아이미르 2013.03.08 3646
92 스킬 VXAce 스킬레벨, 스킬장착 스크립트 11 file 아이미르 2012.11.01 3832
91 스킬 VXAce 스킬포인트 스크립트 5 file 아이미르 2013.03.21 4180
90 아이템 VXAce 아이템 도감 스크립트 7 file 아이미르 2012.12.31 3831
89 아이템 VXAce 아이템 채집 스크립트 23 file 아이미르 2012.11.23 4070
88 아이템 VXAce 아이템 합성 스크립트 Ver 0.8 17 아이미르 2012.08.23 4022
87 스킬 VXAce 아츠장착 스킬습득 스크립트 1 file 아이미르 2013.02.24 2793
86 장비 VXAce 장비장착 스킬발동 스크립트 2 아이미르 2012.09.02 2422
85 스킬 VXACE 패시브 스킬 스크립트 Ver. 0.82 21 file 아이미르 2012.03.07 6697
84 맵/타일 WhiteFlute - XPMap-EX (VX Ace에서 XP의 맵 데이터를 읽을 수 있게 함) 3 Alkaid 2012.12.26 1525
83 전투 WhiteFlute: 자동전투 스크립트 3 file Alkaid 2012.09.20 3794
82 전투 XAS Hero Edition Ace Experimental 0.5 6 Alkaid 2012.01.15 6162
81 전투 XAS VX ACE 데모 한글 번역 ( 스크립트 번역 모음 ) 1 미루 2013.01.10 4595
80 맵/타일 XP Map Loader by LiTTleDRAgo Alkaid 2013.07.23 1721
79 맵/타일 XPMAP-EX : XPマップスクリプト by A Crying Minister (WHITE-FLUTE) file 습작 2013.06.09 3147
78 메뉴 XS 메뉴 스크립트 4 file 스리아씨 2013.10.22 3875
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11