디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[정보] 스컬 코드 만지기

무지성야근장인갤로그로 이동합니다. 2024.04.29 00:24:13
조회 2249 추천 13 댓글 6
														

준비물 : dnSpy, ILSpy


#1 : dnSpy - .dll파일(스컬을 구성하는 코드들)을 열어 내부에 있는 코드를 확인, 수정할 수 있게 해주는 프로그램이다.

https://github.com/dnSpy/dnSpy/releases


여기서 자기 윈도우에 맞는 버전을 다운 받아주면 된다.(보통은 64다)

이후 zip 폴더를 압축해제하면


24b0d121e09c28a8699fe8b115ef046540a3fe

이렇게 되어 있는데, 저 exe 파일이 dnSpy다.

사용법은 아래서 설명하겠다.


#2 : ILSpy - dnSpy와 같은 일을 하나, 코드 수정은 할 수 없다. 하지만 dnSpy와 다르게 C#버전에 맞추어 코드를 디컴파일해주기에 코드를 잘 깐다.(dnSpy는 잘 까는 코드가 있고 병신 같이 까는 코드가 있는데, 스컬의 경우 개병신같이 까서 ILSpy의 도움이 필수다)


https://github.com/icsharpcode/ILSpy/releases

 




24b0d121e09c28a8699fe8b115ef046b686891

이 인스톨러를 받고, msi 파일이므로 실행해주면 된다.


그러면 특정 위치에 ILSpy가 생기는데, 작업표시줄 왼쪽아래 윈도우 버튼을 누르거나 바탕화면에서 윈도우 키(알트 키 옆에 있는거)를 누르면


24b0d121e09c28a8699fe8b115ef046c67f22e4b

이렇게 최근 추가 항목으로 뜨고, 이걸 우클릭 -> 파일 위치 보기 -> 바로 가기 생성 후 바로가기를 바탕화면으로 옮겨주면 추후 빠른 이용이 가능하다.


이걸 처음 실행하면 .NET 어쩌구를 설치하라 뜰 텐데, 알림 창에 있는 링크로 들어가서 그대로 설치해주면 문제 없다.


이걸로 준비물은 전부 준비되었으니 코드를 만져보자.


#3 : 스컬 코드 파일 열기


24b0d121e09c28a8699fe8b115ef046ece4ccaff

스팀에서 스컬 우클릭 -> 관리 -> 로컬 파일 보기를 하면


24b0d121e09c28a8699fe8b115ef046c69f82f4a

이 폴더로 가지는데, 저 폴더의 Skul_Data -> Managed 폴더의 어셈블리-Csharp.dll이 우리가 찾고자 하는 스컬의 메인 코드다.


해당 파일을 더블 클릭하면 어떤 앱으로 열거냐고 나오는데, 스크롤을 맨 아래로 내려 PC에서 앱 찾기를 선택, 아까 dnSpy를 설치했던 폴더로 이동해 dnSpy.exe를 더블클릭해 해당 앱으로 열어주면...


24b0d121e09c28a8699fe8b115ef0464d58fe6cf

이렇게 코드가 열린다.


#4 : 코드 수정하기


24b0d121e09c28a8699fe8b115ef046c67f42a4d

왼쪽 목록을 열어보면 무지막지하게 많은 네임스페이스가 있는데, 이거 하나하나가 정보를 담고 있는 클래스의 묶음이다.


이 중 이름을 보고 찾아가 원하는 코드를 수정하면 되는데...


예시로 흉조런을 위해 일반 아이템 상자를 흉조 상자로 바꾸는 코드를 건드린다 해보자.


그런데 저 네임스페이스들을 일일히 뒤져보긴 어렵다. 그러므로 검색 기능을 활용하자.


24b0d121e09c28a8699fe8b115ef046b6d6e91

오른쪽 끝의 검색 아이콘을 클릭.


흉조는 영어로 Omen이고, 우리가 찾는 상자 -> 흉조 상자 전환은 '함수' 이므로 메소드일 것이다. 그러므로 method 타입을 선택하고 검색한다.


24b0d121e09c28a8699fe8b115ef046ec841cdfe

Match Whole Words 같은 경우 끄는 게 좋다. 이 경우엔 안 끄면 원하는 게 안 뜰 것이다.

일단 무지막지하게 많은 것들이 떴으니 스크롤을 내리면서 확인해보자.


24b0d121e09c28a8699fe8b115ef0468e2aaed

찾았다. 누가 봐도 흉조 상자로 바꾸는 코드의 이름이다.

더블클릭해서 해당 위치로 이동해준다.


