Перейти к содержанию
IzerodayI

AutoShot for CrossFire

Рекомендуемые сообщения

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

 

Python под GHL флагом B)

Часть 1

В этой статье (будет из нескольких частей) я полностью объясни и напишу рабочий автошот для игры :ph34r:

Начну с введения: 

1) Определимся с языком программирования , для меня пал выбор на язык python так как давно хотел его изучить начать писать на нем  (язык очень простой , да и библиотек сторонних куча, что должно радовать)PS для вас может быть тот который хорошо знаете

2) представим как должна работать программа :

Программа не как не воздействует на игру, не читает/ не пишет в память, не инжектится в код, а работает как стороннее приложение благодаря чему не доступна для анти-читов, т.е. бан в игре получить почти не реально!

Программка сканирует цвет пикселей экрана в заранее заданной области, где обычно должен отображаться ник врага (по кому программа должна делать авто-выстрел), допустим цвет ника будет красный и должен появляться при наведении прицелом на врага, как только это условие соблюдается и в заданной области появляются пиксели заданного(красного) цвета то программа имитируя нажатие ЛКМ/ПКМ делает выстрел по врагу , задержка между выстрелами по желанию, и так далее....

Спойлер

это я взял с темы исходники автошота

3) вообразим алгоритм программы :

1) программа обнаруживает ник противника (пиксельно)
2) программа имитирует выстрел 

Ну что ж , начнем :

Сразу первый этап выполнять "круто" , начнем с малого , определим цвет пикселя под мышкой (компьютерной) .

1 этап:

В этом нам поможет классная статья с хабрахабр (в комментариях он оставил ссылку на gamehacklab, явно кто-то из наших, я оставлю ссылку на статью )  PS рекомендую к прочтению ^_^

Нагло скопируем код Воспользуемся его наработками

Спойлер

from graphics import *# Здесь и далее импортируемый модуль графических примитивов(скачивается отдельно)
import pyautogui #Здесь и далее импортируемый модуль автоматизации ( скачивается отдельно )
import time # время же. (Стандартный модуль)

def main():# определяем мэйн функцию
    win = GraphWin("pipetka", 200, 200, autoflush=True)#создаем графическую форму размером 200х200 и элементы на ней
    x, y = pyautogui.position()#получаем в x, y координаты мыши
    r, g, b = pyautogui.pixel(x, y)# получаем в r, g, b цвет

    ColorDot = Circle(Point(100, 100), 25)# создаем точку, отображающую цвет
    ColorDot.setFill(color_rgb(r, g, b))# устанавливает ей заливку из ранее полученных цветов
    ColorDot.draw(win)# рисуем на форме win

    RGBtext = Entry(Point(win.getWidth()/2, 25), 10)# создаем RGB вывод
    RGBtext.draw(win)# рисуем на форме win

    RGBstring = Entry(Point(win.getWidth()/2, 45), 10)#создаем вывод цвета в web стиле
    RGBstring.draw(win)# рисуем на форме win

    Coordstring = Entry(Point(win.getWidth() / 2, 185), 10)# создаем отображение координат
    Coordstring.draw(win)# рисуем на форме win


    while True: # цикл перереисовки формы
        time.sleep(0.1)# задержка в 0.1 с, чтобы питон не сходил с ума
        x, y = pyautogui.position()#получаем в x, y координаты мыши
        r, g, b = pyautogui.pixel(x, y)# получаем в r, g, b цвет
        ColorDot.setFill(color_rgb(r, g, b))#Обновляем цвет
        RGBtext.setText(pyautogui.pixel(x, y))#Обновляем RGB
        RGBstring.setText(color_rgb(r, g, b))#Обновляем web цвет
        Coordstring.setText(str(x)+" "+ str(y) )#Обновляем координаты
        win.flush()# Даем команду на перерисовку формы
#основной код начинается ниже.

if __name__=="__main__":
	main()#вызываем нашу функцию.

 

Все замечательно , с малой задачей справились.

2 этап : 

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

Создадим дополнительно пару переменных (модернизируем программу под наши нужды) и получим такое: картинка

 

Тут я использовал 5 пикселей чтобы наверняка   определить ник точно :

где x - это горизонтальная точка 
и от нее "отходим" влево и вправо

Код программы :

Спойлер

#------------
import graphics  # Здесь и далее импортируемый модуль графических примитивов(скачивается отдельно)
import pyautogui #Здесь и далее импортируемый модуль автоматизации ( скачивается отдельно )
import time # время (Стандартный модуль)


