이전 글(파이썬으로 추출하기):
https://kone.gg/s/femdom/dze1uP_9Q1VY58LZDjCzOb
마지막 내용임
이제 이전에 만든 csv 파일이 인게임 텍스트를 바꿔치기하도록 개선할 거임. dnspy가 필요함.
- dnspy 로 파일 열고, 번역기 클래스 만들기
우선 dnspy를 통해서 게임폴더 > 게임명_Data > Managed > RPGMaker.CodeBase.CoreSystem.dll 라는 파일을 엶.
그 다음 우클릭 -> add class 를 누르고,
해당 파일
의 내용을 복사해서 붙여넣기 하고 저장하면 됨.
save module까지 눌러줘야 함
이제부터는 CsvTranslator.Translate()를 통해서 문자열을 바꿔치기 할 수 있음
- 번역 대상 찾기
나는 지금 401, 402, 101 코드만 번역했음. 그래서 전체 검색으로 이 코드들을 찾아볼 거임. 그러면 나오는 게 있는데,
AbstractEventCommandChainLauncher 라는 클래스를 보면 코드enum-작업클래스 매핑 딕셔너리가 있음. 이걸 기반으로 최종 대상을 정해보자면,
MessageTextProcessor, MessageTextOnLineProcessor, MessageInputSelectProcessor
이 세 개의 클래스를 수정하면 됨
- 번역 대상에 주입하기
전체 검색으로 MessageTextProcessor 검색. 51번째줄을 보면 원래는 HudDistributor.Instance.NowHudHandler().ShowName(text) 라고 쓰고 있음. 이제 이거에 번역기를 적용해서 HudDistributor.Instance.NowHudHandler().ShowName(CsvTranslator.Translate(text)) 가 되도록 만들어주면 됨. 수정하는 방법은 우클릭 -> edit method로 하면 됨.
마찬가지로 저장 + save module까지 해야 함
마찬가지로 MessageTextOnLineProcessor 검색. 21번째 줄 다음 줄을 약간 수정.
MessageInputSelectProcessor 에서 34번째 줄
이제 게임을 실행하면 번역이 적용됨
