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

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Помогите создать скрипт
respectman
сообщение 21.1.2018, 1:23
Сообщение #1


**

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



Здравствуйте!
Когда-то давно учился писать скрипты на пилот и выходило неплохо. Однако, время прошло и я многое забыл, т.к. давно не пользовался. Появилась необходимость снова прибегнуть к программе.
Мне нужен скрипт с действиями:
1 - нажать в точку лкм
2 - выполнить условие: если в точке цвет не зеленый (образно), то нажать в другое место лкм, если зеленый то проверять цвет пока зеленого не станет.
3 - после этого нажать лкм в другое место
4 - опять выполнить 2 пункт
ну и т.д.
Раньше играл в Ботва Онлайн и мне пилот там очень помогал, скрипты писал для игры сам и все замечательно работало. Сейчас забыл команды, переменные и т.п.
Помогите вспомнить и желательно на пальцах разъясните какая команда что делает. Буду очень признателен. Спасибо.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.1.2018, 1:38
Сообщение #2


**********

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



Примеры и описание команд можно посмотреть тут: Список_функций
Цитата
Мне нужен скрипт с действиями:
1 - нажать в точку лкм
2 - выполнить условие: если в точке цвет не зеленый (образно), то нажать в другое место лкм, если зеленый то проверять цвет пока зеленого не станет.
3 - после этого нажать лкм в другое место
4 - опять выполнить 2 пункт

Примерно так:
Код
kleft 100 200    // или left, клик в координаты 100 200
wait 500             // ждать 0.5 секунды, можно убрать если не надо
while 1 = 1      // бесконечный цикл
    while 201, 223 5353004     // пока цвет в указанных координатах зелёный
        wait 100
    end_while
    kleft 500 600  // клик в другое место
    wait 500
end_while
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
respectman
сообщение 6.3.2018, 21:04
Сообщение #3


**

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



Еще задался вопросом, как заставить пилот считывать текст/цифру в игре.

Допустим, игра в "21". Мой скрипт:

в этой строке возможно надо вписать команду N
if_not 384, 420 15116953 // ищу игру по цвету
left 384, 420 // нажимаю играть
wait 3s // джу начало игры
в этой строке возможно надо вписать команду else goto N (если я правильно понимаю, чтобы он просматривал цвет в координатах пока не появится нужный цвет)
end_if
if 400, 384 65605 // здесь по цвету координаты определяю ставку
left 400, 384 // нажимаю ставку
wait 3s // жду начало игры
end_if
-------------на этом этапе нужно определить какое кол-во очков выпало и соответственно после определения добрать карту или передать ход противнику. Цифры пишутся просто в тексте они не в картинке (если это важно конечно).
left 483, 342 // просто жму "передать ход"
wait 3s // жду окончания игры
left 803, 308 // нажимаю кнопку закрыть игру
wait 3s // жду и начинаю скрипт заново


Помогите доделать скрипт, чтобы работал как часы. Заранее благодарен!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.3.2018, 7:14
Сообщение #4


**********

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



Цифры можно выделить чтобы скопировать их в буфер?
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
respectman
сообщение 7.3.2018, 16:58
Сообщение #5


**

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



Цитата(cirus @ 7.3.2018, 7:14) *

Цифры можно выделить чтобы скопировать их в буфер?


Совершенно верно! Цифры выделяются и копируются, они не картинка, а текст. Еще вопрос, как заставить пилот искать в определенном окне (не все окно, а лишь часть его) необходимый цвет, после его нахождения совершать какие-либо действия, но пока цвет не найден продолжать его искать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.3.2018, 17:56
Сообщение #6


**********

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



Цитата
Цифры выделяются и копируются, они не картинка, а текст.

Код
showwindow windowhandle minimize     // свернуть пилот
wait 1000
double_left 385, 305    // двойной клик, чтобы выделить текст
wait 300
sendex ^c               // Ctrl + C (скопировать текст в буфер)
wait 200
get clipboard $a        // получить содержимое буера в переменную
log $a
// дальше сравнивать переменную
if $a > 10
    // что делать если $a больше 10
end_if
end_script

Цитата
искать в определенном окне (не все окно, а лишь часть его) необходимый цвет, после его нахождения совершать какие-либо действия, но пока цвет не найден продолжать его искать?

Findcolor
Код
set #a 0
while #a = 0    // пока цвет не найден
    set #a findcolor (300 300 500 500 (5515776) %arr)
    wait 10
    hint #a  // можно убрать
end_while
// 300 300 500 500 - область поиска
log #a   цвет найден
end_script
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
respectman
сообщение 7.3.2018, 18:55
Сообщение #7


**

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