def main():# определяем мэйн функцию
    
    win = graphics.GraphWin("pipshot", 300, 350, autoflush=True)#GraphWin("pipshot", 200, 200, autoflush=True)#создаем графическую форму 

    x, y = pyautogui.position()#получаем в x, y координаты мыши
    r, g, b = pyautogui.pixel(x, y)# получаем в r, g, b цвет
    r1, g1, b1 = pyautogui.pixel(x, y)
    r2, g2, b2 = pyautogui.pixel(x, y)
    r3, g3, b3 = pyautogui.pixel(x, y)
    r4, g4, b4 = pyautogui.pixel(x, y)

    # Рисуем круги ====================================================================================
    
    ColorDot = graphics.Circle(graphics.Point(50, 40), 25)# создаем точку, отображающую цвет
    ColorDot.setFill(graphics.color_rgb(r, g, b))# устанавливает ей заливку из ранее полученных цветов
    ColorDot.draw(win)# рисуем на форме win

    ColorDot1 = graphics.Circle(graphics.Point(50, 92), 25)# 2
    ColorDot1.setFill(graphics.color_rgb(r1 , g1, b1))
    ColorDot1.draw(win)

    ColorDot2 = graphics.Circle(graphics.Point(50, 144), 25)# 3
    ColorDot2.setFill(graphics.color_rgb(r2 , g2 , b2))
    ColorDot2.draw(win)

    ColorDot3 = graphics.Circle(graphics.Point(50, 196), 25)# 4
    ColorDot3.setFill(graphics.color_rgb(r3 , g3 , b3))
    ColorDot3.draw(win)

    ColorDot4 = graphics.Circle(graphics.Point(50, 248), 25)# 5
    ColorDot4.setFill(graphics.color_rgb(r4 , g4 , b4))
    ColorDot4.draw(win)


    # Отображаем значения цветов =============================================================================
   
    RGBtext = graphics.Entry(graphics.Point(125 , 25), 10)# создаем RGB вывод 
    RGBtext.draw(win)# рисуем на форме win

    RGBstring = graphics.Entry(graphics.Point(125 , 45), 10)#создаем вывод цвета в web стиле
    RGBstring.draw(win)# рисуем на форме win

    RGBtext1 = graphics.Entry(graphics.Point(125 , 77), 10)# создаем RGB вывод 
    RGBtext1.draw(win)# рисуем на форме win

    RGBstring1 = graphics.Entry(graphics.Point(125 , 97), 10)#создаем вывод цвета в web стиле
    RGBstring1.draw(win)# рисуем на форме win
    
    RGBtext2 = graphics.Entry(graphics.Point(125 , 129), 10)# создаем RGB вывод 
    RGBtext2.draw(win)# рисуем на форме win

    RGBstring2 = graphics.Entry(graphics.Point(125 , 149), 10)#создаем вывод цвета в web стиле
    RGBstring2.draw(win)# рисуем на форме win
    
    RGBtext3 = graphics.Entry(graphics.Point(125 , 181), 10)# создаем RGB вывод 
    RGBtext3.draw(win)# рисуем на форме win

    RGBstring3 = graphics.Entry(graphics.Point(125 , 201), 10)#создаем вывод цвета в web стиле
    RGBstring3.draw(win)# рисуем на форме win

    RGBtext4 = graphics.Entry(graphics.Point(125 , 233), 10)# создаем RGB вывод 
    RGBtext4.draw(win)# рисуем на форме win

    RGBstring4 = graphics.Entry(graphics.Point(125 , 253), 10)#создаем вывод цвета в web стиле
    RGBstring4.draw(win)# рисуем на форме win


    
    # координаты пикселей*    ===================================================================

    Coordstring = graphics.Entry(graphics.Point(230, 35), 10)# создаем отображение координат
    Coordstring.draw(win)# рисуем на форме win

    Coordstring1 = graphics.Entry(graphics.Point(230, 87), 10)# создаем отображение координат
    Coordstring1.draw(win)# рисуем на форме win
    
    Coordstring2 = graphics.Entry(graphics.Point(230, 139), 10)# создаем отображение координат
    Coordstring2.draw(win)# рисуем на форме win

    Coordstring3 = graphics.Entry(graphics.Point(230, 191), 10)# создаем отображение координат
    Coordstring3.draw(win)# рисуем на форме win

    Coordstring4 = graphics.Entry(graphics.Point(230, 243), 10)# создаем отображение координат
    Coordstring4.draw(win)# рисуем на форме win

    

    while True: # цикл перереисовки формы
        time.sleep(0.01)# задержка в 0.1 
        x, y = pyautogui.position()#получаем в x, y координаты мыши

        x1 = x + 3
        x2 = x + 6

        x3 = x - 3
        x4 = x - 6
        


        r, g, b = pyautogui.pixel(x, y)# получаем в r, g, b цвет
        r1, g1, b1 = pyautogui.pixel(x1, y)#x1 y
        r2, g2, b2 = pyautogui.pixel(x2, y)#x2 y
        r3, g3, b3 = pyautogui.pixel(x3, y)#x3 y
        r4, g4, b4 = pyautogui.pixel(x4, y)#x4 y


        ColorDot.setFill(graphics.color_rgb(r, g, b))#Обновляем цвет
        RGBtext.setText(pyautogui.pixel(x, y))#Обновляем RGB
        RGBstring.setText(graphics.color_rgb(r, g, b))#Обновляем web цвет

        ColorDot1.setFill(graphics.color_rgb(r1, g1, b1))#Обновляем цвет
        RGBtext1.setText(pyautogui.pixel(x1, y))#Обновляем RGB
        RGBstring1.setText(graphics.color_rgb(r1, g1, b1))#Обновляем web цвет

        ColorDot2.setFill(graphics.color_rgb(r2, g2, b2))#Обновляем цвет
        RGBtext2.setText(pyautogui.pixel(x2, y))#Обновляем RGB
        RGBstring2.setText(graphics.color_rgb(r2, g2, b2))#Обновляем web цвет

        ColorDot3.setFill(graphics.color_rgb(r3, g3, b3))#Обновляем цвет
        RGBtext3.setText(pyautogui.pixel(x3, y))#Обновляем RGB
        RGBstring3.setText(graphics.color_rgb(r3, g3, b3))#Обновляем web цвет

        ColorDot4.setFill(graphics.color_rgb(r4, g4, b4))#Обновляем цвет
        RGBtext4.setText(pyautogui.pixel(x4, y))#Обновляем RGB
        RGBstring4.setText(graphics.color_rgb(r4, g4, b4))#Обновляем web цвет
        
        
        Coordstring.setText(str(x)+" "+ str(y) )#Обновляем координаты
        Coordstring1.setText(str(x1)+" "+ str(y) )#Обновляем координаты #x1 y
        Coordstring2.setText(str(x2)+" "+ str(y) )#Обновляем координаты #x2 y
        Coordstring3.setText(str(x3)+" "+ str(y) )#Обновляем координаты #x3 y
        Coordstring4.setText(str(x4)+" "+ str(y) )#Обновляем координаты #x4 y

        win.flush()# Даем команду на перерисовку формы
        

