├── .gitattributes ├── README.md ├── __pycache__ └── app.cpython-310.pyc ├── app.py ├── client.dll.json ├── config.json ├── data └── nomap_pics │ ├── 2ia5HHNH_LQ.png │ ├── 6-znZWXX0TY.png │ ├── EC5nCCyFQnQ.png │ ├── Ngr4qcfPcQ8.png │ ├── _4yFZdFnEX0.png │ ├── dpF1i76Yoo4.png │ └── eenUchh9GyE.png ├── dma.zip ├── external.zip ├── maps ├── awp_lego_2 │ ├── meta.json │ └── radar.png ├── cs_office │ ├── meta.json │ └── radar.png ├── de_ancient │ ├── meta.json │ ├── overlay_buyzones.png │ └── radar.png ├── de_anubis │ ├── meta.json │ └── radar.png ├── de_assembly │ ├── meta.json │ └── radar.png ├── de_dust2 │ ├── meta.json │ └── radar.png ├── de_inferno │ ├── meta.json │ └── radar.png ├── de_mirage │ ├── meta.json │ └── radar.png ├── de_nuke │ ├── meta.json │ └── radar.png ├── de_overpass │ ├── meta.json │ └── radar.png ├── de_vertigo │ ├── meta.json │ └── radar.png └── empty │ ├── 1.png │ └── meta.json ├── offsets.json ├── requirements.txt └── testing ├── BombIcon.png ├── bomb.py ├── config.json ├── enttest.py ├── ltc.jpg ├── mapnameparser.py ├── maps ├── awp_lego_2 │ ├── meta.json │ └── radar.png ├── de_ancient │ ├── meta.json │ ├── overlay_buyzones.png │ └── radar.png ├── de_anubis │ ├── meta.json │ └── radar.png ├── de_inferno │ ├── meta.json │ └── radar.png ├── de_mirage │ ├── meta.json │ └── radar.png ├── de_nuke │ ├── meta.json │ └── radar.png ├── de_overpass │ ├── meta.json │ └── radar.png ├── de_vertigo │ ├── meta.json │ └── radar.png └── empty │ └── meta.json ├── offset_manipulator.py ├── preview.gif ├── test.py ├── ton.jpg ├── usdt.jpg └── web-preview.gif /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | [![ac status - Undetected](https://img.shields.io/static/v1?label=ac+status&message=Undetected&color=2ea44f)](https://) [![tested-cs2-version. - 14017](https://img.shields.io/static/v1?label=tested+cs2+version&message=14017&color=2ea44f)](https://) 3 | 4 | The new DMA [expirience](https://scoretech.pro/) 5 | -------------------------------------------------------------------------------- /__pycache__/app.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/__pycache__/app.cpython-310.pyc -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | import memprocfs 2 | import struct 3 | import time 4 | import pygame 5 | import pygame_gui 6 | import json 7 | import math 8 | import numpy as np 9 | import os 10 | import re 11 | from requests import get 12 | import threading 13 | import random 14 | from pygame.locals import * 15 | 16 | 17 | with open(f'config.json', 'r') as f: 18 | settings = json.load(f) 19 | 20 | triangle_length = settings['triangle_length'] 21 | circle_size = settings['circle_size'] 22 | hp_font_size = settings['hp_font_size'] 23 | rot_angle = settings['rot_angle'] 24 | cross_size = settings['cross_size'] 25 | teammate_setting = settings['teammates'] 26 | altgirlpic_instead_nomappic = settings['altgirlpic_instead_nomappic'] 27 | update_offsets = str(settings['update_offsets']) 28 | maxclients = int(settings['maxclients']) 29 | 30 | 31 | ####################################### 32 | 33 | if update_offsets == '1': 34 | try: 35 | offsets = get('https://raw.githubusercontent.com/a2x/cs2-dumper/main/output/offsets.json').json() 36 | clientdll = get('https://raw.githubusercontent.com/a2x/cs2-dumper/main/output/client.dll.json').json() 37 | except Exception as e: 38 | print(e) 39 | try: 40 | print('[-] Unable to parse offsets. Using from current folder') 41 | with open(f'client.dll.json', 'r') as a: 42 | clientdll = json.load(a) 43 | with open(f'offsets.json', 'r') as b: 44 | offsets = json.load(b) 45 | except: 46 | print('[-] Put offsets.json and client.dll.json in main folder') 47 | exit() 48 | else: 49 | with open('offsets.json', 'r') as file: 50 | offsets = json.load(file) 51 | with open('client.dll.json', 'r') as file: 52 | clientdll = json.load(file) 53 | 54 | 55 | ####################################### 56 | 57 | maps_with_split = ['de_nuke','de_vertigo'] 58 | 59 | dwEntityList = offsets['client.dll']['dwEntityList'] 60 | mapNameVal = offsets['matchmaking.dll']['dwGameTypes_mapName'] 61 | dwLocalPlayerPawn = offsets['client.dll']['dwLocalPlayerPawn'] 62 | dwPlantedC4 = offsets['client.dll']['dwPlantedC4'] 63 | dwGameRules = offsets['client.dll']['dwGameRules'] 64 | dwGlobalVars = offsets['client.dll']['dwGlobalVars'] 65 | 66 | m_angEyeAngles = clientdll['client.dll']['classes']['C_CSPlayerPawnBase']['fields']['m_angEyeAngles'] 67 | m_iTeamNum = clientdll['client.dll']['classes']['C_BaseEntity']['fields']['m_iTeamNum'] 68 | m_hPlayerPawn = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_hPlayerPawn'] 69 | m_vOldOrigin = clientdll['client.dll']['classes']['C_BasePlayerPawn']['fields']['m_vOldOrigin'] 70 | m_iIDEntIndex = clientdll['client.dll']['classes']['C_CSPlayerPawnBase']['fields']['m_iIDEntIndex'] 71 | m_iHealth = clientdll['client.dll']['classes']['C_BaseEntity']['fields']['m_iHealth'] 72 | m_bIsDefusing = clientdll['client.dll']['classes']['C_CSPlayerPawn']['fields']['m_bIsDefusing'] 73 | m_iCompTeammateColor = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_iCompTeammateColor'] 74 | m_flFlashOverlayAlpha = clientdll['client.dll']['classes']['C_CSPlayerPawnBase']['fields']['m_flFlashOverlayAlpha'] 75 | m_iszPlayerName = clientdll['client.dll']['classes']['CBasePlayerController']['fields']['m_iszPlayerName'] 76 | m_pClippingWeapon = clientdll['client.dll']['classes']['C_CSPlayerPawnBase']['fields']['m_pClippingWeapon'] 77 | m_pInGameMoneyServices = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_pInGameMoneyServices'] 78 | m_iAccount = clientdll['client.dll']['classes']['CCSPlayerController_InGameMoneyServices']['fields']['m_iAccount'] 79 | m_pItemServices = clientdll['client.dll']['classes']['C_BasePlayerPawn']['fields']['m_pItemServices'] 80 | m_bHasDefuser = clientdll['client.dll']['classes']['CCSPlayer_ItemServices']['fields']['m_bHasDefuser'] 81 | m_pGameSceneNode = clientdll['client.dll']['classes']['C_BaseEntity']['fields']['m_pGameSceneNode'] 82 | m_vecAbsOrigin = clientdll['client.dll']['classes']['CGameSceneNode']['fields']['m_vecAbsOrigin'] 83 | m_hOwnerEntity = clientdll['client.dll']['classes']['C_BaseEntity']['fields']['m_hOwnerEntity'] 84 | m_bFreezePeriod = clientdll['client.dll']['classes']['C_CSGameRules']['fields']['m_bFreezePeriod'] 85 | 86 | print('[+] Offsets parsed') 87 | 88 | ####################################### 89 | 90 | zoom_scale = 2 91 | map_folders = [f for f in os.listdir('maps') if os.path.isdir(os.path.join('maps', f))] 92 | global_entity_list = [] 93 | playerpawn = 0 94 | 95 | 96 | 97 | 98 | def get_weapon(ptr): 99 | try: 100 | b1 = struct.unpack("> 9), 8, memprocfs.FLAG_NOCACHE))[0] 223 | Pawn = struct.unpack("> 9), 8, memprocfs.FLAG_NOCACHE))[0] 319 | entity_id = struct.unpack("30: 362 | text_surface = font.render(f' {Hp}', True, (0, 255, 0)) 363 | text_surface.set_alpha(255) 364 | elif Hp<=30: 365 | text_surface = font.render(f' {Hp}', True, (255, 0, 0)) 366 | text_surface.set_alpha(255) 367 | if flash_alpha == 255: 368 | pygame.draw.circle(screen, (255, 255, 255, flash_alpha), (transformed_x, transformed_y), circle_size) 369 | elif team != playerTeam: 370 | pygame.draw.polygon(screen, triangle_color, [(triangle_top_x, triangle_top_y), (triangle_left_x, triangle_left_y), (triangle_right_x, triangle_right_y)]) 371 | pygame.draw.circle(screen, (255, 0, 0), (transformed_x, transformed_y), circle_size) 372 | if Hp>30: 373 | text_surface = font.render(f' {Hp}', True, (0, 255, 0)) 374 | text_surface.set_alpha(255) 375 | elif Hp<=30: 376 | text_surface = font.render(f' {Hp}', True, (255, 0, 0)) 377 | text_surface.set_alpha(255) 378 | if flash_alpha == 255: 379 | pygame.draw.circle(screen, (255, 255, 255, flash_alpha), (transformed_x, transformed_y), circle_size) 380 | elif teammate_setting == 1: 381 | if team == playerTeam: 382 | pygame.draw.polygon(screen, triangle_color, [(triangle_top_x, triangle_top_y), (triangle_left_x, triangle_left_y), (triangle_right_x, triangle_right_y)]) 383 | pygame.draw.circle(screen, (0, 0, 255), (transformed_x, transformed_y), circle_size) 384 | if Hp>30: 385 | text_surface = font.render(f' {Hp}', True, (0, 255, 0)) 386 | text_surface.set_alpha(255) 387 | elif Hp<=30: 388 | text_surface = font.render(f' {Hp}', True, (255, 0, 0)) 389 | text_surface.set_alpha(255) 390 | if flash_alpha == 255: 391 | pygame.draw.circle(screen, (255, 255, 255, flash_alpha), (transformed_x, transformed_y), circle_size) 392 | elif team != playerTeam: 393 | pygame.draw.polygon(screen, triangle_color, [(triangle_top_x, triangle_top_y), (triangle_left_x, triangle_left_y), (triangle_right_x, triangle_right_y)]) 394 | pygame.draw.circle(screen, (255, 0, 0), (transformed_x, transformed_y), circle_size) 395 | if Hp>30: 396 | text_surface = font.render(f' {Hp}', True, (0, 255, 0)) 397 | text_surface.set_alpha(255) 398 | if Hp<=30: 399 | text_surface = font.render(f' {Hp}', True, (255, 0, 0)) 400 | text_surface.set_alpha(255) 401 | if flash_alpha == 255: 402 | pygame.draw.circle(screen, (255, 255, 255, flash_alpha), (transformed_x, transformed_y), circle_size) 403 | name = read_string_memory(EntityAddress + m_iszPlayerName) 404 | elif teammate_setting == 0: 405 | if entity_id == playerpawn: 406 | pygame.draw.polygon(screen, triangle_color, [(triangle_top_x, triangle_top_y), (triangle_left_x, triangle_left_y), (triangle_right_x, triangle_right_y)]) 407 | pygame.draw.circle(screen, (75, 0, 130), (transformed_x, transformed_y), circle_size) 408 | text_surface = font.render(f' {Hp}', True, (0, 255, 0) if Hp > 30 else (255, 0, 0)) 409 | screen.blit(text_surface, (transformed_x, transformed_y)) 410 | elif team == playerTeam: 411 | text_surface = font.render(f' {Hp}', True, (0, 255, 0) if Hp > 30 else (255, 0, 0)) 412 | text_surface.set_alpha(0) 413 | screen.blit(text_surface, (transformed_x, transformed_y)) 414 | elif team != playerTeam: 415 | pygame.draw.polygon(screen, triangle_color, [(triangle_top_x, triangle_top_y), (triangle_left_x, triangle_left_y), (triangle_right_x, triangle_right_y)]) 416 | pygame.draw.circle(screen, (255, 0, 0), (transformed_x, transformed_y), circle_size) 417 | text_surface = font.render(f' {Hp}', True, (0, 255, 0) if Hp > 30 else (255, 0, 0)) 418 | screen.blit(text_surface, (transformed_x, transformed_y)) 419 | name = read_string_memory(EntityAddress + m_iszPlayerName) 420 | if isdefusing == 1: 421 | hasdefuser = struct.unpack("?", cs2.memory.read(EntityAddress + m_bPawnHasDefuser, 1, memprocfs.FLAG_NOCACHE))[0] 422 | if hasdefuser: 423 | pygame.draw.line(screen, (255, 0, 0), (transformed_x - cross_size, transformed_y - cross_size), (transformed_x + cross_size, transformed_y + cross_size), 2) 424 | pygame.draw.line(screen, (255, 0, 0), (transformed_x + cross_size, transformed_y - cross_size), (transformed_x - cross_size, transformed_y + cross_size), 2) 425 | else: 426 | pygame.draw.line(screen, (0, 255, 0), (transformed_x - cross_size, transformed_y - cross_size), (transformed_x + cross_size, transformed_y + cross_size), 2) 427 | pygame.draw.line(screen, (0, 255, 0), (transformed_x + cross_size, transformed_y - cross_size), (transformed_x - cross_size, transformed_y + cross_size), 2) 428 | screen.blit(text_surface, (transformed_x, transformed_y)) 429 | except: 430 | continue 431 | except Exception as e: 432 | print(e) 433 | screenx = screen_width-200 434 | screeny = 60 435 | pygame.display.flip() 436 | pygame.quit() -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "triangle_length": 13, 3 | "circle_size": 7, 4 | "hp_font_size": 18, 5 | "rot_angle": 0, 6 | "cross_size": 10, 7 | "teammates": 2, 8 | "altgirlpic_instead_nomappic": 0, 9 | "update_offsets": 1, 10 | "maxclients": 11 11 | } 12 | -------------------------------------------------------------------------------- /data/nomap_pics/2ia5HHNH_LQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/data/nomap_pics/2ia5HHNH_LQ.png -------------------------------------------------------------------------------- /data/nomap_pics/6-znZWXX0TY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/data/nomap_pics/6-znZWXX0TY.png -------------------------------------------------------------------------------- /data/nomap_pics/EC5nCCyFQnQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/data/nomap_pics/EC5nCCyFQnQ.png -------------------------------------------------------------------------------- /data/nomap_pics/Ngr4qcfPcQ8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/data/nomap_pics/Ngr4qcfPcQ8.png -------------------------------------------------------------------------------- /data/nomap_pics/_4yFZdFnEX0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/data/nomap_pics/_4yFZdFnEX0.png -------------------------------------------------------------------------------- /data/nomap_pics/dpF1i76Yoo4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/data/nomap_pics/dpF1i76Yoo4.png -------------------------------------------------------------------------------- /data/nomap_pics/eenUchh9GyE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/data/nomap_pics/eenUchh9GyE.png -------------------------------------------------------------------------------- /dma.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/dma.zip -------------------------------------------------------------------------------- /external.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/external.zip -------------------------------------------------------------------------------- /maps/awp_lego_2/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 1.42, 3 | "offset": { 4 | "x": -1460, 5 | "y": -2150 6 | }, 7 | "splits": [] 8 | } -------------------------------------------------------------------------------- /maps/awp_lego_2/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/awp_lego_2/radar.png -------------------------------------------------------------------------------- /maps/cs_office/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 2.1, 3 | "offset": { 4 | "x": -2400, 5 | "y": -1870 6 | }, 7 | "splits": [] 8 | } 9 | 10 | -------------------------------------------------------------------------------- /maps/cs_office/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/cs_office/radar.png -------------------------------------------------------------------------------- /maps/de_ancient/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 2.2, 3 | "offset": { 4 | "x": -2650, 5 | "y": -2650 6 | }, 7 | "splits": [] 8 | } -------------------------------------------------------------------------------- /maps/de_ancient/overlay_buyzones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_ancient/overlay_buyzones.png -------------------------------------------------------------------------------- /maps/de_ancient/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_ancient/radar.png -------------------------------------------------------------------------------- /maps/de_anubis/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 2.6, 3 | "offset": { 4 | "x": -2004, 5 | "y": -2770 6 | }, 7 | "splits": [], 8 | "zRange": { 9 | "min": -85, 10 | "max": 180 11 | } 12 | } -------------------------------------------------------------------------------- /maps/de_anubis/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_anubis/radar.png -------------------------------------------------------------------------------- /maps/de_assembly/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 1.4, 3 | "offset": { 4 | "x": 1628, 5 | "y": 1655 6 | }, 7 | "splits": [] 8 | } -------------------------------------------------------------------------------- /maps/de_assembly/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_assembly/radar.png -------------------------------------------------------------------------------- /maps/de_dust2/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 2.2, 3 | "offset": { 4 | "x": -1280, 5 | "y": -2500 6 | }, 7 | "splits": [] 8 | } -------------------------------------------------------------------------------- /maps/de_dust2/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_dust2/radar.png -------------------------------------------------------------------------------- /maps/de_inferno/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 2.5, 3 | "offset": { 4 | "x": -1213, 5 | "y": -2170 6 | }, 7 | "splits": [] 8 | } -------------------------------------------------------------------------------- /maps/de_inferno/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_inferno/radar.png -------------------------------------------------------------------------------- /maps/de_mirage/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 2.5, 3 | "offset": { 4 | "x": -3420, 5 | "y": -3263 6 | }, 7 | "splits": [] 8 | } 9 | -------------------------------------------------------------------------------- /maps/de_mirage/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_mirage/radar.png -------------------------------------------------------------------------------- /maps/de_nuke/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 1.764, 3 | "offset": { 4 | "x": -6060, 5 | "y": -3350 6 | }, 7 | "splits": { 8 | "offset": { 9 | "x": -2710, 10 | "y": -3350 11 | }, 12 | 13 | "zRange": { 14 | "z": -500 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /maps/de_nuke/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_nuke/radar.png -------------------------------------------------------------------------------- /maps/de_overpass/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 2.6, 3 | "offset": { 4 | "x": -3550, 5 | "y": -4840 6 | }, 7 | "splits": [] 8 | } 9 | -------------------------------------------------------------------------------- /maps/de_overpass/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_overpass/radar.png -------------------------------------------------------------------------------- /maps/de_vertigo/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 2.55, 3 | "offset": { 4 | "x": -3925, 5 | "y": -4010 6 | }, 7 | "splits": { 8 | "offset": { 9 | "x": -1675, 10 | "y": -3960 11 | }, 12 | 13 | "zRange": { 14 | "z": 11700 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /maps/de_vertigo/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/de_vertigo/radar.png -------------------------------------------------------------------------------- /maps/empty/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/maps/empty/1.png -------------------------------------------------------------------------------- /maps/empty/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "scale": 2.6, 3 | "offset": { 4 | "x": 4831, 5 | "y": -1760 6 | }, 7 | "splits": [] 8 | } -------------------------------------------------------------------------------- /offsets.json: -------------------------------------------------------------------------------- 1 | { 2 | "client.dll": { 3 | "dwCSGOInput": 27426576, 4 | "dwEntityList": 26992216, 5 | "dwGameEntitySystem": 28167336, 6 | "dwGameEntitySystem_highestEntityIndex": 5392, 7 | "dwGameRules": 27375432, 8 | "dwGlobalVars": 25261624, 9 | "dwGlowManager": 27373104, 10 | "dwLocalPlayerController": 27318920, 11 | "dwLocalPlayerPawn": 25311752, 12 | "dwPlantedC4": 27415176, 13 | "dwPrediction": 25311424, 14 | "dwSensitivity": 27378712, 15 | "dwSensitivity_sensitivity": 64, 16 | "dwViewAngles": 27448104, 17 | "dwViewMatrix": 27393456, 18 | "dwViewRender": 27395400, 19 | "dwWeaponC4": 27007520 20 | }, 21 | "engine2.dll": { 22 | "dwBuildNumber": 5437492, 23 | "dwNetworkGameClient": 5434272, 24 | "dwNetworkGameClient_clientTickCount": 376, 25 | "dwNetworkGameClient_deltaTick": 632, 26 | "dwNetworkGameClient_isBackgroundMap": 2626679, 27 | "dwNetworkGameClient_localPlayer": 240, 28 | "dwNetworkGameClient_maxClients": 624, 29 | "dwNetworkGameClient_serverTickCount": 372, 30 | "dwNetworkGameClient_signOnState": 608, 31 | "dwWindowHeight": 6226980, 32 | "dwWindowWidth": 6226976 33 | }, 34 | "inputsystem.dll": { 35 | "dwInputSystem": 231408 36 | }, 37 | "matchmaking.dll": { 38 | "dwGameTypes": 1720768, 39 | "dwGameTypes_mapName": 1721056 40 | }, 41 | "soundsystem.dll": { 42 | "dwSoundSystem": 3362368, 43 | "dwSoundSystem_engineViewData": 124 44 | } 45 | } -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | memprocfs 2 | numpy 3 | requests -------------------------------------------------------------------------------- /testing/BombIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/testing/BombIcon.png -------------------------------------------------------------------------------- /testing/bomb.py: -------------------------------------------------------------------------------- 1 | import memprocfs 2 | import struct 3 | import time 4 | import pygame 5 | import pygame_gui 6 | import json 7 | import math 8 | import numpy as np 9 | import os 10 | import re 11 | from requests import get 12 | 13 | ####################################### 14 | 15 | offsets = get('https://raw.githubusercontent.com/a2x/cs2-dumper/main/generated/offsets.json').json() 16 | clientdll = get('https://raw.githubusercontent.com/a2x/cs2-dumper/main/generated/client.dll.json').json() 17 | 18 | ####################################### 19 | 20 | maps_with_split = ['de_nuke','de_vertigo'] 21 | dwEntityList = offsets['client_dll']['data']['dwEntityList']['value'] 22 | dwLocalPlayerPawn = offsets['client_dll']['data']['dwLocalPlayerPawn']['value'] 23 | m_iPawnHealth = clientdll['CCSPlayerController']['data']['m_iPawnHealth']['value'] 24 | m_iPawnArmor = clientdll['CCSPlayerController']['data']['m_iPawnArmor']['value'] 25 | m_bPawnIsAlive = clientdll['CCSPlayerController']['data']['m_bPawnIsAlive']['value'] 26 | m_angEyeAngles = clientdll['C_CSPlayerPawnBase']['data']['m_angEyeAngles']['value'] 27 | m_iTeamNum = clientdll['C_BaseEntity']['data']['m_iTeamNum']['value'] 28 | m_hPlayerPawn = clientdll['CCSPlayerController']['data']['m_hPlayerPawn']['value'] 29 | m_vOldOrigin = clientdll['C_BasePlayerPawn']['data']['m_vOldOrigin']['value'] 30 | m_iIDEntIndex = clientdll['C_CSPlayerPawnBase']['data']['m_iIDEntIndex']['value'] 31 | m_iHealth = clientdll['C_BaseEntity']['data']['m_iHealth']['value'] 32 | mapNameVal = offsets['matchmaking_dll']['data']['dwGameTypes_mapName']['value'] 33 | m_flFlashBangTime = clientdll['C_CSPlayerPawnBase']['data']['m_flFlashBangTime']['value'] 34 | m_flFlashDuration = clientdll['C_CSPlayerPawnBase']['data']['m_flFlashDuration']['value'] 35 | m_flFlashOverlayAlpha = clientdll['C_CSPlayerPawnBase']['data']['m_flFlashOverlayAlpha']['value'] 36 | dwPlantedC4 = offsets['client_dll']['data']['dwPlantedC4']['value'] 37 | m_pGameSceneNode = clientdll['C_BaseEntity']['data']['m_pGameSceneNode']['value'] 38 | m_vecAbsOrigin = clientdll['CGameSceneNode']['data']['m_vecAbsOrigin']['value'] 39 | 40 | offset = int(input()) 41 | 42 | print('[+] offsets parsed') 43 | 44 | 45 | vmm = memprocfs.Vmm(['-device', 'fpga']) 46 | 47 | 48 | cs2 = vmm.process('cs2.exe') 49 | 50 | 51 | client = cs2.module('client.dll') 52 | client_base = client.base 53 | print(f"[+] Client_base {client_base}") 54 | 55 | 56 | c4_ent = struct.unpack("> 9), 8, memprocfs.FLAG_NOCACHE))[0] 134 | Pawn = struct.unpack("> 9) + 0x10), 8, memprocfs.FLAG_NOCACHE))[0] 116 | try: 117 | entity = struct.unpack("> 9) + 0x10), 8, memprocfs.FLAG_NOCACHE))[0] 219 | entity = struct.unpack(" 0 and team == 2: 225 | transformed_x, transformed_y = world_to_minimap(pX, pY, x, y, scale, radar_image, screen, zoom_scale) 226 | pygame.draw.circle(screen, (255, 0, 0), (transformed_x, transformed_y), 5) 227 | if Hp > 0 and team == 3: 228 | transformed_x, transformed_y = world_to_minimap(pX, pY, x, y, scale, radar_image, screen, zoom_scale) 229 | pygame.draw.circle(screen, (0, 0, 255), (transformed_x, transformed_y), 5) 230 | text_surface = font.render(f'{Hp}', True, (255, 255, 255)) 231 | print(f'{transformed_x}, {transformed_y}') 232 | screen.blit(text_surface, (transformed_x, transformed_y)) 233 | 234 | manager.draw_ui(screen) 235 | 236 | pygame.display.flip() 237 | 238 | pygame.quit() 239 | -------------------------------------------------------------------------------- /testing/preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mujarino/CS2_DMA_Radar/1992f17f8520d3e1664894eda9cf84889aff2ce0/testing/preview.gif -------------------------------------------------------------------------------- /testing/test.py: -------------------------------------------------------------------------------- 1 | import memprocfs 2 | import struct 3 | import time 4 | import pygame 5 | import pygame_gui 6 | import json 7 | import math 8 | import numpy as np 9 | import os 10 | import re 11 | from requests import get 12 | 13 | try: 14 | offsets = get('https://raw.githubusercontent.com/a2x/cs2-dumper/main/output/win/offsets.json').json() 15 | clientdll = get('https://raw.githubusercontent.com/a2x/cs2-dumper/main/output/win/client.dll.json').json() 16 | except Exception as e: 17 | print(e) 18 | try: 19 | print('[-]Unable to parse offsets. Using from current folder') 20 | with open(f'client.dll.json', 'r') as a: 21 | clientdll = json.load(a) 22 | with open(f'offsets.json', 'r') as b: 23 | offsets = json.load(b) 24 | except: 25 | print('[-] put offsets.json and client.dll.json in main folder') 26 | exit() 27 | 28 | 29 | ####################################### 30 | 31 | maps_with_split = ['de_nuke','de_vertigo'] 32 | 33 | dwEntityList = offsets['client.dll']['dwEntityList'] 34 | mapNameVal = offsets['matchmaking.dll']['dwGameTypes_mapName'] 35 | dwLocalPlayerPawn = offsets['client.dll']['dwLocalPlayerPawn'] 36 | 37 | m_iPawnHealth = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_iPawnHealth'] 38 | m_iPawnArmor = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_iPawnArmor'] 39 | m_bPawnIsAlive = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_bPawnIsAlive'] 40 | m_angEyeAngles = clientdll['client.dll']['classes']['C_CSPlayerPawnBase']['fields']['m_angEyeAngles'] 41 | m_iTeamNum = clientdll['client.dll']['classes']['C_BaseEntity']['fields']['m_iTeamNum'] 42 | m_hPlayerPawn = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_hPlayerPawn'] 43 | m_vOldOrigin = clientdll['client.dll']['classes']['C_BasePlayerPawn']['fields']['m_vOldOrigin'] 44 | m_iIDEntIndex = clientdll['client.dll']['classes']['C_CSPlayerPawnBase']['fields']['m_iIDEntIndex'] 45 | m_iHealth = clientdll['client.dll']['classes']['C_BaseEntity']['fields']['m_iHealth'] 46 | m_bIsDefusing = clientdll['client.dll']['classes']['C_CSPlayerPawnBase']['fields']['m_bIsDefusing'] 47 | m_bPawnHasDefuser = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_bPawnHasDefuser'] 48 | m_iCompTeammateColor = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_iCompTeammateColor'] 49 | m_flFlashOverlayAlpha = clientdll['client.dll']['classes']['C_CSPlayerPawnBase']['fields']['m_flFlashOverlayAlpha'] 50 | m_iszPlayerName = clientdll['client.dll']['classes']['CBasePlayerController']['fields']['m_iszPlayerName'] 51 | m_pClippingWeapon = clientdll['client.dll']['classes']['C_CSPlayerPawnBase']['fields']['m_pClippingWeapon'] 52 | m_iRoundTime = clientdll['client.dll']['classes']['C_CSGameRules']['fields']['m_iRoundTime'] 53 | m_pInGameMoneyServices = clientdll['client.dll']['classes']['CCSPlayerController']['fields']['m_pInGameMoneyServices'] 54 | m_iAccount = clientdll['client.dll']['classes']['CCSPlayerController_InGameMoneyServices']['fields']['m_iAccount'] 55 | print('[+] offsets parsed') 56 | 57 | 58 | def read_string_memory(address): 59 | data = b"" 60 | try: 61 | while True: 62 | byte = cs2.memory.read(address, 1) 63 | if byte == b'\0': 64 | break 65 | data += byte 66 | address += 1 67 | decoded_data = data.decode('utf-8') 68 | return decoded_data 69 | except UnicodeDecodeError: 70 | return data 71 | 72 | def get_weapon(ptr): 73 | b1 = struct.unpack("> 9), 8, memprocfs.FLAG_NOCACHE))[0] 94 | entity_id = struct.unpack("