Здравствуйте, гость ( Вход | Регистрация )

> Последовательное выполнение скриптов
BlackBot
сообщение 17.8.2021, 8:04
Сообщение #1


**

Neophyte
Сообщений: 33
Регистрация: 17.8.2021
Группа: Пользователи
Наличность: 0
Пользователь №: 20.047



Доброго дня друзья.
Интересует вопрос следующего плана.
Имеется игра в котороой в неактивном окне не работает отправка left, send - что крайне необходимо для управления. Kleft работает нормально - активирует окно и кликает в заданные координаты.
Возникла мысль играя в 6 и более окон выполнять действия в всех запущенных клиентах игры.
Собственно вопрос. Возможно ли написав необходимый скрипт, и привязав каждый скрипт к одному клиенту, реализовать поочередное выполнение каждого скрипта с последующей активацией следующего скрипта, управляющего другим клиентом?
Действия будут одинаковые - на компе (сервере) лидер ставить группу в очередь на арену, на клиенте кликер ждет подтверждения сбора арены и жмет кнопку "битться на арене" - отдает управление следующему скрипту - тот делает тоже в своем окне и так далее. После чего скрипт ждет результатов арены и выходит с нее вставая в ожидание следующей.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
cirus
сообщение 18.9.2021, 18:51
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 25758
Пользователь №: 16.971
Возраст: 29



Неверно заданы значения констант WM_LBUTTONDOWN и WM_LBUTTONUP.
Через пилот так:
Код
--lua
local ffi = require("ffi")
local WM_LBUTTONDOWN = 0x0201
local WM_LBUTTONUP = 0x0202
ffi.cdef[[
int SendMessageA(int hWnd, int Msg, int wParam, int lParam);
int PostMessageA(int hWnd, int Msg, int wParam, int lParam);
]]

local wndHandle = workwindow()   -- привязаться к окну Ctrl+A
local x = 200
local y = 100

ffi.C.SendMessageA(wndHandle, WM_LBUTTONDOWN, 0, y * 65536 + x)
wait (100)
ffi.C.SendMessageA(wndHandle, WM_LBUTTONUP, 0, y * 65536 + x)

Если не работает SendMessage, то можно попробовать PostMessage.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sergei1234
сообщение 18.9.2021, 19:07
Сообщение #3


*

Registred
Сообщений: 8
Регистрация: 18.9.2021
Группа: Пользователи
Наличность: 0
Пользователь №: 20.083



Цитата(cirus @ 18.9.2021, 18:51) *

Неверно заданы значения констант WM_LBUTTONDOWN и WM_LBUTTONUP.
Через пилот так:
Код
--lua
local ffi = require("ffi")
local WM_LBUTTONDOWN = 0x0201
local WM_LBUTTONUP = 0x0202
ffi.cdef[[
int SendMessageA(int hWnd, int Msg, int wParam, int lParam);
int PostMessageA(int hWnd, int Msg, int wParam, int lParam);
]]

local wndHandle = workwindow()   -- привязаться к окну Ctrl+A
local x = 200
local y = 100

ffi.C.SendMessageA(wndHandle, WM_LBUTTONDOWN, 0, y * 65536 + x)
wait (100)
ffi.C.SendMessageA(wndHandle, WM_LBUTTONUP, 0, y * 65536 + x)

Если не работает SendMessage, то можно попробовать PostMessage.


спасибо проблема решена я лохопед неверный код WM_LBUTTONDOWN сделал
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sergei1234
сообщение 18.9.2021, 20:12
Сообщение #4


*

Registred
Сообщений: 8
Регистрация: 18.9.2021
Группа: Пользователи
Наличность: 0
Пользователь №: 20.083



еще такой вопрос перекрытое окно скриншот можно в с++ сделать? как?
клик мышью вот так венрнее не знаю что у вас

SendMessage(wndHandle, WM_MOUSEMOVE, 0, coord);
SendMessage(wndHandle, WM_LBUTTONDOWN, 0, coord);
Thread.Sleep(100);
SendMessage(wndHandle, WM_LBUTTONUP, 0, coord);
далее принтскрин неактивного окна, вернее перекрытого, с# код, я думаю кому надо разберется полезно для бота, который работает по поиску в картинке, а не с памятью, что бы не забанили
это если есть манипуляции с масштабом

public class Scale
{

[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
public enum DeviceCap
{
VERTRES = 10,
DESKTOPVERTRES = 117,

// http://pinvoke.net/default.aspx/gdi32/GetDeviceCaps.html
}


public float getScalingFactor()
{
Graphics g = Graphics.FromHwnd(IntPtr.Zero);
IntPtr desktop = g.GetHdc();
int LogicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES);
int PhysicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES);

float ScreenScalingFactor = (float)PhysicalScreenHeight / (float)LogicalScreenHeight;

return ScreenScalingFactor; // 1.25 = 125%
}

}