#основной код начинается ниже.
if __name__=="__main__":
    main()#вызываем нашу функцию.
    



 

Теперь делаем скрин игры , определяем цвет ника , рисуем прямоугольники , радуемся , что программа работает и/или просто вводим мышкой по экрану....

PS конец первой части , оцениваем и обсуждаем , продолжение следует по мере возможности(скоро) ....

 

Спойлер

качество кода не очень , приветствуется конструктивная критика как его сделать лучше ;)

 

  • Понравилось 4
  • Плюс 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чуть чуть конструктивной критики вставляю, ты же не против? :D

 

0. Правильнее было бы, назвать тему "Триггербот для Crossfire". Автошот, это другое немного.

1. Я на питоне не пишу, но мне кажется, что многовато кода, для простого триггербота по цвету.

2. Почему бы сразу не выложить всю статью? Я так понимаю, сам триггербот уже готов? Или ты в-процессе пишешь? Если в-процессе, тогда это больше похоже на заметки, а не на статью.

3. Хотелось бы увидеть как на практике "это" работает. Перед смертью, хоть успеваем 1 пулю врагу пустить?

4. Вряд ли новичкам, да и вообще, стоит писать на питоне подобное. С тем же успехом можно и на AUTOIT писать. Вот если бы статья была на C# хотя бы, другое дело.

5. Писать и так не очень быстрый триггербот, да еще и на питоне, который в скорости исполнения, отстает от того же C#...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, JustHack сказал:

