а дело так и обстоит… у меня все одной функцией реализовано (которой, кстати, передается id объекта): и копка, и подбор, и атака, и разговор, но это не значит, что данная функция есть функция «атаки». Просто вызываемая мной подпрограмма уже сама выбирает, какое действие инициировать. В то же время, можно вызвать отдельные её подфункции, отвечающие за конкретные операции (атака, подбор…). И, вполне вероятно, что одна из таких операций позволяет копать рес. Но, как бы там не было, отдельной функции «копка» я не видел
Таким же образом, только через подмену значений в памяти, первый вариант моего бота выполнял основные действия. Для копки, разговора и еще чего-то, я использовал указатель «бежать к цели» из [BA] + $1с +$20 + $C10 + $30 (если не ошибаюсь)
Касаемо диалогов. Кнопки в игре тоже можно нажимать посредством инжекта. Вот только для чего? При выполнении каких-либо действий все равно вызываются функции… Продажа/покупка у торговца: достаточно «открыть» данного торговца и можно осуществлять любые транзакции одним лишь инжектом.
Остается лишь отловить нужную функцию…
.. можно осуществлять любые транзакции одним лишь инжектом ..
а если проверяется - была-ли нажата клавиша или клик мышкой, тоесть была-ли команда от пользователя с интерфейса, как-же тогда .. - сделать инжект и эмулировать ее ?..)) - не лучше-ли сразу послать нажатие клавиши или клик по ID окна объекта - чем уж это так страшно ???
заодно и Сервер будет видеть что человек играет ..
Верно, $469af0 – функция, отвечающая за основные действия, но я вызываю другую (хотя здесь уже нет принципиальной разницы). Только что проверил, функция по адресу $5d0a30, входящая в $469af0, отвечает за копку.
Quote:
не лучше-ли сразу послать нажатие клавиши или клик по ID окна - чем уж оно так страшно ???
Лучше и даже проще… а вот и решение – AutoIt! сноска: это – сарказм! а не указание на дельнейшие действия.
Я бы с интересом посмотрел на сервер, который еще бы отслеживал движение мышки и считал кол-во сделанных кликов по окнам… Чего, в нашем случае, нет.
Для чего вообще кликать по окнам?
Мы видим окно (объекта, меню..) и наводим на него указатель мыши;
SendMessage(..) (например) знает про окно по данному ему ID или названию окна,
а если мы ничего не видим и не знаем никакой инфрмации о окне,
но нашли подпрограмму которая вызывает действие при клике по нужному нам окну,
может инжектить надо чуть позже внутри найденной нами п.п. в то место где происходит отселектирование по ID-у .. тем самым - ID можно и не знать.
dwar .. Для чего вообще кликать то окнам?
- слышал что в Линейке сервер проверяет - спит игрок или нет - проверяет клики .. если спит - разрывает соединение, могут и у нас так сделать - тогда многое придется менять ..
СендМессадж - сразу в топку. Нет в клиенте чайлд-элементов с хендлами - следовательно придется посылать всему окну, что естественно не катед.
dwar - ок. Я тоже думал о варианте вызова функции. Как я уже говорил - хочу виллу автоматом летать.
Итого - что надо сделать:
начало цикла:
прилететь к неписю (умею)
запустить диалог с ним (умею)
выбрать "Задание" (не умею)
выбрать <конкретно задание, относящееся к вилле>
закрыть диалог с неписем (умею)
конец цикла
Вот думаю, что "выбрать <конкретно задание, относящееся к вилле>" будет сложновато отследить (30+ штук таки...)
??? а как-же сам Клиент понимает какой объект выбран - он его по экранным координатам характеризуют что-ли, даже если и так - то для клиента объект все равно какое-то ФИО имеет. Любой объект - даже туман - имеет свой индентификатор если мы видим объект значит он имеет окно, если не видим то окно его обозначено свойством No Visible,
но все-равно можно применять к нему любые команды и он по-прежнему реагирует на события,
совсем его порализовать можно только применив к нему свойство Disable - тогда он совсем игноируется системой, опять-же остается его ID вплоть до того пока его не уничтожить (Delete).
Бред какой то.
обращения к обычному окну обрабатывает поток. остановишь поток- бесполезно ему что то посылать.
В игре точно так же, все нажатия обрабатываются потоком, который решает как их интерпретировать, в зависимости от того видно окно или нет.
Речь идет не об обращениях к окну вообще, а о вызове тех функций, которые окно вызывает, когда нажимаешь на кнопки. их можно вызывать и без окна, и даже при его уничтожении, как ты говоришь. нужно только найти- и это главная проблема.
Ну 40-70 страниц _найденного_ мы отрулим ) Уже научились многое именно _находить_. А то что еще не нашли - сразу в новом искать будем )
оригмас. ВинАПИ позволяет послать мессагу только элементу, у которого есть свой вин-хендл. У клиента нет вин-хендлов ни для одного дочернего элемента, кроме системного меню - (закрыть, переместить, свернуть...). Итого - сендмессадж можно сделать _только_ для всего клиента. Что в корне нам не подходит.
Мастера. Не бейте больно за заведомо неправильную формулировку. Это я на пальцах - чтоб понятней было.