게임/대항해시대 4 PK - Steam Edition -

대항해시대4 리마스터 철갑선? 아니 거북선을 만들어보자!

서한스 2021. 6. 13. 21:24

"거북선" 만들기......................선박제원 HEX EDIT


 

 

 

 

http://100.naver.com/100.nhn?type=image&media_id=221593&docid=7510&dir_id=05021305

 

 

 

 

 

 

 

 

작성일 '08.2.14

수정일 '08.2.16

첨부파일추가 '08.2.21 -> 파일 용량 때문에 별도의 답글에 첨부.

 

 

 

 

조선소에서 구입가능한 일반철갑선의 선박제원을 에디트하여,
캐노네이드 204문, 선원수204/394명, 내구도300+10, 가격1000만닢의 
특급선박을 구입할 수 있는 방법을 소개합니다.

 

 

미리 말씀드리지만,
선박제원 HEX EDIT는 매우 어렵습니다.

OFFSET위치도 찾기가 무척 어렵고,
건드릴게 한두가지가 아닙니다.

 

아주 꼼꼼히 에디트 하지 않는한, 게임 도중에 에러가 생깁니다.
특히, 중/소형선박을 대형으로 개조한다든지,
돛대를 건드리는 일은 금기 입니다.

 

선박제원(諸元)에디트는
단순히 현재 보유중인 선박에디트(->이건 그냥 에디터로 하면 됨)와 달리
선박의 본래 성능과 특성을 바꾸어주는 것을 의미합니다.

 

이것을 바꾸어줌으로써,
내구도100, 캐노네이드96문, 해병대기실4칸의 100만닢짜리 "한자콕"을
조선소에서 구입할 수도 있지만,

 

반드시 유념하여야 할 점은,
이렇게 바꾸어주면, 슈파이어가 현재 타고 다니는 그 한자콕들도
위와 같이 UPGRADE되어버린다는 점입니다.

 
또 한가지,
만약 위와같이 한자콕의 선박제원을 바꾸어버리면,
슈파이어는 더이상 한자콕 메니아임을 포기하고 다른 선박을 타고 나오거나
정상보다 빨리 해산되어 버립니다.
(슈파이어는 반드시 한자콕을 사야하는데, 소지금이 모자라므로...)

 

이처럼 선박제원 HEX EDIT는
그 자체가 "에러"발생요인이 많을 뿐만 아니라
게임의 흐름에 전혀 예기치못한 부작용이 발생할 수 있으므로,
 
"단순히 전열함을 내구도 500으로 만들었다!"고
절대로 기뻐할 일이 아닙니다.
플레이어만 강해질 뿐만 아니라, NPC도 강해집니다.

 


 

 

먼저,

북해/지중해/신대륙의 전투 주력함이라 할 수 있는 "갤리온"을
조선소에서 구입하면,
캐논60문, 해병2, 짐창고3, 물자창고4, 내구도80   가격 115,400 닢인데,


이것을 전투에 가장 적합한(2~5함) 형태인
캐노네이드102문, 해병2, 짐창고0, 물자창고7, 내구도80+20  가격 506,400 닢으로
조선소에서 막바로 구입할 수 있도록 "선박제원"을 에디트하는 방법입니다.

 

 

 

 

                                  ↓

 

 

 

 

 

 

 

 

 

조선소에서 파는 원본 갤리온을 위와 같이 개조하는데 7일이 소요되지만,
위와 같이 선박제원을 바꾸어주면
이미 "개조된" 갤리온을 팔기 때문에, 한참 전투중에는 바로바로 구입하여 쓸 수
있으므로 매우 편리합니다.

반면, npc가 타고다니는 갤리온도 위와 같은 개량형임을 명심해야 합니다.

 

 

 

 

 

 


일반 갤리온의 hex code는 아래와 같습니다.
dh4pk.exe  offset : 15187d~

 