5. Писать и так не очень быстрый триггербот, да еще и на питоне, который в скорости исполнения, отстает от того же C#...

 

Если его скомпилировать на PyPy, без динамической типизации, то будет немного медленнее работать, чем на cpp, а может даже и на его уровне, все зависит от алгоритма.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, JustHack сказал:

Чуть чуть конструктивной критики вставляю, ты же не против? :D

Всеми руками За ! B)

1 час назад, JustHack сказал:

0. Правильнее было бы, назвать тему "Триггербот для Crossfire". Автошот, это другое немного.

был бы рад объяснению что такое автошот , реально (без сарказма)

1 час назад, JustHack сказал:

1. Я на питоне не пишу, но мне кажется, что многовато кода, для простого триггербота по цвету.

это только "пипетка" для определения нужного параметра в будущем, визуально видеть лучше и все ;) ! PS готовый код намного короче...

1 час назад, JustHack сказал:

2. Почему бы сразу не выложить всю статью? Я так понимаю, сам триггербот уже готов? Или ты в-процессе пишешь? Если в-процессе, тогда это больше похоже на заметки, а не на статью.

можно было бы коротко описать всю статью , но хочется все подробно (для новичков), чтобы лишних вопросов не было ,  а если возникнут я с удовольствием отвечу :D

1 час назад, JustHack сказал:

3. Хотелось бы увидеть как на практике "это" работает. Перед смертью, хоть успеваем 1 пулю врагу пустить?

есть две реализации обе твои  , одна из них на python  и без лишнего кода она работает достаточно быстро =) (все впереди) 

1 час назад, JustHack сказал:

4. Вряд ли новичкам, да и вообще, стоит писать на питоне подобное. С тем же успехом можно и на AUTOIT писать. Вот если бы статья была на C# хотя бы, другое дело.

Лол , конечно я для себя переписал алгоритм на с++ , работает как часы B) , смысл данной статью в том , как Я креативно  подошел к данной задаче  чтобы научить новичков думать и рассуждать для решение конкретных задач на примере своих рассуждений 

1 час назад, JustHack сказал:

5. Писать и так не очень быстрый триггербот, да еще и на питоне, который в скорости исполнения, отстает от того же C#...

 Python я выбрал только потому , что хотел посмотреть на его способности и он меня впечатлил , не C# же  

PS а вообще ЯП дело вкуса , достаточно лишь понять алгоритм работы :ph34r:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, IzerodayI сказал:

был бы рад объяснению что такое автошот , реально (без сарказма)

Автоматический выстрел :D - обычно просто доп. надстройка к основной "чит-функции" типа Aimbot - AutoShoot, AutoCrouch и прочее.
А триггер - это условие вызова. Ну я это так трактую. В случае с твоим читом "триггер" ближе подходит. Ну це моя думка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, ReWanet сказал:

В случае с твоим читом "триггер" ближе подходит

Спасибо за пояснения )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

IzerodayI, а почему, не использовал API windows? 

Спойлер