Вот что у меня получилось:

showwindow windowhandle minimize
:start
if_not 384, 420 15116953
left 384, 420
wait 1s
else goto start
end_if
:A
if 400, 384 65605
left 400, 384
wait 1s
else goto A
end_if
:C
double_kleft 560, 264
wait 300
sendex ^c
wait 200
get clipboard $a
if $a > 10
left 483, 342
wait 1s
else
if $a < 10
left 464, 302
wait 300
left 502, 455
goto C
end_if
end_if
:B
if 781, 303 65944
left 803, 308
wait 1s
else goto B
end_if

Однако, скрипт читает цифру сравнивает ее с 10 и пропускает ход и не выполняет условие под else. Мне нужно, чтобы он сравнивал. Например: Сейчас выделеное число 12, пропустить ход. Следующая игра число 9, оно меньше 10 значит нужно добрать карты выполнив клики, после чего проверить опять получившееся число и снова определить оно больше 10 или меньше. Если меньше то добираем еще, если больше то пропускаем.
Помоги подредактировать, я чую на правильном пути, только не правильно условия ставлю.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
respectman
сообщение 7.3.2018, 19:14
Сообщение #8


**

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



showwindow windowhandle minimize
:start
if_not 384, 420 15116953
left 384, 420
wait 1s
else goto start
end_if
:A
if 400, 384 65605
left 400, 384
wait 1s
else goto A
end_if
:C
double_kleft 560, 264
wait 300
sendex ^c
wait 200
get clipboard $a
log $a
if $a > 10
left 483, 342
wait 1s
end_if
log $a
if $a < 10
left 464, 302
wait 3s
left 502, 455
wait 3s
else goto C
end_if
:B
if 781, 303 65944
left 803, 308
wait 1s
else goto B
end_if

Вроде нашел ошибку. Работает условия выполняет. Правда не могу понять, он будет перескакивать на :В, если нужно будет еще добрать или он по новой крутит скрипт сначала, а как дойдет до проверки числа, так и выберет. Скорость работы снижается. Буду тестить.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.3.2018, 19:14
Сообщение #9


**********

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



Цитата
else goto B

Это 2 строки должно быть:
Код
else
goto B

Код
hint $a    
if  $a > 10         // если больше 10
    left 483, 342
    wait 1s
else                // иначе, т. е. меньше или равно 10
    left 464, 302
    wait 300
    left 502, 455
    goto C
end_if

Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
respectman
сообщение 7.3.2018, 20:02
Сообщение #10


**

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



showwindow windowhandle minimize
:start
if_not 384, 420 15116953
left 384, 420
wait 1s
else
goto start
end_if
:A
if 400, 384 65605
left 400, 384
wait 1s
else
goto A
end_if
wait 1s
:C
double_kleft 560, 264
wait 1s
sendex ^c
wait 500
get clipboard $a
log $a
if $a > 10
left 483, 342
wait 1s
else
left 464, 302
wait 1s
left 502, 455
wait 1s
goto C
end_if
:B
if 781, 303 65944
left 803, 308
wait 1s
else
goto B
end_if

Поменял на это, все равно порой проскакивает и вместо добора пропускает ход, не пойму почему.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.3.2018, 20:17
Сообщение #11


**********

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



Значит $a больше 10.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
respectman
сообщение 7.3.2018, 20:20
Сообщение #12


**

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



Цитата(cirus @ 7.3.2018, 20:17) *

Значит $a больше 10.


Как сделать, чтобы он более точно определял? Может $a >= 10 и выполняем действие, а иначе выполняем другие действия?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.3.2018, 20:23
Сообщение #13


**********

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



Цитата
Может $a >= 10

Можно и так.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
respectman
сообщение 7.3.2018, 21:12
Сообщение #14


**

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



Кажется я понял проблему.
При выделении двойным кликом он выделяет число с пробелом, например 9_ он выделил и не добрал карту. Очень редко он добирает, но видимо потому, что он выделяет только число без пробела.
Как выделять именно зажатым курсором, типа как рукой?
Поставил точку начальную, повел влево, закончил и прочитал выделение и сделал действие?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.3.2018, 21:37
Сообщение #15


**********

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



Цитата
например 9_ он выделил и не добрал карту.

Trim - удаляет лишние пробелы вначале и в конце строки.
Код
if trim($a) >= 10
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
respectman
сообщение 8.3.2018, 4:26
Сообщение #16


**

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



Создал скрипт для игры, но он очень долго (не точно - моб на карте есть, а он не нападает, думаю связано с цветом он его не видит) ищет моба, как его ускорить и сделать поиск быстрее и точнее?
Еще бы скроллил карту, цены ему не было.

