Added kinfechanger, better Offsets/rank reveal/skinchanger
Modified the Offsets to work with the knifechanger The rank reveal won't crash anymore (but still not rlly working) The skinchanger is a bit more optimized
This commit is contained in:
158
utils/Offsets.py
Normal file
158
utils/Offsets.py
Normal file
@@ -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"])
|
||||||
182
utils/knifechanger.py
Normal file
182
utils/knifechanger.py
Normal file
@@ -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
|
||||||
83
utils/rank_reveal.py
Normal file
83
utils/rank_reveal.py
Normal file
@@ -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()
|
||||||
161
utils/skinchanger.py
Normal file
161
utils/skinchanger.py
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user