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

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
Ссылка на комментарий
Поделиться на другие сайты

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 и прочее.
А триггер - это условие вызова. Ну я это так трактую. В случае с твоим читом "триггер" ближе подходит. Ну це моя думка.

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

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
Ссылка на комментарий
Поделиться на другие сайты

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
Ссылка на комментарий
Поделиться на другие сайты

  • 2 года спустя...
  • 2 недели спустя...
В 18.05.2020 в 10:28, Xipho сказал:

Как минимум, установить модуль, который отсутствует.

Можете скинуть готовый скрипт? Я ничего не понимаю в python, вставил код вместо другого скрипта, так он вообще не запускается. Буду очень благодарен

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

  • 4 недели спустя...
В 18.05.2020 в 09:28, Xipho сказал:

Как минимум, установить модуль, который отсутствует.

Хорошо, я его установил, но ничего не работает

 

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

×
×
  • Создать...

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

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