Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Как в питоне "сканивароть" оружие в руках

Код:
Expand Collapse Copy
def get_current_weapon():
    screenshot = pyautogui.screenshot(region=(0, 0, 800, 600))
  
    weapon_color = screenshot.getpixel((400, 550))
  
    if weapon_color == (255, 0, 0):
        return "AK-47"
    elif weapon_color == (0, 255, 0):
        return "M4A1"
    elif weapon_color == (0, 0, 255):
        return "AWP"
    else:
        return ""


Увидел, но встаёт другой вопрос: если ему это делать лень, нахуя он спрашивает об этом у других людей, странный тип
худ в кс можно двигать
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
def get_current_weapon():
    screenshot = pyautogui.screenshot(region=(0, 0, 800, 600))
 
    weapon_color = screenshot.getpixel((400, 550))
 
    if weapon_color == (255, 0, 0):
        return "AK-47"
    elif weapon_color == (0, 255, 0):
        return "M4A1"
    elif weapon_color == (0, 0, 255):
        return "AWP"
    else:
        return ""

Как сделать так, чтобы питон понимал, что у меня за оружие в руках?
обращение к людям которые пишут за детект "по цвету пикселя"
я возможно что-то неправильно понимаю, но как вы хотите что-бы цвет пикселя выдавал какое именно оружие находится в руках? активное (1 из 3-4) - да, сделать не проблема, но тс не это хочет.
по теме - подключай opencv и сравнивай картинки по вероятности, не знаю как на питоне, но на плюсах там особо сложного ничего нет.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
обращение к людям которые пишут за детект "по цвету пикселя"
я возможно что-то неправильно понимаю, но как вы хотите что-бы цвет пикселя выдавал какое именно оружие находится в руках? активное (1 из 3-4) - да, сделать не проблема, но тс не это хочет.
по теме - подключай opencv и сравнивай картинки по вероятности, не знаю как на питоне, но на плюсах там особо сложного ничего нет.
Для этого нужно либо искать уникальные изображения, соответствующие каждому типу оружия, и определять их на экране, либо использовать другие методы, например, анализировать значения игровых переменных, которые содержат информацию о текущем оружии. 2 подход более надежный и точный, но для его реализации необходимо знать структуру игровой памяти и адреса нужных переменных. Также это может быть затруднительно, если вальв приняли меры для защиты от использования макросов, но очень сомневаюсь в этом.
Но если всё-таки выбрать 1 вариант, но можно определить уникальные пиксельные шаблоны, соответствующие каждому типу оружия, и искать их на экране при помощи алгоритма шаблонного сопоставления.
 
например, анализировать значения игровых переменных, которые содержат информацию о текущем оружии.
я думаю что если человек хочет играть с "макросами", а не с каким-то легитнейшим легитом, то он настолько не хочет быть забаненным, что не решится как-либо читать игру.
Также это может быть затруднительно, если вальв приняли меры для защиты от использования макросов, но очень сомневаюсь в этом.
точно нет.
но можно определить уникальные пиксельные шаблоны, соответствующие каждому типу оружия, и искать их на экране при помощи алгоритма шаблонного сопоставления.
да, но это очень запарно, долго и ненужно, за тебя это уже давно сделали и написали целую хорошо оптимизированную библиотеку, достаточно лишь изучить пару строк документации (тем более на питоне)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
я думаю что если человек хочет играть с "макросами", а не с каким-то легитнейшим легитом, то он настолько не хочет быть забаненным, что не решится как-либо читать игру.

точно нет.

да, но это очень запарно, долго и ненужно, за тебя это уже давно сделали и написали целую хорошо оптимизированную библиотеку, достаточно лишь изучить пару строк документации (тем более на питоне)
Я вообще не понимаю зачем ему это. Лучше купить миднайт и не ебать себе мозги. Используя данный софт и меньше шансов того, что отлетишь, и функций хайповых больше. Ну решать всё-таки ему, я лишь предлагаю варианты решения вопроса
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
def get_current_weapon():
    screenshot = pyautogui.screenshot(region=(0, 0, 800, 600))
  
    weapon_color = screenshot.getpixel((400, 550))
  
    if weapon_color == (255, 0, 0):
        return "AK-47"
    elif weapon_color == (0, 255, 0):
        return "M4A1"
    elif weapon_color == (0, 0, 255):
        return "AWP"
    else:
        return ""


Увидел, но встаёт другой вопрос: если ему это делать лень, нахуя он спрашивает об этом у других людей, странный тип
хм, интересно, а как сделать так, чтобы цвет худа зависел от оружия? инфы в инете не нашёл
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Можно брать пиксель не от худа, а от модельки оружия
1677409482657.png

я так понял, ты говоришь про это.
цвет для всех оружий же одинаковый
1677409531194.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Посмотреть вложение 239944
я так понял, ты говоришь про это.
цвет для всех оружий же одинаковый
Посмотреть вложение 239945
Вообще у меня назрело 2 варианта реализации этого
1 Вариант - Брать уникальный пиксель, который есть только у конкретного оружия (пометил красным):
1677410270787.png

2 Вариант - брать пиксель не от иконки, а от модели оружия:
1677410230809.png
1677410276893.png
 