[DllImport("User32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags);

[DllImport("user32.dll")]
static extern bool GetWindowRect(IntPtr handle, ref Rectangle rect);


private static double SCALEoFsCREEN = new Scale().getScalingFactor();
public void CaptureWindow(IntPtr handle)
{
// Get the size of the window to capture
Rectangle rect = new Rectangle();
GetWindowRect(handle, ref rect);

// GetWindowRect returns Top/Left and Bottom/Right, so fix it
rect.Width = rect.Width - rect.X;
rect.Height = rect.Height - rect.Y;

// Create a bitmap to draw the capture into
using (Bitmap bitmap = new Bitmap((int)(rect.Width * SCALEoFsCREEN), (int)(rect.Height* SCALEoFsCREEN)))
{
// Use PrintWindow to draw the window into our bitmap
using (Graphics g = Graphics.FromImage(bitmap))
{
IntPtr hdc = g.GetHdc();
if (!PrintWindow(handle, hdc, 0))
{
int error = Marshal.GetLastWin32Error();
var exception = new System.ComponentModel.Win32Exception(error);
Debug.WriteLine("ERROR: " + error + ": " + exception.Message);
// TODO: Throw the exception?
}
g.ReleaseHdc(hdc);
}

// Save it as a .png just to demo this
bitmap.Save("Example.png");
}
}
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
BlackBot   Последовательное выполнение скриптов   17.8.2021, 8:04
kyja   Запуск скриптов https://uopilot.tati.pro/index.php...   17.8.2021, 10:44
cirus   Если действия одинаковые для всех окон, то можно и...   17.8.2021, 10:50
BlackBot   Start_script нашел. Но почему то напрямую kleft...   17.8.2021, 11:29
cirus   set %handle findwindow ("Блокнот"...   17.8.2021, 13:30
BlackBot   То что надо) Благодарю! Какие возможности прям...   17.8.2021, 15:09
BlackBot   Еще вопросик. Переменные между скриптами передаютс...   19.8.2021, 7:27
cirus   https://uopilot.uokit.com/wiki/index.php?ti...друг...   19.8.2021, 11:08
BlackBot   Cirus, Уважаемый - подскажи следущее - Есть окно и...   21.8.2021, 19:30
cirus   wait 3000 // пауза 3 секунды set #h getwindo...   21.8.2021, 20:28
BlackBot   А если после необходимо на английском написать что...   22.8.2021, 6:40
cirus   Да.   22.8.2021, 10:47
BlackBot   Вопросик еще возник. Имеется окно браузера, в нем...   26.8.2021, 12:07
cirus   log clear log mode compact get windowpos workwind...   26.8.2021, 12:23
BlackBot   Загвоздочка возникла.. Есть игра нонтаргет - м...   8.9.2021, 14:00
cirus   Функциями пилота не сделать. Через ардуино можно.   8.9.2021, 14:33
BlackBot   Функциями пилота не сделать. Через ардуино можно....   8.9.2021, 18:15
BlackBot   Товарищи - подскажите как перемешать массив? А то ...   9.9.2021, 16:10
cirus   set %mult [1] mult1 // имя мульта ...   10.9.2021, 1:41
BlackBot   При таком методе - как я понимаю, имеется вероятно...   10.9.2021, 5:48
DarkMaster   Всмысле? Дублироваться значения которые не дублир...   11.9.2021, 12:07
DarkMaster   Вот это разве что можно чуть изменить. Вроде как ...   11.9.2021, 12:20
BlackBot   Извиняюсь - не разобралсо ) А кто-нибудь заморачив...   11.9.2021, 14:40
DarkMaster   Было дело. Смысла мало - динамика слишком велика д...   11.9.2021, 19:35
DarkMaster   Вобщем не поленился я... Потестил нормальное распр...   12.9.2021, 6:56
BlackBot   Вобщем не поленился я... Потестил нормальное расп...   12.9.2021, 7:04
BlackBot   Вобщем не поленился я... Потестил нормальное расп...   17.9.2021, 15:18
DarkMaster   Я выше приводил код для фикса в старом синтаксисе...   12.9.2021, 7:28
BlackBot   В игре - мобы и игроки разным цветом горят - это я...   12.9.2021, 8:21
DarkMaster   Размер цели, цвет скилов, миникарта. Все сильно з...   12.9.2021, 8:27
BlackBot   скилы всегда активны - они не привязаны к дистанци...   12.9.2021, 8:43
DarkMaster   Самый простой вариант.   12.9.2021, 10:45
BlackBot   затык очередной - почему скрипт так себя ведет? ...   12.9.2021, 16:38
DarkMaster   В смысле на старом синтаксисе? Вообще старый синт...   18.9.2021, 4:54
Sergei1234   Народ через какую функцию в с++ осущесвлекн клик м...   18.9.2021, 17:21
cirus   SendMessage, WM_LBUTTONDOWN и WM_LBUTTONUP.   18.9.2021, 18:08
Sergei1234   проблема решена   18.9.2021, 18:43
Cockney   это си шарп, но не столь важно не думаю что эт...   18.9.2021, 18:50
Sergei1234   а вот еще вопрос про сендмесседж, у меня несколько...   24.9.2021, 10:54
BlackBot   Убери внизу окна программы задержку. Вместо 100 - ...   24.9.2021, 18:08
DarkMaster   Для луа эта задержка игнорируется.   24.9.2021, 20:39
Sergei1234   нее проверено если мышь нахолддится в другом монит...   25.9.2021, 10:28
BlackBot   Привязка окна и активация его при необходимости де...   25.9.2021, 12:57
Madeus   2 моника, проблем нет.   25.9.2021, 13:41
Sergei1234   народ а взгляните скрипт Ctrl+ space как катится в...   12.2.2022, 18:49
Sergei1234   народ а взгляните скрипт Ctrl+ space как катится ...   14.2.2022, 12:01


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 29.12.2025, 13:09
Designed by Nickostyle