This commit is contained in:
암냥 2026-05-28 08:18:13 +09:00
commit b678e844f6
10 changed files with 732 additions and 1 deletions

47
modules/aimbot.py Normal file
View file

@ -0,0 +1,47 @@
import math
import pyMeow as pm
# Aimbot 오프셋
class AimbotOffsets:
pos = 0x4 # Head position
yaw = 0x34 # camera_x
pitch = 0x38 # camera_y
def do_aimbot(proc, entities, local_player_addr, my_team, left_shift_pressed):
if not left_shift_pressed or not entities:
return
try:
my_pos = pm.r_vec3(proc, local_player_addr + AimbotOffsets.pos)
target = None
min_dist = float('inf')
screen_center_x = pm.get_screen_width() / 2
screen_center_y = pm.get_screen_height() / 2
for ent in entities:
if ent.team == my_team or ent.health <= 0:
continue
if ent.pos2d:
dist_to_crosshair = math.hypot(ent.pos2d["x"] - screen_center_x, ent.pos2d["y"] - screen_center_y)
if dist_to_crosshair < min_dist:
min_dist = dist_to_crosshair
target = ent
if target:
dx = target.pos3d["x"] - my_pos["x"]
dy = target.pos3d["y"] - my_pos["y"]
dz = target.pos3d["z"] - my_pos["z"]
distance = math.hypot(dx, dy)
yaw = math.atan2(dy, dx) * 180 / math.pi + 90
pitch = math.atan2(dz, distance) * 180 / math.pi
pm.w_float(proc, local_player_addr + AimbotOffsets.yaw, yaw)
pm.w_float(proc, local_player_addr + AimbotOffsets.pitch, pitch)
except Exception as e:
pass

99
modules/esp.py Normal file
View file

@ -0,0 +1,99 @@
import pyMeow as pm
# ESP 오프셋
class ESPOffsets:
name = 0x205
health = 0xEC
armor = 0xF0
team = 0x30C
pos = 0x4 # Head position
fpos = 0x28 # Foot position
# 색상
class Colors:
cyan = None
orange = None
white = None
black = None
def init_colors():
"""오버레이 초기화 후 색상을 초기화합니다."""
Colors.cyan = pm.get_color("cyan")
Colors.orange = pm.get_color("orange")
Colors.white = pm.get_color("white")
Colors.black = pm.get_color("black")
class Entity:
def __init__(self, proc, addr):
self.proc = proc
self.addr = addr
self.health = pm.r_int(proc, addr + ESPOffsets.health)
if self.health <= 0 or self.health > 10000:
raise Exception("Entity is not alive or invalid.")
self.name = pm.r_string(proc, addr + ESPOffsets.name)
self.armor = pm.r_int(proc, addr + ESPOffsets.armor)
self.team = pm.r_int(proc, addr + ESPOffsets.team)
self.color = Colors.cyan if self.team else Colors.orange
self.pos3d = pm.r_vec3(proc, self.addr + ESPOffsets.pos)
self.fpos3d = pm.r_vec3(proc, self.addr + ESPOffsets.fpos)
self.pos2d = self.fpos2d = None
self.head = self.width = self.center = None
def wts(self, vm):
try:
self.pos2d = pm.world_to_screen(vm, self.pos3d)
self.fpos2d = pm.world_to_screen(vm, self.fpos3d)
self.head = self.fpos2d["y"] - self.pos2d["y"]
self.width = self.head / 2
self.center = self.width / 2
return True
except:
return False
def draw_box(self):
pm.draw_rectangle(
posX=self.pos2d["x"] - self.center,
posY=self.pos2d["y"] - self.center / 2,
width=self.width,
height=self.head + self.center / 2,
color=pm.fade_color(self.color, 0.3),
)
pm.draw_rectangle_lines(
posX=self.pos2d["x"] - self.center,
posY=self.pos2d["y"] - self.center / 2,
width=self.width,
height=self.head + self.center / 2,
color=self.color,
lineThick=1.2,
)
def draw_name(self):
text_size = pm.measure_text(self.name, 15) / 2
pm.draw_text(
text=self.name,
posX=self.pos2d["x"] - text_size,
posY=self.pos2d["y"],
fontSize=15,
color=Colors.white,
)
def draw_health(self):
pm.draw_circle_sector(
centerX=self.pos2d["x"] - self.center,
centerY=self.pos2d["y"] - self.center / 2,
radius=self.center / 3 + 2,
startAngle=0,
endAngle=360,
segments=0,
color=Colors.black,
)
pm.draw_circle_sector(
centerX=self.pos2d["x"] - self.center,
centerY=self.pos2d["y"] - self.center / 2,
radius=self.center / 3,
startAngle=0,
endAngle=360 / 100 * min(self.health, 100),
segments=0,
color=self.color,
)