If OpenWindow(0, 0, 0, 150, 150, "Primer", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  CanvasGadget(1, 5, 5, 140, 140)
  
  Repeat     
    Event = WindowEvent() 
    
    If StartDrawing(CanvasOutput(1))
      dc=CreateDC_("DISPLAY",0,0,0) 
      GetCursorPos_(mouse.POINT)
      p=GetPixel_(dc,mouse\x,mouse\y) 
      DeleteDC_(dc)
      Circle(70, 70, 64, $000000)            
      Circle(70, 70, 60, p) 
      StopDrawing()
    EndIf
    
  Until Event = #PB_Event_CloseWindow
EndIf

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Часть 2

 

Вот и долгожданное   продолжение ^_^ , мы закончили на определении 5 пикселей для цвета ника, заскринив игру, определим цвет ника (для большей уверенности перенесем цвет в paint и воспроизведем цвет по полученным данным), вот ,что получилось картинка2 , теперь мы знаем , что нам искать в игре.....

Так как в игре мышка не двигается (координатно на экране), то стоит найти const-ное значение от прицела игры(мышки) до ника игрока , приступим

Как я сделал : 

Спойлер

разрешения экрана : 1920 х 1080
разрешение игры : 800 х 600 (оконный режим)

 

Все просто , в ручную , подбирал и смотрел , когда получилась так (достаточно быстро подобрал) к переменной y+=75 .

К предыдущему коду добавьте это 

# это было \/ 
x, y = pyautogui.position()
#эту переменную добавить
y+=75
# это было \/
x1 = x + 3
x2 = x + 6
x3 = x - 3
x4 = x - 6

 получается так , что от цели игры мы прибавили(спустились вниз по экрану) по ( вертикали ) Y 75 пикселей и по ( горизонтали ) X "разошлись" влево и вправо , чтобы задетектить ник игрока 

PS если у вас другое разрешение экрана можете подобрать Y методом пропорций или руками , не зря же присутствует визуальная часть программы, будите видеть все наглядно :ph34r: 

3 этап:

Как же нам определить какого цвета ник игрока?!  Вот тут передо мной возникла интересная задачка , так как мы определяем цвет пикселя , а буквы на ники могут быть разные (доказано опытным путем - программой наводил на разные ники и смотрел) , то с const-ным значением цвета ника определится было нельзя(все зависело от буквы на которую попадал пиксел и я получил в итоге все оттенки красного)...

Я вспомнил , что цвет состоит из RGB (R-красный, G-зеленый, B- синий) и я придумал как определить оттенок красного (скорее всего это было придумано до меня), если R/3+5 и проверить ,что он больше G и B , то это точно оттенок красного(нужный нам ник противника).

Добавим еще кода :

Спойлер

if b!=-1 and b1!=-1 and b2!=-1 and b3!=-1 and b4!=-1 :           
            if r>12 :
                if r/3+5>g and r/3+5>b :      
                    print("shot : ",graphics.color_rgb(r, g, b))

 

где 

if b!=-1 and b1!=-1 and b2!=-1 and b3!=-1 and b4!=-1 :

защита от "плавающего" бага

if r>12:

с помощью проверки убираем возможность стрелять по голубому союзнику(нику)

if r/3+5>g and r/3+5>b : 

и тут определяем оттенок ли это красного , если удачно , пишем , что имитировали нажатие по такому цвету ...

 

PS вот и закончилась реализация первой части программы (за 3 простых этапа) :

5 часов назад, IzerodayI сказал:

1) программа обнаруживает ник противника (пиксельно)

PSS код со всеми изменениями на данном этапе

Спойлер

#------------
import graphics  # Здесь и далее импортируемый модуль графических примитивов(скачивается отдельно)
import pyautogui #Здесь и далее импортируемый модуль автоматизации ( скачивается отдельно )
import time # время (Стандартный модуль)


