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 5109
공지 RPG VX ACE 유용한 링크 모음 16 아방스 2012.01.03 28921
217 HUD 화폐단위 표시 구분 5 file 허걱 2014.03.19 2938
216 이름입력 한글 이름입력창 23 file 에틴 2012.01.23 11679
» 메시지 한국어 조사처리 스크립트 7 Ilike게임 2012.10.09 3601
214 메시지 한국어 조사 처리 스크립트 (140130) 2 치리 2014.01.31 2647
213 메뉴 파티 개별 인벤토리 스크립트 안나카레리나 2018.06.25 738
212 메시지 텍스트 사운드 이펙트 ( Text Sound Effect ) 10 file 미루 2013.01.10 4281
211 타이틀/게임오버 타이틀 화면 없이 게임을 시작하게 만드는법. 6 마에르드 2012.02.11 4585
210 타이틀/게임오버 타이틀 스크린 커스터마이징 11 file 라실비아 2013.08.12 5153
209 키입력 키 입력 확장 - 전체키 + 마우스입력 40 file 허걱 2012.12.15 5779
208 기타 크리스탈 엔진 : 포켓몬 배틀 시스템 7 file 스리아씨 2013.09.24 3894
207 전투 콤보 카운팅 시스템 4 아르피쥐 2011.12.18 4589
206 타이틀/게임오버 코아 코스튬씨의 랜덤 타이틀 출력 스크립트를 VX Ace용으로 변환 (테스트용) 1 Alkaid 2011.12.29 3189
205 타이틀/게임오버 코아 코스튬씨의 랜덤 타이틀 스크립트를 VX Ace용으로 변환 (완성판) 2 Alkaid 2012.01.25 3980
204 그래픽 커스텀 아이콘 적용하기 2 file 간로 2015.09.28 2719
203 직업 직업 경험치+능력치 설정 확장 7 file zubako 2015.01.27 3988
202 이동 및 탈것 지상 탈것 스크립트 6 file 미루 2013.01.07 4579
201 전투 전투시 나오는 메세지 삭제 10 Nintendo 2012.03.03 4357
200 이름입력 전체키 + 조합한글 + 이름입력처리 변경 47 file 허걱 2012.07.04 8197
199 메뉴 저장금지시 메뉴에 저장 안 뜨게 하기 5 file Bunny_Boy 2013.08.24 2519
198 장비 장비 장착을 통한 스킬 습득 및 삭제 4 아이미르 2012.02.05 3597
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11