이것을 의미단위별로 뜯어보면,
15187d~  068100            선박종류=갤리온(06)    81장갑없음  85장갑1 8d장갑2
         070705 00000001   돛: 07톱+스퀘어/07톱+스퀘어/05톱+라틴 
         02020203040808    갑판/갑판/갑판/측량/조타/포대/포대
         070c0d05060907    해병/개인/재목/함장/부관/물자/해병 
         0a140e0f0a0a15    짐창/회계/의무/조리/짐창/짐창/추가1 
         090909101316 03   물자/물자/물자/오락/참모/추가2  캐논(03) 입니다.

 

 

 

 

 


위 hex code를 그림으로 풀어보면 아래와 같습니다.

 

 

 

 


이 원본 갤리온을 개량형 Galleon으로 선박제원을 바꾸어 줍니다.

먼저, 선박종류 이름
offset: 188a78~ ASCII를 "갤리온" -> "Galleon"으로 바꾸어주면
게임상에 표시될 때 원본의 "갤리온"종류는 "Galleon"으로 나옵니다.

 

 

다음,
offset: 15187d~
         068100          ->    ..8d..                   81장갑없음  85장갑1 8d장갑2 
         070705 00000001    ......................
         02020203040808     ................0808
         070c0d05060907     07120d05060808     0c개인->12예배
         0a140e0f0a0a15     07140e0f090909     15추가1->09물자창고
         090909101316 03    090909111309 05    16추가2->09    10오락->11사육

 

이렇게 바꾸어주면,        
포대4해병2짐0물자7,  캐노네이드(05)102문, 선원수129~299명, 내구도80+20의
신형 "Galleon"이 탄생합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

다음으로,
원본의 "철갑선"을
캐노네이드 204문, 선원수204/394명, 내구도300+10, 가격1000만닢의 
특급선박 "거북선"으로 선박제원을 바꾸는 방법입니다.


 

 

 

 

                                       ↓

 

 

 

 

 

 

 

 

 

 

 

 

선박종류 이름은 dh4pk.exe offset 188994~ 철갑선->"거북선"으로 바꾸어 줍니다.


(일반)철갑선 선박제원

151d20~ 21c400 000300 17001701       
        02020203040a08  -> .............0808
        080c0d05060707     070808.....0808
        0a140e0f090915      070808..090909     
        0b0b09101316 04    0b0909090909 05    
        해2,조2,포2,중캐논 ->해병2,조수1,포대8,캐노네이드

 

 

 

 

 

 

 

 

 

 

 

 

 

이상은 갤리온->Galleon으로 선박제원을 바꾸는 것과 원리가 같습니다.

그런데, 여기서 끝난게 아닙니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


선박들의 내구도와 가격은 선박의 돛/담당실 구조와는 별도의 위치에 있습니다.

철갑선의 내구도/가격
151626~ 6400 f0490200 000300   철갑선: 내구100+10 가격150,000  돛_□_
------> 2c01 503a9800 000300   거북선: 내구300+10 가격10,000,000 
참고로, 위 offset에서는 돛의 구조를 바꾸어 주어도 사실상 변화가 없습니다.

 

 

 

 

 


★★지금부터 중요하면서 어려운 내용★★

 

모든 선박에는 3종류가 있습니다.
일반형/군용(무장)/상용(수송용)


위에서 보여드린 돛/담당실구조 그림과 해당 offset는 모두
"일반형" 선박의 경우입니다.


즉, 군용/수송갤리온, 군용/수송용 철갑선은 다른위치에 별도로 담당실구조에 관한
hex code가 존재합니다.

예컨데,
152387~ 군용갤리온
151f67~ 군용철갑선

 

다만, 선박의 내구도 및 선박의 가격(정확히는 기본가격)은
일반형/군용/상용 구별없이 하나만 존재합니다.


따라서, 철갑선의 가격을 1000만닢으로 바꾸어버리면,
조선소에서 구입하는 일반철갑선의 가격만 1000만닢이 될 뿐만아니라
군용/수송용 철갑선의 가격도 1000만닢 + @ 가 됩니다. 

 

이에따라,
글의 첫머리에 언급한 바와 같이
게임이 당초 예상치 못한 부작용 내지는 돌발상황이 발생합니다.

 

