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

> Небеса: уникальная игра!, Поиск хода
cirus
сообщение 27.7.2016, 12:02
Сообщение #1


**********

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



https://www.youtube.com/watch?v=Iw_JvtqqMt4...eature=youtu.be
Код в файле блокнота. Прикрепленный файл  код.zip ( 4,91 килобайт ) Кол-во скачиваний: 162
Для корректной работы версия пилота не ниже 2.37.
В первом бою использовался этот скрипт. Нужно только указать кнопку хода и левую верхнюю картинку.
Ищет возможность собрать 6 в ряд, потом 5 и т. д.
Т. е. если не нашлось 5 в ряд, то в логе будут все варианты собрать 4 в ряд (если такие есть), иначе все по 3 в ряд. Варианты хода выводятся в формате: Строка Столбец.
Ход будет сделан по первой найденной комбинации.
На поиск картинок и вариантов хода уходит от 100 до 400 мсек. Зависит от того какая комбинация найдена. Тройки искать дольше всего.

Во втором и третьем бою использовался доработанный скрипт, в нём ход выбирается по приоритету и пишется в лог какая комбинация нашлась. Если найдётся несколько вариантов хода, то они будут отсортированы.
Надо:
1) Раскомментировать строки:
Код
set %imya [1] Череп
set %imya [2] Красный
set %imya [3] Жёлтый
set %imya [4] Крест
set %imya [5] Зелёный
save_array %output C:\ColorOutput.txt
sort_array %left 5