Вообще у меня назрело 2 варианта реализации этого
1 Вариант - Брать уникальный пиксель, который есть только у конкретного оружия (пометил красным):
Посмотреть вложение 239950
2 Вариант - брать пиксель не от иконки, а от модели оружия:
Посмотреть вложение 239949Посмотреть вложение 239951
мне интересно как будет работать 2 вариант если взять оружие с другим скином
а все понял как
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сразу скажу что проще спастить экстернал код который будет брать отдачу с направлением не смотря на оружие, на плюсах, но тут ради интереса написал.
Будем сравнивание изображения худа методом сравнения хеша изображений.
Скину код частями но не факт что фулл ибо достаю с кучи своего кода.
Python:
Expand Collapse Copy
from PIL import Image, ImageDraw, ImageChops
import imagehash
import multiprocessing
from grabbers.mss import Grabber
import cv2
Теперь берём изображения, код грабера прикреплю.
Python:
Expand Collapse Copy
_aim = True
detect_window = [200, 200] # размер читаемой области

def grab_process(q):
    grabber = Grabber()
    global detect_window, _aim

    while True:
        if _aim:
            img_weapon = grabber.get_image({
                "left": int((game_window_rect[2])/ 2-100), #координаты худа, пиши свои ибо мне лень как в кс искать
                "top": int((game_window_rect[3] )/ 2-100),#координаты худа, пиши свои ибо мне лень как в кс искать
                "width": detect_window[0],
                "height": detect_window[1]})

            if img_weapon is None:
                continue

            q.put_nowait(img_weapon)
            q.join()
Сама функция обработки изображения и сравнения
Python:
Expand Collapse Copy
def cv2_process(q):
    global _aim
    while True:
        if _aim and not q.empty():
            img_weapon = q.get_nowait()
            q.task_done()

            # some processing code
            # OpenCV HSV Scale (H: 0-179, S: 0-255, V: 0-255)

            weapon_color = (0, 0, 240), (180, 10, 250)  # color | color contrast 0 - white | color brightness 255 - white
            #тут получаем маску по цвету и оставляем на изображении только то что белое
            hsv2 = cv2.cvtColor(img_weapon, cv2.COLOR_BGR2HSV)
            mask_weapon = cv2.inRange(hsv2, np.array(weapon_color[0], dtype=np.uint8),
                               np.array(weapon_color[1], dtype=np.uint8))
            mask_weapon = cv2.bitwise_and(hsv2, hsv2, mask=mask_weapon)
            weapon_img = cv2.cvtColor(mask_weapon, cv2.COLOR_HSV2BGR)
           
            #дальше мне стало лень так что єто просто пример по котормоу всё поймёшь
            hash1 = imagehash.average_hash(Image.open('vandal.jpg')) #єто допустим оружие которое надо
            hash2 = imagehash.average_hash(Image.open('now.jpg'))    #єто актуальное
            print(abs(hash1-hash2))                                     #разница хеша
            cv2.imwrite("now.jpg", weapon_img)                         #сохранение актуального изображения оружия
Ну и вызываем сами функции
Python:
Expand Collapse Copy
if __name__ == "__main__":

    q = multiprocessing.JoinableQueue()
   
    p1 = multiprocessing.Process(target=grab_process, args=(q,))
    p2 = multiprocessing.Process(target=cv2_process, args=(q,))

   
    p1.start()
    p2.start()

Скинул ничего не тестя но скорее всего основные проблемы будут с установкой библиотек, так что сперва с ними разберись)
 

Вложения

парни, я всё понимаю конечно, но люди со скинами в кс тоже играют, какой НАХУЙ цвет пикселя...

по теме: трахать фото до той поры пока ты не получишь шумную обводочку оружия. похоже -> молодец, не похоже -> повторяй.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
парни, я всё понимаю конечно, но люди со скинами в кс тоже играют, какой НАХУЙ цвет пикселя...

по теме: трахать фото до той поры пока ты не получишь шумную обводочку оружия. похоже -> молодец, не похоже -> повторяй.
Ты внатуре слепой и не удосужился прочитать всю тему?
 
Привет, мой пример через екстернел чтение памяти (намного быстрее и лучше всяких скринов)

1677718148778.png

1677718216654.png

1677718703293.png


Полный список имен есть в weapon.py файле:
Expand Collapse Copy
class Weapon(Enum):
    WEAPON_DEAGLE = 1
    WEAPON_ELITE = 2
    WEAPON_FIVESEVEN = 3
    WEAPON_GLOCK = 4
    WEAPON_AK47 = 7
    WEAPON_AUG = 8
    WEAPON_AWP = 9
    WEAPON_FAMAS = 10
    WEAPON_G3SG1 = 11
    ... # там есть все пушки, это всего лишь первые 11 индексов, в weapon.py они есть все.

Установка:
Expand Collapse Copy
pip install pymem
pip install requests
pip install hazedumper

py main.py # or python main.py or python3 main.py

скачать код можно тут:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Последнее редактирование:
Полный список имен есть в weapon.py файле:
Expand Collapse Copy
class Weapon(Enum):
    WEAPON_DEAGLE = 1
    WEAPON_ELITE = 2
    WEAPON_FIVESEVEN = 3
    WEAPON_GLOCK = 4
    WEAPON_AK47 = 7
    WEAPON_AUG = 8
    WEAPON_AWP = 9
    WEAPON_FAMAS = 10
    WEAPON_G3SG1 = 11
    ... # там есть все пушки, это всего лишь первые 11 индексов, в weapon.py они есть все.
enum.Enum -> enum.IntEnum
ps.
я б побоялся на мейне память читать напрямую из питоновского вма...
 
Назад
Сверху Снизу