구루시마가 철갑선 한척 뽑고는 거지가 되버리던지...
아니면 싸구려 소형범선들만 뽑아서 덤비기에 도무지 재미도 없고, 해산도 안된다던지...

호드람/교타로가 별로 힘도 안들이고 나포를 해서 이를 조선소에 팔았더니,
500만닢(∵선박매각가격은 절반)을 주더라던지...

 

물론 이런상황을 즐기시는 분들도 계시겠지만,
아무튼, 게임이 엉망이 됩니다.
(엽기4pk에서는 이런 상황을 방지하기 위한 대응책을 3,4가지를 마련해 두었습니다.)

 


내구도 수정도 가격과 마찬가지입니다.
스스로 난이도를 올리려다가 오히려 난이도가 더 떨어질 수도 있고,
반대로 난이도를 낮추려다가 오히려 난이도를 더 올려버릴 수도 있는 것이
"내구도" 수정입니다.

 

 

 

 


포대를 5개 이상 설치하는 형태로 담당실구조를 바꾸었다고해서, 곧바로 포문수가 늘어나는 것은 아닙니다.

포108문의 한계를 없애기 위해서는

dh4pk.exe
e539d 83 f8 60 be 60 00 00 00
   -> e9 82 00 00 00 90 90 90
e5424 90 90 90 90 90 90 90 90 90 90 90 90
   -> 3d ff ff 00 00 be ff ff 00 00 eb 51
e5481 90 90 90 90 90  
   -> e9 1f ff ff ff

위와 같이 바꾸어 주어야 비로소 포대가 설치된 수만큼 비례하여 포문수가 늘어납니다.
매우중요!

 

 

 

 

참고로, 선박제원 에디트는 아니지만,
조선소에서 포대 5이상 또는 해병대기실 5이상으로 "개조"가능하게 하기 위해서는
33d0f 또는 33d1c를 바꾸어주어야 하는데,

예컨데, dh4pk.exe
33d0f 04 -> 09  해병 9칸까지
33d1c 04 -> 09  포대 9칸까지 (효과=108 Max) "조선소에서 개조가능"

으로 에디트할 수 있으나,
"왕초보 감각 익히기"가 아니라면 절대로 해서는 안되는 비겁돌이의 꼼수 !

 

 

 

 

 

 

 

 

 

 

이상은 선박제원 hex edit의 가장 기본적인 사항 이며

필자가 가장많이 테스트해보고 정확성과 안정성을 검증한 내용입니다.  

 

더 많은 정보를 알고 싶으신 분은

http://cafe.naver.com/daehangs/26380 이하의 각 주인공별 제작노트 중

특수선박 제원들을 "비교"하며 읽어보시기 바랍니다.

 

 

추가

 

'08.2.16

 

 

 

1.전열함은 북해에서만 생산이 되잖아요. 정크는 동아시아에서 생산이 되구요~ 이것처럼 어떠한 배는 어는 해역 또는 어느 도시에 가야만 살 수 있는 헥스코드 주소 알수 있을까요?? 예를 들어 전열함은 런던에서만 구입할 수 있다~~

 

2.베스타로스는 브리칸틴 급이자나요. 기본적인 선박제원은 건드리지 않구 세이브데이터 안의 베스타로스의 제원을 건드리면 원래 에러가 뜨는 건가요?? 브리칸틴은 손대지 않구 베스타로스의 포문, 내구도, 담당실 변경 이런 거요~~해봤는데 게임을 실행하면 에러가 나버리네요...궁금합니다.

 

3. 전열함의 제원이 표시되어 있는 offset부탁드립니다~

 

 

 

 

 

 

 

 

 

 

Q 1  어떠한 배는 어는 해역 또는 어느 도시에 가야만 살 수 있는 헥스코드 주소 알수 있을까요??

모릅니다.

 

흔히들, "한자콕, 전열함은 오직 북해에서만 구입할 수 있다."고 알고 계시는데,
정확히 말씀드리면 조선소에서 구입가능한 선박의 종류는 다음의 두가지 단계를 거칩니다.

 