2) В case'ы switch %arr [#z 3] подставить цвета из файла C:\ColorOutput.txt. Их должно быть 5.
Получится что-то вроде этого:
Код
switch %arr [#z 3]
    case 10013920: set %a [#i #j] 1       // череп   (если вариант с черепами найден, то будет выбран он)
        break
    case 196690: set %a [#i #j] 2         // красный  (если не найдены черепа, то красные камни)
        break
    case 41690: set %a [#i #j] 3         // жёлтый (иначе желтые)
        break
    case 8886946: set %a [#i #j] 4       // крест
        break
    case 95004: set %a [#i #j] 5          // зелёный
end_switch

Цвета указанные в case должны быть всегда те же что в файле C:\ColorOutput.txt, иначе будет ошибка. Т. е. надо понимать что изменив координаты в init_arr %LevVerh (1), изменятся и полученные цвета, т. к. findcolor будет брать 36 цветов отсчитывая от этой точки. Т.е. указали нужные координаты левой верхней картинки, запустили скрипт (чтобы узнать цвета относительно этой точки), изменили case на нужные цвета и больше менять координаты левой верхней картинки не нужно, иначе придётся снова менять case.
%imya [1] будет соответствовать первому case, %imya [2] второму, т. е. если в первом case указать цвет красных камней, то и в %imya [1] нужно написать красный.

Работа скрипта основана на регэкспах. Находятся 36 цветов, создаётся сетка 6*6 с числами от 1 до 5 где каждая цифра отвечает за свой цвет, делается поиск регэкспом по шаблону.
Например, (\d)\1\1\1\1 ищет подряд 5 чисел (любых, 1 это не число, а обратная ссылка на первую группу (\d)). Регэксп возвращает позицию найденного элемента. Т. е. если строка 133333, то получим 2ю позицию. Понятно что проверить надо первые числа соседних строк.

Добавлена возможность работы в перекрытом (не свёрнутом) окне Прикрепленный файл  код1.zip ( 5,08 килобайт ) Кол-во скачиваний: 69
Если ничего не менять скрипт тоже будет работать, но только в активном окне.
Для корректной работы версия пилота не ниже 2.38.
Для перекрытого окна:
Запустить скрипт: http://uopilot.tati.pro/index.php?title=См...ие_между_окнами
Полученные значения вписать вместо 0 в строку:
Код
init_arr %workwindow (1) 0 0

Закомментировать строку:
Код
set #handle 2

Раскомментировать строку:
Код
//set #handle findwindow (Небеса)

Получится:
Код
init_arr %workwindow (1) 8 78            // числа могут быть другие
//set #handle 2                           // тип поиска
set #handle findwindow (Небеса)


Обновление
Доработанный скрипт: Прикрепленный файл  Nebesa.zip ( 7,42 килобайт ) Кол-во скачиваний: 114
В архиве сам скрипт и скрипт для настройки. На видео показано как настраивать. Настройка для перекрытого окна тоже есть. https://youtu.be/ahGqGXk9cqY
Внесённые изменения:
1. В лог выводятся все варианты хода.
2. Добавлен расчёт стоимости хода.
Код
// имя стоимость цвет
init_arr %imya (1) Череп 6 11988223
init_arr %imya (2) Красный 5 196688
init_arr %imya (3) Жёлтый 3 171991
init_arr %imya (4) Зелёный 1 393204
init_arr %imya (5) Крест 1 7834774

Череп стоит 6, красный 5. Т. е. если будет найдено 3 черепа и 3 красных будет сделан ход черепа, т. к. 3 (черепа)* 6 (стоимость) = 18, больше чем 3 (красных) * 5 (стоимость) = 15.
Стоимость можно менять в зависимости от того что приоритетнее. Указывать число от 1 и выше.
3. Ходы где будет составлено 2 ряда тоже просчитываются. Т .е . если найдены ходы: 3 черепа и 3 красных + 3 жёлтых, то будет сделан ход с красным и жёлтым, т. к. 3 черепа это 18 очков, а красный с жёлтым это 24 (3*5 + 3*3).
4. Ход из 5 и 6 в ряд всегда в приоритете. Если такой ход возможен, то он будет сделан независимо от стоимости других ходов.

Обновление 2
Добавил рандом для кликов +-5 пикселей.
Добавил проверку что камни не перемещаются после того как ход перешёл к персонажу, чтобы избежать лишние просчёты ходов.
Код
set #wait 500

Время, в течение которого, камни не должны перемещаться. Подобрать подходящее значение.
Особо не тестил, но должно работать.
Прикрепленный файл  Небеса2.zip ( 5,87 килобайт ) Кол-во скачиваний: 76

Обновление 3
Уменьшил код в 3 раза.
Изменён принцип работы скрипта.
Настраивается также как предыдущие.
Прикрепленный файл  Nebesa3.zip ( 4,24 килобайт ) Кол-во скачиваний: 98

Обновление 4
Добавлен поиск количества манны вначале каждого хода. Если число найдётся, то результат будет в %result [1 1].
Добавил ход молнией, квадратом и крестом. При просчёте хода для квадрата и креста манна в приоритете.
Если манны нет, делается обычный ход, теперь в приоритете манна, а не черепа.
Если манны хватает только на квадрат или крест, то делается ход ими.
Если манны хватает ещё на молнию, то делается ход ей, потом квадрат или крест.
Если хватает на берсерк, то используется сначала он, потом молния, потом квадрат или крест.
Не нужное можно убрать/поменять.
Количество манны вначале хода можно выводить в хинт, раскомментировать 35 строку. Если конечно число будет найдено.
Настройка скрипта не менялась.
Минимальная версия пилота 2.39. Запускать от администратора.
https://youtu.be/snk6JoaJkI8
В архиве сам скрипт, скрипт для настройки и картинки для поиска числа и скилов.
Прикрепленный файл  Nebesa4.zip ( 21,89 килобайт ) Кол-во скачиваний: 83

Обновление 5
Исправлено несколько косяков с предыдущего обновления.
Добавлена возможность выбирать скилы и их порядок использования.
Код
set %skillimage [1 6] ОгненныйШар
set %skillimage [1 7] Взрыв
set %skillimage [1 8] ОгненнаяДуша
set %skillimage [1 9] ОгненныйЩит
set %skillimage [1 10] БурлящаяКровь

Делаем картинки культовых скилов. Изменяем на нужные названия. Менять только в этом блоке, имена подпрограмм оставляем как есть.
Переменная #InputPrompt отвечает за вывод окна для выбора скилов. 1 - при запуске скрипта будет запрос на выбор скилов. 0 - будут использованы скилы, которые выбраны в прошлый раз, порядок их использования также будет как в прошлый раз.
В первом запросе Prompt ставим галочки какие скилы использовать. В следующих выбираем порядок использования скилов.
Поиск количества манны не используется, т. е. не учитывается хватит ли манны на все указанные скилы. Если нужен поиск манны - раскомментировать соответствующий блок:
Код
// set size(%result)       // уничтожить массив с предыдущими результатами
// gosub mp    // поиск числа с маной
// if  size(%result) > 0    // если количество мп найдено
//    hint (14 clBlue 423, 301 (%result [1 1]))
//    сюда дописывать какие скилы юзать в зависимости от количества мп, например:
//    if %result [1 1] > 20    // если манны больше 20
//        gosub krest            // использовать крест
//    end_if
// end_if

Прикрепленный файл  Nebesa5.rar ( 35,44 килобайт ) Кол-во скачиваний: 129
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
3 страниц V  1 2 3 >  
Ответить в эту темуОткрыть новую тему
Ответов(1 - 19)
cirus
сообщение 28.7.2016, 13:45
Сообщение #2


**********

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



Исправил опечатку, могло неправильно выводиться количество найденных элементов.
Исправил вывод неправильного значение при поиске 5 элементов.
Архивы обновил.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.7.2016, 15:17
Сообщение #3


***********

Модератор UOPilot
Сообщений: 8.403
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 25834
Пользователь №: 11.279



Имхо лепить лучше или зип или обычный тхт.


--------------------
Скрипты под заказ.
Консультации по UOpilot через ICQ, Skype, Ventrilo, TeamSpeak, TeamViewer 700р/час.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.8.2016, 12:00
Сообщение #4


**********

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



В первый пост добавлен доработанный скрипт.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 24.8.2016, 15:02
Сообщение #5


*******

Adept
Сообщений: 1.083
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 12732
Пользователь №: 16.156



Добавил скрипт на вики. Прошу более грамотных людей поправить что не так.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 25.8.2016, 2:59
Сообщение #6


**********

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



Цитата
Добавил скрипт на вики. Прошу более грамотных людей поправить что не так.

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


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 391
Из: Белоруссии
Пользователь №: 14.972



Код
// сделать ход
1) left #x1 #y1
wait 200
2) left #x2 #y2
wait 100
3) left 133, 575 20 20 20 20

Cirus, первых два лефта понятны, а что за конструкция третьего? Как с него сделать рандомный клик.? А так код класс работает, спасибо что написал такое. Единственный минус, это когда уже перешел ход к персонажу, а камни еще падают, то пилот поле считывает и не правильно его определяет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 17.10.2016, 19:37
Сообщение #8


***********

Модератор UOPilot
Сообщений: 8.403
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 25834
Пользователь №: 11.279



Цитата
3) left 133, 575 20 20 20 20

Это и есть рандом. Новый синтаксис.


--------------------
Скрипты под заказ.
Консультации по UOpilot через ICQ, Skype, Ventrilo, TeamSpeak, TeamViewer 700р/час.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 17.10.2016, 20:02
Сообщение #9


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 391
Из: Белоруссии
Пользователь №: 14.972



Цитата(DarkMaster @ 17.10.2016, 19:37) *

Это и есть рандом. Новый синтаксис.

Спасибо, удобно.

Код
// сделать ход
1) left #x1 #y1
wait 200
2) left #x2 #y2
wait 100
3) left 133, 575 20 20 20 20

