[경고] 본 가이드는 모더 전용입니다. 일반 사용자의 문의사항은 받지 않사오니 양해바랍니다.

D2R 모드 내지는 스킨을 만들어서 배포한 뒤에 생기는 가장 귀찮은 문제는 바로 잊을만하면 터지는 "없는 문자열" 문제입니다. 대부분 ui.json에 새로운 항목이 추가되어서 일어나는 현상인데요, 이걸 아주 간단히 우회하는 방법을 공유합니다.

1. ui.json에서 수정하고 싶은 내용을 모두 한 곳으로 모은다.
2. 깡그리 잘라내기(ctrl+x)한다
3. shrines.json 맨 뒤에 붙여넣는다
4. ui.json을 아예 지운다.
5. 향후 스킨 배포시엔 shrines.json을 끼워서 배포한다.

끝입니다.

????? 싶으실텐데 이제 원리를 설명해드리겠습니다.

data/local/lng/strings 폴더의 파일들은 모두 배열구조입니다. 그리고 id와 Key라는 값을 가지고 있어요.

그리고 data/local/lng/strings/next_string_id.txt 파일에서는 id값은 중복되면 안 된다고 경고하고 있죠.

그럼, 중복되면 무슨 일이 일어나는가? 이전값이 새것에 덮어씌워집니다.

이걸 역이용해서 ui.json의 내용을 ui.json을 수정하지 않고 덮어씌우는 것이 가능합니다.

D2R은 모드를 불러올 때 모드와 겹쳐지지 않는 파일을 우선적으로 로드하고, 그 뒤에 모드에 있는 파일을 로드하는것으로 보여집니다. 모드 파일 내에 ui.json이 없다면 D2R은 무조건 최신버전의 ui.json을 이용할 것이고, 모드에 있는 파일을 불러오는 시점에서 shrines.json에다가 고의적으로 넣은 겹치는 id값에 의해 D2R의 원본이 갈아치워지게 됩니다.

그럼 왜 shrines.json인가? 답은 간단합니다. 새로운 것이 추가될 가능성이 가장 없는 파일이기 때문입니다. 용량도 작구요.

이해를 돕기 위해 예시를 첨부합니다. data/local/lng/strings 에다가 해당 파일을 넣고 ui.json을 지워도 우버 단계가 강조되어 보여질 것입니다. (852번째줄부터 보세요)


타 스킨에 사용하는 경우: 제 작업물은 CC BY-NC 4.0 DEED를 지키면 자유롭게 사용하실 수 있습니다. 관련 설명은  https://creativecommons.org/licenses/by-nc/4.0/deed.ko 를 참조해주세요.