게임할때 인벤과 각종 엑셀창을 켜놓고 게임하다가
그거 하기 귀찮아서 각종 정보들을 인게임에 넣고 있는 노가다꾼입니다

새벽에 갑자기 자다가 깨서 잠깬김에 잠깐 몇가지 설명이나 적어볼까 합니다

이번 설명은 전문가가는 아니지만 json 파일 수정까지는 어떻게 어떻게 할수는 있는데
이게 뭘 어떻게 해야 제대로 적용되는지 잘 모르겠어서 못하는 분들을 위한 내용입니다
왜냐면 제가 딱 이 수준이거든요


먼저 제 상황부터 설명드리겠습니다
저는 엽굵님 스킨을 사용중입니다
각종 정보나 패널창 설명, 등등은 코라비님 스킨을 사용중입니다
미니사전은 SadDragon님 자료를, 인벤토리창 가이드는 추가아이템님 스킨을 사용하고 있습니다

이게 다 적용이 되느냐?
원래는 안됐었습니다만, 어떻게 어떻게 사용하고 있습니다

방법은 패널에 직접 내용을 넣는 방식으로 바꾸기를 선택했습니다


예시를 한번 들어보겠습니다

선히님 스킨을 적용해보면 인벤토리 창에 아이템 가이드가 있습니다


이 가이드는 아이콘에 마우스를 올리면 설명을 출력해줍니다

이렇게요

디아블로에서 설명 툴팁을 띄우는 방식을 적당히 요약해보자면
1. 특정 아이콘에 마우스 올리면
2. data/local/lng/strings/ 폴더에 있는 파일들 내용 중에서
3. 해당 아이콘에서 불러오고자 적어놓은 내용을 불러와서 출력한다

그렇다면 어디어디를 확인해봐야 할까요?
위에서 적어놓은 data/local/lng/strings/ 폴더와 data/global/ui/layouts/ 폴더 두가지를 확인해보면 됩니다

먼저 playerinventoryexpansionlayouthd.json 열어서 해당 부분을 한번 보겠습니다

....어...뭐 7번째 꺼니깐 hudpanelStr7 이거지 않을까 싶네요
그러면 data/local/lng/strings/ 로 가서 bnet.json 파일을 열어서 hudpanelStr7 을 검색해보죠
(다른분의 스킨이나 모드는 ui.json에 있는 경우도 있고 npc.json을 쓰는 경우도 있습니다)



특정 정보를 불러 오는 방식은 위와 같이 id 번호를 부여하고
Key 라는 명령어를 입력하면 해당 설명을 거기에 불러주는 방식이라고 생각하시면 됩니다
id번호는 구분을 위한거라 중복되면 안되고, Key 값도 중복되지 않게 해야 합니다

내용을 보니 영문모드를 사용하는 분들을 위해 영문과 한글 모두 입력해 두신걸로 보입니다

'근데 저는 모드 짜서 공개할것도 아니고, 그냥 혼자 조용히 쓸꺼라 영어는 크게 필요친 않습니다'
라는게 현재 제 상황이고, 이 글을 보시는 분들 중 일부는 아마 저와 같은 생각이실 겁니다
그런 분들이라면 이 방법으로 각종 모드간의 충돌하는 원인 몇가지를 막아낼 방안이 되지 않을까 합니다



그럼 한번 수정을 해보겠습니다
수정 순서대로 번호를 매겨 설명해볼께요


1. 저 설명을 그대로 가져와보자

