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

11 страниц V « < 2 3 4 5 6 > »   
Ответить в эту темуОткрыть новую тему
> Поиск числа с помощью Findimage, Готовый скрипт
cirus
сообщение 24.5.2017, 14:18
Сообщение #61


**********

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



Цитата
Но скорее всего код будет огромным.

Код не большой, только перевод картинки в черно-белый цвет на языке пилота займёт больше времени, чем просто поиск цифр разного цвета. Это надо делать отдельную функцию.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 24.5.2017, 14:25
Сообщение #62


****

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



Цитата(cirus @ 24.5.2017, 15:18) *

не большой, только перевод картинки в черно-белый цвет на языке пилота займёт больше времени, чем просто поиск цифр разного цвета. Это надо делать отдельную функцию.

в питоне есть такая функция, мб оттуда скопипастить)
https://habrahabr.ru/post/163663/
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 24.5.2017, 19:34
Сообщение #63


****

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



Консольное изменение изображений (консольный фотошоп)

1. Скачиваем программу ImageMagick http://www.imagemagick.org/script/download.php
Крутим страницу в самый низ и скачиваем по последней ссылке ImageMagick-7.0.5-7-portable-Q16-x64.zip (для 64 винды)
это версия в архиве, не требующая установки- другие версии не заработали у меня чет)
2. Для удобства распаковываем в папку C:\Magic
3. Готово (IMG:style_emoticons/default/smile.gif)

теперь в пилоте вместо обычного поиска картинки:
Код
set timer
set #a FindImage (0 0 300 300 ("C:\Users\Andrey\Desktop\Pil3\1.bmp") %arr 2 80 1 1)
if #a > 0
hint #a
end_if
log timer
end_script


поиск можно делать так:
Код
set timer
set %a GetImage (0 0 300 300) // сохранить в памяти часть экранной области
set $bmp SaveImage (%a [1 1] C:\picture.bmp) // сохранить в файл
exec C:\Magic\convert.exe "C:\picture.bmp" -colorspace gray "C:\picture.bmp"
wait 100
set %b [1]  LoadImage (C:\picture.bmp)
set #a FindImage (0 0 300 300 ("C:\Users\Andrey\Desktop\Pil3\2.bmp") %arr %b [1 1] 80 1 1)
set $del DeleteImage  (%b [1 1])
if #a > 0
hint #a
end_if
log timer
end_script

-----------------------------------------------
после изменения изображения приходится ставить паузу.
Методом научного тыка выяснилось, что если:
картинка 10х10pix то хватит паузы в ~40мс
картинка 100х100pix то хватит паузы в ~60мс
картинка 500х500pix то хватит паузы в ~90мс

возможно если сохранять картинку на SSD, то будет в пару раз быстрее

Соответственно поиск будет дольше, чем обычный. Но может пригодится в некоторых случаях, по этому оставлю здесь статью, чтоб не забыть)
--------------------------------------------------
Некоторые команды ImageMagick:
convert.exe img.png img.jpg (преобразует любые расширения изображений в другие jpg bmp png и т.д)
-colorspace gray (делает изображение черно-белым)
-resize 100×150 (изменяет размер изображения)
-resize 200% (изменяет размер изображения)
-rotate +20 (поворачивает изображение на указанный угол по часовой стрелке)
-rotate -20 (поворачивает изображение на указанный угол против часовой стрелки)
-normalize -posterize 3 (постеризация- число оттенков)
-gamma 0.1 (гамма)
-sepia-tone 80% (сепия)
-negate (негатив)
-brightness-contrast -20% (контраст меньше)
-brightness-contrast 20% (контраст больше)
-monochrome -normalize (монохромность)

Применять можно сразу несколько команд, напрмер:
exec C:\Magic\convert.exe "C:\picture.bmp" -resize 200% -colorspace gray -gamma 0.1 "C:\picture.bmp"

так же существует еще множество команд, которые можно найти в инете.
-----------------------------------------------------
Пример что можно получить, прогнав картинку через несколько фильтров:

Код
exec C:\Magic\convert.exe "C:\Users\andrey\Desktop\111\1.bmp" -resize 300% "C:\Users\andrey\Desktop\111\2.bmp"
wait 40
exec C:\Magic\convert.exe "C:\Users\andrey\Desktop\111\2.bmp" -colorspace gray "C:\Users\andrey\Desktop\111\3.bmp"
wait 40
exec C:\Magic\convert.exe "C:\Users\andrey\Desktop\111\3.bmp" -normalize -posterize 3 "C:\Users\andrey\Desktop\111\4.bmp"
wait 40
exec C:\Magic\convert.exe "C:\Users\andrey\Desktop\111\4.bmp" -gamma 0.1 "C:\Users\andrey\Desktop\111\5.bmp"
wait 40
exec C:\Magic\convert.exe "C:\Users\andrey\Desktop\111\5.bmp" -resize 33% "C:\Users\andrey\Desktop\111\6.bmp"
wait 100


