Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/35: Рейтинг темы: голосов - 35, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 16.02.2013
Сообщений: 35

Получение информации о пикселе из игры

18.02.2013, 18:10. Показов 7790. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня есть два вопроса, на которые я пытаюсь найти ответ, возможно вы мне поможете:

Вопрос первый: Существует ли способ получить информацию о пикселе (цвет) из игры, работающей в полноэкранном режиме (Direct3D)?

Вопрос второй: Существует ли способ получать эту информацию скажем 30 раз в секунду, не вызывая при этом значительное замедление работы игры?

В данный момент я худо-бедно разобрался лишь в одном способе, он работает лишь для оконного режима и увы вызывает тормоза:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Drawing;
using System.Windows.Forms;
 
class Program
{
    static Color GetPixel(Point position)
    {
        using (var bitmap = new Bitmap(1, 1))
        {
            using (var graphics = Graphics.FromImage(bitmap))
            {
                graphics.CopyFromScreen(position, new Point(0, 0), new Size(1, 1));
            }
            return bitmap.GetPixel(0, 0);
        }
    }
 
    static void Main()
    {
        Console.WriteLine(GetPixel(Cursor.Position));
    }
}
Если я правильно понимаю (если не правильно - объясните пожалуйста) - в данном способе создаётся точечный рисунок размером 1*1 px и в него записываются данные о цвете пикселя, находящегося в месте курсора, которые затем выводятся на консоль. Вопрос - как с помощью данного способа запросить информацию о конкретном пикселе на экране - например x=500 y=500? Иными словами как в GetPixel(Point position) задать этот самый Point position вручную, а не с помощью Cursor.Position


----------
P.S. Нет, не бот. Просто автоматизация нажатия нужной клавиши, на основании полученной с экрана информации. Работает в связке с UserActivityHook.cs
Да, практически все темы касающиеся этого вопроса на этом форуме я прочёл, но не всё понял.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2013, 18:10
Ответы с готовыми решениями:

Получение цвета в определенном пикселе
Добрый день, друзья. У меня возник такой вопрос: У меня есть картинка *.png, скажем так "new.png". Можно ли, а если можно, то...

Определить количество цветов в палитре и объем информации об одном пикселе
Определите количество цветов в палитре и объем информации об одном пикселе, если в формате .bmp рисунок размером 600x800 точек занимает на...

Получить информацию о пикселе
Есть холст на котором рисуются кривые методом рисования однопиксельной текстуры в нужном пикселе задача найти пересечение одной кривой...

38
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.02.2013, 19:04
Студворк — интернет-сервис помощи студентам
по крайней мере у меня на посылаемые им сообщения игра не реагирует.
неправильно шлешь наверное. потому что защиты в браузерке от автоматических нажатий никаких, то тут только в руках дело.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
20.02.2013, 19:18
неправильно шлешь наверное. потому что защиты в браузерке от автоматических нажатий никаких, то тут только в руках дело.
Ну я пытался использовать пример из твоих кодов, по-разному редактируя-реакции не заметил. Но не сильно старался, так как фокус скачет в любом случае, а мне это совсем не нужно. Ссылку на игру я тебе скинул-ты конкретно с ней проверил?)
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.02.2013, 19:24
EvilFromHell, нет, у меня проблемы с флешем. она не идет.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
20.02.2013, 19:33
Цитата Сообщение от Winhttp22 Посмотреть сообщение
EvilFromHell, нет, у меня проблемы с флешем. она не идет.
Странно, как с ним могут быть проблемы Ты пробовал Spy++ом смотреть сообщения от аутоита? какие-то другие, кроме WM_CHAR, приходят? У меня-нет, но не могу сказать, что я все испробовал, ибо понял довольно быстро, что он мне явно не подходит. Но свою проблему до конца так и не решил, правда во многом по тому, что занимался другим.

Добавлено через 1 минуту
WM_CHAR обычно работает в чатах, эдитах и тд. В той игре в чат сообщение аутоитом тоже отправляется отлично, а вот управлять танком не выходит.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.02.2013, 19:40
EvilFromHell, я говорил, в чем проблема твоя.делаешь полностью скрин окна, потом перебираешь пиксели. на это все нужно время.

