|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.07.2009, 04:07 | #1 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
Аналог ACTool
Доброго времени суток !
По некоторой необходимости и для приобретения опыта я решил сделать программу аналог ACTool - автокликера. Данной программы у меня нету , лиш видел её на скринах видео. По описаниям на форумах понял что она"умеет делать". Сделать свой ACTool не составит никакого труда , но я хочу сделать более продвинутую программу. Среди возможностей этой программы: Клик мышкой Нажатие клавиши Установка мышки в нужную позицию Задержа между действиями создание циклов То что я хочу реализовать: Полная имитация мышки и клавиатуры : Нажатие/отпускание любой клавиши Изменение раскладки на РУс/ENG Клик/Нажатие/отпускание Любой из 3х кнопок мыши Установка/движение из точки А в точку Б мышки ( в нажатом или отпущенном состоянии) Создание переменных и работа с ними (переменные для расчётов) Пример: В онлайн игре имеется персонаж , у него есть некий запас манны , допустим 1000. Действие которое производится в игре (благодаря программе) стоит 100 маны . Тоесть после 10 таких действий мана ту персонажа закончится - нам нужно предусмотреть это и подготовить бутылочку с манной/едой для него. Допустим бутылка добавит 500 манны - значит мы можем сделать ещё несколько действий. Так же "манна" у персонажа может восстанавливатся с некоторой скоростью - и это нам тоже нужно предусмотреть ) Работа с окнами : Установка прозрачности/изменение размеров/изменение координат/сворачивание/установка активным/неактивным/Запретить закрытие/определение координат и размеров всё это с внесением в переменные Установка переменных(ещё не уверен в необходимости) с помощью WM_SETTEXT. Звуковое сопроводение некоторых действий стандартными звуками/указанием файла для воспроизведения. Логические операторы , циклы. Выключением компьютера после некоторых "результатов" с сохранением лога и скриншота проделанной работы. Большинство всех этих операций выполняется простым парсингом ... Примеры и опыт работы с ними - есть. Но больше всего меня волнует реализация: Переменных и работы с ними( +-*/() ) Логических операций(включающих в себя арифметические действия( (а+б) > в , round(г/д;+) < (з - е) Для всего этого мне предстоит написать парсер , наверно будет правильным назвать всю эту затею "интерпретатором" Скрипты будет понимать естественно только моя программа , и выполнять их тоже будет она (либо после записи скрипта экспорт его в exe файл). Подскажите примерное развитие данной затеи ( как организовать циклы , как работать с вложенными арифметическими действиями ? (а+б)/(в*г)-д ) Такая программа будет полезна не только в играх , но и в других областях. Например можно будет написать скрипт для "клика по баннерам" для заработка. Уйдёш на работу/по делам , а скрипт сам всё делает , и ведёт отчёт) Благодарю всех откликнувшихся !!! |
07.07.2009, 08:15 | #2 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
В принципе затея хорошая. Много опыта даст.
I'm learning to live...
|
||
07.07.2009, 11:01 | #3 |
stopfake.org
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,927
|
Такие проги уже есть, причем предназначены они для других целей, и стоят немалые деньги. Human Emulator, например.
|
07.07.2009, 12:03 | #4 | ||
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
Цитата:
А в других ситуациях ? И не только мне ? Но прежде чем начать работу нужно хорошенько всё обдумать) Хотябы иметь представление о кусках этой программы и принципах работы. И как я уже написал , со всем есть опыт работы кроме таких важных частей как : Переменных и работы с ними( +-*/() ) Логических операций(включающих в себя арифметические действия( (а+б) > в , round(г/д;+) < (з - е) Вот их я и хотел бы обсудить) А точнее услышать Ваши советы) Например скрипт будет выглядет таким образом if ((a+b)>c) { SetCursor 89,115; LeftDown; SetCursor (89+50),(115+50); LeftUp; } Работа программы предполагается с переменными 3х типов : Integer , String & Boolean. Цитата:
Да и онлайн игры( для которых тренеров не напишеш , тк они сверяют всё с сервером) не так просто обмануть или взломать. Гораздо легче автоматизировать какой-то легальный в игре процесс. Я например "зарабатываю деньги" в онлайн игре пока сплю , и не финансовыми возможностями игры - а с помощью имитаций мох действий программой. Правда это так , месячное увлечение ) Последний раз редактировалось Lime; 07.07.2009 в 12:11. |
||
08.07.2009, 00:52 | #5 | |
Заснувший
Форумчанин
Регистрация: 13.03.2009
Сообщений: 213
|
Цитата:
Во первых ((a+b)>c) слишком сложное выражение(особенно для начала), скрипт нужно делать похожим на асм(моё мнение) - одна строка - одна операция. Твой скрипт превратиться во что-то вроде этого Код:
Возможно есть более лучшии способы, но я думаю именно так. Lime если хочешь пиши в личку, распишу подробнее или помогу с реализацией. Последний раз редактировалось Виталий Серов; 08.07.2009 в 00:54. |
|
08.07.2009, 01:07 | #6 | |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
Цитата:
Да , выражение слишком сложное , но если для каждого простого действия булет одна строка - это будет нудно и не продуктивно. На счёт мат формул я думаю , нужно сделать рекурсию. Если её сделать достойно то с мат формулами ( приоритетом операций -*/+() ) не будет сложностей Переменные : Обьявлять думаю как в php - $a $b $manna $hp. Вопрос немного в другом , в динамическом обьявлении , например в циклах. Доредактирую : Как мысль - до запуска "скрипта" пересчитать кол-во переменных(+ циклы) создать из и сделать соответствие Хотя это вариант влоб( Я например без лишних угрызений совести заставлю цикл выполнится 10 000 раз. А как быть с while ? ... Хотя возможно ограничить пользователя обьявлением всех переменных в начале скрипта , запретив в других частях скрипта Вместо перехода на ( в примере на 0010 строку) намного легче сделать лэйблы :st1 // // // if ($a > $b) goto st1; C вызовом функций вообще просто) Учитывая что в параметры могут идти выражения , а с их ращётом мы "уже" определились остаётся только парсить) 1 полуголова хорошо , а 1,5 лучше) Если есть время и желание можно обсудить в ICQ Последний раз редактировалось Lime; 08.07.2009 в 01:13. |
|
08.07.2009, 01:16 | #7 | |||
Заснувший
Форумчанин
Регистрация: 13.03.2009
Сообщений: 213
|
Цитата:
Цитата:
Цитата:
Что-бы во время набора скрипта было удобно надо будет сделать типа компилятора, тоторый превратит goto label в goto 0010 Последний раз редактировалось Виталий Серов; 08.07.2009 в 01:19. |
|||
08.07.2009, 02:50 | #8 | |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
Цитата:
Людей с ним работающих и заядлых геймеров сравнивать не приходится. "Нас" сложности не пугают Пишу ради опыта. Весь "файл" обычно будет состоять не более 1000 строк. С моим стилем исполнения. Часто достаточно будет 10-15 строк. Лейблы можно запихать в двумерный массив(название лейбла - строка№)(при старте скрипта) и далее по массиву шастать и искать. Компилятор должен превратить goto label в работоспособную программу а не в кучу стрингов. Ещё идеи ? |
|
09.07.2009, 16:17 | #9 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
Вот что я "промежуточно" решил
Переменные будут обьявлятся до запуска скрипта. Хранится будут в 2мерном массиве по типу Имя;Значение . В формулах вроде $mana = $max_manna - ($spell_cost * 5); Все переменные (кроме результатирующей , её просто не будет в формуле) будут заменены на значения. $max_manna - ($spell_cost * 5); => 17568 - (2230 * 5); Просчитыватся и далее уже присваивается) На простое выражение +-*/ написал , в моей реализации выглядит так: Код:
Если что не так , подправьте меня) С выражениями +-*/() Сейчас попробую сделать с рекурсией. http://programmersforum.ru/showthread.php?t=57287 тут со скобками) Остаётся обдумать принцип общего парсера , кроме формул ещё полно команд , наверно нужно в каждой строке искать название команды ... Есть у каво идеи?) Последний раз редактировалось Lime; 09.07.2009 в 20:21. |
09.07.2009, 23:32 | #10 | ||
Студент, не
Старожил
Регистрация: 29.01.2009
Сообщений: 2,067
|
Цитата:
Но у меня не такие масштабы - просто знаний и времени может не хватить... Цитата:
Со стороны выглядит будто кто-то курсор мышкой двигает... (на всякий случай) Но вот может ли какая-нибудь программа-шпион узнать, что курсор двигается программой, а не пользователем?
I am the First of Cyber Evolution...
I am the First to Program your Future... |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Аналог tree на C# (вывод содержимого каталогов) | LepihinMS | Общие вопросы .NET | 8 | 22.03.2019 15:51 |
Аналог radmin | DiME | Работа с сетью в Delphi | 8 | 28.04.2009 08:08 |
Аналог GetDC() | Василий | Win Api | 3 | 14.01.2009 09:32 |
Аналог with на С++. | Иллидан | Общие вопросы C/C++ | 1 | 16.05.2008 21:41 |