Cirus, скажи, первые лефты с рандомом или без, если без то в какую область ячейки с камнем идет клик? И зачем 3 лефт если он кликает в пустоту.


Цитата(DarkMaster @ 17.10.2016, 19:37) *

Это и есть рандом. Новый синтаксис.

Код
    Left_Down #vxodx #vxody
    Set #t random(5) + 5
    Wait #t
    Left_Up #vxodx #vxody

А тут в Left_Down добавить рандом нужно, а в Left_Up не надо или как-то подругому надо делать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 18.10.2016, 2:33
Сообщение #10


**********

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



Цитата
Единственный минус, это когда уже перешел ход к персонажу, а камни еще падают, то пилот поле считывает и не правильно его определяет.

Всё равно ход не сделается пока камни смещаются. Можно увеличить wait после клика. Надо делать 2 сканирования с небольшой задержкой и если все картинки совпадают, т. е. они уже не перемещаются, то тогда просчитывать ход.
Вообще код можно сократить раз в 5. Большая часть комбинаций в этой игре вообще не существует.
Цитата
Cirus, скажи, первые лефты с рандомом или без, если без то в какую область ячейки с камнем идет клик?

Клик делается в ту же точку которую указываешь при настройке.
Цитата
И зачем 3 лефт если он кликает в пустоту.

