Add rank reveal cheat
This commit is contained in:
parent
4d01d803b3
commit
7fd8483ec1
2 changed files with 111 additions and 0 deletions
107
cheats/rankreveal.py
Normal file
107
cheats/rankreveal.py
Normal file
|
@ -0,0 +1,107 @@
|
|||
from hack import Hack, sleep
|
||||
|
||||
|
||||
class Rankreveal(Hack):
|
||||
def __init__(self, **kwargs) -> None:
|
||||
super().__init__(**kwargs)
|
||||
|
||||
self.ranks = [
|
||||
"Unranked",
|
||||
"Silver I",
|
||||
"Silver II",
|
||||
"Silver III",
|
||||
"Silver IV",
|
||||
"Silver Elite (V)",
|
||||
"Silver Elite Master (VI)",
|
||||
"Gold Nova I",
|
||||
"Gold Nova II",
|
||||
"Gold Nova III",
|
||||
"Gold Nova Master (IV)",
|
||||
"Master Guardian I",
|
||||
"Master Guardian II",
|
||||
"Master Guardian Elite (III)",
|
||||
"Distinguished Master Guardian (IV)",
|
||||
"Legendary Eagle (I)",
|
||||
"Legendary Eagle Master (II)",
|
||||
"Supreme Master First Class (III)",
|
||||
"The Global Elite",
|
||||
]
|
||||
|
||||
def rankreveal(self) -> None:
|
||||
# Aliases
|
||||
mem = self.pm
|
||||
offset = self.offsets
|
||||
|
||||
# Get module addresses
|
||||
client = self.find_module("client")
|
||||
engine = self.find_module("engine")
|
||||
|
||||
# Get client state
|
||||
client_state = self.find_uint(engine, offset["dwClientState"])
|
||||
|
||||
def cheat():
|
||||
founds = []
|
||||
# Loop all entities
|
||||
for i in range(1, 32): # 0 is world
|
||||
entity = int(
|
||||
mem.read_uint(
|
||||
client + offset["dwEntityList"] + i * offset["entity_size"]
|
||||
)
|
||||
)
|
||||
|
||||
# Ignore if entity doesn't exist
|
||||
if not entity:
|
||||
continue
|
||||
|
||||
# Ignore non-player
|
||||
if not mem.read_uint(entity + offset["m_iTeamNum"]):
|
||||
continue
|
||||
|
||||
# Get player info
|
||||
player_info = int(
|
||||
mem.read_uint(client_state + offset["dwClientState_PlayerInfo"])
|
||||
)
|
||||
|
||||
# Get player's item
|
||||
player_info_items = int(
|
||||
mem.read_uint(
|
||||
int(mem.read_uint(player_info + offset["player_info_items"]))
|
||||
+ offset["player_info_item"],
|
||||
)
|
||||
)
|
||||
|
||||
info = int(
|
||||
mem.read_uint(
|
||||
player_info_items
|
||||
+ offset["player_info_elem"]
|
||||
+ (i * offset["player_info_elem_size"])
|
||||
)
|
||||
)
|
||||
|
||||
name_entity = mem.read_string(info + offset["entity_size"])
|
||||
if name_entity != "GOTV":
|
||||
player_ressources = int(
|
||||
mem.read_uint(client + offset["dwPlayerResource"])
|
||||
)
|
||||
|
||||
rank = int(
|
||||
mem.read_uint(
|
||||
player_ressources
|
||||
+ offset["m_iCompetitiveRanking"]
|
||||
+ (i * 4)
|
||||
)
|
||||
)
|
||||
|
||||
founds.append((name_entity, rank))
|
||||
|
||||
if len(founds) > 0:
|
||||
# Print ranks
|
||||
max_len = len(max(list(zip(*founds))[0], key=len)) # use for formatting
|
||||
[print(f"{i:{max_len}} --> {self.ranks[j]}") for (i, j) in founds]
|
||||
founds = []
|
||||
|
||||
sleep(1000)
|
||||
else:
|
||||
sleep(2)
|
||||
|
||||
self.hack_loop(cheat)
|
4
hack.py
4
hack.py
|
@ -53,6 +53,10 @@ class Hack:
|
|||
"head_x": 0x0C,
|
||||
"head_y": 0x1C,
|
||||
"head_z": 0x2C,
|
||||
"player_info_items": 0x40,
|
||||
"player_info_item": 0xC,
|
||||
"player_info_elem": 0x28,
|
||||
"player_info_elem_size": 0x34,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
Reference in a new issue