def main():# определяем мэйн функцию
    
    win = graphics.GraphWin("pipshot", 300, 350, autoflush=True)
    
    x, y = pyautogui.position()#получаем в x, y координаты мыши
    
    r, g, b = pyautogui.pixel(x, y)# получаем в r, g, b цвет
    r1, g1, b1 = pyautogui.pixel(x, y)
    r2, g2, b2 = pyautogui.pixel(x, y)
    r3, g3, b3 = pyautogui.pixel(x, y)
    r4, g4, b4 = pyautogui.pixel(x, y)

    # Рисуем круги ====================================================================================
    
    ColorDot = graphics.Circle(graphics.Point(50, 40), 25)# создаем точку, отображающую цвет
    ColorDot.setFill(graphics.color_rgb(r, g, b))# устанавливает ей заливку из ранее полученных цветов
    ColorDot.draw(win)# рисуем на форме win

    ColorDot1 = graphics.Circle(graphics.Point(50, 92), 25)# 2
    ColorDot1.setFill(graphics.color_rgb(r1 , g1, b1))
    ColorDot1.draw(win)

    ColorDot2 = graphics.Circle(graphics.Point(50, 144), 25)# 3
    ColorDot2.setFill(graphics.color_rgb(r2 , g2 , b2))
    ColorDot2.draw(win)

    ColorDot3 = graphics.Circle(graphics.Point(50, 196), 25)# 4
    ColorDot3.setFill(graphics.color_rgb(r3 , g3 , b3))
    ColorDot3.draw(win)

    ColorDot4 = graphics.Circle(graphics.Point(50, 248), 25)# 5
    ColorDot4.setFill(graphics.color_rgb(r4 , g4 , b4))
    ColorDot4.draw(win)


    # Отображаем значения цветов =============================================================================
   
    RGBtext = graphics.Entry(graphics.Point(125 , 25), 10)# создаем RGB вывод 
    RGBtext.draw(win)# рисуем на форме win

    RGBstring = graphics.Entry(graphics.Point(125 , 45), 10)#создаем вывод цвета в web стиле
    RGBstring.draw(win)# рисуем на форме win

    RGBtext1 = graphics.Entry(graphics.Point(125 , 77), 10)# создаем RGB вывод 
    RGBtext1.draw(win)# рисуем на форме win

    RGBstring1 = graphics.Entry(graphics.Point(125 , 97), 10)#создаем вывод цвета в web стиле
    RGBstring1.draw(win)# рисуем на форме win
    
    RGBtext2 = graphics.Entry(graphics.Point(125 , 129), 10)# создаем RGB вывод 
    RGBtext2.draw(win)# рисуем на форме win

    RGBstring2 = graphics.Entry(graphics.Point(125 , 149), 10)#создаем вывод цвета в web стиле
    RGBstring2.draw(win)# рисуем на форме win
    
    RGBtext3 = graphics.Entry(graphics.Point(125 , 181), 10)# создаем RGB вывод 
    RGBtext3.draw(win)# рисуем на форме win

    RGBstring3 = graphics.Entry(graphics.Point(125 , 201), 10)#создаем вывод цвета в web стиле
    RGBstring3.draw(win)# рисуем на форме win

    RGBtext4 = graphics.Entry(graphics.Point(125 , 233), 10)# создаем RGB вывод 
    RGBtext4.draw(win)# рисуем на форме win

    RGBstring4 = graphics.Entry(graphics.Point(125 , 253), 10)#создаем вывод цвета в web стиле
    RGBstring4.draw(win)# рисуем на форме win

    
    # координаты пикселей*    ===================================================================

    Coordstring = graphics.Entry(graphics.Point(230, 35), 10)# создаем отображение координат
    Coordstring.draw(win)# рисуем на форме win

    Coordstring1 = graphics.Entry(graphics.Point(230, 87), 10)# создаем отображение координат
    Coordstring1.draw(win)# рисуем на форме win
    
    Coordstring2 = graphics.Entry(graphics.Point(230, 139), 10)# создаем отображение координат
    Coordstring2.draw(win)# рисуем на форме win

    Coordstring3 = graphics.Entry(graphics.Point(230, 191), 10)# создаем отображение координат
    Coordstring3.draw(win)# рисуем на форме win

    Coordstring4 = graphics.Entry(graphics.Point(230, 243), 10)# создаем отображение координат
    Coordstring4.draw(win)# рисуем на форме win

    

    while True: # цикл перереисовки формы
        time.sleep(0.01)
        x, y = pyautogui.position()#получаем в x, y координаты мыши
       
        y+=75

        x1 = x + 3
        x2 = x + 6

        x3 = x - 3
        x4 = x - 6
        


        r, g, b = pyautogui.pixel(x, y)# получаем в r, g, b цвет
        r1, g1, b1 = pyautogui.pixel(x1, y)#x1 y
        r2, g2, b2 = pyautogui.pixel(x2, y)#x2 y
        r3, g3, b3 = pyautogui.pixel(x3, y)#x3 y
        r4, g4, b4 = pyautogui.pixel(x4, y)#x4 y
      
        
        if b!=-1 and b1!=-1 and b2!=-1 and b3!=-1 and b4!=-1 :

            if r>12 :
                if r/3+5>g and r/3+5>b :     
                    print("shot : ",graphics.color_rgb(r, g, b))
				
                    
            if r1>12 :
                if r1/3+5>g1 and r1/3+5>b1 : 
                    print("shot1 : ",graphics.color_rgb(r1, g1, b1))
					
                    
            if r2>12 :
                if r2/3+5>g2 and r2/3+5>b2 :
                    print("shot2 : ",graphics.color_rgb(r2, g2, b2))
					
                    
            if r3>12 :
                if r3/3+5>g3 and r3/3+5>b3 :
                    print("shot3 : ",graphics.color_rgb(r3, g3, b3))
					
                    
            if r4>12 :
                if r4/3+5>g4 and r4/3+5>b4 :                 
                    print("shot4 : ",graphics.color_rgb(r4, g4, b4))
					
                    
        ColorDot.setFill(graphics.color_rgb(r, g, b))#Обновляем цвет
        RGBtext.setText(pyautogui.pixel(x, y))#Обновляем RGB
        RGBstring.setText(graphics.color_rgb(r, g, b))#Обновляем web цвет

        ColorDot1.setFill(graphics.color_rgb(r1, g1, b1))#Обновляем цвет
        RGBtext1.setText(pyautogui.pixel(x1, y))#Обновляем RGB
        RGBstring1.setText(graphics.color_rgb(r1, g1, b1))#Обновляем web цвет

        ColorDot2.setFill(graphics.color_rgb(r2, g2, b2))#Обновляем цвет
        RGBtext2.setText(pyautogui.pixel(x2, y))#Обновляем RGB
        RGBstring2.setText(graphics.color_rgb(r2, g2, b2))#Обновляем web цвет

        ColorDot3.setFill(graphics.color_rgb(r3, g3, b3))#Обновляем цвет
        RGBtext3.setText(pyautogui.pixel(x3, y))#Обновляем RGB
        RGBstring3.setText(graphics.color_rgb(r3, g3, b3))#Обновляем web цвет

        ColorDot4.setFill(graphics.color_rgb(r4, g4, b4))#Обновляем цвет
        RGBtext4.setText(pyautogui.pixel(x4, y))#Обновляем RGB
        RGBstring4.setText(graphics.color_rgb(r4, g4, b4))#Обновляем web цвет
        
        
        Coordstring.setText(str(x)+" "+ str(y) )#Обновляем координаты
        Coordstring1.setText(str(x1)+" "+ str(y) )#Обновляем координаты #x1 y
        Coordstring2.setText(str(x2)+" "+ str(y) )#Обновляем координаты #x2 y
        Coordstring3.setText(str(x3)+" "+ str(y) )#Обновляем координаты #x3 y
        Coordstring4.setText(str(x4)+" "+ str(y) )#Обновляем координаты #x4 y
        
        win.flush()# Даем команду на перерисовку формы
        