// Запад
:W
left 660, 13 // Жму кнопку охота
wait 5s
left 1094, 350 // Жму кнопку Запад
wait 1s
set #a findcolor (305, 121 1039, 442 1 1 (10455719 11835541 8812667 10389382 9400502) %arr 1) // Ищу цвет моба (несколько оттенков соответствующий ему, т.к. он перемещается)
if #a > 0
double_left %arr [1 1], %arr [1 2] // Когда нашел его по цветам, атакую
goto Battle // Бой
else
goto N // Следующий значек на компасе
end_if
// Север
:N
left 1112, 332 // Жму кнопку Север
wait 1s
set #a findcolor (305, 121 1039, 442 1 1 (10455719 11835541 8812667 10389382 9400502) %arr 1) // Ищу того же моба на карте
if #a > 0
double_left %arr [1 1], %arr [1 2] // Когда нашел его по цветам, атакую
goto Battle // Бой
else
goto E // Следующий значек на компасе
end_if
// Восток
:E
left 1135, 354 // Жму кнопку Восток
wait 1s
set #a findcolor (305, 121 1039, 442 1 1 (10455719 11835541 8812667 10389382 9400502) %arr 1) // Ищу того же моба на карте
if #a > 0
double_left %arr [1 1], %arr [1 2] // Когда нашел его по цветам, атакую
goto Battle // Бой
else
goto S // Следующий значек на компасе
end_if
// Юг
:S
left 1111, 368 // Жму кнопку Юг
wait 1s
set #a findcolor (305, 121 1039, 442 1 1 (10455719 11835541 8812667 10389382 9400502) %arr 1) // Ищу того же моба на карте
if #a > 0
double_left %arr [1 1], %arr [1 2]
goto Battle
else
goto W // Возвращаюсь к началу охоты
end_if
// Бой
:Battle
if_not 112, 201 14543521
left 112, 201
else
goto EXIT
end_if
// Выход
:EXIT
if_not 378, 366 15459022
goto Battle
else
goto W
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 8.3.2018, 10:37
Сообщение #17


****

Apprentice
Сообщений: 256
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.395



Интересно посмотреть на скриншоты с мобиками)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 8.3.2018, 11:11
Сообщение #18


**********

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



Что за игра?
Цитата
set #a findcolor (305, 121 1039, 442 1 1 (10455719 11835541 8812667 10389382 9400502) %arr 1)

Убрать 1 в конце.


Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
respectman
сообщение 8.3.2018, 16:16
Сообщение #19


**

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



Игра COSMICS: Галактические войны

По суте тот же двар, только в футуристичном стиле.

Нужно придумать сюда хороший скрипт на охоту и собирательство. Однако, у игры есть антибот - после охоты или сбора ресов тебе в мешок дают вещь "антибот" юзаешь ее и снова можешь копать и бить мобов. Насчет антибота пока ничего не предумал, т.к. чтобы использовать его в мешке надо навести на нее курсор и в правом верхнем углу вещи появится значок использования (так все вещи используются). Плюс когда антибот в мешке то нажимая охоту выскакивает окно с сообщением о необходимости зайти в мешок и использовать антибот.

Скрипт желательно нужен с отслеживанием хп и ожиданием его восстановления. Сложность в отслеживании хп - если после боя нажимать "охота", то полоска не заполняется, нужно обязательно заходить в мешок, потом в охоту снова и уже отслеживать (думаю трабл браузера). С этим поконопатиться и решить не трудно.

Трудность в выборе моба, они перемещаются и для каждого нужно искать цвета. Как я понял чем больше цветов, тем выше шанс найти его на карте, но тем больше времени он тратит на это. Может есть функция искать цвет не только под курсором в точке, а немножко в большей области, например в окружности?

Нужно облегчить скрипт, чтобы все происходило гораздо быстрее.


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 8.3.2018, 16:40
Сообщение #20


**********

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



Цитата
но тем больше времени он тратит на это.

Времени тратится мало, если не искать белый цвет на белом фоне.
Искать надо не моба, а его имя. Или вообще квадратную скобку, в которой лвл написан. С помощью Findimage.
Весь фон и левый верхний пиксель надо закрасить в один и тот же цвет (любой).
Примерно так: Прикрепленный файл  1.bmp ( 1,88 килобайт ) Кол-во скачиваний: 196

Код
set #a findimage(0 0 1920 1080 (C:\Users\abc\Desktop\1.bmp) %arr 2 70 -1 10)
hint size(%arr)  // найдено картинок
if size(%arr) > 0
    move %arr[1 1] %arr [1 2]   // первая найденная картинка
end_if
end_script

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

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

 

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