"type": "ButtonWidget", "name": "hudStr7",
"fields": {
"rect": { "x": 1070, "y": 1100 },
"tooltipString": "@hudpanelStr7",
"filename": "PANEL/seonhee_hud7",

이 부분에서 @hudpanelStr7 를 지우고, koKR에 있는 설명 부분을 그대로 가져와서 붙여보겠습니다
저장 및 종료 버튼을 누르고 다시 방을 파서 들어가서 확인해보면?


??? 

data/local/lng/strings/ 폴더에 있는 내용들은 색상코드를 그냥 입력해두면, 
불러올 때에 자동으로 그 색상코드가 적용되기에 별 문제가 없습니다
근데 그 텍스트를 그대로 가져오게 되면 색상코드가 아닌 일반 텍스트가 되어버리죠

koorenai님 글의 색상표를 보면

악군 적용 후 변경된 색상코드가 이렇습니다

저 내용 사이사이에 적혀 있는 색상코드 ÿc0 ÿc1 등이 텍스트가 아닌 색상코드가 되도록 변경해 줘야 합니다
그럴려면 ui나 bnet 파일에 색상코드를 넣어줘야 해요

....제목은 어따 팔아먹은거냐구요? 그냥 어그로였어요...

정확히는 최소한의 내용만 ui나 bnet 등에 남겨놓고 설명 부분들을 전부 패널창으로 가져와서,
다른 사람의 모드나 스킨을 짜집기 하면서 발생하는 ui나 bnet 파일 간의 충돌이나 문제를 최소화 해보려는 겁니다


2. 색상코드를 만들어보자

정확히는 있는 색상코드를 불러오는 Key를 만드는겁니다

선히님 최신버전을 사용하시는 분이 bnet 파일을 열어보시면 맨 아래에 색상코드가 있으실겁니다
아마 사전모드 적용을 위한 코드일거에요
이걸 그대로 활용하셔도 되고, 다른걸 만들어서 짜보셔도 상관은 없습니다

  {
    "id": 71101,
    "Key": "Myc1", //붉은색, 생명력
    "enUS": "ÿc1",
    "zhTW": "ÿc1",
    "deDE": "ÿc1",
    "esES": "ÿc1",
    "frFR": "ÿc1",
    "itIT": "ÿc1",
    "koKR": "ÿc1",
    "plPL": "ÿc1",
    "esMX": "ÿc1",
    "jaJP": "ÿc1",
    "ptBR": "ÿc1",
    "ruRU": "ÿc1",
    "zhCN": "ÿc1"
  },

id번호는 일단 남들이 안쓸것 같은 숫자로 부여해버리고
ÿc 를 대체하는 텍스트를 Myc로 정해서 설정해보겠습니다 (이건 코라비님 색상코드 부여 방식 입니다)

이걸로 일단 1~0까지 숫자를 다 부여를 하면, 당장 위의 텍스트 부분은 아마 해결될 겁니다


3. 텍스트를 색상코드가 되게 바꾸자

bnet 파일에 색상코드를 넣었으니 이제 저 텍스트를 수정해야 합니다
수정방법은 하나하나 수작업으로 변경하는 방법, 그리고 자동으로 수정하는 방법 두가지 입니다

제가 작성한 글에 있는 첨부파일을 열면 저 글에 설명이 적힌 것 처럼 파이썬 파일이 나옵니다

파일을 불러와서 규칙을 입력해주고 수정, 그리고 저장


저장된 파일을 복사해서 원래 파일에 덮어씌워주고, 게임을 다시 실행을 해보면?


짜잔~ 완...? 


4. 없는 문자열의 시작

힘제한과 소켓정보, 방어력 부분의 섹상은 잘 적용됐는데, 대체 뭐가 문제일까요?


@Myc9 다음에 바로 E가 붙었고 다른부분들은 바로 뒤에 한글이거나, 괄호였군요
그럼 이럴 때에는 9와 E 사이에 띄워쓰기를 넣어주면 됩니다


원래꺼랑 비교해보면 일반 방어력과 에테 방어력 간의 띄워쓰기가 한칸 들어간 것 외에는 똑같이 적용되었네요
설명 부분의 '...최대  무형...' 사이 간격이 한칸 더 벌어진 것 외에는 크게 어색하진 않네요
이건 수작업으로 변경해 주면 될것 같습니다

색상 코드 수정으로 인해서 없는 문자열 발생은 꽤나 많을겁니다
위의 색상 코드를 다시 보시면 1~0, A~V, 그리고 기호까지
물론 중복 색상코드가 많고 주력 사용 위주로만 짜서 넣어주면 되긴 합니다만, 
그래도 색상코드와 글자 사이의 겹침 때문에 개별 수정으로 바꿔줘야 하는 일이 빈번할 것으로 예상됩니다
사실 이 부분은 그냥 노가다로 해결 하는 수 밖에는 없을 것 같네요


5. 간혹 발생하는 문제들

어느 패널인지 정확히 기억은 안나지만, 저런방식으로 수정하던 중에 줄 배열이 거꾸로 된적이 있었습니다
사실 잘 모르고 막 수정하던때라 해결방법 찾으라 좀 복잡했었는데, 의외로 어렵진 않더군요

   {
"type": "ButtonWidget", "name": "ex1"
"fields": {
"rect": { "x": 800, "y": 60, "scale": 0.64 },
"filename": "PANEL/btn/gold",
"pressedFrame": 0,
"tooltipString": "ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ",
"tooltipStyle": "$TooltipStyle",
"tooltipStyle": {
"fontStyle": {
"options": { "newlineHandling": "standard" },
                                                "alignment": { "h": "left", "v": "center" }, // 왼쪽정렬이 필요할때만, 불필요시 삭제
      }
   }
}
   },

이건 제가 패널에 직접 정보를 때려박을때에 사용하는 코드입니다

"filename": 에는 원하는 버튼 아이콘을 sprite 파일로 만들어서 넣고, 그 경로를 써주시면 됩니다
"tooltipString": 은 아까 위에서 설명했듯 원하는 정보나 글자를 입력해주시면 되구요
"tooltipStyle": "$TooltipStyle", 툴팁스타일은 _profilehd.json 파일에 기본적으로 장착된 폰트 스타일입니다
새로 프로파일에 만들어서 넣으면 또 충돌이 생기니 기본 값을 최대한 활용하려고 하는거에요

이제 줄바꿈이 거꾸로 되었을때에 사용해야하는 옵션이 바로
"options": { "newlineHandling": "standard" }, 입니다
줄바꿈 옵션을 standard로 만들어주면 거꾸로 되는 일이 없어지겠죠

혹시나 정렬 방식을 가운데 정렬이 아닌 왼쪽 정렬로 바꾸고 싶다면 "alignment" 를 사용해주시고
그냥 가운데 정렬이 나을것 같다면 저 줄 자체를 지워주시면 됩니다


이런식으로 각 모더분들의 자료를 잘 버무려서 정보창을 다 때려박으면


게임중에 인벤과 엑셀 창을 덕지덕지 열어두는게 최대한 줄어듭니다


6. 마무리

맨 위에서 설명드렸듯, 저는 여러 모더분들의 모드 및 스킨을 짜집기해서 사용중입니다
제가 수정하여 사용중이긴 하지만 이건 원 저작자분들이 계시고, 이걸 제가 공유하는건 맞지 않은 행위입니다
그러므로 제가 이것들을 따로 공유하거나 할 일은 없을겁니다

다만, 모드 제작자분들도 개인이 수정하시는 부분에 대해서는 따로 제한을 두고 있지 않으니
자신이 원하는 모드나 스킨을 찾아보시고, 사용하시면서 마음에 드는 부분들을
골라서 사용해 보시는 것도 하나의 방법이라고 생각합니다


7. 제안

혹여나 이게 주제넘는 발언일 수도 있겠다고 생각이 들지만
초보의 입장에서 문득 든 생각이 있습니다

각각의 제작자 분들이 색상코드에 대해서 부여하는 Key값들을 공통된 하나의 방식으로 변경하는건 어떨까,
_profilehd.json 에 새로 폰트스타일을 만든다면 해당 부분에 대해 주석을 달아서 가져다 넣기 쉽게 하는건 어떨까

공통 규격이 있다면 좀 더 편하지 않을까, 라는 생각을 해봤었습니다
물론 제작자 고유의 스타일이 있기에 공통 규격이 오히려 창작을 저해할 수도 있다는 생각도 합니다
하지만 초보 스킨 제작자 분들은 공통규격 하에서 호환성을 늘릴 수 있으니 한번쯤 고려 정도는
할 수 있지 않을까 하는 쓸데없는 잡생각을 했습니다



여러 모드, 스킨 제작자분들이 있어 디아2가 더 재밌고 즐거운것 같습니다
언제나 감사드리고 고마운 마음으로 게임을 즐깁니다

혹시라도 제가 작성한 글에서 출처나 스킨 수정에 대한 불편함을 느끼신 분이 계시다면 사과 말씀 드립니다
문제가 있을 경우에는 수정이나 삭제, 등 원하시는 조치를 따르겠습니다