#основной код начинается ниже.
if __name__=="__main__":
    main()#вызываем нашу функцию.
    



 

PSSS в теории может быть ложный выстрел , на практике не встречал

Изменено пользователем IzerodayI
  • Понравилось 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а в каких играх отображается ник при наведение на врага?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PS конец второй части , оцениваем и обсуждаем  , приветствуется конструктивная критика,  продолжение следует...

Изменено пользователем IzerodayI

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, X86Jumps сказал:

а в каких играх отображается ник при наведение на врага?

В данном случае статья о игре Crossfire , может еще в каких - то есть 

Изменено пользователем IzerodayI

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

аа, я не понял что это название игры))

а надпись всегда ниже? всегда одно и тоже расстояние? цвета надписи для врага не меняются через настройки?

Изменено пользователем X86Jumps

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
17 часов назад, IzerodayI сказал:

приветствуется конструктивная критика

Зачем наставлять людей, на заранее тупиковый путь? Создание триггера по цвету, да к тому же, для 1 конкретной игры. Этот способ, в этой то игре, не понятно как работать будет, а в другой вообще не будет. Кто будет учиться, они же будут на своей игре пытаться этот способ реализовать. А как ты представляешь себе, пиксельный триггербот в игре, где нет подсветки ников врагов и 100 разных скинов, в каждом из которых еще 100 разных оттенков? Это все-равно, что людей учить пользоваться таксофон, когда повсеместно мобильная связь. Да, за написание статьи, молодец. НО...тема указывает начинающим на тупиковый путь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, JustHack сказал:

Зачем наставлять людей, на заранее тупиковый путь? Создание триггера по цвету, да к тому же, для 1 конкретной игры.

создал статью специально , чтобы помочь человеку в этой теме :

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16 часов назад, JustHack сказал:

Зачем наставлять людей, на заранее тупиковый путь?

Чем больше инфы тем лучше.

14 часов назад, IzerodayI сказал:

создал статью специально

Никого не слушай, за статью спасибо, Продолжай писать статьи, а лучше видео.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Часть 3

 

Осталась последняя часть статьи и триггер (автошот) для игры кроссфаер готов , что же нам осталось , так это только сымитировать нажатие на клавишу в игре , как мы это сделаем ?!  Сделаем это с помощью функции (тут можно почитать по подробней о ней - mouse_event)

mouse_event

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

import ctypes 

Теперь когда все известно напишем свою функцию и будем ее вызывать 

def autoshot():
    ctypes.windll.user32.mouse_event(2, 0, 0, 0, 0)     
    time.sleep(0.1)
    ctypes.windll.user32.mouse_event(4, 0, 0, 0, 0)

где 2- это флаг на MOUSEEVENTF_LEFTDOWN  и 4 - MOUSEEVENTF_LEFTUP  .