첫째, 조선소가 있는 도시는 어느 문화권인가?
둘째, 그 문화권은 어느 해역에 속하는가?

 

런던은 "영국"문화권이고, 영국은 "북해"해역이므로
런던의 조선소에서는 한자콕과 전열함을 구입할 수 있습니다.

 

항주는 "중국"문화권이고, 중국은 "동아시아"해역이므로
항주의 조선소에서는 정크와 철갑선을 구입할 수 있습니다.

 

 

 

 

 


 http://cafe.naver.com/daehangs/27948 교타로편을 열어보면
구루시마의 본거지(데지마=나가사키)에서 "북해"선박인 한자콕과 쉽을 구입할 수 있습니다.

 

이것은 제가 교타로편의 나가사키의 문화권을 "독일"로 설정해두었기 때문입니다.
(물론, dh4pk.exe의 "독일"이라는 ASCII를 지웠기 때문에 문화권표시가 안보입니다.)

 

 


원래 "동아시아"해역의 "일본"문화권 도시인 나가사키를
"북해"해역의 하나인 "독일"문화권으로 설정하면(world1.dll 9eac~ 00121a->00021a),

 

첫째, 동아시아 해역도에서 나가사키가 안보입니다. 단, 해상모드에서는 보입니다.
둘째, 나가사키 조선소에서는 "북해"선박을 판매합니다. 단, 상업도/무장도 일정수준이상.
  
 

 

 


다시 질문으로 돌아가서,
특정선박의 판매 지역을 바꾸고 싶을때 어느곳을 건드려야 할까요?

 

다음 세가지의 경우가 있을 수 있습니다.

1 선박제원(특히 내구도/가격 선박제원 ∵일반/상용/군용不問)을 지정해둔 영역부근,
2 조선소와 관련된 영역,
3 제3의 영역

 

쉽게말해,
1 "○○○선박은 ☆☆☆, △△△, □□□, ▼▼▼에서 판매한다." 고 설정해 두었던가
2 "○○○해역의 조선소에서는 ☆☆☆, △△△, □□□, ▼▼▼선박을 판매한다" 라든가
3 "니들은 모르는 koei영업비밀" 영역에 설정해 두는 방식입니다.

 

 

 

 

여기서 한가지 짚고 넘어갈 일은,
대항4의 hex code중에는 대항2 등과 달리 "2개이상의 변수의 조합"으로 결과값을 도출하는 경우가
상당수 있다는 점입니다.

 

https://seohans.tistory.com/85 에서 밝힌 바와 같이
인물의 레벨을 결정짓는 데에는 게이머가 게임상에서는 볼 수 없는
A,B 두개의 경험치를 각 레벨로 치환하고 그 레벨값의 합산만 게임상에 보여준다든지,

전열함이 생산되는 상업도/무장도의 수준이
예컨데, 상업도8000/무장도7000 라고 딱잘라 말할 수 없는 것은 그 대표적인 예입니다.


그밖에도 대항4를 HEX EDIT하다보면
이러한 두개 이상의 변수의 조합으로 결과값이 나오는 것을 무수히 많이 보게되는데,
이런류의 HEX CODE는 거의 "원리"보다는 "노가다"로만 공략할 수 있습니다.

 

필자는 주관적으로 HEX EDIT의 진정한 참맛은
OFFSET 위치의 발견도 아니고,
누군가가 발견해 놓은 곳에 수치만 바꾸어주는 것은 더더욱 아니고,
KOEI와 같은 게임 제작자가 설계해 놓은 그 "원리"을
역으로 유추하여 밝혀내는 그 과정에 있다고 보는데,
위와 같이 변수 두개 이상의 합 또는 곱이 결과값으로 나오는 것은
말 그대로 "노가다"로만 찾을 수 있습니다.

 

 

 

 

 

 

 

 

 


Q 2 세이브데이터 안의 베스타로스의 제원을 건드리면 원래 에러가 뜨는 건가요??


주인공이 누구냐에 따라
위 질문의 답변은 차원이 달라집니다.


