This repository has been archived on 2023-09-02. You can view files and clone it, but cannot push or open issues or pull requests.
csh/cheats/chams.py

71 lines
2.5 KiB
Python

from struct import pack
from hack import Hack
from utils import Color3i
class Chams(Hack):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.__color = Color3i(255, 255, 0)
def chams(self) -> None:
# Aliases
mem = self.pm
offset = self.offsets
# Get module addresses
client = self.find_module("client")
engine = self.find_module("engine")
# Get local player
local_player = self.find_uint(client, offset["dwLocalPlayer"])
def cheat():
# Loop all entities
for i in range(1, 32): # 0 is world
entity = mem.read_uint(
client + offset["dwEntityList"] + i * offset["entity_size"])
# Ignore if entity doesn't exist
if not entity:
continue
# Ignore allies
if mem.read_int(entity + offset["m_iTeamNum"]) == mem.read_int(local_player + offset["m_iTeamNum"]):
continue
# Ignore dormant
if mem.read_bool(entity + offset["m_bDormant"]):
continue
# Check if ennemy is alive
if mem.read_int(entity + offset["m_lifeState"]):
continue
# Space between values
i = mem.read_int(
entity + offset["m_iGlowIndex"]) * offset["glow_obj_size"]
# Change color
if self.__color.r > 0:
mem.write_uint(
entity + offset["m_clrRender"] + offset["render_R"], self.__color.r)
if self.__color.g > 0:
mem.write_uint(
entity + offset["m_clrRender"] + offset["render_G"], self.__color.g)
if self.__color.b > 0:
mem.write_uint(
entity + offset["m_clrRender"] + offset["render_B"], self.__color.b)
# Override the brightness of models by increasing
# the minimal brightness value
brightness = 5.
mem.write_int(
engine + offset["model_ambient_min"],
int.from_bytes(pack("f", brightness), byteorder='little') ^ (
engine + offset["model_ambient_min"] - 0x2C)
)
self.hack_loop(cheat)