"Подшаманив" над "пипеткой" на python  можно получить вполне работоспособный скрипт :

Спойлер

#------------
from pyautogui import pixel, position #Здесь и далее импортируемый модуль автоматизации ( скачивается отдельно )
from time import sleep # время (Стандартный модуль)
from ctypes import windll

""" О скрипте :
________________________
|Форум : GameHackLab.ru|
|Автор : zeroday       |
|______________________|
По все вопросом и пожеланиям писать на форум GameHackLab <=--
"""



def autoshot():
    windll.user32.mouse_event(2, 0, 0, 0, 0)     
    sleep(0.1)
    windll.user32.mouse_event(4, 0, 0, 0, 0)
    

def main():# определяем мэйн функцию
    while True: # цикл 
        sleep(0.01)# задержка 
        x, y = position()#получаем в x, y координаты мыши

        y+=75
        x1 = x + 3
        x2 = x + 6
        x3 = x - 3
        x4 = x - 6

        r, g, b = pixel(x, y)# получаем в r, g, b цвет
        r1, g1, b1 = pixel(x1, y)#x1 y
        r2, g2, b2 = pixel(x2, y)#x2 y
        r3, g3, b3 = pixel(x3, y)#x3 y
        r4, g4, b4 = pixel(x4, y)#x4 y
       
        if b!=-1 and b1!=-1 and b2!=-1 and b3!=-1 and b4!=-1 :
            if r>12 :
                if r/3+5>g and r/3+5>b : 
                    autoshot()     
                    continue
            if r1>12 :
                if r1/3+5>g1 and r1/3+5>b1 : 
                    autoshot()
                    continue
            if r2>12 :
                if r2/3+5>g2 and r2/3+5>b2 :
                    autoshot()
                    continue
            if r3>12 :
                if r3/3+5>g3 and r3/3+5>b3 :
                    autoshot()
                    continue
            if r4>12 :
                if r4/3+5>g4 and r4/3+5>b4 :
                    autoshot()
                    continue
#основной код начинается ниже.
if __name__=="__main__":
    print("________________________")
    print("|Форум : GameHackLab.ru|")
    print("|Автор : zeroday       |")
    print("|______________________|")
    print("По все вопросом и пожеланиям писать на форум GameHackLab <=--")
    sleep(2)
    print("В работе ...")
    main()#вызываем нашу функцию.

 

Поговорим о плюсах :

- так как это скрипт на python , то приватным он не получится , что позволяет пользователю посмотреть и убедиться , что в скрипте нет нежелательных функций для пользователя

- скрипт работает вполне быстро (первые 5 минут, потом надо перезапустить скрипт)

- поняв алгоритм работы можете переписать код на любой другой ЯП 

- при моей кривой игре скрипт позволяет занимать 1-3 место (если людей не много), но бывают кикают...

- в интернете достаточно популярен такой способ автошота (триггер-а)в игре кроссфаер

PS Грамотно подберите задержку под своё оружие и потренируйтесь на ботах 

минусы : 

- скрипт надо запускать от имени Администратора так как игра запускается от его имени и нажатие заработает (может есть другие легкие способы но они мне не известны)

- есть баг который со временим все больше "ест" ЦП компьютера (из-за чего приходится перезапускать скрипт) , так и не исправил , но переписал алгоритм на с++ 

- Триггер по пикселем полностью не надежен (ложные срабатывания и ник появляется , а цель еще не на противнике)

PSS 

Вывод : 

Судите сами , есть + и - , готовый триггер (автошот) на игру мы написали и вы сами можете переписать алгоритм на любой другой вами любимый ЯП.

PSSS статья писалась в помощь теме "исходники автошота с#" , приветствуется критика , отвечу на все непонятные вопросы B)

 

 

 

Upd: смотрите "Часть 2" для самостоятельного подбора Y 

Изменено пользователем IzerodayI
  • Понравилось 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 22.03.2018 в 17:46, IzerodayI сказал:

отвечу на все непонятные вопросы B)

Я хотел бы, наглядно посмотреть, как "это" работает и игре.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Спойлер

 

Вот видео , работает достаточно шустро , так ,что вполне рабочий способ 

  • Понравилось 1
  • Плюс 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В данном видео я мышкой только вожу по столу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, IzerodayI сказал:

Вот видео

ну если компенсатор отдачи запилить, то будет вообще идеально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.