У меня иногда подсвечивались камни после клика, т. е. как будто курсор остался в том месте куда был сделан клик. При том что курсор вообще ни куда не перемещался. Поэтому клик делал в пустое место чтобы как бы убрать курсор.
Цитата
А тут в Left_Down добавить рандом нужно, а в Left_Up не надо или как-то подругому надо делать?

Да, наверное, отпускать кнопку лучше в тех же координатах где было нажатие. Так что проще рандом сделать по-старому.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 18.10.2016, 9:07
Сообщение #11


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 391
Из: Белоруссии
Пользователь №: 14.972



Цитата(cirus @ 18.10.2016, 2:33) *

Клик делается в ту же точку которую указываешь при настройке.

Код
// сделать ход
left #x1 #y1
wait 200
left #x2 #y2

Я про эти клики спрашивал, они рандомные или постоянно в одну область клетки с камнем кликают? Про 3 клик понятно, куда указал туда и будет клик.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 18.10.2016, 9:33
Сообщение #12


**********

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



В одну и ту же.
Код
left #x1 #y1 5 5 5 5    // клик с разницей +-5 пикселей по x и y
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 18.10.2016, 10:48
Сообщение #13


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 391
Из: Белоруссии
Пользователь №: 14.972



Цитата(cirus @ 18.10.2016, 9:33) *

В одну и ту же.
Код
left #x1 #y1 5 5 5 5    // клик с разницей +-5 пикселей по x и y


А изначально left #x1 #y1 без рандома куда клик происходит, в центр клетки или смещен куда нибудь?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 18.10.2016, 10:51
Сообщение #14


**********

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



Цитата
А изначально left #x1 #y1 без рандома куда клик происходит, в центр клетки или смещен куда нибудь?

Я уже написал.
Клик делается в ту же точку которую указываешь при настройке.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 18.10.2016, 10:55
Сообщение #15


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 391
Из: Белоруссии
Пользователь №: 14.972



Цитата(cirus @ 18.10.2016, 10:51) *

Я уже написал.
Клик делается в ту же точку которую указываешь при настройке.

Код
 init_arr %LevVerh (1) 334, 192   // левая верхняя картинка
Это вот это ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 18.10.2016, 11:22
Сообщение #16


**********

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



Цитата
Это вот это ?

Да.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 19.10.2016, 9:24
Сообщение #17


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 391
Из: Белоруссии
Пользователь №: 14.972



Цитата(cirus @ 18.10.2016, 11:22) *

Да.

Спасибо, разобрался со скриптом. Если прикрутить GetImage, то можно избежать холостого считывания поля при падении камней.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 20.10.2016, 2:54
Сообщение #18


**********

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



Цитата
Единственный минус, это когда уже перешел ход к персонажу, а камни еще падают, то пилот поле считывает и не правильно его определяет.

Добавил в первый пост обновление. Теперь должно быть нормально.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 20.10.2016, 7:55
Сообщение #19


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 391
Из: Белоруссии
Пользователь №: 14.972



Цитата(cirus @ 20.10.2016, 2:54) *

Добавил в первый пост обновление. Теперь должно быть нормально.

Спасибо, попробую.
Код
// имя стоимость цвет
init_arr %imya (1) Череп 6 10672625
init_arr %imya (2) Красный 5 196689
init_arr %imya (3) Жёлтый 3 178411
init_arr %imya (4) Зелёный 1 16187391
init_arr %imya (5) Крест 1 7505553

Зеленый 1 и Крест 1 это так надо или у кого-то должна быть цифра 2?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 20.10.2016, 10:18
Сообщение #20


**********

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



Цитата
Зеленый 1 и Крест 1 это так надо или у кого-то должна быть цифра 2?

Это зависит от того что приоритетнее. В данном случае если будет найдено 3 зелёных и 3 креста, то будет сделан ход из первой найденной комбинации. Если поставить 2 для креста, то будет сделан ход из крестов. Я не играл в эту игру, что важнее не знаю, так что не делал приоритет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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