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

3 страниц V  1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Последовательное выполнение скриптов
BlackBot
сообщение 17.8.2021, 8:04
Сообщение #1


**

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



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


***

Novice
Сообщений: 85
Регистрация: 29.10.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.164



Запуск скриптов
https://uopilot.tati.pro/index.php?title=Start_script_(Lua)
https://uopilot.uokit.com/wiki/index.php?title=Start_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 17.8.2021, 10:50
Сообщение #3


**********

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



Если действия одинаковые для всех окон, то можно использовать один скрипт, в нём менять рабочее окно.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 17.8.2021, 11:29
Сообщение #4


**

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



Start_script нашел. Но почему то напрямую
спойлер

Код

kleft 216 278
wait 1500
sendex {f3}
wait 1500
kleft 141 541
wait 2000
sendex {ESC}
wait 500
Start_script 1
end_script


Работает некорректно. Может в одном окне начать выполнять действия - которые должны выполнится уже в другом. Прикрутил проверку GetWindow через if Если GetWindow равен привязанному - идет выполнение действий.
Думал про выполнение в цикле - но окна расположенны в два слоя, первый ряд 3 окна сверху рабочего стола. Второй ряд 3 окна перекрыт на две-трети верхними.
Есть мысли как в цикле активировать часть окон через верхнюю треть видимого окна, а часть - через нижнюю треть?
Или как то можно активировать окна програмно?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 17.8.2021, 13:30
Сообщение #5


**********

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



Цитата
Или как то можно активировать окна програмно?

Код
set %handle findwindow ("Блокнот")      // найти окна с указанным именем

log clear
log mode compact

set #n size(%handle)   // количество окон

if #n = 0
    log Окна не найдены, скрипт остановлен
    end_script
end_if

log Всего найдено окон: #n