npc의 선박들은 개개선박정보가 없고, 다만 dh4pk.exe 실행파일 속에 정의되어 있는
가상의 선박상태로 존재합니다.


따라서, npc함대의 개개 선박은 "그 선박에 고유한 정보(예컨데, 현선원수, 짐종류)"가
없으며 다만 선박의 "종류"가 무엇이냐 하는 것만 저장됩니다.

 

반면, 주인공과 주인공의 지방함대의 선박들은
savedat*.dk4 offset  5ec8~ 이하에서 볼 수 있는 개개 선박정보가 존재합니다.

 

 


따라서 릴이 주인공일 때 아른헴 호는
dh4pk.exe에 설정되어 있는 하나의 "선박의 종류"가 아니며,
단순히 주인공이 현재 보유중인 선박의 하나일 뿐입니다.

 

호드람이 주인공일 때 베스타로스 호는
dh4pk.exe에 설정되어 있는 하나의 "선박의 종류"가 아니며,
단순히 주인공이 현재 보유중인 선박의 하나일 뿐입니다.

 

 


반면, 릴이 주인공일 때 베스타로스 호는
dh4pk.exe에 설정되어 있는 하나의 "선박의 종류"이며
호드람이 주인공일 때 아른헴 호도 하나의 "선박의 종류" 입니다.

 

따라서,
호드람이 주인공일 때 "베스타로스호"를 에디트 하는 것은
"선박제원" 에디트가 아니며, 단순히 "현재보유중인선박" 에디트일 뿐입니다.

 

그리고 막연히 에러가 발생했다는 것만으로는
그것이 선박제원에디트 이든 현재보유중인선박 에디트 이든
이것만으로는 문제점을 알 수 없습니다.

에러가 생길 수 있는 사유는 수백만가지가 넘습니다.

 

또한, "세이브데이터 안의 베스타로스 제원을 건드린다"는 것은 말 자체가 안됩니다.
선박제원에디트는 개념상 오직 dh4pk.exe 실행파일에서만 가능합니다.
 

 

 

 

 

 

 

 

 

 


Q 3  전열함의 제원이 표시되어 있는 offset


이 글에서 여러번 말씀드리지만
선박제원은 크게 "담당실 등 내부구조"에 관한 것과
"내구도/가격"에 관한 것 두가지로 나뉩니다.

 

전자의 경우 선박종류별로 일반/군용/상용 세가지가 각각 다른곳에 있으며
후자의 경우 선박종류별로 오직 한군데에 있습니다.

 

"특정"선박의 선박제원 중 "내부구조"에 관한 것이 위치한 offset를 검색하기 위해서는
선박종류번호hex 와 돛대번호hex를 먼저 알아 두어야 합니다.


여기부터는 메모장에 복사를 해두시던지 아무튼 요령껏 정리/저장을 해두시고
hex edit 작업시 창을 여럿 띄워 두고 하시기를 바랍니다.
이하는 외우는 것이 아니라 참조하며 작업하는 것입니다.

 

 


선박종류번호 hex

00 한자콕    0a 케치        14 소형갤리   1e 관선
01 라티나    0b 브리간틴  15 갤리         1f 소형범선(중형)
02 레톤다    0c 브리그     16 대형갤리   20 소형범선(대형)
03 나오       0d 코르벳     17 갤리스      21 철갑선
04 카락       0e 프리깃     18 다우         22 괴어
05 경갤리온  0f 전열함     19 삼부크      23 거대오징어
06 갤리온    10 스쿠너     1a 지벡         24 상어
07 프루트    11 바켄틴     1b 소형정크   25 고래
08 피네스    12 바크        1c 정크         26 유령선
09 슬루프    13 쉽           1d 대형정크

 

 

 

 


돛의 종류 hex

00  없음
01  라틴
03  스퀘어
05  톱+라틴
07  톱+스퀘어
0f   톱+스퀘어+스테이

 

 

 

 

 

 

 

 

 

 

예: 한자콕,  갤리온, 전열함의   선박종류번호hex 및 돛대hex   (단, 모두 조선소에서 구입가능한 일반형 선박)

 

 

 

 

