MCM 등의 스크립트를 TesVTranslator로 번역하다 보면 위 스샷처럼 자물쇠+보라색줄로 표시되어 번역이 불가능한 줄이 있습니다.
이런 줄들은 스크립트에서 변수로 사용되기 때문에 번역하면 오류가 발생하므로 번역이 원천금지된 부분입니다.
그런데 간혹 스트링(게임내에서 텍스트로 출력되는 부분)이 변수와 똑같게 짜여진 경우 TesVTranslator가 이 둘을 구분하지 못하고 일괄적으로 번역을 금지시키기도 합니다. 이런 경우 .psc (소스 파일)이 있다면 문제되는 부분을 수정해서 컴파일하면 번역이 가능해집니다.
이 글은 이렇게 모드 스크립트 번역시 변수와 스트링이 같아 번역이 불가능한 경우의 psc 수정/컴파일 방법입니다.
1. Notepad++로 PSC 수정하기
윈드송님이 문의하신 Inn 부분은 이렇게 Array 변수로서의 Inn과 텍스트로 출력되는 Inn이 똑같기 때문에 이대로는 번역이 불가능한 상태입니다. Inn뿐만 아니라 이런 부분이 많이 있는데, 변수를 바꾸는 건 복잡하고 까다로우니까 텍스트로 출력되는 부분(스트링)만 바꾸는 게 편합니다. 수정해야 할 부분은 아래와 같습니다.
event OnPageReset ~ endevent 사이
여기가 MCM 화면으로 표시되는 레이아웃이고, 텍스트로 출력되는 부분은 아래에 해당됩니다.
AddHeaderOption("텍스트") ;타이틀(대분류) 이름
AddToggleOption("텍스트", ...) ;토글 옵션 이름
AddMenuOption("텍스트", ...) ;메뉴 옵션 이름
AddSliderOption("텍스트", ...) ;슬라이더 옵션 이름
여기서 Inn의 경우 "Inn"을 "@Inn" 등으로 원래 이름과 분명하게 구분되도록 바꿔주면 됩니다. 하나하나 일일이 바꾸는 게 번거롭다면 Notepadd++의 기능을 활용해서 event OnPageReset ~ endevent 사이 구간을 선택한 뒤 일괄변경하면 편리합니다. (@ 부분은 나중에 TesVTranslator로 pex를 열어 @만 지우고 저장한 뒤 pex를 다시 불러오면 기존에 만든 사용자사전도 그대로 적용할 수 있습니다)
수정한 뒤에는 그대로 저장하면 됩니다.
2. CK툴로 PSC 컴파일하기
모드 오거나이저 사용자의 경우 CK툴로 컴파일하려면 먼저 준비작업이 필요합니다. 아래 글을 참고하세요.
CK툴로 모드를 불러온 뒤(이때 반드시 SKSE, SkyUI의 스크립트 소스 psc 파일들도 같이 불러와야 합니다), Object Window에서 수정할 스크립트가 링크된 부분을 찾아갑니다. 아까 수정한 스크립트는 MCM 스크립트이므로 MCM 부분을 찾으면 되는데, Character - Quest 트리를 선택한 뒤 FormID 순으로 정렬하면 모드로 추가된 항목만 모아볼 수 있습니다. (Count에서 *표시) 여기서 MCM으로 짐작되는 항목을 더블클릭해서 창을 띄운 뒤 탭 메뉴의 Scripts를 찾아갑니다.
※ CK툴을 쓰지 않고 Notepad++로 직접 컴파일할 수도 있지만 여러모로 CK툴을 쓰는 쪽이 더 낫습니다.
※ CK툴로 해당 모드를 꼭 로딩하지 않고 스크립트만 컴파일할 수도 있지만 역시 모드를 불러와놓고 작업하는 쪽이 여러모로 좋습니다.
※ papyrus util 모드를 기반으로 하는 모드는 papyrus util의 스크립트 소스까지 같이 불러와야 합니다.
Scripts 탭에서 링크된 MCM 스크립트(수정할 스크립트)를 마우스 우클릭한 뒤 Edit Source를 클릭하면 아래처럼 컴파일러 창이 열립니다.
여기서 File - Save나 Build - Compile을 선택하면 스크립트가 컴파일되며 psc와 동일한 이름의 pex 파일이 생성됩니다. 이때 위 스샷처럼 반드시 Compilation succeeded라는 문구가 떠야 합니다. (실패할 경우 어떤 줄의 어떤 구문이 문제라는 표시가 주루룩 뜨게 됩니다)
pex 생성 경로는 date/scripts 폴더 안입니다. MO의 경우에도 모드가 설치된 폴더 안에 pex 파일이 이미 있으면 overwrite 폴더가 아니라 해당 모드 폴더 안에 생성됩니다.
3. TesVTranslator로 PEX 번역하기
이렇게 만든 pex 파일을 TesVTranslator로 열어보면 변수와 스트링(텍스트 출력 부분)이 구분된 것을 볼 수 있습니다. 이제 원하는 대로 번역하시면 됩니다.
scripts_SKSE172_SkyUI.7z (컴파일에 필요한 SKSE SkyUI 소스)
skyrimunboundmcmscript.7z (번역가능하게 수정된 Skyrim Unbound MCM pex)