

pachela
Пользователи-
Постов
154 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент pachela
-
А как это на работе пользователя повлияет? Будет ли мешать мне, к примеру работать в VS или лазить в браузере по ютубам и вконтактам? Приблизительно это будет так: API FindWindow, GetForegroundWindow, SetForegroundWindow. Узнаем дескриптор уже активного окна, узнаем дескриптор окна мишени, устанавливаем фокус на окно мишень, эмулируем нажатие клавиш и возвращаем фокус на прошлое активное окно. Правильно?
-
На просторах интернет вычитал, что если игра защищена чем то вроде "фемиды", то эмуляция клавиш в фоновом режиме ей до одного места. А точнее речь идет не столько о самой фемиде, а о том, что современные ММО ставят проверку на фокус окна? Т.е. если я пробую тем же AHK или AutoIT и у меня в активном окне кликер работает, а в свернутом нет, то дальше и не мучить яйца, кота, мозги и Шарп, в попытках заставить слать клики в свернутое приложение? P.s. Пардоньте за кашу, на ногах уже кучу времени, голова стремительно клонится к подушке.
-
Походу я не загружаю API нужную. Ибо все у меня красное =\. Можно как нибудь кратно, без лишней воды, но так, что бы было доходчиво, объяснить как эмулировать нажатие клавиши в фоновом приложении, без перенесения на него фокуса. В гугле доходчивых и полноценных примеров нет. Одни куски, которые ни чему умному научить не могут. Нажатие в окне на котором фокус, у меня получилось и то, только с бубном в виде InputSimulator private void button15_Click(object sender, EventArgs e) { inputSimulator.Keyboard.KeyPress(VirtualKeyCode.VK_R); } Но мне нужно, что бы клавиши клацались в окне без фокуса! Что бы свернул и ушел, а оно работает.
-
Я очень дико извиняюсь, вернулся работать над ботом и дошел до стадии эмуляции клавиш. Увидел вашу ссылочку, а можно теперь для тугодума рассосать каждую строчку? public static void Send(short Keycode) { INPUT[] InputData = new INPUT[1]; InputData[0].type = 1; InputData[0].ki.wScan = Keycode; InputData[0].ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_SCANCODE; InputData[0].ki.time = 0; InputData[0].ki.dwExtraInfo = IntPtr.Zero; SendInput(1, InputData, Marshal.SizeOf(typeof(INPUT))); } по ссылке, вижу ниже комментарий, который гласит, что нужно сначала слать нажатие клавиши, потом отпускание, с небольшой паузой, как это реализуется или просто сначала KeyDown а затем KeyUp? Как я понимаю, это отправка в активное окно? Или в фоновое тоже можно?
-
Так, почему была ошибка в OpenProcess, я понял. Просто почему то опечатался и ввел одинарные кавычки. это поправили и теперь код отчасти работает. Начало просто постоянно выдавать ошибку про время ожидания для присоединения отладчика. Если клацнуть НЕТ, то значение все равно напишет, НО игра через пару секунд вылетает... В игре античит защищает память от API. Может таким образом отладчик использует это самое API?
-
Почему все время выдает вот такую вот ошибку? И вот что выдает еще, этого не выдавало... openProcess('myproc.exe') debugProcess(2) local addressCode = 'myproc.exe+D4BC13' debug_setBreakpoint(addressCode) print(RCX) s = string.format("%08X", RCX) print(s) debug_removeBreakpoint(addressCode) writeToClipboard(s) Ошибка:[string "openProcess('myproc.exe') ..."]:6: bad argument #2 to 'format' (number expected, got nil) Ошибка скрипта П.С. Я когда спрашивал про создание трейнера без формы, то имел ввиду в CE =). В шарпе это не проблема, проблема в шарпе отладку сделать, я этого еще не умею.
-
Временно решил проблему в Lua Engine (нужно будет перенести в Lua или реализовать как то трейнер =)) вот таким вот кодом: А в Шарпе я беру с Буфера обмена, добавляю смещение и имею, то что хочу. Но это пока, что для развития, вообще нужно будет думать как это сделать в Шарпе. Подскажите еще вот что, как сделать форму трейнера или вообще трейнер, что бы при запуске не отображалось окно? Ну типа запустил, оно в фоне клацнуло и закрылось.
-
Собственно задача заключается в следующем: 1. Есть инструкция "movss [rcx+00000378],xmm0" которая располагается по статическому адресу. 2. Мне нужно по средством CE, желательно LUA, что бы можно было использовать в дальнейшем трейнере, прочитать содержимое регистра RCX. 3. К этому значению прибавить 378. 4. Значение RCX записать в переменную 1, значение со смещением записать в переменную 2. P.s. На C# это сложно реализовать?
-
тут бы не споткнуться через порог, а об чудесах эквилибристики я молчу и подавно. Да и зачем на столько заморачиваться, если можно сделать хождение по точкам. Сейчас пока что мучаю форму с лист боксом, сохранением результата в тхт и циклами. Но в ближайшем будущем я хочу организовать автозапись в лист бокс координат, через каждые 10 метров. А потом воспроизведение записи по этим точкам и воспроизведение в обратном порядке. Но пока что застрял на цикле поворота и отмера растояния до цели. А в дальних планах еще и до передвижения добавить боевку. Но вот с эмуляцией нажатий в Шарпе, я еще не знаком. Так что все по мере поступления.
-
Такс, имеем результат! Перво наперво хочу сказать, что приходится дабл преобразовывать в флоат. Но так, как я использую при записи в память стороннюю библиотеку, в которой запись происходит как стринг, то проблем не возникает =). Вся запарка была в сторонах! Ведь у меня есть поворот тела от 0 до 6.28 и нет отрицательного числа. И наличие отрицательного числа, меня путало =). Так же в примере мы переводили градусы в радианты угол, а не полученное значение. Имею вот такой вот код, это если вдруг понадобится кому. Возможно где и косякнул, но вроде бы пашет =)
-
Прочитал ваш пример и теоретически понял его. Осталось перевести в Шарп. Я правильно понял, что float CalcRadians(float angle) { // Возвращаем в радианы angle = angle / 57.29578; return angle; } Вот этот вот "angle" мы впишем в адрес содержащий "6.28"? Т.е. вот этот вот 6.28 и есть угол, который нам нужно изменить?
-
Я вот сижу и думаю, на сколько я вчера сильно протупил? Камеру в игре можно поворачивать на 360 градусов по горизонтали и на 180 градусов по вертикали. Почитал я статейку от немца Алекса, любезно порекомендованную вот в этом посте товарищем 2zolo2, и мне она понравилась. Но только тяжковато воспринимается немецкий даже с переводом =). Теперь вот буду думать как вычислить "идеальный угол" =). Не. Не 6.14, если я правильно понял что пишет программа, то это xmm4:6.27
-
Ой. Тут бы сейчас на велосипеде научиться кататься, а за баранку боинга я даже и не думаю. Пока что пытаюсь реализовать сравнение 2 значений. Теперешний и последний вектора. И если значение теперешнего будет больше, то делать поворот. Пока что попробую так. ДАльше будем смотреть. В игре то есть маркер и автопуть, но не всегда этот автопуть кратчайший, да и в небе он не нужен =))). А маркер в некоторых ситуациях перестает работать и именно для этих ситуаций и нужен бот.
-
Давайте разберемся для начала с прямой, без каких либо препятствий. Я вот что подумал, может стоит сравнивать 2 вектора, что бы бот повернул в правильном направлении? Ну т.е. запускаю кнопку и бот едет вперед 20 метров, записывает координаты старта и координаты финиша. Строит вектор и умножает это все в 500-1000 раз. А далее бот сравнивает эти 2 вектора и принимает решение, поворачивать или идти прямо. Или я не в те дебри лезу?
-
Такс, сейчас опробовал это на практике и вижу, что я понял ход ваших мыслей. Мы берем в цикле считываем X0, Y0, Z0 и вычисляем вектор. Далее делаем сравнение, если вектор увеличивается, то нужно "повернуть", если вектор уменьшатся, то значит правильным путем мы идем. Но вот как оптимально выбрать самый кратчайший путь? Ведь я могу к примеру повернуть на 5 градусов и до поры, до времени значение будет уменьшаться и только когда угол станет слишком большой, начнет сначала слишком медленно уменьшаться, а в конечном итоге и увеличиваться.
-
Ну мы же говорим о читах? Тем более в которых используется ось Z. Т.е. я планирую делать так: Перешел на определенную высоту и дальше по прямой до точки "А", а потом сбрасываем высоту. Нашел на просторах гугла, что этот математический метод для вычисления корня квадратного. А тем самым мы получим расстояние. Пример вот такой вот float deltaX = x1 - x0; float deltaY = y1 - y0; float deltaZ = z1 - z0; float distance = (float) Math.Sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); Хорошо, мы вычислим расстояние. Но как нам повернуть в нужную сторону и двигаться? Ведь я знаю координаты точки "А", но не знаю в какой стороне она находится.