diff --git a/utils/Offsets.py b/utils/Offsets.py new file mode 100644 index 0000000..eb0bec5 --- /dev/null +++ b/utils/Offsets.py @@ -0,0 +1,158 @@ +import requests, json, sys + +n = open("classes/netvars.json", "r") + +response = json.load(n) + +m_totalHitsOnServer = int(response["DT_CSPlayer"]["m_totalHitsOnServer"]) +m_iViewModelIndex = int(response["DT_BaseCombatWeapon"]["m_iViewModelIndex"]) +m_nModelIndex = int(response["DT_BaseViewModel"]["m_nModelIndex"]) +m_hViewModel = int(response["DT_BasePlayer"]["m_hViewModel[0]"]) + +url = 'https://raw.githubusercontent.com/frk1/hazedumper/master/csgo.json' +response = requests.get(url).json() + +cs_gamerules_data = int(response["netvars"]["cs_gamerules_data"]) + +m_ArmorValue = int(response["netvars"]["m_ArmorValue"]) +m_Collision = int(response["netvars"]["m_Collision"]) +m_CollisionGroup = int(response["netvars"]["m_CollisionGroup"]) +m_Local = int(response["netvars"]["m_Local"]) +m_MoveType = int(response["netvars"]["m_MoveType"]) +m_OriginalOwnerXuidHigh = int(response["netvars"]["m_OriginalOwnerXuidHigh"]) +m_OriginalOwnerXuidLow = int(response["netvars"]["m_OriginalOwnerXuidLow"]) +m_SurvivalGameRuleDecisionTypes = int(response["netvars"]["m_SurvivalGameRuleDecisionTypes"]) +m_SurvivalRules = int(response["netvars"]["m_SurvivalRules"]) +m_aimPunchAngleVel = int(response["netvars"]["m_aimPunchAngleVel"]) +m_aimPunchAngle = int(response["netvars"]["m_aimPunchAngle"]) +m_angEyeAnglesX = int(response["netvars"]["m_angEyeAnglesX"]) +m_angEyeAnglesY = int(response["netvars"]["m_angEyeAnglesY"]) +m_bBombPlanted = int(response["netvars"]["m_bBombPlanted"]) +m_bFreezePeriod = int(response["netvars"]["m_bFreezePeriod"]) +m_bGunGameImmunity = int(response["netvars"]["m_bGunGameImmunity"]) +m_bHasDefuser = int(response["netvars"]["m_bHasDefuser"]) +m_bHasHelmet = int(response["netvars"]["m_bHasHelmet"]) +m_bInReload = int(response["netvars"]["m_bInReload"]) +m_bIsDefusing = int(response["netvars"]["m_bIsDefusing"]) +m_bIsQueuedMatchmaking = int(response["netvars"]["m_bIsQueuedMatchmaking"]) +m_bIsScoped = int(response["netvars"]["m_bIsScoped"]) +m_bIsValveDS = int(response["netvars"]["m_bIsValveDS"]) +m_bSpotted = int(response["netvars"]["m_bSpotted"]) +m_bSpottedByMask = int(response["netvars"]["m_bSpottedByMask"]) +m_bStartedArming = int(response["netvars"]["m_bStartedArming"]) +m_bUseCustomAutoExposureMax = int(response["netvars"]["m_bUseCustomAutoExposureMax"]) +m_bUseCustomAutoExposureMin = int(response["netvars"]["m_bUseCustomAutoExposureMin"]) +m_bUseCustomBloomScale = int(response["netvars"]["m_bUseCustomBloomScale"]) +m_clrRender = int(response["netvars"]["m_clrRender"]) +m_dwBoneMatrix = int(response["netvars"]["m_dwBoneMatrix"]) +m_fAccuracyPenalty = int(response["netvars"]["m_fAccuracyPenalty"]) +m_fFlags = int(response["netvars"]["m_fFlags"]) +m_flC4Blow = int(response["netvars"]["m_flC4Blow"]) +m_flCustomAutoExposureMax = int(response["netvars"]["m_flCustomAutoExposureMax"]) +m_flCustomAutoExposureMin = int(response["netvars"]["m_flCustomAutoExposureMin"]) +m_flCustomBloomScale = int(response["netvars"]["m_flCustomBloomScale"]) +m_flDefuseCountDown = int(response["netvars"]["m_flDefuseCountDown"]) +m_flDefuseLength = int(response["netvars"]["m_flDefuseLength"]) +m_flFallbackWear = int(response["netvars"]["m_flFallbackWear"]) +m_flFlashDuration = int(response["netvars"]["m_flFlashDuration"]) +m_flFlashMaxAlpha = int(response["netvars"]["m_flFlashMaxAlpha"]) +m_flLastBoneSetupTime = int(response["netvars"]["m_flLastBoneSetupTime"]) +m_flLowerBodyYawTarget = int(response["netvars"]["m_flLowerBodyYawTarget"]) +m_flNextAttack = int(response["netvars"]["m_flNextAttack"]) +m_flNextPrimaryAttack = int(response["netvars"]["m_flNextPrimaryAttack"]) +m_flSimulationTime = int(response["netvars"]["m_flSimulationTime"]) +m_flTimerLength = int(response["netvars"]["m_flTimerLength"]) +m_hActiveWeapon = int(response["netvars"]["m_hActiveWeapon"]) +m_hMyWeapons = int(response["netvars"]["m_hMyWeapons"]) +m_hObserverTarget = int(response["netvars"]["m_hObserverTarget"]) +m_hOwner = int(response["netvars"]["m_hOwner"]) +m_hOwnerEntity = int(response["netvars"]["m_hOwnerEntity"]) +m_iAccountID = int(response["netvars"]["m_iAccountID"]) +m_iClip1 = int(response["netvars"]["m_iClip1"]) +m_iCompetitiveRanking = int(response["netvars"]["m_iCompetitiveRanking"]) +m_iCompetitiveWins = int(response["netvars"]["m_iCompetitiveWins"]) +m_iCrosshairId = int(response["netvars"]["m_iCrosshairId"]) +m_iEntityQuality = int(response["netvars"]["m_iEntityQuality"]) +m_iFOV = int(response["netvars"]["m_iDefaultFOV"]) +m_iFOVStart = int(response["netvars"]["m_iFOVStart"]) +m_iGlowIndex = int(response["netvars"]["m_iGlowIndex"]) +m_iHealth = int(response["netvars"]["m_iHealth"]) +m_iItemDefinitionIndex = int(response["netvars"]["m_iItemDefinitionIndex"]) +m_iItemIDHigh = int(response["netvars"]["m_iItemIDHigh"]) +m_iMostRecentModelBoneCounter = int(response["netvars"]["m_iMostRecentModelBoneCounter"]) +m_iObserverMode = int(response["netvars"]["m_iObserverMode"]) +m_iShotsFired = int(response["netvars"]["m_iShotsFired"]) +m_iState = int(response["netvars"]["m_iState"]) +m_iTeamNum = int(response["netvars"]["m_iTeamNum"]) +m_lifeState = int(response["netvars"]["m_lifeState"]) +m_nFallbackPaintKit = int(response["netvars"]["m_nFallbackPaintKit"]) +m_nFallbackSeed = int(response["netvars"]["m_nFallbackSeed"]) +m_nFallbackStatTrak = int(response["netvars"]["m_nFallbackStatTrak"]) +m_nForceBone = int(response["netvars"]["m_nForceBone"]) +m_nTickBase = int(response["netvars"]["m_nTickBase"]) +m_rgflCoordinateFrame = int(response["netvars"]["m_rgflCoordinateFrame"]) +m_szCustomName = int(response["netvars"]["m_szCustomName"]) +m_szLastPlaceName = int(response["netvars"]["m_szLastPlaceName"]) +m_thirdPersonViewAngles = int(response["netvars"]["m_thirdPersonViewAngles"]) +m_vecOrigin = int(response["netvars"]["m_vecOrigin"]) +m_vecVelocity = int(response["netvars"]["m_vecVelocity"]) +m_vecViewOffset = int(response["netvars"]["m_vecViewOffset"]) +m_viewPunchAngle = int(response["netvars"]["m_viewPunchAngle"]) + +anim_overlays = int(response["signatures"]["anim_overlays"]) +clientstate_choked_commands = int(response["signatures"]["clientstate_choked_commands"]) +clientstate_delta_ticks = int(response["signatures"]["clientstate_delta_ticks"]) +clientstate_last_outgoing_command = int(response["signatures"]["clientstate_last_outgoing_command"]) +clientstate_net_channel = int(response["signatures"]["clientstate_net_channel"]) +convar_name_hash_table = int(response["signatures"]["convar_name_hash_table"]) +dwLocalPlayer = int(response["signatures"]["dwLocalPlayer"]) +dwClientState = int(response["signatures"]["dwClientState"]) +dwClientState_GetLocalPlayer = int(response["signatures"]["dwClientState_GetLocalPlayer"]) +dwClientState_IsHLTV = int(response["signatures"]["dwClientState_IsHLTV"]) +dwClientState_Map = int(response["signatures"]["dwClientState_Map"]) +dwClientState_MapDirectory = int(response["signatures"]["dwClientState_MapDirectory"]) +dwClientState_MaxPlayer = int(response["signatures"]["dwClientState_MaxPlayer"]) +dwClientState_PlayerInfo = int(response["signatures"]["dwClientState_PlayerInfo"]) +dwClientState_State = int(response["signatures"]["dwClientState_State"]) +dwClientState_ViewAngles = int(response["signatures"]["dwClientState_ViewAngles"]) +dwEntityList = int(response["signatures"]["dwEntityList"]) +dwForceAttack = int(response["signatures"]["dwForceAttack"]) +dwForceAttack2 = int(response["signatures"]["dwForceAttack2"]) +dwForceBackward = int(response["signatures"]["dwForceBackward"]) +dwForceForward = int(response["signatures"]["dwForceForward"]) +dwForceJump = int(response["signatures"]["dwForceJump"]) +dwForceLeft = int(response["signatures"]["dwForceLeft"]) +dwForceRight = int(response["signatures"]["dwForceRight"]) +dwGameDir = int(response["signatures"]["dwGameDir"]) +dwGameRulesProxy = int(response["signatures"]["dwGameRulesProxy"]) +dwGetAllClasses = int(response["signatures"]["dwGetAllClasses"]) +dwGlobalVars = int(response["signatures"]["dwGlobalVars"]) +dwGlowObjectManager = int(response["signatures"]["dwGlowObjectManager"]) +dwInput = int(response["signatures"]["dwInput"]) +dwInterfaceLinkList = int(response["signatures"]["dwInterfaceLinkList"]) +dwMouseEnable = int(response["signatures"]["dwMouseEnable"]) +dwMouseEnablePtr = int(response["signatures"]["dwMouseEnablePtr"]) +dwPlayerResource = int(response["signatures"]["dwPlayerResource"]) +dwSensitivity = int(response["signatures"]["dwSensitivity"]) +dwSensitivityPtr = int(response["signatures"]["dwSensitivityPtr"]) +dwRadarBase = int(response["signatures"]["dwRadarBase"]) +dwSetClanTag = int(response["signatures"]["dwSetClanTag"]) +dwViewMatrix = int(response["signatures"]["dwViewMatrix"]) +dwWeaponTable = int(response["signatures"]["dwWeaponTable"]) +dwWeaponTableIndex = int(response["signatures"]["dwWeaponTableIndex"]) +dwYawPtr = int(response["signatures"]["dwYawPtr"]) +dwZoomSensitivityRatioPtr = int(response["signatures"]["dwZoomSensitivityRatioPtr"]) +dwbSendPackets = int(response["signatures"]["dwbSendPackets"]) +dwppDirect3DDevice9 = int(response["signatures"]["dwppDirect3DDevice9"]) +find_hud_element = int(response["signatures"]["find_hud_element"]) +force_update_spectator_glow = int(response["signatures"]["force_update_spectator_glow"]) +interface_engine_cvar = int(response["signatures"]["interface_engine_cvar"]) +is_c4_owner = int(response["signatures"]["is_c4_owner"]) +m_bDormant = int(response["signatures"]["m_bDormant"]) +m_flSpawnTime = int(response["signatures"]["m_flSpawnTime"]) +m_pStudioHdr = int(response["signatures"]["m_pStudioHdr"]) +m_pitchClassPtr = int(response["signatures"]["m_pitchClassPtr"]) +m_yawClassPtr = int(response["signatures"]["m_yawClassPtr"]) +model_ambient_min = int(response["signatures"]["model_ambient_min"]) +set_abs_angles = int(response["signatures"]["set_abs_angles"]) +set_abs_origin = int(response["signatures"]["set_abs_origin"]) \ No newline at end of file diff --git a/utils/knifechanger.py b/utils/knifechanger.py new file mode 100644 index 0000000..25f8c24 --- /dev/null +++ b/utils/knifechanger.py @@ -0,0 +1,182 @@ +import pymem +import ctypes, sys, os +from itertools import repeat +from Offsets import * +from configparser import ConfigParser +sys.path.insert(1, "classes/") +from skin_id_dumper import main as skin_dump + +class knifechanger_func() : + def __init__(self): + self.config_p = ConfigParser() + + try : + pm = pymem.Pymem("csgo.exe") + except : + MessageBox = ctypes.windll.user32.MessageBoxW + MessageBox(None, 'Could not find the csgo.exe process !', 'Error', 16) + return + + client = pymem.process.module_from_name(pm.process_handle, "client.dll").lpBaseOfDll + engine = pymem.process.module_from_name(pm.process_handle, "engine.dll").lpBaseOfDll + engine_state = pm.read_int( engine + dwClientState ) + + skin_dict, skin_list = skin_dump() #using skin_dict only + + knife_ids = { + "Gold knife" : 519, + "Spectral knife" : 604, + "Bayonet" : 612, + "Classic knife" : 615, + "Flip knife" : 618, + "Gut knife" : 621, + "Karambit" : 624, + "M9 Bayonet" : 627, + "Huntsman" : 630, + "Falchion knife" : 633, + "Bowie knife" : 636, + "Butterfly knife" : 639, + "Shadow daggers" : 642, + "Cord knife" : 646, + "Canis knife" : 649, + "Ursus knife" : 652, + "Navaja" : 655, + "Nomad knife" : 658, + "Stiletto knife" : 661, + "Talon knife": 664, + "Skeleton knife" : 667 + } + + knifeDefinitionIndex_dict = { + "Gold knife" : 41, + "Spectral knife" : 505, + "Bayonet" : 500, + "Classic knife" : 503, + "Flip knife" : 505, + "Gut knife" : 506, + "Karambit" : 507, + "M9 Bayonet" : 508, + "Huntsman" : 509, + "Falchion knife" : 512, + "Bowie knife" : 514, + "Butterfly knife" : 515, + "Shadow daggers" : 516, + "Paracord knife" : 517, + "Survival knife" : 518, + "Ursus knife" : 519, + "Navaja" : 520, + "Nomad knife" : 521, + "Stiletto knife" : 522, + "Talon knife": 523, + "Skeleton knife" : 525 + } + + CtKnife = 522 + TKnife = 547 + cachedPlayer = 0 + modelIndex = 0 + entityQuality = 3 + + b = 500 + while 1 : + if b == 500 : + knife_active = config.get_knife(self) + + knifeID, knifeDefinitionIndex, paintKit, fallbackwear, seed = int(knife_ids[knife_active["knife"]]), int(knifeDefinitionIndex_dict[knife_active["knife"]]), int(skin_dict[knife_active["knife_skin"]]), knife_active["knife_f"], knife_active["knife_se"] + + b = 0 + + b = b + 1 + + localPlayer = pm.read_uint(client + dwLocalPlayer) + + if localPlayer == 0: + modelIndex = 0 + continue + + elif localPlayer != cachedPlayer: + modelIndex = 0 + cachedPlayer = localPlayer + + if paintKit > 0 and modelIndex > 0 : + + for i in repeat(0, 8) : + + currentWeapon = pm.read_uint(localPlayer + m_hMyWeapons + i * 0x04) & 0xfff + currentWeapon = pm.read_uint(client + dwEntityList + (currentWeapon - 1) * 0x10) + if currentWeapon == 0:continue + + weaponID = pm.read_short(currentWeapon + m_iItemDefinitionIndex) + + fallbackPaint = paintKit + if weaponID != 42 and weaponID != 59 and weaponID != knifeDefinitionIndex :continue + + else: + + pm.write_short(currentWeapon + m_iItemDefinitionIndex, knifeDefinitionIndex) + pm.write_uint(currentWeapon + m_nModelIndex, modelIndex) + pm.write_uint(currentWeapon + m_iViewModelIndex, modelIndex) + pm.write_int(currentWeapon + m_iEntityQuality, entityQuality) + + pm.write_int(currentWeapon + m_iItemIDHigh, -1) + pm.write_uint(currentWeapon + m_nFallbackPaintKit, fallbackPaint) + pm.write_float(currentWeapon + m_flFallbackWear,fallbackwear) + + if knife_active["knife_st"] : + stattrack_v = knife_active["knife_stv"] + pm.write_int( currentWeapon + m_nFallbackStatTrak, stattrack_v ) + + pm.write_int( currentWeapon + m_nFallbackSeed, seed ) + + + for _ in repeat(None, 100) : + ActiveWeapon = pm.read_int( localPlayer + m_hActiveWeapon) & 0xfff + ActiveWeapon = pm.read_int( client + dwEntityList + (ActiveWeapon - 1) * 0x10 ) + + if ActiveWeapon == 0: + + continue + + weaponID = pm.read_short( ActiveWeapon + m_iItemDefinitionIndex ) + + weaponViewModelId = pm.read_int( ActiveWeapon + m_iViewModelIndex ) + + if weaponID == 42 and weaponViewModelId > 0: + modelIndex = weaponViewModelId + (knifeID - CtKnife) + elif weaponID == 59 and weaponViewModelId > 0: + modelIndex = weaponViewModelId + (knifeID - TKnife) + elif weaponID != knifeDefinitionIndex or modelIndex == 0 : + continue + knifeViewModel = pm.read_uint( localPlayer + m_hViewModel ) & 0xfff + knifeViewModel = pm.read_uint( client + dwEntityList + (knifeViewModel - 1) * 0x10 ) + + if knifeViewModel == 0: continue + pm.write_uint( knifeViewModel + m_nModelIndex, modelIndex) + + +class config() : + def read_last(self) : + while 1 : #If there is an error because we are writing the last config at the same time + try : + with open("configs/last/last.txt", "r") as f : + for line in f : + last = line + + return last + except : + pass + + def get_knife(self) : + self.config_last = config.read_last(self) + self.config_p.read('configs/'+self.config_last) + + active_weapons = { + "knife": self.config_p.get('SKINCHANGER', 'knife'), + "knife_skin": self.config_p.get('SKINCHANGER', 'knife_skin'), + "knife_f": self.config_p.getfloat('SKINCHANGER', 'knife_f'), + "knife_st": self.config_p.getboolean('SKINCHANGER', 'knife_st'), + "knife_stv": self.config_p.getint('SKINCHANGER', 'knife_stv'), + "knife_se": self.config_p.getint('SKINCHANGER', 'knife_se'), + } + + return active_weapons \ No newline at end of file diff --git a/utils/rank_reveal.py b/utils/rank_reveal.py new file mode 100644 index 0000000..c38d05f --- /dev/null +++ b/utils/rank_reveal.py @@ -0,0 +1,83 @@ +import pymem +import pymem.process +import time +import ctypes +from tkinter import * +from Offsets import * + +class rank_reveal() : + def __init__(self): + try : + pm = pymem.Pymem("csgo.exe") + except : + MessageBox = ctypes.windll.user32.MessageBoxW + MessageBox(None, 'Could not find the csgo.exe process !', 'Error', 16) + return + + top = Tk() + w = 320 + h = 300 + ws = top.winfo_screenwidth() + hs = top.winfo_screenheight() + x = (ws/2) - (w/2) + y = (hs/2) - (h/2) + top.geometry('%dx%d+%d+%d' % (w, h, x, y)) + top.title('Rank Reveal') + top.iconbitmap("images/rainbow.ico") + top.config(background='#f0f0f0') + scrollbar = Scrollbar(top) + scrollbar.pack(side=RIGHT, fill=Y) + listbox = Listbox(top) + listbox.pack(expand=1, fill=BOTH) + listbox.config(yscrollcommand=scrollbar.set) + scrollbar.config(command=listbox.yview) + + client = pymem.process.module_from_name(pm.process_handle, "client.dll") + engine = pymem.process.module_from_name(pm.process_handle, "engine.dll") + + ranks = ["Unranked", + "Silver I", + "Silver II", + "Silver III", + "Silver IV", + "Silver Elite", + "Silver Elite Master", + "Gold Nova I", + "Gold Nova II", + "Gold Nova III", + "Gold Nova Master", + "Master Guardian I", + "Master Guardian II", + "Master Guardian Elite", + "Distinguished Master Guardian", + "Legendary Eagle", #15 = (0) + "Legendary Eagle Master", + "Supreme Master First Class", + "The Global Elite"] + + for i in range(0, 32): + entity = pm.read_int(client.lpBaseOfDll + dwEntityList + i * 0x10) + + if entity: + entity_team_id = pm.read_int(entity + m_iTeamNum) + entity_i = pm.read_int(client.lpBaseOfDll + dwLocalPlayer) + if entity_team_id != pm.read_int(entity_i + m_iTeamNum): + player_info = pm.read_int( + (pm.read_int(engine.lpBaseOfDll + dwClientState)) + dwClientState_PlayerInfo) + player_info_items = pm.read_int(pm.read_int(player_info + 0x40) + 0xC) + info = pm.read_int(player_info_items + 0x28 + (i * 0x34)) + playerres = pm.read_int(client.lpBaseOfDll + dwPlayerResource) + rank = pm.read_int(playerres + m_iCompetitiveRanking + i * 4) + + if pm.read_string(info + 0x10) != 'GOTV': + + try : + listbox.insert(END, pm.read_string(info + 0x10) + " --> " + ranks[rank] + " " + str(rank)) + except : + try : + listbox.insert(END, pm.read_string(info + 0x10).encode('iso-8859-1').decode() + " --> " + ranks[rank] + " " + str(rank)) + except : + listbox.insert(END, "? --> " + ranks[rank] + " " + str(rank)) + + top.mainloop() + pm.close_process() \ No newline at end of file diff --git a/utils/skinchanger.py b/utils/skinchanger.py new file mode 100644 index 0000000..7c48058 --- /dev/null +++ b/utils/skinchanger.py @@ -0,0 +1,161 @@ +import ctypes, sys, os +import pymem +import requests +import keyboard +from itertools import repeat +from Offsets import * +from configparser import ConfigParser +sys.path.insert(1, "classes/") +from skin_id_dumper import main as skin_dump + +class skinchanger_func() : + + def __init__(self): + try : + pm = pymem.Pymem("csgo.exe") + except : + MessageBox = ctypes.windll.user32.MessageBoxW + MessageBox(None, 'Could not find the csgo.exe process !', 'Error', 16) + return + + client = pymem.process.module_from_name(pm.process_handle, "client.dll").lpBaseOfDll + engine = pymem.process.module_from_name(pm.process_handle, "engine.dll").lpBaseOfDll + + engine_state = pm.read_int( engine + dwClientState ) + + skin_dict, skin_list = skin_dump() #using skin_dict only + + weapons_id = { + "AK47": 7, + "AUG": 8, + "FAMAS": 10, + "Galil_AR": 13, + "M4A1S": 60, + "M4A4": 16, + "SG_553": 39, + "AWP": 9, + "SSG_08": 40, + "G3SG1": 11, + "SCAR20": 38, + "MAC10": 17, + "MP7": 33, + "MP9": 34, + "PPBizon": 36, + "P90": 19, + "UMP45": 24, + "MP5SD": 23, + "MAG7": 27, + "Nova": 35, + "SawedOff": 29, + "XM1014": 25, + "Negev": 28, + "M249": 14, + "USPS": 61, + "Desert_Eagle": 1, + "Glock18": 4, + "FiveSeven": 3, + "P250": 36, + "Tec9": 30, + "P2000": 32, + "R8_Revolver": 64, + "CZ75Auto": 63, + "Dual_Berettas": 2 + } + + self.config_p = ConfigParser() + + while 1 : + self.config_last = config.read_last(self) + + self.config_p.read('configs/'+self.config_last) + + active_weapons = config.active_weapons(self) + + for weapon, skin in active_weapons.items() : + fallbackpaint, seed, float_v, stattrack_y = int(skin_dict[skin]), self.config_p.getint('SKINCHANGER', weapon+"_se"), self.config_p.getfloat('SKINCHANGER', weapon+"_f"), self.config_p.getboolean('SKINCHANGER', weapon+"_st") + + local_player = pm.read_int( client + dwLocalPlayer ) + for _ in repeat(0,2000) : + for i in range(0, 8) : + my_weapons = pm.read_int( local_player + m_hMyWeapons + (i - 1) * 0x4 ) & 0xFFF + weapon_address = pm.read_int( client + dwEntityList + (my_weapons - 1) * 0x10 ) + if weapon_address: + weapon_id_2 = pm.read_short(weapon_address + m_iItemDefinitionIndex) + if weapon_id_2 == weapons_id[weapon] : + weapon_owner = pm.read_int(weapon_address + m_OriginalOwnerXuidLow) + pm.write_int( weapon_address + m_iItemIDHigh, -1 ) + pm.write_int( weapon_address + m_nFallbackPaintKit, fallbackpaint ) + pm.write_int( weapon_address + m_iAccountID, weapon_owner ) + + if stattrack_y : + stattrack_v = self.config_p.getint('SKINCHANGER', weapon+"_stv") + pm.write_int( weapon_address + m_nFallbackStatTrak, stattrack_v ) + + pm.write_int( weapon_address + m_nFallbackSeed, seed ) + pm.write_float( weapon_address + m_flFallbackWear, float_v) + + if keyboard.is_pressed( "f6" ): + pm.write_int( engine_state + 0x174, -1 ) + +class config() : + def read_last(self) : + while True : #If there is an error because we are writing the last config at the same time + try : + with open("configs/last/last.txt", "r") as f : + for line in f : + last = line + + return last + except : + pass + + def read_active_weapons(self) : + + all_weapons = { + "AK47": self.config_p.get('SKINCHANGER', 'AK47'), + "AUG": self.config_p.get('SKINCHANGER', 'AUG'), + "AWP": self.config_p.get('SKINCHANGER', 'AWP'), + "CZ75Auto": self.config_p.get('SKINCHANGER', 'CZ75Auto'), + "Desert_Eagle": self.config_p.get('SKINCHANGER', 'Desert_Eagle'), + "Dual_Berettas": self.config_p.get('SKINCHANGER', 'Dual_Berettas'), + "FAMAS": self.config_p.get('SKINCHANGER', 'FAMAS'), + "FiveSeven": self.config_p.get('SKINCHANGER', 'FiveSeven'), + "G3SG1": self.config_p.get('SKINCHANGER', 'G3SG1'), + "Galil_AR": self.config_p.get('SKINCHANGER', 'Galil_AR'), + "Glock18": self.config_p.get('SKINCHANGER', 'Glock18'), + "M249": self.config_p.get('SKINCHANGER', 'M249'), + "M4A1S": self.config_p.get('SKINCHANGER', 'M4A1S'), + "M4A4": self.config_p.get('SKINCHANGER', 'M4A4'), + "MAC10": self.config_p.get('SKINCHANGER', 'MAC10'), + "MAG7": self.config_p.get('SKINCHANGER', 'MAG7'), + "MP5SD": self.config_p.get('SKINCHANGER', 'MP5SD'), + "MP7": self.config_p.get('SKINCHANGER', 'MP7'), + "MP9": self.config_p.get('SKINCHANGER', 'MP9'), + "Negev": self.config_p.get('SKINCHANGER', 'Negev'), + "Nova": self.config_p.get('SKINCHANGER', 'Nova'), + "P2000": self.config_p.get('SKINCHANGER', 'P2000'), + "P250": self.config_p.get('SKINCHANGER', 'P250'), + "P90": self.config_p.get('SKINCHANGER', 'P90'), + "PPBizon": self.config_p.get('SKINCHANGER', 'PPBizon'), + "R8_Revolver": self.config_p.get('SKINCHANGER', 'R8_Revolver'), + "SCAR20": self.config_p.get('SKINCHANGER', 'SCAR20'), + "SG_553": self.config_p.get('SKINCHANGER', 'SG_553'), + "SSG_08": self.config_p.get('SKINCHANGER', 'SSG_08'), + "SawedOff": self.config_p.get('SKINCHANGER', 'SawedOff'), + "Tec9": self.config_p.get('SKINCHANGER', 'Tec9'), + "UMP45": self.config_p.get('SKINCHANGER', 'UMP45'), + "USPS": self.config_p.get('SKINCHANGER', 'USPS'), + "XM1014": self.config_p.get('SKINCHANGER', 'XM1014'), + } + + return all_weapons + + def active_weapons(self) : + all_weapons = config.read_active_weapons(self) + + active_weapons = {} + for weapon, value in all_weapons.items(): + if value != "0" : + active_weapons[weapon] = value + + return active_weapons \ No newline at end of file