IzerodayI Опубликовано 20 марта, 2018 Поделиться Опубликовано 20 марта, 2018 Статью пишу первый раз , так , что где будет не понятно - спрашивайте Python под GHL флагом Часть 1 В этой статье (будет из нескольких частей) я полностью объясни и напишу рабочий автошот для игры Начну с введения: 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
JustHack Опубликовано 20 марта, 2018 Поделиться Опубликовано 20 марта, 2018 (изменено) [censored] Изменено 11 апреля, 2020 пользователем JustHack Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 20 марта, 2018 Поделиться Опубликовано 20 марта, 2018 7 минут назад, JustHack сказал: 5. Писать и так не очень быстрый триггербот, да еще и на питоне, который в скорости исполнения, отстает от того же C#... Если его скомпилировать на PyPy, без динамической типизации, то будет немного медленнее работать, чем на cpp, а может даже и на его уровне, все зависит от алгоритма. Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 20 марта, 2018 Автор Поделиться Опубликовано 20 марта, 2018 1 час назад, JustHack сказал: Чуть чуть конструктивной критики вставляю, ты же не против? Всеми руками За ! 1 час назад, JustHack сказал: 0. Правильнее было бы, назвать тему "Триггербот для Crossfire". Автошот, это другое немного. был бы рад объяснению что такое автошот , реально (без сарказма) 1 час назад, JustHack сказал: 1. Я на питоне не пишу, но мне кажется, что многовато кода, для простого триггербота по цвету. это только "пипетка" для определения нужного параметра в будущем, визуально видеть лучше и все ! PS готовый код намного короче... 1 час назад, JustHack сказал: 2. Почему бы сразу не выложить всю статью? Я так понимаю, сам триггербот уже готов? Или ты в-процессе пишешь? Если в-процессе, тогда это больше похоже на заметки, а не на статью. можно было бы коротко описать всю статью , но хочется все подробно (для новичков), чтобы лишних вопросов не было , а если возникнут я с удовольствием отвечу 1 час назад, JustHack сказал: 3. Хотелось бы увидеть как на практике "это" работает. Перед смертью, хоть успеваем 1 пулю врагу пустить? есть две реализации обе твои , одна из них на python и без лишнего кода она работает достаточно быстро =) (все впереди) 1 час назад, JustHack сказал: 4. Вряд ли новичкам, да и вообще, стоит писать на питоне подобное. С тем же успехом можно и на AUTOIT писать. Вот если бы статья была на C# хотя бы, другое дело. Лол , конечно я для себя переписал алгоритм на с++ , работает как часы , смысл данной статью в том , как Я креативно подошел к данной задаче чтобы научить новичков думать и рассуждать для решение конкретных задач на примере своих рассуждений 1 час назад, JustHack сказал: 5. Писать и так не очень быстрый триггербот, да еще и на питоне, который в скорости исполнения, отстает от того же C#... Python я выбрал только потому , что хотел посмотреть на его способности и он меня впечатлил , не C# же PS а вообще ЯП дело вкуса , достаточно лишь понять алгоритм работы Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 20 марта, 2018 Поделиться Опубликовано 20 марта, 2018 12 минут назад, IzerodayI сказал: был бы рад объяснению что такое автошот , реально (без сарказма) Автоматический выстрел - обычно просто доп. надстройка к основной "чит-функции" типа Aimbot - AutoShoot, AutoCrouch и прочее. А триггер - это условие вызова. Ну я это так трактую. В случае с твоим читом "триггер" ближе подходит. Ну це моя думка. Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 20 марта, 2018 Автор Поделиться Опубликовано 20 марта, 2018 12 минут назад, ReWanet сказал: В случае с твоим читом "триггер" ближе подходит Спасибо за пояснения ) Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 20 марта, 2018 Поделиться Опубликовано 20 марта, 2018 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 20 марта, 2018 Автор Поделиться Опубликовано 20 марта, 2018 (изменено) Часть 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 методом пропорций или руками , не зря же присутствует визуальная часть программы, будите видеть все наглядно 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 в теории может быть ложный выстрел , на практике не встречал Изменено 20 марта, 2018 пользователем IzerodayI 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
X86Jumps Опубликовано 20 марта, 2018 Поделиться Опубликовано 20 марта, 2018 а в каких играх отображается ник при наведение на врага? Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 20 марта, 2018 Автор Поделиться Опубликовано 20 марта, 2018 (изменено) PS конец второй части , оцениваем и обсуждаем , приветствуется конструктивная критика, продолжение следует... Изменено 20 марта, 2018 пользователем IzerodayI Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 20 марта, 2018 Автор Поделиться Опубликовано 20 марта, 2018 (изменено) 1 минуту назад, X86Jumps сказал: а в каких играх отображается ник при наведение на врага? В данном случае статья о игре Crossfire , может еще в каких - то есть Изменено 20 марта, 2018 пользователем IzerodayI Ссылка на комментарий Поделиться на другие сайты Поделиться
X86Jumps Опубликовано 20 марта, 2018 Поделиться Опубликовано 20 марта, 2018 (изменено) аа, я не понял что это название игры)) а надпись всегда ниже? всегда одно и тоже расстояние? цвета надписи для врага не меняются через настройки? Изменено 20 марта, 2018 пользователем X86Jumps Ссылка на комментарий Поделиться на другие сайты Поделиться
JustHack Опубликовано 21 марта, 2018 Поделиться Опубликовано 21 марта, 2018 (изменено) [censored] Изменено 11 апреля, 2020 пользователем JustHack Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 21 марта, 2018 Автор Поделиться Опубликовано 21 марта, 2018 1 час назад, JustHack сказал: Зачем наставлять людей, на заранее тупиковый путь? Создание триггера по цвету, да к тому же, для 1 конкретной игры. создал статью специально , чтобы помочь человеку в этой теме : Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 марта, 2018 Поделиться Опубликовано 22 марта, 2018 16 часов назад, JustHack сказал: Зачем наставлять людей, на заранее тупиковый путь? Чем больше инфы тем лучше. 14 часов назад, IzerodayI сказал: создал статью специально Никого не слушай, за статью спасибо, Продолжай писать статьи, а лучше видео. Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 22 марта, 2018 Автор Поделиться Опубликовано 22 марта, 2018 (изменено) Часть 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 статья писалась в помощь теме "исходники автошота с#" , приветствуется критика , отвечу на все непонятные вопросы Upd: смотрите "Часть 2" для самостоятельного подбора Y Изменено 22 марта, 2018 пользователем IzerodayI 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
JustHack Опубликовано 24 марта, 2018 Поделиться Опубликовано 24 марта, 2018 (изменено) [censored] Изменено 11 апреля, 2020 пользователем JustHack Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 25 марта, 2018 Автор Поделиться Опубликовано 25 марта, 2018 Спойлер Вот видео , работает достаточно шустро , так ,что вполне рабочий способ 1 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 25 марта, 2018 Автор Поделиться Опубликовано 25 марта, 2018 В данном видео я мышкой только вожу по столу. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 25 марта, 2018 Поделиться Опубликовано 25 марта, 2018 1 час назад, IzerodayI сказал: Вот видео ну если компенсатор отдачи запилить, то будет вообще идеально. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость faetz0rrrr Опубликовано 17 мая, 2020 Поделиться Опубликовано 17 мая, 2020 Здравствуйте, пытался запустить скрипт, но выдаёт ошибку ModuleNotFoundError: No module named 'pyautogui' Что с этим делать? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 мая, 2020 Поделиться Опубликовано 18 мая, 2020 20 часов назад, faetz0rrrr сказал: ModuleNotFoundError: No module named 'pyautogui' Как минимум, установить модуль, который отсутствует. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость ifernando Опубликовано 31 мая, 2020 Поделиться Опубликовано 31 мая, 2020 В 18.05.2020 в 10:28, Xipho сказал: Как минимум, установить модуль, который отсутствует. Можете скинуть готовый скрипт? Я ничего не понимаю в python, вставил код вместо другого скрипта, так он вообще не запускается. Буду очень благодарен Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 31 мая, 2020 Поделиться Опубликовано 31 мая, 2020 5 часов назад, ifernando сказал: Можете скинуть готовый скрипт? Я ничего не понимаю в python Нет, ошибка ерундовая, решение нагугливается за три секунды. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость faetz0rrrr Опубликовано 23 июня, 2020 Поделиться Опубликовано 23 июня, 2020 В 18.05.2020 в 09:28, Xipho сказал: Как минимум, установить модуль, который отсутствует. Хорошо, я его установил, но ничего не работает Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения