wow
This commit is contained in:
parent
7e3435009d
commit
b678e844f6
10 changed files with 732 additions and 1 deletions
47
modules/aimbot.py
Normal file
47
modules/aimbot.py
Normal 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
99
modules/esp.py
Normal 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,
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue