-
Автор темы
- #1
Учусь писать читы (Python), начал с CSS. Ищу все оффсеты сам.
Затуп с ESP Боксами, они как бы прыгают и появляются там где не должны появляться.
Причём периодически боксы отрисовываются и тут же исчезают, даже если координата w уходит в отрицательное значение.
Тестил как tkinter, так и pygame, трабла не уходит.
Игра: CSS
Надеюсь на помощь знающих людей.
Затуп с ESP Боксами, они как бы прыгают и появляются там где не должны появляться.
Причём периодически боксы отрисовываются и тут же исчезают, даже если координата w уходит в отрицательное значение.
Тестил как tkinter, так и pygame, трабла не уходит.
Игра: CSS
Python:
import pymem
import pymem.process
import pygame
import win32api
import win32con
import win32gui
from threading import Thread
import tkinter
class CSSHack:
def __init__(self):
#ProcName
self.pm = pymem.Pymem("hl2.exe")
#Target window name
self.TargetWindowName = "Counter-Strike Source"
#Overlay name
self.OverlayName = "Overlay"
#Offsets
self.server_dll = pymem.process.module_from_name(self.pm.process_handle, "server.dll").lpBaseOfDll #int
self.engine_dll = pymem.process.module_from_name(self.pm.process_handle, "engine.dll").lpBaseOfDll #int
self.BaseAddr = self.server_dll + 0x00562D7C #int
self.LocalPlayer = self.pm.read_int(self.BaseAddr) #int, 0x10 bytes between players
self.Health = 0x88 #int
self.cord_x = 0x01C8 #float
self.cord_y = 0x01CC #float
self.cord_z = 0x01D0 #float
self.recoilx = 0x07E0 #float
self.recoily = 0x07E4 #float
self.isJumping = 0x07D4 #int, if != 0 == jumping
self.teamNumber = 0x01C0 #int, [2- t, 3 - ct]
self.vMatrix = self.engine_dll + 0x4CF20C #float
#window init
self.root = tkinter.Tk()
def CreateOverlay(self, posx, posy, width, height):
self.root.overrideredirect(True)
self.root.wm_attributes("-topmost", True)
self.root.wm_attributes("-toolwindow", True)
self.root.wm_attributes("-disabled", True)
self.root.wm_attributes("-transparentcolor", "white")
self.root.title(self.OverlayName)
self.root.geometry(f"{width}x{height}")
self.root.geometry(f"+{posx}+{posy}")
canvas = tkinter.Canvas(self.root, width=width, height=height, bg='white')
canvas.pack()
return canvas
def GetTargetWindowPos(self): # Returns tuple, where [0] - posx, [1] - posy, [2] - width, [3] - height
target_hwnd = win32gui.FindWindow(0, self.TargetWindowName)
if target_hwnd:
return win32gui.GetWindowRect(target_hwnd)
def World2Screen(self, x, y, z, width, height):
Matrix_List = [self.pm.read_float(self.vMatrix + 0x0),
self.pm.read_float(self.vMatrix + 0x4),
self.pm.read_float(self.vMatrix + 0x8),
self.pm.read_float(self.vMatrix + 0xC),
self.pm.read_float(self.vMatrix + 0x10),
self.pm.read_float(self.vMatrix + 0x14),
self.pm.read_float(self.vMatrix + 0x18),
self.pm.read_float(self.vMatrix + 0x1C),
self.pm.read_float(self.vMatrix + 0x20),
self.pm.read_float(self.vMatrix + 0x24),
self.pm.read_float(self.vMatrix + 0x28),
self.pm.read_float(self.vMatrix + 0x2C),
self.pm.read_float(self.vMatrix + 0x30),
self.pm.read_float(self.vMatrix + 0x34),
self.pm.read_float(self.vMatrix + 0x38),
self.pm.read_float(self.vMatrix + 0x3C)
]
posx = x * Matrix_List[0] + y * Matrix_List[1] + z * Matrix_List[2] + Matrix_List[3]
posy = x * Matrix_List[4] + y * Matrix_List[5] + z * Matrix_List[6] + Matrix_List[7]
posz = x * Matrix_List[8] + y * Matrix_List[9] + z * Matrix_List[10] + Matrix_List[11]
posw = x * Matrix_List[12] + y * Matrix_List[13] + z * Matrix_List[14] + Matrix_List[15]
NDCx = posx / posw
NDCy = posy / posw
NDCz = posz / posw
screenx = (width / 2 * NDCx) + (NDCx + width / 2)
screeny = -(height / 2 * NDCy) + (NDCy + height / 2)
return screenx, screeny, posw
def GetEntityPos(self):
EntityPos_List = []
for i in range(1, 32): # Starts from 1 because we want skip us
if self.pm.read_int(self.BaseAddr + i * 0x10) != 0:
x = self.pm.read_float(self.pm.read_int(self.BaseAddr + i * 0x10) + self.cord_x)
y = self.pm.read_float(self.pm.read_int(self.BaseAddr + i * 0x10) + self.cord_y)
z = self.pm.read_float(self.pm.read_int(self.BaseAddr + i * 0x10) + self.cord_z)
EntityPos_List.append([x,y,z])
return EntityPos_List
# Below cheat functions
def ESP(self, width, height, canvas):
c = canvas
while True:
EntityPos = self.GetEntityPos()
EntityPos2D = []
for i in range(len(EntityPos)):
EntityPos2D.append(self.World2Screen(EntityPos[i][0], EntityPos[i][1], EntityPos[i][2], width, height))
for i in range(len(EntityPos2D)):
if EntityPos2D[i][2] > 0.01:
c.create_rectangle(EntityPos2D[i][0]- 30, EntityPos2D[i][1]- 50, EntityPos2D[i][0], EntityPos2D[i][1], outline="red")
self.root.update()
self.root.update_idletasks()
canvas.delete("all")
def BHop(self):
pass
def RecoilControl(self, value):
pass
def AimBot(self):
pass
def main():
cheat = CSSHack()
GameWindowInfo = cheat.GetTargetWindowPos()
WindowPosx = GameWindowInfo[0]
WindowPosy = GameWindowInfo[1]
width = GameWindowInfo[2] - GameWindowInfo[0]
height = GameWindowInfo[3] - GameWindowInfo[1]
canvas = cheat.CreateOverlay(WindowPosx, WindowPosy, width, height)
# esp = Thread(target=cheat.ESP, args=(width, height, canvas))
# esp.start()
cheat.ESP(width, height, canvas)
if __name__ == "__main__":
main()