Добавлено через 1 минуту
Цитата Сообщение от EvilFromHell Посмотреть сообщение
WM_CHAR обычно работает в чатах, эдитах и тд. В той игре в чат сообщение аутоитом тоже отправляется отлично, а вот управлять танком не выходит.
странно, как я в игре эмулировал нажатия клавиш с помощью этих функций?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
20.02.2013, 19:52
EvilFromHell, я говорил, в чем проблема твоя.делаешь полностью скрин окна, потом перебираешь пиксели. на это все нужно время.
На один проход функции Mozgi() уходит обычно не более 20ти миллисекунд, а она включает в себя всю обработку скрина. На саму обработку пикселей уходит что-то в районе одной миллисекунды, а то и меньше. Остальное на копирование и прочую фигню. Этот вариант отпадает.
странно, как я в игре эмулировал нажатия клавиш с помощью этих функций?
Откуда же я знаю, что то была за игра, ты же название утаил, жадина То, что у тебя употреблено в том коде, я и пытался использовать-не получилось.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.02.2013, 20:13
я не только в той игре эмулировал нажатие клавиш этой функцией. да и можешь почитать об аутоите, для каких игр на нем пишут ботов. в сети есть русское сообщество, можешь поискать.

Добавлено через 5 минут
EvilFromHell, кстати, пробежался по твоему коду. ты каждых 100 мс высылаешь wm_keyup, wm_keydown?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
20.02.2013, 20:20
EvilFromHell, кстати, пробежался по твоему коду. ты каждых 100 мс высылаешь wm_keyup, wm_keydown?
Я высылаю WM_KEYDOWN каждые 100 мс, если быстрее-игра начинает тормозить, а если 1 мс поставить-зависает, а WM_KEYUP 1-2 раза при завершении. Теоретически работает даже в том случае, если послать 1 раз WM_KEYDOWN, но почему-то так точность ниже. При реальных нажатиях клавиатуры сообщения идут точно такие, какие я шлю, параметры я взял оттуда же, из Spy++. Логика, почему так происходит, до меня пока не дошла...
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.02.2013, 20:31
EvilFromHell, WM_KEYDOWN - это нажатие клавиши? зачем слать нажатие в таймере? когда стреляешь, то тоже нужно жать много раз клавишу, чтобы стрелять? наврятли. скорее зажал клавишу - и стрельба пошла? тогда достаточно послать один раз WM_KEYDOWN, и ожидать, если враг уничтожен, то послать WM_KEYUP.
много сообщений шлешь, от этого тоже висняки могут быть, браузер просто не успевает их обрабатывать. но не будем оффтопить, тема не об этом.
0
1 / 1 / 0
Регистрация: 16.02.2013
Сообщений: 35
20.02.2013, 20:31  [ТС]
Информацию о цвете получает, с этим всё хорошо (ну за исключением того, что приходится играть в оконном режиме). Методов нажатия клавиш я так понимаю несколько, вот этот, которым я воспользовался меня очень устраивает, к слову я даже его уже использую в игре, пока с простым алгоритмом(в коде его нет), но уже хоть какой-то результат от ковыряния в новой для меня области у меня есть

Проблема в том, что мне нужен метод получения информации о скажем 5+ пикселях единовременно при нажатии клавиши. Чтобы происходила следующая последовательность: я нажал клавишу (пусть будет R), программа просканировала 5 пикселей, на основании данной информации нажала одну из 4 клавиш, на которые у меня в игре назначены абилы. То, как я сейчас использую autoit в C# приводит к тому, что при нажатии клавиши R игра подвисает на пол секунды. Как сделать, чтобы этого не происходило - я не знаю.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
20.02.2013, 20:35
EvilFromHell, WM_KEYDOWN - это нажатие клавиши? зачем слать нажатие в таймере? когда стреляешь, то тоже нужно жать много раз клавишу, чтобы стрелять? наврятли. скорее зажал клавишу - и стрельба пошла? тогда достаточно послать один раз WM_KEYDOWN, и ожидать, если враг уничтожен, то послать WM_KEYUP.
много сообщений шлешь, от этого тоже висняки могут быть, браузер просто не успевает их обрабатывать. но не будем оффтопить, тема не об этом.
Ну тема о боте, наши сообщения тут могут пригодиться Стрельба у меня именно так и реализована, просто она не попала на форум ибо не вызывает проблем. Прочитай мой пост выше повнимательнее:
Теоретически работает даже в том случае, если послать 1 раз WM_KEYDOWN, но почему-то так точность ниже.
Именно из-за этого я и стал извращаться таким образом, и точность чуть повысилась. Но почему, и как решить проблему окончательно-остается загадкой.
0
97 / 90 / 18
Регистрация: 09.06.2012
Сообщений: 215
20.02.2013, 21:20
Ботоводы, играйте честно или не играйте вовсе. Как никрути это БОТ и никак иначе.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.02.2013, 21:37
iptables, зря вы так . вот лично мне не доставляет удовольствия "задротить". хотя игры у меня в прошлом.
ботоводы на первых местах в рейтинге игр, так же и читеры. с этим ничего не поделаешь. ну буду я к примеру честно играть. смысл? когда какой то "Вася" скачает чит и будет меня убивать раунд за раундом. честная игра только в компьютерном клубе может быть вместе с друзьями.
1
97 / 90 / 18
Регистрация: 09.06.2012
Сообщений: 215
20.02.2013, 22:17
Ну а зачем играть в такую игру? В чем смысл? В том, у кого круче бот? ))) Я сам играл в линагу, потом стал одним из админов одного ла2 сервера. Интерес к игре сразу пропал.
0
20.02.2013, 22:36