(IMG:https://i.yapx.ru/JTog.png) 1

(IMG:https://i.yapx.ru/JToj.png) 2 -resize 300%

(IMG:https://i.yapx.ru/JTon.png) 3 -colorspace gray

(IMG:https://i.yapx.ru/JTqS.png) 4 -normalize -posterize 3

(IMG:https://i.yapx.ru/JTqQ.png) 5 -gamma 0.1

(IMG:https://i.yapx.ru/JTow.png) 6 -resize 33%

пример для наглядности, весь кодд можно прописать 1 строкой:

Код
exec C:\Magic\convert.exe "C:\Users\andrey\Desktop\111\1.bmp" -resize 300% -colorspace gray -normalize -posterize 3 -gamma 0.1 -resize 33% "C:\Users\andrey\Desktop\111\1.bmp"
wait 100


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


**********

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



Цитата
после изменения изображения приходится ставить паузу.

Удаляем старую картинку и ждём пока не сохранится новая:
Код
filedelete (С:\picture2.bmp)    // удалить файл
exec C:\Magic\convert.exe "C:\picture.bmp" -colorspace gray "С:\picture2.bmp"   // сохранить с нужными изменениями
while fileexists (С:\picture2.bmp) = 0   // ждать пока файл не сохранится
    wait 1
end_while
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 25.5.2017, 3:12
Сообщение #65


****

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



filedelete (С:\picture2.bmp) // удалить файл
exec C:\Magic\convert.exe "C:\picture.bmp" -colorspace gray "С:\picture2.bmp" // сохранить с нужными изменениями
while fileexists (С:\picture2.bmp) = 0 // ждать пока файл не сохранится
wait 1
end_while

не работает, файлделет не удаляет файл
и из цикла не выходит, хотя файл существует
странно чета

копирую файл на рабочий стол и пробую от туда удалить и удаляет)
filedelete ("C:\Users\andrey\Desktop\picture2.bmp")

а с диска С не хочет удалять
пилот от админа запущен, но походу всеравно прав не хватает на удаление
-----------------------------------------------------------
заработало, когда на рабочий стол перенес
Код
set timer
set %a GetImage (0 0 300 300) // сохранить в памяти часть экранной области
set $bmp SaveImage (%a [1 1] C:\Users\andrey\Desktop\picture.bmp) // сохранить в файл
filedelete ("C:\Users\andrey\Desktop\picture2.bmp")
exec C:\Magic\convert.exe "C:\Users\andrey\Desktop\picture.bmp" -colorspace gray "C:\Users\andrey\Desktop\picture2.bmp"   // сохранить с нужными изменениями
while fileexists (C:\Users\andrey\Desktop\picture2.bmp) = 0   // ждать пока файл не сохранится
    wait 1
end_while
set %b [1]  LoadImage (C:\Users\andrey\Desktop\picture2.bmp)
set #a FindImage (0 0 300 300 ("C:\Users\Andrey\Desktop\2.bmp") %arr %b [1 1] 80 1 1)
set $del DeleteImage  (%b [1 1])
if  #a > 0
    hint время- timer мс Картинка найдена #a
end_if
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 9.6.2017, 21:46
Сообщение #66


****

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



Поиск числа с помощью Findimage 3.0

Код
// Поиск числа с помощью FindImage
init_arr %GetImage (1) 0 0 99, 58     // координаты для поиска, StartX StartY EndX EndY

set linedelay 0
init_arr %picture 0 1 2 3 4 5 6 7 8 9     // имена картинок (0.bmp, 1.bmp и т. д.)
init_arr %symbol 0 1 2 3 4 5 6 7 8 9    // символ соответствующий имени, т. е. картинка 0.bmp соответствует 0
set $path "C:\Number2"                     // папка с картинками
set $bmp "*.bmp*"                           // формат картинок
set #deltaY 8                               // расстояние между строками (можно указать высоту картинок)
set #deltaspace 12                          // допустимое расстояние между цифрами, иначе будет считаться что это не одно число
set #accuracy 90                            // точность поиска для Findimage
set #deviation 3                            // погрешность оттенка  для Findimage
set #wait 2                                 // пауза между поиском картинок, если указать меньше искать будет быстрее, но нагрузит процессор
set #timeproc 2000                          // время (в мсек) для поиска картинок, если 0 не выйдет из процедуры пока не найдётся хотя бы 1 картинка
set #repeatimage 2                          // допустимое смещение координат, если используется несколько видов одной картинки

dir (%path $path $bmp)
set delimiter '   '
while 1 = 1
    set size(%result)                        // уничтожить массив с предыдущими результатами
    call test %picture %symbol %GetImage %path #deltaY #deltaspace #accuracy #deviation #wait #timeproc #repeatimage    // процедура поиска
    // save_array %result C:\resultarr.txt     // массив с результатами поиска

    if  size(%result) > 0         // если размер массива больше 0
        // ТУТ НУЖНЫЕ ДЕЙСТВИЯ
        ///////////// для примера вывод в hint того что нашлось (можно убрать)
        set $str
        set %z [1] \n
        for #i 1 size(%result)
            set $str $str%result[#i]
            if  #i != size(%result)
                set $str $str%z [1]
            end_if
        end_for
        hint (14 clBlue 409, 265 ($str))
        /////////////
    else
        hint Картинки не найдены
    end_if
end_while

// процедура поиска и сортировки
proc test %picture %symbol %GetImage %path #deltaY #deltaspace #accuracy #deviation #wait #timeproc #repeatimage
    set #GetStartX %GetImage [1 1]
    set #GetStartY %GetImage [1 2]
    set #GetEndX %GetImage [1 3]
    set #GetEndY %GetImage [1 4]
    set #current_script current_script
    // загрузка картинок в память
    if  size(%path) > 0                  // если картинки найдены
        for #i 1 size(%path)
            for #j 1 size(%picture)
                if  %path [#i 3] = %picture [#j]
                    set #n #n + 1
                    set %image [#n] LoadImage(%path [#i 1])
                    set %number [#n] %symbol [#j]
                    break
                end_if
            end_for
        end_for
    else
        log Картинки в: $path   не найдены
        log Скрипт остановлен
        stop_script #current_script
    end_if
    // поиск картинок и их сортировка
    set size(%result1)
    while size(%result1) = 0 and (#timeproc > timer or #timeproc = 0)
        set #z 0
        set %get GetImage(#GetStartX #GetStartY #GetEndX #GetEndY)      // сохранить часть экрана в память
        set #v %get [1 1]
        for #i 1 size(%number)
            set #a Findimage(0 0 %get [1 2] %get [1 3] (%image[#i 1]) %a #v #accuracy -1 #deviation)   // поиск
            if  #a < 0
                log Ошибка поиска картинки. Код ошибки: #a
                log Скрипт остановлен
                stop_script #current_script
            end_if
            if  #a > 0
                for #j 1 size(%a)
                    set #z #z + 1
                    init_arr %result1 (1 1 #z) %number[#i] %a[#j 1] %a[#j 2]   // запись результатов поиска в массив
                end_for
            end_if
            wait #wait
        end_for
        if  size(%result1) > 0
            gosub sortY        // сортировка по Y и X
        end_if
        set $b DeleteImage(%get[1 1])    // удалить изображение, полученное GetImage
    end_while
    goto end                 // выйти из процедуры

    :sortY
    ///// удаление повторных координат, если используется несколько видов одной картинки
        set #size 0
        set %tmp %result1
        set size(%result1)
        for #i 1 size(%tmp[1])
            set #break 0
            for #n 1 #size
                set #xrepeat %tmp[2 #i] - %result1[2 #n]
                set #yrepeat %tmp[3 #i] - %result1[3 #n]
                if  abs(#xrepeat) <= #repeatimage and abs(#yrepeat) <= #repeatimage
                    set #break 1
                    break
                end_if
            end_for
            if  #break = 0
                set #size #size + 1
                init_arr %result1 (1 1 #size) %tmp [1 #i]  %tmp [2 #i] %tmp [3 #i]
            end_if
        end_for
     ///////

        set #z 0
        set #z1 0
        set #z2 1
        set #z4 0
        sort_array %result1 -3
        while 1 = 1
            set #z 0
            set size(%tmp)
            for #i #z2 eval(size(%result1 [1]) - 1)
                set #j #i + 1
                set #x %result1 [3 #i] - %result1 [3 #j]
                if  abs(#x) < #deltaY
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #i]  %result1 [2 #i] %result1 [3 #i]
                else
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #i]  %result1 [2 #i] %result1 [3 #i]
                    break
                end_if
            end_for
            set #z2 #z2 + #z
            if  #z2 = size(%result1[])
                set #x %result1 [3 #i] - %result1 [3 #j]
                if  abs(#x) > #deltaY
                    set #jj #j
                    sort_array %tmp -2
                    set #z1 #z1 + 1
                    init_arr %result (#z1) %tmp [1]
                    gosub space
                    set size(%tmp)
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #jj]  %result1 [2 #jj] %result1 [3 #jj]
                    set #z1 #z1 + 1
                    set %result.#current_script [#z1] %tmp [1]
                    gosub end
                end_if
                set #z #z + 1
                init_arr %tmp (1 1 #z) %result1 [1 #j]  %result1 [2 #j] %result1 [3 #j]
                sort_array %tmp -2
                set #z1 #z1 + 1
                init_arr %result (#z1) %tmp [1]
                gosub space
                break
            else
                sort_array %tmp -2
                set #z1 #z1 + 1
                init_arr %result (#z1) %tmp [1]
                gosub space
            end_if
        end_while
    return

    :space
        set #z3 0
        set size(%space)
        set #z4 #z4 + 1
        //посчитать где нужны пробелы
        for #i 1 eval(size(%tmp[]) - 1)
            set #j #i + 1
            set #space  %tmp [2 #i] - %tmp [2 #j]
            if  abs(#space) > #deltaspace
                set #z3 #z3 + 1
                set %space[#z3] #j
            end_if
        end_for
        // вставить пробелы
        for #i 1 size(%space)
            set $str %result [#z4]
            set $str insert(" " $str %space[#i])
            set #j #i + 1
            set %space[#j] %space[#j] + #i
            set %result [#z4] $str
        end_for
        // сохранение массива в основном скрипте
        for #i 1 size(%result)
            set size(%tmp1)
            init_arr %tmp1 (1) %result [#i]
            for #j 1 size(%tmp1[1])
                set %result.#current_script [#i #j] %tmp1 [1 #j]
            end_for
        end_for
    return

    :end
end_proc



как в этом коде сделать чтобы использовался поиск workwindow
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.6.2017, 1:54
Сообщение #67


**********

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



Находим строку:
Код
set %get GetImage(#GetStartX #GetStartY #GetEndX #GetEndY)      // сохранить часть экрана в память

Дописываем хендл окна или переменную workwindow:
Код
set %get GetImage(#GetStartX #GetStartY #GetEndX #GetEndY workwindow)

Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 30.8.2017, 11:28
Сообщение #68


****

Apprentice
Сообщений: 128
Регистрация: 2.2.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.276
Возраст: 27



Уважаемый cirus, а как быть если к примеру "2" и "22" имеют разный вид двойки, подскажите пожалуйста.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 30.8.2017, 11:50
Сообщение #69


**********

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



Цитата
как быть если к примеру "2" и "22" имеют разный вид двойки

Можно искать несколько видов одной и той же цифры.
Код
init_arr %picture 0 1 2 2 2 3 4 5 6 7 8 9     
init_arr %symbol 0 1 2 2a 2b 3 4 5 6 7 8 9    // 3 картинки цифры 2

Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 30.8.2017, 11:53
Сообщение #70


****

Apprentice
Сообщений: 128
Регистрация: 2.2.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.276
Возраст: 27



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


****

Apprentice
Сообщений: 128
Регистрация: 2.2.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.276
Возраст: 27



Уважаемый cirus , Не могли бы Вы мне помочь с кодом, у меня в игре есть 4ре ячейки с мобами, и я хотел последовательно проверять уровень мобов в каждой из ячеек, верхнюю правую нижнюю левую, картинки с цифрами все подготовил, а вот код не могу сформулировать в голове, и самое печально то, что для каждой ячейки с мобами идут свои картинки с цифрами, т.е у меня сейчас 4ре папки с картинками, собственно сам вопрос заключается в том, как мне прописать допустим в общем скрипте проверку всех четырёх ячеек с мобами и если к примеру моб достиг 25 лвла кликнуть по нему, ну с кликами я сам разберусь, самое главное проверку сделать, прилагаю скриншот для наглядности, спасибо за ранее если сможете мне помочь.
Извиняюсь если не по теме написал.


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


**********

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



Теоретически можно искать все числа сразу, но надо тестить. Скиньте мне все картинки с цифрами и несколько картинок в bmp с мобами. В выходные гляну.
Пока делать 4 отдельных поиска, как-то так:
код
Код
set linedelay 0
init_arr %picture 0 1 2 3 4 5 6 7 8 9       // имена картинок (0.bmp, 1.bmp и т. д.)
init_arr %symbol 0 1 2 3 4 5 6 7 8 9        // символ соответствующий имени, т. е. картинка 0.bmp соответствует 0
set $bmp "*.bmp*"                           // формат картинок
set #deltaY 8                               // расстояние между строками (можно указать высоту картинок)
set #deltaspace 12                          // допустимое расстояние между цифрами, иначе будет считаться что это не одно число
set #accuracy 90                            // точность поиска для Findimage
set #deviation 3                            // погрешность оттенка  для Findimage
set #wait 2                                 // пауза между поиском картинок, если указать меньше искать будет быстрее, но нагрузит процессор
set #timeproc 2000                          // время (в мсек) для поиска картинок, если 0 не выйдет из процедуры пока не найдётся хотя бы 1 картинка

// 4 папки с картинками, цифры во всех папках назвать одинаково 0.bmp, 1.bmp и т. д.
set $path1 "C:\l2number1"                   // папка с картинками верхнего числа
set $path2 "C:\l2number2"                   // папка с картинками левого
set $path3 "C:\l2number3"                   // папка с картинками правого
set $path4 "C:\l2number4"                   // папка с картинками нижнего

// 4 массива с координатами
init_arr %GetImage1 (1) 132, 54 167, 83     // координаты для поиска верхнего числа
init_arr %GetImage2 (1) 50, 100 82, 126     // координаты для поиска левого
init_arr %GetImage3 (1) 229, 105 248, 124   // координаты для поиска правого
init_arr %GetImage4 (1) 142, 148 167, 171   // координаты для поиска нижнего


dir (%path1 $path1 $bmp)
dir (%path2 $path2 $bmp)
dir (%path3 $path3 $bmp)
dir (%path4 $path4 $bmp)

while 1 = 1
    // тут ваш скрипт
    gosub find   // переход к подпрограмме поиска цифр
end_while


// подпрограмма поиска цифр
:find
    // поиск картиноки из папки C:\l2number1, координаты %GetImage1
    set size(%result)                        // уничтожить массив с предыдущими результатами
    call test %picture %symbol %GetImage1 %path1 #deltaY #deltaspace #accuracy #deviation #wait #timeproc     // процедура поиска
    if  size(%result) > 0         // если размер массива больше 0
        // ТУТ НУЖНЫЕ ДЕЙСТВИЯ, например
        if %result [1 1] = 25    // если число равно 25
            log Число равно 25 !!!!!!
        else                    // иначе
            log Число равно %result [1 1]
        end_if
    end_if

    // поиск картиноки из папки C:\l2number2, координаты %GetImage2
    set size(%result)                        // уничтожить массив с предыдущими результатами
    call test %picture %symbol %GetImage2 %path2 #deltaY #deltaspace #accuracy #deviation #wait #timeproc     // процедура поиска, ищутся картинки из папки C:\l2number2
    if  size(%result) > 0         // если размер массива больше 0
        if %result [1 1] = 25    // если число равно 25
            log Число равно 25 !!!!!!
        end_if
    end_if

    // для остальных дописать
return


// процедура поиска и сортировки
proc test %picture %symbol %GetImage %path #deltaY #deltaspace #accuracy #deviation #wait #timeproc
    set #GetStartX %GetImage [1 1]
    set #GetStartY %GetImage [1 2]
    set #GetEndX %GetImage [1 3]
    set #GetEndY %GetImage [1 4]
    set #current_script current_script
    // загрузка картинок в память
    if  size(%path) > 0                  // если картинки найдены
        for #i 1 size(%path)
            for #j 1 size(%picture)
                if  %path [#i 3] = %picture [#j]
                    set #n #n + 1
                    set %image [#n] LoadImage(%path [#i 1])
                    set %number [#n] %symbol [#j]
                    break
                end_if
            end_for
        end_for
    else
        log Картинки в: $path   не найдены
        log Скрипт остановлен
        stop_script #current_script
    end_if
    // поиск картинок и их сортировка
    set size(%result1)
    while size(%result1) = 0 and (#timeproc > timer or #timeproc = 0)
        set #z 0
        set %get GetImage(#GetStartX #GetStartY #GetEndX #GetEndY)      // сохранить часть экрана в память
        set #v %get [1 1]
        for #i 1 size(%number)
            set #a Findimage(0 0 %get [1 2] %get [1 3] (%image[#i 1]) %a #v #accuracy -1 #deviation)   // поиск
            if  #a < 0
                log Ошибка поиска картинки. Код ошибки: #a
                log Скрипт остановлен
                stop_script #current_script
            end_if
            if  #a > 0
                for #j 1 size(%a)
                    set #z #z + 1
                    init_arr %result1 (1 1 #z) %number[#i] %a[#j 1] %a[#j 2]   // запись результатов поиска в массив
                end_for
            end_if
            wait #wait
        end_for
        if  size(%result1) > 0
            gosub sortY        // сортировка по Y и X
        end_if
        set $b DeleteImage(%get[1 1])    // удалить изображение, полученное GetImage
    end_while
    goto end                 // выйти из процедуры

    :sortY
        set #z 0
        set #z1 0
        set #z2 1
        set #z4 0
        sort_array %result1 -3
        while 1 = 1
            set #z 0
            set size(%tmp)
            for #i #z2 eval(size(%result1 [1]) - 1)
                set #j #i + 1
                set #x %result1 [3 #i] - %result1 [3 #j]
                if  abs(#x) < #deltaY
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #i]  %result1 [2 #i] %result1 [3 #i]
                else
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #i]  %result1 [2 #i] %result1 [3 #i]
                    break
                end_if
            end_for
            set #z2 #z2 + #z
            if  #z2 = size(%result1[])
                set #x %result1 [3 #i] - %result1 [3 #j]
                if  abs(#x) > #deltaY
                    set #jj #j
                    sort_array %tmp -2
                    set #z1 #z1 + 1
                    init_arr %result (#z1) %tmp [1]
                    gosub space
                    set size(%tmp)
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #jj]  %result1 [2 #jj] %result1 [3 #jj]
                    set #z1 #z1 + 1
                    set %result.#current_script [#z1] %tmp [1]
                    gosub end
                end_if
                set #z #z + 1
                init_arr %tmp (1 1 #z) %result1 [1 #j]  %result1 [2 #j] %result1 [3 #j]
                sort_array %tmp -2
                set #z1 #z1 + 1
                init_arr %result (#z1) %tmp [1]
                gosub space
                break
            else
                sort_array %tmp -2
                set #z1 #z1 + 1
                init_arr %result (#z1) %tmp [1]
                gosub space
            end_if
        end_while
    return

    :space
        set #z3 0
        set size(%space)
        set #z4 #z4 + 1
        //посчитать где нужны пробелы
        for #i 1 eval(size(%tmp[]) - 1)
            set #j #i + 1
            set #space  %tmp [2 #i] - %tmp [2 #j]
            if  abs(#space) > #deltaspace
                set #z3 #z3 + 1
                set %space[#z3] #j
            end_if
        end_for
        // вставить пробелы
        for #i 1 size(%space)
            set $str %result [#z4]
            set $str insert(" " $str %space[#i])
            set #j #i + 1
            set %space[#j] %space[#j] + #i
            set %result [#z4] $str
        end_for
        // сохранение массива в основном скрипте
        for #i 1 size(%result)
            set size(%tmp1)
            init_arr %tmp1 (1) %result [#i]
            for #j 1 size(%tmp1[1])
                set %result.#current_script [#i #j] %tmp1 [1 #j]
            end_for
        end_for
    return

    :end
end_proc

Можете попробовать искать сразу все картинки:
Все картинки закинуть в одну папку, имена картинок: 0.bmp, 0a.bmp, 0b.bmp, 0c.bmp, 1.bmp, 1a.bmp, 1b.bmp, 1c.bmp и т. д
код
Код
// Поиск числа с помощью FindImage
init_arr %GetImage (1) 0 0 99, 58     // координаты для поиска, StartX StartY EndX EndY

set linedelay 0
init_arr %picture 0 1 2 3 4 5 6 7 8 9   0a 1a 2a 3a 4a 5a 6a 7a 8a 9a   0b 1b 2b 3b 4b 5b 6b 7b 8b 9b   0c 1c 2c 3c 4c 5c 6c 7c 8c 9c   // имена картинок (0.bmp, 1.bmp и т. д.)
init_arr %symbol 0 1 2 3 4 5 6 7 8 9   0 1 2 3 4 5 6 7 8 9   0 1 2 3 4 5 6 7 8 9   0 1 2 3 4 5 6 7 8 9  // символ соответствующий имени, т. е. картинка 0.bmp соответствует 0
set $path "C:\Number2"                     // папка с картинками
set $bmp "*.bmp*"                           // формат картинок
set #deltaY 8                               // расстояние между строками (можно указать высоту картинок)
set #deltaspace 12                          // допустимое расстояние между цифрами, иначе будет считаться что это не одно число
set #accuracy 90                            // точность поиска для Findimage
set #deviation 3                            // погрешность оттенка  для Findimage
set #wait 2                                 // пауза между поиском картинок, если указать меньше искать будет быстрее, но нагрузит процессор
set #timeproc 2000                          // время (в мсек) для поиска картинок, если 0 не выйдет из процедуры пока не найдётся хотя бы 1 картинка
set #repeatimage 2                          // допустимое смещение координат, если используется несколько видов одной картинки

dir (%path $path $bmp)
set delimiter '   '
while 1 = 1
    set size(%result)                        // уничтожить массив с предыдущими результатами
    call test %picture %symbol %GetImage %path #deltaY #deltaspace #accuracy #deviation #wait #timeproc #repeatimage    // процедура поиска
    // save_array %result C:\resultarr.txt     // массив с результатами поиска

    if  size(%result) > 0         // если размер массива больше 0
        // ТУТ НУЖНЫЕ ДЕЙСТВИЯ
        ///////////// для примера вывод в hint того что нашлось (можно убрать)
        set $str
        set %z [1] \n
        for #i 1 size(%result)
            set $str $str%result[#i]
            if  #i != size(%result)
                set $str $str%z [1]
            end_if
        end_for
        hint (14 clBlue 409, 265 ($str))
        /////////////
    else
        hint Картинки не найдены
    end_if
end_while

// процедура поиска и сортировки
proc test %picture %symbol %GetImage %path #deltaY #deltaspace #accuracy #deviation #wait #timeproc #repeatimage
    set #GetStartX %GetImage [1 1]
    set #GetStartY %GetImage [1 2]
    set #GetEndX %GetImage [1 3]
    set #GetEndY %GetImage [1 4]
    set #current_script current_script
    // загрузка картинок в память
    if  size(%path) > 0                  // если картинки найдены
        for #i 1 size(%path)
            for #j 1 size(%picture)
                if  %path [#i 3] = %picture [#j]
                    set #n #n + 1
                    set %image [#n] LoadImage(%path [#i 1])
                    set %number [#n] %symbol [#j]
                    break
                end_if
            end_for
        end_for
    else
        log Картинки в: $path   не найдены
        log Скрипт остановлен
        stop_script #current_script
    end_if
    // поиск картинок и их сортировка
    set size(%result1)
    while size(%result1) = 0 and (#timeproc > timer or #timeproc = 0)
        set #z 0
        set %get GetImage(#GetStartX #GetStartY #GetEndX #GetEndY)      // сохранить часть экрана в память
        set #v %get [1 1]
        for #i 1 size(%number)
            set #a Findimage(0 0 %get [1 2] %get [1 3] (%image[#i 1]) %a #v #accuracy -1 #deviation)   // поиск
            if  #a < 0
                log Ошибка поиска картинки. Код ошибки: #a
                log Скрипт остановлен
                stop_script #current_script
            end_if
            if  #a > 0
                for #j 1 size(%a)
                    set #z #z + 1
                    init_arr %result1 (1 1 #z) %number[#i] %a[#j 1] %a[#j 2]   // запись результатов поиска в массив
                end_for
            end_if
            wait #wait
        end_for
        if  size(%result1) > 0
            gosub sortY        // сортировка по Y и X
        end_if
        set $b DeleteImage(%get[1 1])    // удалить изображение, полученное GetImage
    end_while
    goto end                 // выйти из процедуры

    :sortY
    ///// удаление повторных координат, если используется несколько видов одной картинки
        set #size 0
        set %tmp %result1
        set size(%result1)
        for #i 1 size(%tmp[1])
            set #break 0
            for #n 1 #size
                set #xrepeat %tmp[2 #i] - %result1[2 #n]
                set #yrepeat %tmp[3 #i] - %result1[3 #n]
                if  abs(#xrepeat) <= #repeatimage and abs(#yrepeat) <= #repeatimage
                    set #break 1
                    break
                end_if
            end_for
            if  #break = 0
                set #size #size + 1
                init_arr %result1 (1 1 #size) %tmp [1 #i]  %tmp [2 #i] %tmp [3 #i]
            end_if
        end_for
     ///////

        set #z 0
        set #z1 0
        set #z2 1
        set #z4 0
        sort_array %result1 -3
        while 1 = 1
            set #z 0
            set size(%tmp)
            for #i #z2 eval(size(%result1 [1]) - 1)
                set #j #i + 1
                set #x %result1 [3 #i] - %result1 [3 #j]
                if  abs(#x) < #deltaY
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #i]  %result1 [2 #i] %result1 [3 #i]
                else
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #i]  %result1 [2 #i] %result1 [3 #i]
                    break
                end_if
            end_for
            set #z2 #z2 + #z
            if  #z2 = size(%result1[])
                set #x %result1 [3 #i] - %result1 [3 #j]
                if  abs(#x) > #deltaY
                    set #jj #j
                    sort_array %tmp -2
                    set #z1 #z1 + 1
                    init_arr %result (#z1) %tmp [1]
                    gosub space
                    set size(%tmp)
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #jj]  %result1 [2 #jj] %result1 [3 #jj]
                    set #z1 #z1 + 1
                    set %result.#current_script [#z1] %tmp [1]
                    gosub end
                end_if
                set #z #z + 1
                init_arr %tmp (1 1 #z) %result1 [1 #j]  %result1 [2 #j] %result1 [3 #j]
                sort_array %tmp -2
                set #z1 #z1 + 1
                init_arr %result (#z1) %tmp [1]
                gosub space
                break
            else
                sort_array %tmp -2
                set #z1 #z1 + 1
                init_arr %result (#z1) %tmp [1]
                gosub space
            end_if
        end_while
    return

    :space
        set #z3 0
        set size(%space)
        set #z4 #z4 + 1
        //посчитать где нужны пробелы
        for #i 1 eval(size(%tmp[]) - 1)
            set #j #i + 1
            set #space  %tmp [2 #i] - %tmp [2 #j]
            if  abs(#space) > #deltaspace
                set #z3 #z3 + 1
                set %space[#z3] #j
            end_if
        end_for
        // вставить пробелы
        for #i 1 size(%space)
            set $str %result [#z4]
            set $str insert(" " $str %space[#i])
            set #j #i + 1
            set %space[#j] %space[#j] + #i
            set %result [#z4] $str
        end_for
        // сохранение массива в основном скрипте
        for #i 1 size(%result)
            set size(%tmp1)
            init_arr %tmp1 (1) %result [#i]
            for #j 1 size(%tmp1[1])
                set %result.#current_script [#i #j] %tmp1 [1 #j]
            end_for
        end_for
    return

    :end
end_proc
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 1.9.2017, 13:47
Сообщение #73


****

Apprentice
Сообщений: 128
Регистрация: 2.2.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.276
Возраст: 27



вот файлики, Спасибо не земное!!! )


Прикрепленные файлы
Прикрепленный файл  mob_lvls.7z ( 4,18 килобайт ) Кол-во скачиваний: 357
Прикрепленный файл  mobs_images.7z ( 156,94 килобайт ) Кол-во скачиваний: 352
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.9.2017, 13:49
Сообщение #74


**********

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



Можете ещё попробовать искать сразу все картинки. Код добавил в пост выше.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 1.9.2017, 13:59
Сообщение #75


****

Apprentice
Сообщений: 128
Регистрация: 2.2.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.276
Возраст: 27



Искать сразу все очень долго, картинок очень много просто около 50ти.,
да и действия требуются для каждого моба отдельно, к примеру не достиг максимального уровня, пропускаем его, если прокачался максимально, ткнуть на моба, он автоматически убирается, и на его нужно будет впихнуть другого моба, ну это уже будет другая подпрограмма )
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.9.2017, 2:13
Сообщение #76


**********

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



Цитата
Искать сразу все очень долго, картинок очень много просто около 50ти

Искать сразу быстрее и достаточно по 1 картинке каждого числа, хоть они и отличаются.
В архиве видео и картинки, которые использовались для поиска: Прикрепленный файл  Поиск_чисел.zip ( 2,13 мегабайт ) Кол-во скачиваний: 432

Картинки для поиска сохранялись скриптом Поиск статичных точек на нескольких картинках
Скрипт сохраняет картинку с теми пикселями, которые присутствуют на всех анализируемых картинках. Оставшийся фон закрашен вручную.
Цитата
да и действия требуются для каждого моба отдельно

%result [1 1] - уровень верхнего моба
%result [2 1] - уровень левого моба
%result [2 2] - уровень правого моба
%result [3 1] - уровень нижнего моба



Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 4.9.2017, 9:36
Сообщение #77


****

Apprentice
Сообщений: 128
Регистрация: 2.2.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.276
Возраст: 27



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


****

Apprentice
Сообщений: 128
Регистрация: 2.2.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.276
Возраст: 27



Цитата
%result [1 1] - уровень верхнего моба
%result [2 1] - уровень левого моба
%result [2 2] - уровень правого моба
%result [3 1] - уровень нижнего моба


Что то не совсем понимаю, как это работает,

делаю проверку типа:
Код

if %result [2 2] = 25
left Кординаты правого моба
end_if


но если моба справа нет, а есть снизу к примеру, он по прежнему клацает правого
Я наверное что то не понял...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.9.2017, 3:58
Сообщение #79


**********

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



Числа расположены по строкам и столбцам.
[1 1] - первая строка, первое число
[2 1] - вторая строка, первое число
[2 2] - вторая строка, второе число
[3 1] - третья строка, первое число
Попробуй этот скрипт.
код
Код
// Поиск числа с помощью FindImage
init_arr %GetImage (1) 0 0 99, 58     // координаты для поиска, StartX StartY EndX EndY

set linedelay 0
init_arr %picture 0 1 2 3 4 5 6 7 8 9     // имена картинок (0.bmp, 1.bmp и т. д.)
init_arr %symbol 0 1 2 3 4 5 6 7 8 9    // символ соответствующий имени, т. е. картинка 0.bmp соответствует 0
set $path "C:\Image3"                     // папка с картинками
set $bmp "*.bmp*"                           // формат картинок
set #deltaY 8                               // расстояние между строками (можно указать высоту картинок)
set #deltaspace 12                          // допустимое расстояние между цифрами, иначе будет считаться что это не одно число
set #accuracy 90                            // точность поиска для Findimage
set #deviation 3                            // погрешность оттенка  для Findimage
set #wait 2                                 // пауза между поиском картинок, если указать меньше искать будет быстрее, но нагрузит процессор
set #timeproc 2000                          // время (в мсек) для поиска картинок, если 0 не выйдет из процедуры пока не найдётся хотя бы 1 картинка
set #repeatimage 2                          // допустимое смещение координат, если используется несколько видов одной картинки

dir (%path $path $bmp)
set delimiter '   '
while 1 = 1
    set size(%result)                        // уничтожить массив с предыдущими результатами
    set size(%coord)                         // уничтожить массив с предыдущими координатами
    call test %picture %symbol %GetImage %path #deltaY #deltaspace #accuracy #deviation #wait #timeproc #repeatimage    // процедура поиска
    // save_array %result C:\resultarr.txt     // массив с результатами поиска
    // save_array %coord C:\coordarr.txt     // массив с координатами чисел
    if  size(%result) > 0         // если размер массива больше 0
        // ТУТ НУЖНЫЕ ДЕЙСТВИЯ
        ///////////// для примера вывод в hint того что нашлось (можно убрать)
        set $str
        set %z [1] \n
        for #i 1 size(%result)
            set $str $str%result[#i]
            if  #i != size(%result)
                set $str $str%z [1]
            end_if
        end_for
        hint (14 clBlue 409, 265 ($str))
        /////////////
    else
        hint Картинки не найдены
    end_if
end_while

// процедура поиска и сортировки
proc test %picture %symbol %GetImage %path #deltaY #deltaspace #accuracy #deviation #wait #timeproc #repeatimage
    set #GetStartX %GetImage [1 1]
    set #GetStartY %GetImage [1 2]
    set #GetEndX %GetImage [1 3]
    set #GetEndY %GetImage [1 4]
    set #current_script current_script
    // загрузка картинок в память
    if  size(%path) > 0                  // если картинки найдены
        for #i 1 size(%path)
            for #j 1 size(%picture)
                if  %path [#i 3] = %picture [#j]
                    set #n #n + 1
                    set %image [#n] LoadImage(%path [#i 1])
                    set %number [#n] %symbol [#j]
                    break
                end_if
            end_for
        end_for
    else
        log Картинки в: $path   не найдены
        log Скрипт остановлен
        stop_script #current_script
    end_if
    // поиск картинок и их сортировка
    set size(%result1)
    set size(%coord_tmp)
    while size(%result1) = 0 and (#timeproc > timer or #timeproc = 0)
        set #z 0
        set %get GetImage(#GetStartX #GetStartY #GetEndX #GetEndY)      // сохранить часть экрана в память
        set #v %get [1 1]
        for #i 1 size(%number)
            set #a Findimage(0 0 %get [1 2] %get [1 3] (%image[#i 1]) %a #v #accuracy -1 #deviation)   // поиск
            if  #a < 0
                log Ошибка поиска картинки. Код ошибки: #a
                log Скрипт остановлен
                stop_script #current_script
            end_if
            if  #a > 0
                for #j 1 size(%a)
                    set #z #z + 1
                    init_arr %result1 (1 1 #z) %number[#i] %a[#j 1] %a[#j 2]   // запись результатов поиска в массив
                end_for
            end_if
            wait #wait
        end_for
        if  size(%result1) > 0
            gosub sortY        // сортировка по Y и X
        end_if
        set $b DeleteImage(%get[1 1])    // удалить изображение, полученное GetImage
    end_while
    goto end                 // выйти из процедуры

    :sortY
    ///// удаление повторных координат, если используется несколько видов одной картинки
        set #size 0
        set %tmp %result1
        set size(%result1)
        for #i 1 size(%tmp[1])
            set #break 0
            for #n 1 #size
                set #xrepeat %tmp[2 #i] - %result1[2 #n]
                set #yrepeat %tmp[3 #i] - %result1[3 #n]
                if  abs(#xrepeat) <= #repeatimage and abs(#yrepeat) <= #repeatimage
                    set #break 1
                    break
                end_if
            end_for
            if  #break = 0
                set #size #size + 1
                init_arr %result1 (1 1 #size) %tmp [1 #i]  %tmp [2 #i] %tmp [3 #i]
            end_if
        end_for
     ///////

        set #z 0
        set #z1 0
        set #z2 1
        set #z4 0
        sort_array %result1 -3
        while 1 = 1
            set #z 0
            set size(%tmp)
            for #i #z2 eval(size(%result1 [1]) - 1)
                set #j #i + 1
                set #x %result1 [3 #i] - %result1 [3 #j]
                if  abs(#x) < #deltaY
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #i]  %result1 [2 #i] %result1 [3 #i]
                else
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #i]  %result1 [2 #i] %result1 [3 #i]
                    break
                end_if
            end_for
            set #z2 #z2 + #z
            if  #z2 = size(%result1[])
                set #x %result1 [3 #i] - %result1 [3 #j]
                if  abs(#x) > #deltaY
                    set #jj #j
                    sort_array %tmp -2
                    set #z1 #z1 + 1
                    init_arr %result (#z1) %tmp [1]
                    gosub space
                    set size(%tmp)
                    set #z #z + 1
                    init_arr %tmp (1 1 #z) %result1 [1 #jj]  %result1 [2 #jj] %result1 [3 #jj]
                    set #z1 #z1 + 1
                    set %result.#current_script [#z1] %tmp [1]
                    gosub end
                end_if
                set #z #z + 1
                init_arr %tmp (1 1 #z) %result1 [1 #j]  %result1 [2 #j] %result1 [3 #j]
                sort_array %tmp -2
                set #z1 #z1 + 1
                init_arr %result (#z1) %tmp [1]
                set %coord_tmp [#z1] %tmp [2 1], %tmp [3 1]
                gosub space
                break
            else
                sort_array %tmp -2
                set #z1 #z1 + 1
                init_arr %result (#z1) %tmp [1]
                set %coord_tmp [#z1] %tmp [2 1], %tmp [3 1]
                gosub space
            end_if
        end_while
    return

    :space
        set #z3 0
        set size(%space)
        set #z4 #z4 + 1
        //посчитать где нужны пробелы
        for #i 1 eval(size(%tmp[]) - 1)
            set #j #i + 1
            set #space  %tmp [2 #i] - %tmp [2 #j]
            if  abs(#space) > #deltaspace
                set #z3 #z3 + 1
                set %space[#z3] #j
                set %coord_tmp [#z1 #i] %tmp [2 #j], %tmp [3 #j]
            end_if
        end_for
        // вставить пробелы
        for #i 1 size(%space)
            set $str %result [#z4]
            set $str insert(" " $str %space[#i])
            set #j #i + 1
            set %space[#j] %space[#j] + #i
            set %result [#z4] $str
        end_for
        // сохранение массива в основном скрипте
        for #i 1 size(%result)
            set size(%tmp1)
            init_arr %tmp1 (1) %result [#i]
            for #j 1 size(%tmp1[1])
                set %result.#current_script [#i #j] %tmp1 [1 #j]
                set %coord.#current_script [#i #j] %coord_tmp [#i #j]
            end_for
        end_for
    return

    :end
end_proc

Кроме массива с числами создаётся массив %coord (с теми же индексами что и %result) с координатами чисел.
Получится:
Код
%result [1 1] - уровень верхнего моба    %coord [1 1] - координаты чисел у верхнего моба
%result [2 1] - уровень левого моба        %coord [2 1]
%result [2 2] - уровень правого моба      %coord [2 2]
%result [3 1] - уровень нижнего моба     %coord [3 1]

Условие так:
Код
if %result [1 1] = 25
    left %coord [1 1]
end_if
if %result [2 1] = 25
    left %coord [2 1]
end_if
if %result [2 2] = 25
    left %coord [2 2]
end_if
if %result [3 1] = 25
    left %coord [3 1]
end_if
// Или циклом проверять все элементы массива.

Допустим, верхнего моба нет, тогда верхним будет левый. Хотя это уже не имеет значения, координаты будут правильные.
Скрипт не тестил. Могут быть косяки. Будет время подправлю.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 5.9.2017, 8:48
Сообщение #80


****

Apprentice
Сообщений: 128
Регистрация: 2.2.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.276
Возраст: 27



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

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

 

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