이상의 선박종류HEX와 돛종류HEX 두가지를 검색의 KEYWORD로 삼아서
우리가 원하는 특정선박의 "내부구조" 선박제원 OFFSET를 탐지할 수 있습니다.

이때 돛종류는 선수돛/선미돛을 뺀 3개의 돛을 말합니다.

(선수돛/선미돛은 기본적인 검색요령을 충분히 익히신 후 응용검색을 할 수 있습니다.)

 

 

 

 

 

 

 


그럼, 이제부터 본격적으로 전열함의 내부구조 offset를 찾아보겠습니다.

전열함에는 일반형/군용/수송용 세종류가 있습니다.

 

 

 


위 표와 그림에서 보듯
전열함의 선박종류번호는 0F이며
모든 전열함의 돛 구조는 0F0F05 입니다.
(이렇게 일반/군용/상용 선박의 돛 종류가 같은 경우에는 OFFSET 찾기가 더욱 어렵습니다.)

 

 

 

선박제원 중 "내부구조"에관한 것은 150EEB 이하에 입력되어 있습니다.

150eeb~이하부터 0f xxxx 0f0f05 형태로 된 것을 검색해 보면,
 
151a09~ 0F 4200 0f0f05      
152039~ 0F f300 0f0f05    
152509~ 0F f600 0f0f05  세가지를 찾을 수 있습니다.

위 셋은 모두 0F 선박이므로 전열함이며,
일반/군용/상용 셋중에 하나입니다.

 

위 0F xxxx 0f0f05 부분 중 선박종류를 "상어"로 바꾸어 주던가,
아니면 돛대를 살짝 바꾸어주고, 게임상에서 확인하면
어느것이 일반전열함이며, 어느것이 군용/상용전열함인지 알 수 있습니다.
      
151a09~ 0f 4200 0f0f05  일반전열함    
152039~ 0f f300 0f0f05  수송용전열함  
152509~ 0f f600 0f0f05  군용전열함  


위 방법이 "특정"선박의 선박제원 offset을 검색하는 가장 기본적인 접근방법이며,
요령이 생기고 숙달되면 좀더 빠른 검색방법도 스스로 터득할 수 있습니다.

 

 

 

 

 

 

 


선박의 내구도/가격 OFFSET 찾기:


"선박의 내구도/가격" OFFSET는
게임내에서 볼 수 있는 일반선박의 "내구도"로 탐색할 수 있습니다.

 

전열함,철갑선처럼 내구도90 또는 100인 선박이 게임내에 1종류 밖에 없는 선박은
쉽게 찾을 수 있습니다.

 

그런데, 특정수치의 내구도를 가진 선박의 종류가 여럿일 경우가 있습니다.
예컨데, 게임내에서 내구도 60인 선박들은 카락,갤리스 등 여러개가 존재합니다.
 
이 경우, 운이 좋거나 HEX EDIT에 감각이 익으면 한번만에 검색에 성공하지만,
보통 여러번 시행착오를 거쳐야 합니다.

 

 

 

이 때, 위 내구도/가격 OFFSET를 "가격"으로 찾는 것은 거의 불가능합니다.

위 내구도/가격 OFFSET에 있는 선박의 가격(기본가격=몸통가격)은
우리가 게임 내에서 알 수 있다고 착각하기 쉬우나,

 

조선소에서 판매하는 전열함의 가격 270,600닢은 전열함의 기본가격(몸통가격)이 아니라
돛과 포대가 이미 장착된 "일반전열함의 조선소 판매가격"일 뿐
전열함의 모든 포대와 돛을 제거한 순수한 몸통값은 아닙니다.

전열함의 순수한 몸통값은 160,000닢이며, 이것은 HEX CODE를 찾은 뒤에야 알 수 있습니다.

 

위와 같은 검색방법으로 전열함의 "내구도/가격" HEX CODE를 검색해보면,
"151236~  5a00 00710200 0f0f05"를 찾을 수 있는데,
그 의미는 耐90 價160,000 ㏈㏈B 입니다.

반응형