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:
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
|
||||
Reference in New Issue
Block a user