Не по теме:

iptables, лично для меня игры представляют интерес не в тех местах, где можно применить бота. Сам в свое время играл в вов-рейдами командовал. А то, что можно автоматизировать-должно быть автоматизировано, например действия вроде рыбалки в вове совершенно незачем выполнять вручную.

0
97 / 90 / 18
Регистрация: 09.06.2012
Сообщений: 215
20.02.2013, 22:41
Цитата Сообщение от EvilFromHell Посмотреть сообщение

Не по теме:

iptables, лично для меня игры представляют интерес не в тех местах, где можно применить бота. Сам в свое время играл в вов-рейдами командовал. А то, что можно автоматизировать-должно быть автоматизировано, например действия вроде рыбалки в вове совершенно незачем выполнять вручную.

Все что по задумке могло бы быть автоматизированно, было бы автоматизированно разработчиками. А если все автоматизировать, то смысл игры теряется впринципе, не? Зашел в игру, навел на цель и или выиграл или проиграл, крутой ММОМРПГ ))))
0
20.02.2013, 23:01

Не по теме:

Все что по задумке могло бы быть автоматизированно, было бы автоматизированно разработчиками. А если все автоматизировать, то смысл игры теряется впринципе, не? Зашел в игру, навел на цель и или выиграл или проиграл, крутой ММОМРПГ ))))
Адекватного бота можно написать только для однотипных повторящихся действий, которые не прибавляют игре интереса. Если тебе нужна рыба в каждом рейде, а для того, чтобы ее наловить, надо час стоять у озера-то логично это дело автоматизировать, а час потратить на что-то другое, это ничуть не испортит рейд. Игра интересна, когда ты достигаешь чего-то сложного, а не тупо жмешь 2 кнопки. А в случае с танками-игра в том режиме, в котором играет бот, тоже совершенно не интересна и затевается только ради кристаллов и званий. А потом, набрав звание и оружие, можно идти играть в невыгодные, но куда более интересные игры. И таких примеров множество.

0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.02.2013, 23:15
iptables, вот я например, вышел в топ в одной браузерке с помощью бота. не, не сразу, сначала играл честно был на 4 толи 5 месте , потом на форуме игры все рассказал, как я играл потом проспамил личку, о продаже бота. и неплохо продавал его. еще и других ботов заказывали у меня. админ делал защиту, но какая защита для браузерки? я ее конечно же с легкостью обошел. имел неплохой пассивный заработок

Добавлено через 5 минут
так что тут надо у самих заядлых геймеров спросить - что ими движет, когда они используют бота? быть в топе? да, я и сам его именно для этого использовал. мне не было интересно выполнять кучу одних и тех же действий, проще говоря - "задротить"
0
1 / 1 / 0
Регистрация: 16.02.2013
Сообщений: 35
20.02.2013, 23:16  [ТС]
Админы, а можно святошу-праповедника в карцер, а флуд в помойку?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.02.2013, 23:16

Неправильное считываение цветов пикселе в BMP
Вот, собственно, программа: #include <iostream> #include <fstream> #include <cmath> #include <cstdio> #include...

Получение информации о ПК
Всем доброго времени суток! Вопрос - как можно получить информацию о ПК через консольное приложение?

Получение информации из AD
Доброго дня. Прошу помочь понять, есть ли возможность получения информации о пользователях домена AD (SID, Name, Created и т.п.) c...

Получение информации о ПК
всем привет! Как мне listview получить следующую информацию о ПК: 1. Имя компьютера 2. Имя пользователя 3. Ip адрес 4. Mac адрес ...

Получение информации из БД
Это мой код...проблема в том, что sql запрос работает, а информацию на страницу не выводит! mysqli_select_db($link, "test"); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru