Вопрос Есть у кого рабочий сурс скинченджера на python?

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Окт 2022
Сообщения
30
Реакции
0
Вопрос в шапке
Скиньте пожалуйста:CoolStoryBob:
 
У меня есть вот такой

python:
Expand Collapse Copy
import pymem.process
import keyboard
import requests
import re
from time import sleep
def fetch_offsets(url):
    response = requests.get(url)
    response.raise_for_status()
    return response.text
 
def parse_offsets(file_content, offset_name):
    pattern = re.compile(rf'{offset_name}\s*=\s*0x([0-9A-Fa-f]+)')
    match = pattern.search(file_content)
    if match:
        return int(match.group(1), 16)
    else:
        raise ValueError(f"Offset {offset_name} not found in the provided file.")
 
offsets_url = "https://raw.githubusercontent.com/a2x/cs2-dumper/refs/heads/main/output/offsets.hpp"
client_url = "https://raw.githubusercontent.com/a2x/cs2-dumper/refs/heads/main/output/client_dll.hpp"
 
offsets_content = fetch_offsets(offsets_url)
client_content = fetch_offsets(client_url)
 
pm = pymem.Pymem("cs2.exe")
client = pymem.process.module_from_name(pm.process_handle, "client.dll")
engine = pymem.process.module_from_name(pm.process_handle, "engine2.dll")
dwLocalPlayerController_offset = parse_offsets(offsets_content, "dwLocalPlayerController")
dwLocalPlayerController = pm.read_longlong(client.lpBaseOfDll + dwLocalPlayerController_offset)
OFFSET_M_PWEAPONSERVICES = parse_offsets(client_content, "m_pWeaponServices")
OFFSET_M_PWEAPONSIZE = 0x50
OFFSET_M_PWEAPONS = parse_offsets(client_content, "m_hMyWeapons")
OFFSET_M_ATTRIBUTEMANAGER = 0x1148
OFFSET_M_ITEM = parse_offsets(client_content, "m_Item")
OFFSET_M_IITEMDEFINITIONINDEX = parse_offsets(client_content, "m_iItemDefinitionIndex")
OFFSET_M_PGAMESCENENODE = parse_offsets(client_content, "m_pGameSceneNode")
OFFSET_M_MESHGROUPMASK = 0x198
OFFSET_LOCALPLAYERPAWN = parse_offsets(offsets_content, "dwLocalPlayerPawn")
OFFSET_ENTITYLIST = parse_offsets(offsets_content, "dwEntityList")
OFFSET_NETWORKGAMECLIENT = parse_offsets(offsets_content, "dwNetworkGameClient")
OFFSET_M_PVIEWMODELSERVICES = parse_offsets(client_content, "m_pViewModelServices")
OFFSET_M_HVIEWMODEL = parse_offsets(client_content, "m_hViewModel")
OFFSET_DELTATICK = 0x174
dwEntityList = 0x1A36A00
changefov = int(input('Enter FOV\n'))
 
fov_offset = parse_offsets(client_content, "m_iDesiredFOV")
m_pClippingWeapon = 0x13A0
original_fov = pm.read_int(dwLocalPlayerController + fov_offset)
original_pattern_bytes = None
original_skins = {}

 
def get_weapon_services(local_player_pawn):
    return pm.read_longlong(local_player_pawn + OFFSET_M_PWEAPONSERVICES)
 
def get_weapon_size(weapon_services):
    return pm.read_int(weapon_services + OFFSET_M_PWEAPONSIZE)
 
def get_controller_from_handle(entity_list, handle):
    try:
        for i in range(64):
            client = pymem.process.module_from_name(pm.process_handle, "client.dll").lpBaseOfDll
            entity = pm.read_longlong(client + dwEntityList)
            
            list_entry = pm.read_longlong(entity + ((8 * (i & 0x7FFF) >> 9) + 16))
        
            if not list_entry:
                return None
        
            entity_controller = pm.read_longlong(list_entry + (120) * (i & 0x1FF))

            if not entity_controller:
                return None
                
            return pm.read_longlong(entity_controller)
    except Exception as e:
            print(f"Controller error: {str(e)}")
            return None
 
def get_weapon_handle(weapon_services, index):
    return pm.read_longlong((weapon_services + OFFSET_M_PWEAPONS) + 0x8 * index)
 
def get_weapon_id(weapon):
    try:
        return pm.read_int(weapon + OFFSET_M_ATTRIBUTEMANAGER + OFFSET_M_ITEM + OFFSET_M_IITEMDEFINITIONINDEX)
    except:
        return None
 
def get_weapon_mesh_group_mask(weapon):
    game_scene_node = pm.read_longlong(weapon + OFFSET_M_PGAMESCENENODE)
    return pm.read_int(game_scene_node + 0x160 + OFFSET_M_MESHGROUPMASK)
 