24b0d121e09c28a8699fe8b115ef046c64f9284c

코드의 구성은 이렇다. 저 _isOmenChest라는 bool로 흉조 상자인지를 판정하는 모양이다.


24b0d121e09c28a8699fe8b115ef046f5f4f9996


해당 메소드(주황 글씨)를 우클릭 -> Edit Method(C#)으로 코드를 수정해주자.


24b0d121e09c28a8699fe8b115ef046c66f72f4d

??? 아무것도 안 만졌는데 지 멋대로 빨간 글씨가 뜬다.


이게 아까 말했던 'dnSpy가 C# 버전 상관 없이 코드를 개병신 같이 뜯는 문제'이다.


이 경우 메소드 편집이 아닌 클래스 편집을 해야하나, 그래도 오류는 여전히 뜬다.


이 문제를 해결하기 위해 아까 설치한 ILSpy의 도움을 받아보자.


우선 메소드만 편집하는 건 답이 없으니 클래스 편집으로 들어가자.


24b0d121e09c28a8699fe8b115ef046c66f62c4e


24b0d121e09c28a8699fe8b115ef0464d189

이 경우 원래 오류가 생기지 않을 이상한 곳에서 별 빨간 글씨가 생긴 걸 볼 수 있는데,


24b0d121e09c28a8699fe8b115ef046f574b9d

이렇게 [CompilerGenerated](컴파일러에서 별도로 생성되었다는 것)가 붙은 걸 중괄호째로 날려주면 대부분 해결된다.(원래 VS 등으로 개발자가 코드를 짤 때는 없었지만, 코드 -> 컴파일 -> 디컴파일러(dnSpy)를 거치며 지 멋대로 생성된 코드기 때문에 오류를 일으키는 것)


24b0d121e09c28a8699fe8b115ef0464df8f

(해결된 모습)


하지만 이걸 날려도 해결되지 않는 부분들이 있다.


24b0d121e09c28a8699fe8b115ef0468e7a8e9

위의 CompilerGenerated와 연관되어 있던 녀석이 문제를 일으키는 모습이다.


이 녀석은 그냥 지우면 오류가 난다. 그러면 어떻게 해야할까? 우리가 원본 코드를 아는 것도 아닌데.


바로 여기서 ILSpy가 출동한다.


코드 수정 상태에선 dnSpy 창이 최소화가 안되니, 창을 최소화 하던, 어떻게 바탕화면 바로가기를 누르던, 윈도우 키를 눌러 열던 ILSpy를 열자.


24b0d121e09c28a8699fe8b115ef0468e0adec

왼쪽 위의 File->Open으로 위에서 설명한 스컬의 메인 코드 파일(dll)을 열자.

(나는 ILSpy의 설정을 바꿔서 저렇게 보이는거다. 원래는 화이트 테마일 것이다. dnSpy처럼 ILSpy를 볼거면 View -> Theme -> VS Code Dark+를 체크하고, View -> Option -> Display에서 Font를 Dotum으로 설정하자.)


그리고 저 메소드가 있던 클래스로 가준다. 이 경우엔 Level 네임스페이스의 HardModeChest 클래스였다.


24b0d121e09c28a8699fe8b115ef04699538f6

깔끔하게 열렸다.


문제를 일으킨 InteractWith라는 메소드를 찾아가주자.(ILSpy는 dnSpy와 반대로 필드(변수값)가 위쪽에, 메소드(함수)가 아래쪽에 배치되어 있다. 또 메소드 접힌 건 왼쪽의 + 버튼을 누르면 펼쳐진다.)


24b0d121e09c28a8699fe8b115ef046f5c4f919f

ILSpy는 훨씬 깔끔하게 코드를 까줬다.


참고로, 코드를 이렇게 보려면 스컬의 C# 버전에 맞춰야 하는데(View -> Options -> Decompiler에서 C# 버전 기능을 체크/체크해제 할 수 있다.) 스컬의 경우 C# 7.0까지만 체크하고(이미 되어 있다) C# 7.2~C#11.0은 전부 체크 해제하고 ok를 누르면 된다.


24b0d121e09c28a8699fe8b115ef046c69f0294d

이렇게 했다면 코드가 깔끔하게 뜯어졌을 것이다.


그 다음은 저 메소드 내용물을 통째로 복사해 아까 문제를 일으켰던 dnSpy에 복붙해준다.


24b0d121e09c28a8699fe8b115ef046b696a94

들여쓰기가 고장난 건 무시해도 되고, 짜잔! 오류메세지가 사라졌다.


이외에도 오류(빨간 글씨)가 뜨는 건 전부 디컴파일러(dnSpy) 문제이므로 마찬가지로 ILspy에서 같은 메소드를 찾아 복붙해주면 해결된다.


그럼 다시 코드 수정으로 돌아와서, 나는 확률 상관 없이 모든 상자가 흉조 상자가 되게 하고 싶으므로 해당 bool을 true로 고정해주자.


24b0d121e09c28a8699fe8b115ef046c61f52049

이제 모든 아이템상자는 흉조 상자가 될 것이다.


오른쪽 아래 Compile을 눌러 코드를 바꿔주자.


24b0d121e09c28a8699fe8b115ef046c65f8284c

이런, 또 오류다. 오류 메세지를 더블 클릭해 어디서 오류가 났는지 확인하자.


24b0d121e09c28a8699fe8b115ef0464d689

dnSpy가 개빡대가리라 Enum형을 int로 자동 변환하지 못하니, 수동으로 변환해주는 수 밖에 없다.


이러고 Compile을 누르면? 해결됐다!


24b0d121e09c28a8699fe8b115ef046c64f72049

(dnSpy가 멍청하다는 걸 증명하듯이 위에 int로 수정해놨던 건 어느새 제자리로 돌아와있다. 아래 InteractWith 메소드도 돌아왔다.)


이 상태로 dnSpy를 닫으려 하면 저장할거냐고 묻는다.(당연히 저장해야 코드가 수행된다)


24b0d121e09c28a8699fe8b115ef046ecd4ccc

Yes를 누르면 파일 위치가 뜨는데, 기본적으로 원래 dll이 있던 위치가 등록되어 있으니 그냥 OK를 눌러주면 자동으로 덮어씌워진다.(아니면 왼쪽 위에 File -> Save를 써도 된다. 같은 화면이 뜰 것이다.)


이걸로 흉조가 활성화 된 상태에서 모든 아이템 상자는 흉조 상자가 되었다! 즐겁게 흉조런을 할 수 있을 듯 하다.


이외에도 슬라임이 복사해주는 템 위치를 고정한다던가(Level.Npc.FieldNpc의 MagicalSlime 클래스쪽을 참조하시라) 뼈방패, 새가슴의 무적 조건을 변경한다던가 하는 것도 가능하다(아쉽게도 수은 심장 지급하는 코드는 못 찾았다).


dnSpy와 ILSpy를 이용해서 스컬을 입맛대로 변형해 즐겨보도록 하자.

추천 비추천

13

고정닉 4

2

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2868 설문 힘들게 성공한 만큼 절대 논란 안 만들 것 같은 스타는? 운영자 24/06/10 - -
2865 AD 호요버스 신작 <젠레스 존 제로> 7월 4일 오픈! 운영자 24/06/05 - -
54565 일반 나 지금 1시간 30분째 첫맵도 못깨는 중인데 원래 이리 어려움? [1] 스갤러(211.108) 05.24 112 1
54564 일반 와씨 ;; 이정도면 개잘나온거임? [7] ㅇㅇ(101.235) 05.24 311 1
54563 일반 이게 워리어지 ㅇㅇ [3] 스갤러(211.118) 05.23 154 1
54562 일반 흉조 들고 방심했다가 2스테 머신건 맞고 뒤지면 자살 마려움 [1] 스갤러(223.39) 05.23 96 0
54561 일반 마딜로 딜찍하다 구울로 맞딜 하니까 개빡세네 TT갤로그로 이동합니다. 05.23 77 1
54560 일반 이런 경우는 어떻게 하냐 백조롱이갤로그로 이동합니다. 05.23 90 0
54559 일반 죄수 메마른손 ㄱㅊ? [2] 스갤러(118.216) 05.23 127 0
54558 일반 근데 스컬 죄 템은 뜨는 조건이 있는거임? [1] 스갤러(124.58) 05.23 118 0
54557 일반 물리캐는 서브스컬로 뭐채용해? [7] 스갤러(218.235) 05.23 192 0
54556 일반 워리어 각인 추천좀 스갤러(182.212) 05.23 65 0
54555 일반 옛날 검은 거울 영상 보는데 [1] 스갤러(175.196) 05.23 84 0
54554 일반 무현 주사위 갬블러 ㅇㅇ(211.107) 05.23 104 1
54553 일반 9단계 시발 어떻게깸 [5] ㅇㅇ갤로그로 이동합니다. 05.23 169 0
54552 일반 빙폭이 개사기긴 하네 스갤러(14.45) 05.23 99 0
54551 일반 아 씨발 진짜 0단계좀 너프하라고 ㅇㅇㅇ(118.235) 05.23 146 0
54550 일반 2단계 성불 스갤러(211.224) 05.23 52 0
54549 일반 고등급 노각인vs저등급 각인템 중에 뭐가 효율이 좋음? [3] ㅇㅇ갤로그로 이동합니다. 05.23 101 0
54548 일반 뉴비 처음으로 4스테까지 왔다 [1] 스갤러(115.92) 05.23 82 0
54547 일반 거울 1단계같은 저단계 스컬/템 뭐들고감? [2] ㅇㅇ갤로그로 이동합니다. 05.23 189 0
54546 일반 스위치 [2] 스갤러(175.123) 05.23 125 0
54545 일반 역시 스컬은 사기 오지게 쳐야 재밌는겜이다 스갤러(58.235) 05.23 194 0
54544 일반 파티클 품질 이게 이펙트 줄이는 거임? [1] ㅇㅇ갤로그로 이동합니다. 05.23 112 0
54543 일반 와 막보 체력 뭐 이따구로 높음?? [2] 스갤러(36.39) 05.23 152 0
54542 일반 늒네 복사 추천해죠 [5] 대한적십자갤로그로 이동합니다. 05.23 153 0
54541 일반 역시 성물복수구울은 뇌빼고 하기에 재밌어 Dr갤로그로 이동합니다. 05.23 158 0
54540 일반 구울 좋은거 맞음? [4] ㅇㅇ갤로그로 이동합니다. 05.22 253 0
54539 일반 와씨 이거 한번에 두개도 뜨는거였음? ㅇㅇ갤로그로 이동합니다. 05.22 141 0
54538 일반 이제 걸작도장 안나옴? [1] 얼붕이(222.237) 05.22 117 0
54537 일반 복귀늒네 거울첫클했다 ㅇㅇ(61.39) 05.22 75 0
54536 일반 레이아나 풀피버그 고친 거 맞아? [2] ㅇㅇ(125.186) 05.22 137 0
54535 일반 (소신발언)솔직히 도적은 개편해야됨 [2] 스갤러(118.44) 05.22 274 0
54534 정보 님들 창스컬로는 보물빌드 안가죠 [1] 스갤러(36.39) 05.22 217 0
54533 일반 늒네 스토리 첫클 했다 ㅇㅇ갤로그로 이동합니다. 05.22 45 0
54532 일반 교대컨 차이 큼? [6] ㅇㅇ갤로그로 이동합니다. 05.22 307 0
54531 일반 야차랑 연금술사 먹고 뒤짐... [2] ㅇㅇ(121.164) 05.22 175 0
54530 일반 재미있어보여서 샀는데 [7] ㅇㅇ(121.164) 05.22 156 0
54529 일반 뉴비 DLC로 운좋게 클리어함 검은거울 들어가야 하나?? [2] 스갤러(175.215) 05.22 161 0
54528 일반 뉴비인데 0단계 뭐이리 어려움 [2] 스갤러(1.227) 05.22 228 0
54526 일반 이거 뭔지 알려주실분? [3] 스갤러(58.120) 05.22 199 0
54525 일반 결국 하다보면 각인 이쁘게 맞추는게 기분좋더라 [2] EGIA갤로그로 이동합니다. 05.21 251 0
54524 일반 뉴비 재능 평가좀 [4] 스갤러(218.157) 05.21 247 1
54523 일반 dlc방금사서 모르는데 이거 언제 다시열림? [3] 브라훔치는브라이언갤로그로 이동합니다. 05.21 328 0
54522 일반 잊왕 여기서 뭐 복사해야됨? [2] 브라훔치는브라이언갤로그로 이동합니다. 05.21 227 0
54521 일반 리틀본 도과 깸 [1] ㅇㅇ(220.117) 05.21 145 0
54520 정보 여러모로 복잡한 "피격 시"라는 조건 알아보기 스갤러(119.69) 05.21 175 4
54519 일반 x연타 공속빠르면 많이 힘드네 [3] 스갤러(118.235) 05.21 165 0
54518 일반 아 0단계 못깨겠네 [2] ㅇㅇㅇ(118.235) 05.21 147 0
54517 일반 유리몸+새가슴+수은심장 [4] 스갤러(125.240) 05.21 203 0
54516 일반 죽음 극복? [1] 스갤러(125.240) 05.21 102 0
54515 일반 평딜은 그냥 다 물리임? [2] ㅇㅇㅇ(118.235) 05.21 161 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2