디아블로2 레저렉션/게임 정보

디아블로2 레저렉션 자동사냥 픽셀 오토봇 (D2R BOTTY Pixel Bot)

아미넴 2022. 3. 5.
반응형

(경고) 이 프로그램을 사용하여 발생하는 불이익은 모두 각자의 책임입니다.

 

우연히 인터넷을 떠돌다가 봇의 존재를 알게 되었습니다. 어둠의 경로로 퍼지는 봇이 아니라 당당하게 GitHub에 올라온 봇이므로 사용 방법을 공유하도록 하겠습니다.

 

개인적인 의견으로는 이미지 분석을 이용한 수동과 비슷한 조작 방식이라서 크게 위험해 보이지는 않습니다. 실제 소스를 확인해 보면 악성 코드로 인식할 만한 어떠한 라이브러리도 포함하고 있지 않습니다.

 

불안하신 분은 손도 대지 마시기를 권장합니다.

 

목차

     

    미니콘다 설치

    이 설명이 필요하지 않은 분은 아나콘다 사용법을 충분히 아는 사용자라고 간주하겠습니다.

    Miniconda - Conda documentation

     

    Miniconda — Conda documentation

    Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others. Use the conda in

    docs.conda.io

     

    자신의 운영체제에 맞는 설치 파일을 다운 받으시면 됩니다. 디아블로2 레저렉션을 플레이 하시는 분들은 대부분 윈도우 64비트를 사용하실 것으로 예상됩니다. 

     

    나중에 쉽게 빌드하기 위해 패스를 환경 변수로 추가하시는 것을 권장합니다.

     

    봇 다운로드

    현재 올라온 BOTTY 깃허브 URL입니다.

     

    GitHub - aeon0/botty: D2R Pixel Bot

     

    GitHub - aeon0/botty: D2R Pixel Bot

    D2R Pixel Bot. Contribute to aeon0/botty development by creating an account on GitHub.

    github.com

     

    언제까지 공유될지는 모르겠지만 현재는 아무 제재없이 공유가 이루어지고 있는 것으로 보입니다.

     

    제작자는 정보성 또는 교육 목적으로만 제공하고 있다고 기술하고 있습니다.

    This project is for informational and educational purposes only and is not meant for online usage.

     

    잘 아시는 분은 git의 clone 기능을 이용하여 설치하셔도 되고 모르시겠으면 그냥 Download ZIP을 이용하여 다운을 받습니다.

     

    다음과 같은 파일들이 포함되어 있습니다. 적당한 경로에 압축을 풀어 놓습니다.

     

    Visual Studio Code에서 실행하기

    Visual Studio Code가 없으신 분들은 먼저 설치하시기 바랍니다.

     

    Visual Studio Code - Code Editing. Redefined

     

    Visual Studio Code - Code Editing. Redefined

    Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

    code.visualstudio.com

     

    VS Code를 실행하여 File > Open Folder... 에서 압축을 푼 경로를 선택합니다.

     

    왼쪽에 다음과 같이 표시되면 성공입니다.

     

    Terminal > New Terminal을 통해서 PowerShell 또는 Command Prompt를 실행합니다.

     

    하단에 다음과 같이 터미널 창이 열리면 성공입니다.

     

    파이썬 컴파일 환경 인스톨

    .\run.bat 라고 입력하면 다음과 같은 메뉴가 뜨는데 먼저 1번을 선택해 보겠습니다. 추후 라이브러리가 업데이트 됐으면 메뉴 2번을 선택하여 업데이트 할 수도 있습니다.

     

    봇 코드 컴파일에 필요한 라이브러리들이 자동으로 다운로드 및 설치가 진행됩니다. 이와 같은 화면이 안 보이신다면 conda의 path 설정 등을 점검해 보시기 바랍니다.

     

    확인해 보니 테서랙트도 설치하는데 오픈 소스로 제공되는 OCR(광학 문자 인식) 엔진입니다.

     

    custom.ini 파일 설정

    config 폴더에 custom.ini 파일을 직접 생성하여 다음과 같이 작성할 수 있습니다. param.ini 파일보다 우선적으로 적용됩니다.

     

    param.ini 파일은 새로운 버전이 나올 때마다 변경될 수 있는 부분이므로 본인만의 설정을 custom.ini 파일에 별도로 설정해 놓는 것이 좋습니다.

     

    (내용 추가) 컴파일을 하면 botty_v0.6.7-dev/config 폴더에 자동 생성되는데 같은 방식으로 수정하면 됩니다.

     

    봇 실행

    컴파일을 따로 하지 않아도 메뉴 4번을 선택하면 디버그 모드로 바로 실행이 됩니다. 이 때는 exe 파일을 실행하는 것이 아니라 파이썬 코드를 run 하는 것입니다.

     

    실행되면 다음과 같은 메뉴가 보입니다. 봇을 실행하기 위해 f11을 눌러 보겠습니다.

     

    다른 메뉴들에 대한 자세한 설명은 생략합니다.

     

    봇이 실행되면 로그를 찍으며 잘 실행되는 것을 알 수 있습니다.

     

    오프라인 캐릭터로 플레이를 시도해 보았습니다. 디아블로가 실행된 윈도우창의 스냅샷을 찍어가며 이미지를 분석하는 방식이네요.

     

    OCR은 물론 오브젝트를 확률로 찾아가는 것으로 보아 여러 머신러닝 기술을 적용한 것 같습니다.

     

    파이썬 코드 컴파일 및 실행

    윈도우 실행 파일(exe)로 컴파일을 원하시면 메뉴에서 3번을 선택합니다.

     

    컴파일을 시작하면 시간이 조금 걸리는데 마지막에 다음과 같은 메시지가 나오면 성공입니다.

     

    컴파일 결과물로 botty_v0.6.7-dev 폴더 내에 생성된 exe 실행파일의 용량이 상당히 크지만 딱히 의심할 것은 없습니다. 많은 라이브러리가 파일 하나에 다 포함되어 그렇습니다.

     

    botty_v0.6.7-dev 폴더의 main.exe 파일을 실행하면 동일하게 동작을 합니다.

     

    잘 안 될 경우

    설치가 잘 안 되는 경우 조치했었던 방법을 모아 보았습니다. 봇 프로그램 버전에 따라 조치 방법이 달라질 수 있습니다.

     

    pyinstaller 설치

    compile할 때 pyinstaller가 없으면 오류가 납니다. exe 실행 파일을 만들어 주는 라이브러리 입니다. 컴파일 환경 인스톨 시 자동으로 설치가 됐어야 할거 같은데 저 같은 경우에는 중간에 오류가 났는지 설치가 안 돼서 따로 설치해 주었습니다.

     

    다음 명령어를 이용하여 설치할 수 있습니다.

    pip install pyinstaller

     

    environment.yml 파일 수정

    저 같은 경우는 처음 봇 실행에 실패하였습니다. 그래서 environment.yml 파일에서 다음 부분을 삭제하고 C:\Users\본인계정\miniconda3\envs\botty 폴더를 제거 후 1번 Install Env를 다시 실행했더니 정상 동작하였습니다.

     

    게임 옵션 변경

    창 모드에 해상도는 1280x720으로 맞춰야 동작한다고 합니다. 봇을 실행하면 알아서 설정하고 재시작 하는 것 같기도 합니다. 그리고 이미지 문자 인식을 위해 필수로 영문판으로 설정해 주셔야 합니다.

     

    실행파일 제공

    각자 코드를 수정해서 더 완성도 높게 이용하고 싶은 분들을 위해 직접 컴파일 하는 방법을 소개하였지만 이 모든 것이 어렵다면 실행파일을 다운 받아서 실행해 보세요.

    Releases · aeon0/botty

     

    Releases · aeon0/botty

    D2R Pixel Bot. Contribute to aeon0/botty development by creating an account on GitHub.

    github.com

     

    Assets에 있는 파일을 다운 받으시면 됩니다.

    저도 많이 해보지 않았으므로 궁금한 점이 있으면 제작자 깃허브로 문의 부탁드립니다.

     

    그리고 다시 말씀 드리지만 온라인 사용 시 문제가 발생할 수 있으므로 교육 목적으로 활용하시거나 오프라인에서만 재미삼아 해보시기 바랍니다.

     

    아직 어설픈 점이 많지만 지속적으로 발전하길 기대해 보겠습니다.

    감사합니다.

    반응형
    그리드형(광고전용)

    댓글181

    • 이전 댓글 더보기
    • minsookang 2022.06.09 09:04

      관리자분 이 글써도 돼긋나 모르긋네요 파이선 교육용으로
      src >>char>>hamerdin 를 살짝 건드려서 질딘으로 소스일부만 공개 해드림 ~~여러분들도 파이썬 좀만 공부하심돼요
      해머딘.py를 메모장을로 열어서 개조 일부만 공개
      def _cast_hammers(self, time_in_s: float, aura: str = "conviction"):<<<이부분 개조
      if aura in self._skill_hotkeys and self._skill_hotkeys[aura]:
      keyboard.send(self._skill_hotkeys[aura])
      wait(0.05, 0.1)
      keyboard.send(Config().char["stand_still"], do_release=False)
      wait(0.05, 0.1)
      if self._skill_hotkeys["zeal"]:<<<개조
      keyboard.send(self._skill_hotkeys["zeal"])<<<개조
      wait(0.05, 0.1)
      start = time.time()
      while (time.time() - start) < time_in_s:
      wait(0.06, 0.08)
      mouse.press(button="left")
      wait(0.1, 0.2)
      mouse.release(button="left")
      wait(0.01, 0.05)
      keyboard.send(Config().char["show_items"], do_press=False)

      def pre_buff(self):
      if Config().char["cta_available"]:
      self._pre_buff_cta()
      keyboard.send(self._skill_hotkeys["holy_shield"])
      wait(0.04, 0.1)
      # mouse.click(button="right")<<개조
      wait(self._cast_duration, self._cast_duration + 0.06)
      para.ini 개조 부분이 필요하구요
      관련 증명영상은 https://www.facebook.com/minsoo.kang3/videos/754260809266470 요기에
      답글

    • 울산 2022.06.10 07:15

      팔라햄딘으로 설정되어있는데 스왑으로 콜투암스 설정 어떻게하나요?
      답글

      • minsookang 2022.06.11 11:28

        config폴더에서 params,ini를 메모장이나 vscode또는텍스터에디터를 이용하여
        cta_available=1<<<1로수정
        weapon_switch=w 스왑키 디아블로겜상에서 동일
        battle_orders=f1 디아블로상 겜키 동일
        battle_command=f2 디아블로상 겜키 동일
        battle_cry=f3<<<이부분은 복잡하고 아직 정리를 안해놔서 아님 좀 파이썬 파심돼요
        변경 다음 저장후 실행

      • 울산 2022.06.12 08:17

        감사합니다 스왑이 적용이되네요 ^^

      • 울산 2022.06.13 00:09

        핀들에서 스왑하고 이동후 몹다안잡고 빨리 포탈을 열어요? 콜트적용하고 그런거 같은데??
        그리고 햄딘 수수께끼 착용시 순간이동 적용 할수있나요?

    • 1111 2022.06.12 10:09

      [0.7.3 2022-06-12 12:48:27,343] INFO Starting game #2
      [0.7.3 2022-06-12 12:48:27,344] DEBUG Waiting for templates: ['MAIN_MENU_TOP_LEFT', 'MAIN_MENU_TOP_LEFT_DARK', 'A5_TOWN_0', 'A5_TOWN_1', 'A4_TOWN_4', 'A4_TOWN_5', 'A3_TOWN_0', 'A3_TOWN_1', 'A2_TOWN_0', 'A2_TOWN_1', 'A2_TOWN_10', 'A1_TOWN_1', 'A1_TOWN_3']
      [0.7.3 2022-06-12 12:49:38,513] DEBUG Set offsets: left -10000px, top -10000px
      [0.7.3 2022-06-12 12:49:39,366] DEBUG Found Match: MAIN_MENU_TOP_LEFT (94.5% confidence)
      [0.7.3 2022-06-12 12:49:39,371] DEBUG Wait for Play button
      [0.7.3 2022-06-12 12:49:39,376] DEBUG Found Play Btn, select and press key: h
      [0.7.3 2022-06-12 12:49:47,664] DEBUG Set offsets: left 22px, top 45px
      [0.7.3 2022-06-12 12:49:52,700] DEBUG Set offsets: left -10000px, top -10000px
      [0.7.3 2022-06-12 12:49:53,708] DEBUG Set offsets: left 22px, top 45px
      [0.7.3 2022-06-12 12:49:56,994] ERROR Could not find hell_BTN or LOADING, start over
      [0.7.3 2022-06-12 12:49:56,996] DEBUG Wait for Play button
      [0.7.3 2022-06-12 12:49:57,018] DEBUG Found Play Btn, select and press key: h
      [0.7.3 2022-06-12 12:49:58,577] DEBUG Found loading screen / creating game
      [0.7.3 2022-06-12 12:49:58,828] DEBUG Waiting for templates: ['A5_TOWN_0', 'A5_TOWN_1', 'A4_TOWN_4', 'A4_TOWN_5', 'A3_TOWN_0', 'A3_TOWN_1', 'A2_TOWN_0', 'A2_TOWN_1', 'A2_TOWN_10', 'A1_TOWN_1', 'A1_TOWN_3']
      [0.7.3 2022-06-12 12:50:12,897] DEBUG Found Match: A5_TOWN_1 (85.9% confidence)
      [0.7.3 2022-06-12 12:50:13,168] INFO Capabilities: CharacterCapabilities(can_teleport_natively=True, can_teleport_with_charges=False)
      [0.7.3 2022-06-12 12:50:14,286] DEBUG Needs: Consumables(tp=0, id=0, rejuv=0, health=1, mana=0, key=0)
      [0.7.3 2022-06-12 12:50:14,371] INFO Run Pindle
      [0.7.3 2022-06-12 12:50:14,371] DEBUG Traverse from a5_town_start to a5_nihlathak_portal
      [0.7.3 2022-06-12 12:50:22,093] DEBUG Select A5_RED_PORTAL (90.3% confidence)
      [0.7.3 2022-06-12 12:50:23,409] INFO Health Manager is now active
      [0.7.3 2022-06-12 12:50:23,410] DEBUG Waiting for templates: ['PINDLE_0', 'PINDLE_1']
      [0.7.3 2022-06-12 12:50:24,846] DEBUG Drink health potion in slot 3. HP: 63.4%, Mana: 99.7%
      [0.7.3 2022-06-12 12:50:24,906] DEBUG Found Match: PINDLE_0 (65.7% confidence)
      [0.7.3 2022-06-12 12:50:40,716] INFO Health Manager is now pausing
      [0.7.3 2022-06-12 12:50:40,716] INFO End game. Elapsed time: 133.37s
      [0.7.3 2022-06-12 12:50:40,720] INFO Starting game #3
      [0.7.3 2022-06-12 12:50:40,720] DEBUG Waiting for templates: ['MAIN_MENU_TOP_LEFT', 'MAIN_MENU_TOP_LEFT_DARK', 'A5_TOWN_0', 'A5_TOWN_1', 'A4_TOWN_4', 'A4_TOWN_5', 'A3_TOWN_0', 'A3_TOWN_1', 'A2_TOWN_0', 'A2_TOWN_1', 'A2_TOWN_10', 'A1_TOWN_1', 'A1_TOWN_3']
      [0.7.3 2022-06-12 12:57:00,734] INFO Max game length reached. Attempting to restart Botty!
      Set D2R to be always on top
      [0.7.3 2022-06-12 12:57:32,225] ERROR Could not recover from a max game length violation. Quitting botty.
      Exception in thread Thread-6:
      Traceback (most recent call last):
      File "threading.py", line 973, in _bootstrap_inner
      File "threading.py", line 910, in run
      File "game_controller.py", line 97, in run_bot
      File "game_controller.py", line 152, in safe_exit
      File "utils\restart.py", line 21, in kill_game
      File "utils\restart.py", line 14, in process_exists
      UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 2: invalid start byte

      이렇게 나오면서 방생성이 안됩니다.
      Max game length reached. 최대 게임 길이에 도달했다는데 무슨말인지 모르겠네요...핀들잡고 방종료후에 다시 방생성이 안되고 있습니다. 이유가 뭘까요?
      답글

      • minsookang 2022.06.12 12:40

        전 감별책을 버리면 봇이 사버림
        sell junk=1
        ocr_during_pickit=1
        ocr분석뒤pickit하구 대조후
        매칭이 안돼면 아이템 팔아버리는데요
        감별책하구 포털책은항상 인벤토리에 지니구 당겨요

    • 2222 2022.06.12 13:53

      온라인에서 핀들잡고 자동으로 방생성이 안됩니다.
      얼핏 들은 바로는 game.ini가 오프라인용이라 온라인용으로 play_btn 위치를 바꿔줘야 했던것 같은데...
      아무리 찾아봐도 자료가 안나오네요...
      아시는분 좀 알려 주세요~~~
      답글

    • 123123 2022.06.13 07:36


      ;flawless gems
      misc_flawless_amethyst=1
      misc_flawless_ruby=1
      misc_flawless_diamond=1
      misc_flawless_topaz=1
      misc_flawless_emerald=1
      misc_flawless_sapphire=1
      misc_flawless_skull=1

      상급보석 주울려고 이런식으로 해놨는데 처음에는 줍더니 줍질안습니다 왜그런걸까요?
      나머지 템들은 잘줍습니다
      답글

    • 123123 2022.06.13 07:52

      ;flawless gems
      misc_flawless_amethyst=1
      misc_flawless_ruby=1
      misc_flawless_diamond=0
      misc_flawless_topaz=0
      misc_flawless_emerald=0
      misc_flawless_sapphire=0
      misc_flawless_skull=1

      이렇게 설정했음에도 보석을 먹지 않습니다 무슨문제일까요?ㅠㅠ
      답글

    • 카오카오팔라 2022.06.13 12:16

      요새 추가로 정지되신분들 있으신가요?
      답글

    • 오리발 2022.06.13 15:38

      핀들 들어가면 저멘트 나오면서 앞으로 무한 텔포하는데 어디가 문제인걸까요?
      DEBUG Teleport cancel detected. Try same teleport action again. (0.0301)
      DEBUG Teleport cancel detected. Try same teleport action again. (0.0213)
      DEBUG Teleport cancel detected. Try same teleport action again. (0.0336)
      DEBUG Teleport cancel detected. Try same teleport action again. (0.0359)
      답글

      • 봇봇 2022.06.15 10:51

        시전속도랑 관련이 있는듯 합니다. 시전프레임 설정을 2단계정도 낮춰보세요~

    • 디아런문제 2022.06.13 17:09

      https://i.imgur.com/Dc0PmS4.png

      엑트4 돌리면 이런 게나오면서 멍청이가 됩니다 혹시 문제점아시는분있나요?
      답글

    • ㅇㄷ 2022.06.14 01:44

      시체먹는거아시는분..
      답글

    • 강마루 2022.06.14 14:56

      계정 3개째 블럭이네요 ㅋㅋㅋ
      사용하시는 분들 조심하세요
      답글

    • 래더진수 2022.06.14 15:10

      한글 닉네임 시체 먹는 방법 좀 알려 주실 분 있으실까요?
      답글

    • 카오카오팔라 2022.06.14 16:34

      관리자님 카생도 돌아가나요?
      답글

    • ㅇㅇ 2022.06.15 15:55

      저도 오늘 정지네요 12시간 이상 돌린다고 정지가 아니라 운 안좋으면 걸립니다 모니터링에

      https://i.imgur.com/2BERTqG.png
      답글

      • 울산 2022.06.16 16:47

        정지 당하면은 다른계정으로 되나요? 아님 기존디아지우고 다시 돈주고 깔아야되나요?

    • dd 2022.06.17 06:05

      혹시 이거 사용하다가 계정 정지 당하고 이의신청해서 풀린 분 계실까요? 안되겠죠?
      답글

    • 카오카오팔라 2022.06.17 20:25

      저도 2계정 정지네요. 진짜 신기한게 항상 자룬 먹으면 몇시간뒤 정지네요 ㅋㅋㅋㅋㅋㅋ
      어이가없네요

      그리고 저같은 경우는 2번째 계정 정지상황은 새벽 6시에 자룬먹은거 확인하고 접속안했는데 9시30분쯤 정지때리네요 ㅋㅋ

      참..
      답글

    • ㅇㅇ 2022.06.19 12:26

      혹시 4월부터 사용하고 현재까지 정지 안먹으신분 있나요
      답글

    • 음냐리 2022.06.20 15:25

      일단 복불복이라고는 하나 계정정지 되네요
      맥햅 없고 봇만 사용 했어요
      친구꺼 까지 해서 대략 5개 계정을 돌려 봤습니다
      동시가 아니라 하나씩이요
      심지어 친구 본인 집에 돌려서 5개 모두 ip가
      다릅니다 시간 차이는 있으나 결국 모두 블럭 먹어서
      아이템 값이 똥 값인 지금 통계적으로 빨리
      블럭 처리 당하면 계정비만 날리 겠습미다
      본문 내용 대로 파이선 학습용으로 사용 하는것이
      정신 건강에 이러울듯 합니다
      답글

    • 블루 2022.06.21 12:00

      4월부터 핀들, 엘드리치만 2계정(직업:소서, 렙:94)으로 1일 9시간(저녁10시부터 다음날 7시까지) 정도 돌리는데 현재까지 이상 없습니다.
      참고로 월요일부터 목요일까지만 돌리고 주말은 개인적인 사정으로 못돌립니다
      제 생각에 돌리는 시간과 연관이 있는 것으로 보입니다. 적절하게 사용하시면 별 문제 없는 것으로 보입니다.

      답글

    • 2022.06.24 12:01

      https://i.imgur.com/M0KtE14.jpg

      이런식으로 나오고 1초뒤 도스창이 바로꺼집니다 고칠경로아시는분있을까요?
      답글

    💲 추천 글