def get_view_model_services(local_player_pawn):
    return pm.read_longlong(local_player_pawn + OFFSET_M_PVIEWMODELSERVICES)
 
def get_view_model_handle(view_model_services):
    return pm.read_int(view_model_services + OFFSET_M_HVIEWMODEL)
 
def set_mask_group(game_scene_node):
    return pm.read_int(game_scene_node + 0x160 + OFFSET_M_MESHGROUPMASK)
 
 
def toggle_skins():
    global original_skins
    local_player_pawn = pm.read_longlong(client.lpBaseOfDll + OFFSET_LOCALPLAYERPAWN)
    weapon_services = get_weapon_services(local_player_pawn)
    weapon_size = get_weapon_size(weapon_services)
    entity_list = pm.read_longlong(client.lpBaseOfDll + OFFSET_ENTITYLIST)
    for i in range(weapon_size):
        weapon_handle = get_weapon_handle(weapon_services, i)
        if not weapon_handle:
            continue
 
        weapon = pm.read_longlong(local_player_pawn + m_pClippingWeapon)
        if not weapon:
            continue
 
        weapon_id = get_weapon_id(weapon)
        if not weapon_id:
            continue
        print(weapon_id)
        weapon_game_scene_node = pm.read_longlong(weapon + OFFSET_M_PGAMESCENENODE)
        mesh_group_mask = get_weapon_mesh_group_mask(weapon)
 
        if weapon_id not in original_skins:
            original_skins[weapon_id] = {
                "paint": pm.read_int(weapon + 0x1548),
                "seed": pm.read_int(weapon + 0x154C),
                "stat": pm.read_int(weapon + 0x1554),
                "wear": pm.read_float(weapon + 0x1550),
                "name": pm.read_string(weapon + OFFSET_M_ATTRIBUTEMANAGER + OFFSET_M_ITEM + 0x2D0),
                "item_id_high": pm.read_int(weapon + OFFSET_M_ATTRIBUTEMANAGER + OFFSET_M_ITEM + 0x1D0),
            }
        print(original_skins)
        print(pm.read_int(weapon + OFFSET_M_ATTRIBUTEMANAGER + OFFSET_M_ITEM + 0x1D0))
        if mesh_group_mask != -1:
            pm.write_int(weapon_game_scene_node + 0x160 + OFFSET_M_MESHGROUPMASK, -1)
 
        if weapon_id == 7:
            sleep(5)
            pm.write_int(weapon + 0x1548, 180)
        
        elif weapon_id == 1:
            pm.write_int(weapon + 0x1548, 37)
 
        pm.write_int(weapon + 0x154C, 0)
        pm.write_int(weapon + 0x1554, 1337)
        pm.write_float(weapon + 0x1550, 0.00001)
        pm.write_string(weapon + OFFSET_M_ATTRIBUTEMANAGER + OFFSET_M_ITEM + 0x2D0, "Alani-NU")
        pm.write_int(weapon + OFFSET_M_ATTRIBUTEMANAGER + OFFSET_M_ITEM + 0x1BC, 2)
        pm.write_int(weapon + OFFSET_M_ATTRIBUTEMANAGER + OFFSET_M_ITEM + 0x1D0, -1)
        
    view_model_services = get_view_model_services(local_player_pawn)
    if not view_model_services:
        print("Failed to get view model services.")
        return
 
    view_model_handle = get_view_model_handle(view_model_services)
    if not view_model_handle:
        print("Failed to get view model handle.")
        return
 
    view_model = get_controller_from_handle(entity_list, view_model_handle)
    if not view_model:
        print("Failed to get view model controller.")
        return
 
    view_game_scene_node = pm.read_longlong(view_model + OFFSET_M_PGAMESCENENODE)
    print(view_game_scene_node)
    if view_game_scene_node:
        pm.write_int(set_mask_group(view_game_scene_node) + 0x160 + OFFSET_M_MESHGROUPMASK, 2)
 
print("F8")
while True:
    if keyboard.is_pressed('f8'):
        toggle_skins()
        while keyboard.is_pressed('f8'):
            pass
Но он на моменте

pm.write_int(set_mask_group(view_game_scene_node) + 0x160 + OFFSET_M_MESHGROUPMASK, 2)
Выдает ошибку. Как это пофиксить?
 
Проблема не в фиксе конкретно этой строки, этот кусок кода работает 1 раз из 10-20, от него просто нет смысла
Хуево:roflanPominki:
Проблема не в фиксе конкретно этой строки, этот кусок кода работает 1 раз из 10-20, от него просто нет смысла
Можешь намекнуть как это сделать? Я полный лох в этом
 
Последнее редактирование:
Назад
Сверху Снизу