for #i 1 #n   // цикл для всех окон
    showwindow %handle[#i 1]     // показывать окно
    wait 2000     // пауза 2 секунды
    // тут нужные действия для окна
end_for
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 17.8.2021, 15:09
Сообщение #6


**

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



То что надо) Благодарю! Какие возможности прям открываются ) Пойду эксперементировать
А как при открытии окна перейти в Относительные координаты окна?
Разобрался с координатами
Код
set workwindow %handle[#i 1]//переключаемся в координаты окна

p.s. showwindow MINIMIZE // свернуть текущее рабочее окно - Не работает нынче?

Код
 showwindow %handle[#i 1] minimize //сворачиваем отработанное окно

Странно - но с маленькими буквами работает сворачивание..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 19.8.2021, 7:27
Сообщение #7


**

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



Еще вопросик. Переменные между скриптами передаются? Или в каждом скрипте необходимо объявлять свои? Если в одном скрипте хендл окна определить - в другом его можно использовать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.8.2021, 11:08
Сообщение #8


**********

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



https://uopilot.uokit.com/wiki/index.php?ti...других_скриптов
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 21.8.2021, 19:30
Сообщение #9


**

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



Cirus, Уважаемый - подскажи следущее
- Есть окно игры в котором скажем открыт чат. Если в скрипте пишем
Код
sendex "сообщение пользователю"
допустим, а в винде в это время включена ENG раскладка - то получаем на ввыходе абракадабру нечитаемую.
Есть возможность проверки системного языка и переключения его в необходимую раскладку?

Код
// Пример 3
// печатаем одной строкой текста: Вася.Пупкин@gmail.com
set $var setlayout (0419)  // включили русскую раскладку
sendex Dfcz/Gegrby         // Вася.Пупкин (смотрим на клавиатуру)
set $var setlayout (0409)  // включили английскую раскладку
sendex ~2gmail.com         // @gmail.com
End_script


Не совсем понял данный пример
set $var setlayout (0419) // включили русскую раскладку - включит русскую раскладку в любом случае? Но писать все же надо на английских клавишах?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.8.2021, 20:28
Сообщение #10


**********

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



Код
wait 3000                         // пауза 3 секунды
set #h getwindow (0)              // получить хендл активного окна
set workwindow #h                 // сделать рабочим окном
set $var setlayout (0419)         // переключить на русскую раскладку
sendex "сообщение пользователю"   // написать текст
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 22.8.2021, 6:40
Сообщение #11


**

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



А если после необходимо на английском написать что либо?
Код

wait 3000                         // пауза 3 секунды
set #h getwindow (0)              // получить хендл активного окна
set workwindow #h                 // сделать рабочим окном
set $var setlayout (0419)         // переключить на русскую раскладку
set SendExDelay 100
sendex "сообщение пользователю"   // написать текст
wait 2000
set $var setlayout (0409)  // включили английскую раскладку
sendex hello cirus   // написать текст
end_script

Так получается?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 22.8.2021, 10:47
Сообщение #12


**********

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



Цитата
Так получается?

Да.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 26.8.2021, 12:07
Сообщение #13


**

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



Вопросик еще возник.
Имеется окно браузера, в нем есть строка меню из 8 пунктов.
Можно ли в зависимости от ширины окна - вычислить координаты клика?
Умеет ли пилот производить математические действия?
Код
set #X1 %arr[#1 1] / 8*6

Строка меню - 8 пунктов, необходимо нажать на 6 пункт. Максимальное разрешение окна нужно поделить на 8 пунктов меню и умножить на 6. На выходе получаем необходимые координаты по Х, которые должны соответствовать 6 пункту меню...
Пните в направлении как это реализовать
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 26.8.2021, 12:23
Сообщение #14


**********

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



Цитата
Максимальное разрешение окна нужно поделить на 8 пунктов меню и умножить на 6.

Код
log clear
log mode compact
get windowpos workwindow #X #Y #width #height
log Размеры окна: #width #height
log Позиция окна: #X #Y
set #posX #width / 8 * 6
log #posX
move #posX 100
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 8.9.2021, 14:00
Сообщение #15


**

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



Цитата(cirus @ 26.8.2021, 12:23) *




Загвоздочка возникла.. Есть игра нонтаргет - мышкой ведешь влево = персонаж поворачивается влево, вправо = вправо

Так вот если мышкой двигаю - все норм.
А на
Код
else
get mouse_pos #x #y
set #x #x + 5
mouse enable

move #x #y
kleft #x #y
end_if
end_while

нет реакции... На move_smooth также ноль внимания На kleft все как положено - стреляет. Куда копать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 8.9.2021, 14:33
Сообщение #16


**********

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



Цитата
Куда копать?

Функциями пилота не сделать. Через ардуино можно.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 8.9.2021, 18:15
Сообщение #17


**

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



Цитата(cirus @ 8.9.2021, 14:33) *

Функциями пилота не сделать. Через ардуино можно.


Порылся на задворках форума) Нашел вариант - Впринципе работает. Удалось повернуть героя и заставить бежать.
https://forum.uokit.com/index.php?s=&sh...st&p=434892
code

Код
//...

//repeat 213  // полный оборот
repeat 107
call move 10 0      // сдвинуть курсор на 100 вправо и на 0 вверх
end_repeat

sendex_down w
wait 3000
sendex {Spacebar}
wait 3000
sendex_up w
//...
end_script



proc move #x #y $abs
set linedelay 0
set #flags 1
if $abs = abs
set #flags 32769
set #x 65536 * #x / screenwidth
set #y 65536 * #y / screenheight
end_if
exec winapiexec.exe u@mouse_event #flags #x #y 0 0
end_proc

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 9.9.2021, 16:10
Сообщение #18


**

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




Товарищи - подскажите как перемешать массив? А то боты все время в одноой и той же последовательности входят в игру)) Как то палевно...
Код

set %mult [1] mult1                          // имя мульта
set %mult [2] mult2                          // имя второго мульта
set %mult [3] mult3                          // третьего
set %mult [4] mult4                          // имя четвертого
set #size size(%mult)                            // всего мультов
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.9.2021, 1:41
Сообщение #19


**********

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



Цитата
подскажите как перемешать массив?

Код
set %mult [1] mult1                          // имя мульта
set %mult [2] mult2                          // имя второго мульта
set %mult [3] mult3                          // третьего
set %mult [4] mult4                          // имя четвертого
set #size size(%mult)                            // всего мультов

log clear
log mode compact
// перемешивание
for #i 1 #size
    set #rand 1 + random(#size)
    set $tmp %mult [#i]
    set %mult [#i] %mult [#rand]
    set %mult [#rand] $tmp
end_for
// вывод массива
for #i 1 #size
    log %mult [#i]
end_for
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackBot
сообщение 10.9.2021, 5:48
Сообщение #20


**

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



При таком методе - как я понимаю, имеется вероятность попадания в массив при перемешивании одного и того же значения. Что не допустимо в моем случае...
Просто думал - что есть какая то встроенная функция перемешивания, которую я не нашел в документации
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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