Add files via upload
This commit is contained in:
207
utils/silent.py
Normal file
207
utils/silent.py
Normal file
@@ -0,0 +1,207 @@
|
||||
import pymem
|
||||
import pymem.process
|
||||
import time
|
||||
import ctypes, sys
|
||||
from Offsets import *
|
||||
sys.path.insert(1, "classes/")
|
||||
from features_reads import read
|
||||
from math import *
|
||||
import features_check
|
||||
import keyboard
|
||||
import win32api
|
||||
|
||||
class silent() :
|
||||
def __init__(self):
|
||||
try :
|
||||
self.pm = pymem.Pymem("csgo.exe")
|
||||
except :
|
||||
MessageBox = ctypes.windll.user32.MessageBoxW
|
||||
MessageBox(None, 'Could not find the csgo.exe process !', 'Error', 16)
|
||||
return
|
||||
|
||||
self.client = pymem.process.module_from_name(self.pm.process_handle, "client.dll").lpBaseOfDll
|
||||
self.engine = pymem.process.module_from_name(self.pm.process_handle, "engine.dll").lpBaseOfDll
|
||||
self.engine_pointer = self.pm.read_int(self.engine + dwClientState)
|
||||
|
||||
read("aim")
|
||||
|
||||
while features_check.check.silent_aim :
|
||||
|
||||
read("aim")
|
||||
key = self.get_key()
|
||||
|
||||
while key :
|
||||
|
||||
try :
|
||||
key = self.get_key()
|
||||
|
||||
target = None
|
||||
olddistx = 111111111111
|
||||
olddisty = 111111111111
|
||||
|
||||
if self.client and self.engine and self.pm:
|
||||
try:
|
||||
player = self.pm.read_int(self.client + dwLocalPlayer)
|
||||
localTeam = self.pm.read_int(player + m_iTeamNum)
|
||||
except :
|
||||
continue
|
||||
|
||||
for i in range(1,32):
|
||||
key = self.get_key()
|
||||
|
||||
entity = self.pm.read_int(self.client + dwEntityList + i * 0x10)
|
||||
|
||||
if entity:
|
||||
try:
|
||||
entity_team_id = self.pm.read_int(entity + m_iTeamNum)
|
||||
entity_hp = self.pm.read_int(entity + m_iHealth)
|
||||
entity_dormant = self.pm.read_int(entity + m_bDormant)
|
||||
except :
|
||||
continue
|
||||
|
||||
if localTeam != entity_team_id and entity_hp > 0:
|
||||
entity_bones = self.pm.read_int(entity + m_dwBoneMatrix)
|
||||
localpos_x_angles = self.pm.read_float(self.engine_pointer + dwClientState_ViewAngles)
|
||||
localpos_y_angles = self.pm.read_float(self.engine_pointer + dwClientState_ViewAngles + 0x4)
|
||||
localpos1 = self.pm.read_float(player + m_vecOrigin)
|
||||
localpos2 = self.pm.read_float(player + m_vecOrigin + 4)
|
||||
localpos_z_angles = self.pm.read_float(player + m_vecViewOffset + 0x8)
|
||||
localpos3 = self.pm.read_float(player + m_vecOrigin + 8) + localpos_z_angles
|
||||
try:
|
||||
entitypos_x = self.pm.read_float(entity_bones + 0x30 * 8 + 0xC)
|
||||
entitypos_y = self.pm.read_float(entity_bones + 0x30 * 8 + 0x1C)
|
||||
entitypos_z = self.pm.read_float(entity_bones + 0x30 * 8 + 0x2C)
|
||||
except:
|
||||
continue
|
||||
try :
|
||||
X, Y = self.calcangle(localpos1, localpos2, localpos3, entitypos_x, entitypos_y, entitypos_z)
|
||||
except :
|
||||
pass
|
||||
newdist_x, newdist_y = self.calc_distance(localpos_x_angles, localpos_y_angles, X, Y)
|
||||
if newdist_x < olddistx and newdist_y < olddisty and newdist_x <= 90 and newdist_y <= 90:
|
||||
olddistx, olddisty = newdist_x, newdist_y
|
||||
target, target_hp, target_dormant = entity, entity_hp, entity_dormant
|
||||
target_x, target_y, target_z = entitypos_x, entitypos_y, entitypos_z
|
||||
if key and player:
|
||||
if target and target_hp > 0 and not target_dormant:
|
||||
x, y = self.calcangle(localpos1, localpos2, localpos3, target_x, target_y, target_z)
|
||||
normalize_x, normalize_y = self.normalizeAngles(x, y)
|
||||
|
||||
if key :
|
||||
#print(dwbSendPackets) #1993604684 #880218
|
||||
self.pm.write_uchar(self.engine + dwbSendPackets, 0)
|
||||
Commands = self.pm.read_int(self.client + dwInput + 0xF4)
|
||||
VerifedCommands = self.pm.read_int(self.client + dwInput + 0xF8)
|
||||
Desired = self.pm.read_int(self.engine_pointer + clientstate_last_outgoing_command) + 2
|
||||
OldUser = Commands + ((Desired - 1) % 150) * 100
|
||||
VerifedOldUser = VerifedCommands + ((Desired - 1) % 150) * 0x68
|
||||
m_buttons = self.pm.read_int(OldUser + 0x30)
|
||||
Net_Channel = self.pm.read_uint(self.engine_pointer + clientstate_net_channel)
|
||||
if self.pm.read_int(Net_Channel + 0x18) >= Desired:
|
||||
self.pm.write_float(OldUser + 0x0C, normalize_x)
|
||||
self.pm.write_float(OldUser + 0x10, normalize_y)
|
||||
self.pm.write_int(OldUser + 0x30, m_buttons | (1 << 0))
|
||||
self.pm.write_float(VerifedOldUser + 0x0C, normalize_x)
|
||||
self.pm.write_float(VerifedOldUser + 0x10, normalize_y)
|
||||
self.pm.write_int(VerifedOldUser + 0x30, m_buttons | (1 << 0))
|
||||
self.pm.write_uchar(self.engine + dwbSendPackets, 1)
|
||||
else :
|
||||
self.pm.write_uchar(self.engine + dwbSendPackets, 1)
|
||||
else:
|
||||
self.pm.write_float(self.engine_pointer + dwClientState_ViewAngles, normalize_x)
|
||||
self.pm.write_float(self.engine_pointer + dwClientState_ViewAngles + 0x4, normalize_y)
|
||||
|
||||
time.sleep(0.2)
|
||||
except :
|
||||
pass
|
||||
|
||||
self.pm.close_process()
|
||||
|
||||
def get_key(self) :
|
||||
if "Button.right" in features_check.check.silent_aim_key :
|
||||
key = win32api.GetKeyState(0x02)
|
||||
if key == -127 or key == -128 :
|
||||
key = True
|
||||
else :
|
||||
key = False
|
||||
elif "Button.left" in features_check.check.silent_aim_key :
|
||||
key = win32api.GetKeyState(0x01)
|
||||
if key == -127 or key == -128 :
|
||||
key = True
|
||||
else :
|
||||
key = False
|
||||
elif "Button.middle" in features_check.check.silent_aim_key :
|
||||
key = win32api.GetKeyState(0x04)
|
||||
if key == -127 or key == -128 :
|
||||
key = True
|
||||
else :
|
||||
key = False
|
||||
|
||||
else :
|
||||
excpected_key = features_check.check.silent_aim_key
|
||||
excpected_key = excpected_key.replace("Key.", "")
|
||||
key = keyboard.is_pressed(excpected_key)
|
||||
|
||||
return key
|
||||
|
||||
def normalizeAngles(self, viewAngleX, viewAngleY):
|
||||
if viewAngleX > 89:
|
||||
viewAngleX -= 360
|
||||
if viewAngleX < -89:
|
||||
viewAngleX += 360
|
||||
if viewAngleY > 180:
|
||||
viewAngleY -= 360
|
||||
if viewAngleY < -180:
|
||||
viewAngleY += 360
|
||||
return viewAngleX, viewAngleY
|
||||
|
||||
def checkangles(self, x, y):
|
||||
if x > 89:
|
||||
return False
|
||||
elif x < -89:
|
||||
return False
|
||||
elif y > 360:
|
||||
return False
|
||||
elif y < -360:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def nanchecker(self, first, second):
|
||||
if math.isnan(first) or math.isnan(second):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def calc_distance(self, current_x, current_y, new_x, new_y):
|
||||
distancex = new_x - current_x
|
||||
if distancex < -89:
|
||||
distancex += 360
|
||||
elif distancex > 89:
|
||||
distancex -= 360
|
||||
if distancex < 0.0:
|
||||
distancex = -distancex
|
||||
|
||||
distancey = new_y - current_y
|
||||
if distancey < -180:
|
||||
distancey += 360
|
||||
elif distancey > 180:
|
||||
distancey -= 360
|
||||
if distancey < 0.0:
|
||||
distancey = -distancey
|
||||
return distancex, distancey
|
||||
|
||||
def calcangle(self, localpos1, localpos2, localpos3, enemypos1, enemypos2, enemypos3):
|
||||
try:
|
||||
delta_x = localpos1 - enemypos1
|
||||
delta_y = localpos2 - enemypos2
|
||||
delta_z = localpos3 - enemypos3
|
||||
hyp = sqrt(delta_x * delta_x + delta_y * delta_y + delta_z * delta_z)
|
||||
x = atan(delta_z / hyp) * 180 / pi
|
||||
y = atan(delta_y / delta_x) * 180 / pi
|
||||
if delta_x >= 0.0:
|
||||
y += 180.0
|
||||
return x, y
|
||||
except Exception as e:
|
||||
print(e)
|
||||
pass
|
||||
Reference in New Issue
Block a user