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

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


**********

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



Проще сделать отдельную подпрограмму для поиска звёзд. Координаты числа известны, т. е. можно вычислить область поиска звёзд для конкретного моба.
код
Код
if %result [1 1] = 25             // если моб 25 уровня
    set $coord %coord [1 1]       // записываем в переменную координаты
    gosub find_star               // переход в подпрограмму поиска звёзд
end_if
if %result [2 1] = 25             // если моб 25 уровня
    set $coord %coord [2 1]       // записываем в переменную координаты
    gosub find_star
end_if

:find_star
    init_arr %temp (1) $coord     // разделяем координаты на 2 элемента массива, %temp [1 1] - X, %temp [1 2] - Y
    // считаем область поиска звёзд относительно числа
    set #startX %temp [1 1] - 50
    set #startY %temp [1 2] - 60
    set #endX %temp [1 1] + 30
    set #endY %temp [1 2] - 30
    set #a findimage (#startX #startY #endX #endY (фиолетовая_звезда) %star)
    if #a > 0
        log Количество звёзд: size(%star)
    end_if
    set #a findimage (#startX #startY #endX #endY (жёлтая_звезда) %star)
    if #a > 0
        log Количество звёзд: size(%star)
    end_if
return
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.9.2017, 12:05
Сообщение #82


***********

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



Цитата
Проще сделать отдельную подпрограмму для поиска звёзд.

А есть ли смысл? Может просто звездам или набору звезд присвоить свой символ да и все?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.9.2017, 12:51
Сообщение #83


**********

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



Если бы всегда было 4 моба, то и проблем не было. А так не удобно соотносить какое число к какому мобу относится.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 5.9.2017, 13:35
Сообщение #84


****

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



Что то не пойму как сравнить звезды с уровнем (
Подскажите нубу...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 5.9.2017, 13:48
Сообщение #85


****

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



Мне картинки звезд делать уже каждую по отдельности или целиком ***** всю группу, что то запутался
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.9.2017, 14:11
Сообщение #86


**********

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



Смотря что требуется. Если нужно знать точное количество звёзд, то делать картинку 1 звезды. Если интересует только когда 6 звёзд, то можно и целиком искать. Кстати, звёзды тоже отличаются, так что либо точность снижать и добавлять погрешность в цвете, либо сделать несколько картинок и сравнить скриптом.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 5.9.2017, 14:19
Сообщение #87


****

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



Нужно искать группу звезд:

** - звезды (максимальный лвл с этими звездами ) - 20
*** - звезды (максимальный лвл с этими звездами ) - 25
**** - звезды (максимальный лвл с этими звездами ) - 30
***** - звезды (максимальный лвл с этими звездами ) - 35
****** - звезды (максимальный лвл с этими звездами ) - 40

Суть моей задумки, проверять моб достиг максимального уровня или нет, просто у мобов разный максимальный уровень в зависимости от количества звезд.
Уважаемый cirus, Вы мне и так сильно помогли, я очень благодарен Вам.
Если есть возможность подсказать кодом, буду Вам очень благодарен!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.9.2017, 14:28
Сообщение #88


***********

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



cirus, в код скрипта какие-то изменения будешь вносить в ближайшее время? Если собираешься, просьба это сделать.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.9.2017, 15:17
Сообщение #89


**********

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



Цитата
Если есть возможность подсказать кодом

Как будет время, ближе к выходным.
Цитата
в код скрипта какие-то изменения будешь вносить в ближайшее время? Если собираешься, просьба это сделать.

В одном куске надо подправить возвращение координат. К выходным сделаю.
Вообще на луа надо написать, но в нём не работали getimage и loadimage.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 5.9.2017, 15:20
Сообщение #90


****

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



Цитата(cirus @ 5.9.2017, 15:17) *

Как будет время, ближе к выходным.

В одном куске надо подправить возвращение координат. К выходным сделаю.
Вообще на луа надо написать, но в нём не работали getimage и loadimage.


Поклон тебе (IMG:style_emoticons/default/rolleyes.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.9.2017, 15:25
Сообщение #91


***********

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



Цитата
Вообще на луа надо написать, но в нём не работали getimage и loadimage.

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

Сообщение отредактировал DarkMaster - 5.9.2017, 15:33


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.9.2017, 15:42
Сообщение #92


**********

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



Правка мелкая пару строчек, по сути не повлияет на работу. Но, проще самому скрипт написать, чем чей-то переписывать. Если надо могу написать принцип работы, но это ночью. Ушёл на работу.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.9.2017, 15:52
Сообщение #93


***********

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



Смысл писать то, что уже написано и потом баги ловить? Принцип я понимаю. Более того могу сам пару таких принципов написать) Тут вопрос отладки и ошибок по невнимательности.

еще бы кто-то с goto не позорился)))


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.9.2017, 4:01
Сообщение #94


**********

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



Цитата
еще бы кто-то с goto не позорился)))

(IMG:style_emoticons/default/smile.gif) Сначала был костыль для отладки, потом так и остался.
Исправил несколько косяков с возвращением координат чисел.
код
Код
// Поиск числа с помощью FindImage
init_arr %GetImage (1) 0 0 245, 98      // координаты для поиска, 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:\Users\abc\Desktop\result111.txt     // массив с результатами поиска
//     save_array %coord C:\Users\abc\Desktop\coord111.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]
                    set %coord_tmp [#z1] %tmp [2 1], %tmp [3 1]
                    set %coord.#current_script [#z1] %tmp [2 #z], %tmp [3 #z]
                    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]
                    set %coord.#current_script [#z1] %tmp [2 #z], %tmp [3 #z]
                    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 #size_coord 1
                while %coord_tmp[#z1 #size_coord] != ""
                    set #size_coord #size_coord + 1
                end_while
                set %coord_tmp [#z1 #size_coord] %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

Тестил только в блокноте. Вроде работает.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.9.2017, 3:13
Сообщение #95


**********

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



ivanTu, пробуй. Нацарапал чего-то. На скринах работает.
код
Код
// Поиск числа с помощью FindImage
init_arr %GetImage (1) 0 0 268, 184      // координаты для поиска, StartX StartY EndX EndY
log clear
log mode compact

set $path_star_purple C:\Users\abc\Desktop\star_purple.bmp    // путь к картинке фиолетовой звезды
set $path_star_yellow C:\Users\abc\Desktop\star_yellow.bmp    // путь к картинке жёлтой звезды

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

set %star [1] LoadImage ($path_star_purple)     // загрузка картинок звёзд в память
set %star [2] LoadImage ($path_star_yellow)
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:\Users\abc\Desktop\result111.txt     // массив с результатами поиска
    //     save_array %coord C:\Users\abc\Desktop\coord111.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))
        /////////////

        // поиск звёзд и проверка достиг ли моб максимального уровня
        for #i 1 size(%result)
            for #j 1 size(%result[])
                if  %result [#i #j] != ""
                    set $coord %coord [#i #j]
                    gosub find_star     // подпрограмма поиска звёзд
                end_if
            end_for
        end_for

        end_script   // убрать
        
    else
        hint Картинки не найдены
    end_if

end_while

:find_star
    init_arr %tmp (1) $coord
    set #mindistX 5
    set #mindistY 5
    set #startX %tmp[1 1] - 50
    set #startY %tmp[1 2] - 60
    set #endX %tmp[1 1] + 30
    set #endY %tmp[1 2] - 30
    set #a Findimage(#startX #startY #endX #endY (%star[1 1]) %arr 2 90 -1 10) // фиолетовые звёзды
    if  #a > 0
        gosub del_double  // удаление лишних картинок
        gosub level       // проверка уровня моба в зависимости от количества звёзд
    end_if
    set #a Findimage(#startX #startY #endX #endY (%star [2 1]) %arr 2 90 -1 12) // жёлтые звёзды
    if  #a > 0
        gosub del_double  // удаление лишних картинок
        gosub level       // проверка уровня моба в зависимости от количества звёзд
    end_if
return

:del_double
    set #ii -1
    while #ii < size(%arr)
        set #ii #ii + 1
        set #double 1
        while #double = 1
            set #double 0
            set #iii #ii + 1
            set #jj #iii
            while #jj < size(%arr)
                set #jj #jj + 1
                set #distX abs(eval(%arr [#iii 1] - %arr [#jj 1]))
                set #distY abs(eval(%arr [#iii 2] - %arr [#jj 2]))
                if  #distX < #mindistX and #distY < #mindistY
                    delete_array %arr -#jj
                    set #jj #jj - 1
                    set #double 1
                end_if
            end_while
        end_while
    end_while
return

:level
    switch size(%arr)
        case 2: log Количество звёзд 2
            if %result [#i #j] = 20
                log Моб достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
                move %coord [#i #j]
                wait 500
            else
                log Моб не достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
            end_if
            break
        case 3: log Количество звёзд 3
            if %result [#i #j] = 25
                log Моб достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
                move %coord [#i #j]
                wait 500
            else
                log Моб не достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
            end_if
            break
        case 4: log Количество звёзд 4
            if %result [#i #j] = 30
                log Моб достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
                move %coord [#i #j]
                wait 500
            else
                log Моб не достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
            end_if
            break
        case 5: log Количество звёзд 5
            if %result [#i #j] = 35
                log Моб достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
                move %coord [#i #j]
                wait 500
            else
                log Моб не достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
            end_if
            break
        case 6: log Количество звёзд 6
            if %result [#i #j] = 40
                log Моб достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
                move %coord [#i #j]
                wait 500
            else
                log Моб не достиг максимального уровня
                log Уровень моба: %result [#i #j]
                log
            end_if
    end_switch
return

// процедура поиска и сортировки
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]
                    set %coord_tmp [#z1] %tmp [2 1], %tmp [3 1]
                    set %coord.#current_script [#z1] %tmp [2 #z], %tmp [3 #z]
                    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]
                    set %coord.#current_script [#z1] %tmp [2 #z], %tmp [3 #z]
                    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 #size_coord 1
                while %coord_tmp[#z1 #size_coord] != ""
                    set #size_coord #size_coord + 1
                end_while
                set %coord_tmp [#z1 #size_coord] %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

Прикрепленный файл  star_purple.bmp ( 236 байт ) Кол-во скачиваний: 360

Прикрепленный файл  star_yellow.bmp ( 248 байт ) Кол-во скачиваний: 386
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ivanTu
сообщение 7.9.2017, 9:28
Сообщение #96


****

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



cirus Огромное Вам спасибо, благодаря Вам, понимаю что сделать можно все, вы вдохновляете нубов как я на изучение программирования в целом! )))
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.9.2017, 4:18
Сообщение #97


***********

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



кхе... думал часа за 2 перепишу) вобщем формат хранения данных в пилотовском синтаксисе и lua сильно различаются и прозрачно делать не везде получается, а где-то очень кощунственно выглядит и приходится подправлять. (IMG:style_emoticons/default/smile.gif) Делаю под красивые луашные вызовы. Это я все к чему, если собирался переписывать - погоди чуток, чтобы вместе одно и то же не делали.

Сообщение отредактировал DarkMaster - 8.9.2017, 4:20


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 8.9.2017, 11:59
Сообщение #98


**********

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



В ближайшее время не соберусь. Вдохновение ещё не пришло.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 21.9.2017, 17:10
Сообщение #99


***********

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



Бетка распознавания текста. Буду благодарен за тесты и багрепорты, т.к. времени катастрофически не хватает.
Распознавание текста
Код
do
    -- Символы для поиска.
    -- Возможно указать в двух вариантах синтаксиса: упрощенном и полном.
    -- Упрощенный синтаксис:
    -- В упрощенном варианте синтаксиса допускается не указывать
    -- соответствие имен файлов и строке/символу,
    -- который они обозначают: считается, что они идентичны.
    -- Пример упрощенного синтаксиса:
    -- local symbols = {"0", "1", "2", "3", "a", "b", "c", "test"}
    -- Полный синтаксис:
    -- Полный синтаксис бывает необходим при использовании
    -- нескольких изображений соответсвующих одной и той же строке/символу.
    -- Допускаются переносы строк:
    -- local symbols = {
    --       "0" = {"zero1", "zero2"},
    --       "1" = {"1a", "1b"},
    --       "2" = {"two", "second"}
    --      }
    -- Оба варианта синтаксиса можно сочетать:
    -- local symbols = {"0", "1", "2" = {"two", "second"}, "3"}


    local default = {}
    -- набор стандартных символов
    default.symbols      = {["0"]={"0"}, ["1"]={"1"}, ["2"]={"2"}, ["3"]={"3"}, ["4"]={"4"}, ["5"]={"5"}, ["6"]={"6"}, ["7"]={"7"}, ["8"]={"8"}, ["9"]={"9"}}
    default.crds         = {0, 0, 1920, 1080} -- Координаты поиска
    default.path         = "c:\\image"        -- Папка с картинками
    default.ext          = ".bmp"             -- Расширение картинок
    default.deltaY       = 8                  -- Расстояние между строками (можно указать высоту картинок)
    default.deltaSpace   = 12                 -- Допустимое расстояние между цифрами, иначе будет считаться что это не одно число
    default.accuracy     = 95                 -- Точность поиска для Findimage
    default.deviation    = 3                  -- Погрешность оттенка  для Findimage
    default.wait         = 2                  -- Пауза между поиском картинок, если указать меньше искать будет быстрее, но нагрузит процессор
    default.timeProc     = 2000               -- Время в секундах (может быть не целым) для поиска картинок, если -1 не выйдет из процедуры пока не найдётся хотя бы 1 картинка
    default.repeatImage  = 2                  -- Допустимое смещение координат, если используется несколько видов одной картинки
    default.window       = "workwindow"       -- Метод|хендл_окна в котором происходит поиск (если указан источник изображения(source), то параметр будет проигнорирован)
    default.abs          = 0                  -- Использовать abs координаты.
    default.source       = nil                -- Изображение в котором производится поиск. nil приведет к захвату изображения с экрана.
    default.bufferAddNew = 1                  -- Добавлять изображения в буфер
    default.bufferIgnore = 0                  -- Игнорировать изображения находящиеся в буфере
    default.bufferUpdate = 1                  -- Обновить изображения содержащиеся в буфере.
    default.loadPath     = nil                -- Путь по которому будут загружены все изображения с указанными расширением. Имя файла будет соответсвовать имени символа.


    -- Буфер
    -- Буфер
    -- Буфер

    local buffer = {} -- Массив с загруженными картинками.
    imageToStringBuffer = {} -- набор функций по управлению буфером.
    -- Полностью очищаем массив.
    function imageToStringBuffer.flush()
        for k,_ in pairs(buffer) do buffer[v] = nil end
    end
    -- Удаляем элемент из буфера
    function imageToStringBuffer.flush(element)
        buffer[element] = nil
    end
    -- Добавляем изображение в буфер
    function imageToStringBuffer.flush(element, val)
        buffer[element] = val
    end


    -- Поиск
    -- Поиск
    -- Поиск

    function imageToString(options)

        -- Проверяем переданные параметры. Если они отсутствуют - подставляем параметры по умолчанию.
        if  options              == nil then options              = {}                    end
        if  options.symbols      == nil then options.symbols      = default.symbols       end
        if  options.crds         == nil then options.crds         = default.crds          end
        if  options.path         == nil then options.path         = default.path          end
        if  options.ext          == nil then options.ext          = default.ext           end
        if  options.deltaY       == nil then options.deltaY       = default.deltaY        end
        if  options.deltaSpace   == nil then options.deltaSpace   = default.deltaSpace    end
        if  options.accuracy     == nil then options.accuracy     = default.accuracy      end
        if  options.deviation    == nil then options.deviation    = default.deviation     end
        if  options.wait         == nil then options.wait         = default.wait          end
        if  options.timeProc     == nil then options.timeProc     = default.timeProc      end
        if  options.repeatImage  == nil then options.repeatImage  = default.repeatImage   end
        if  options.window       == nil then options.window       = default.window        end
        if  options.abs          == nil then options.abs          = default.abs           end
        if  options.source       == nil then options.source       = default.source        end
        if  options.bufferAddNew == nil then options.bufferAddNew = default.bufferAddNew  end
        if  options.bufferIgnore == nil then options.bufferIgnore = default.bufferIgnore  end
        if  options.bufferUpdate == nil then options.bufferUpdate = default.bufferUpdate  end
        if  options.loadPath     == nil then options.loadPath     = default.loadPath      end


        --Добавляем при необходимости обратный слэш в путь.
        if  string.sub(options.path, -1) ~= "\\" then options.path = options.path .. "\\" end

        -- Преобразуем урощенный синтаксис в полноценный.
        for symbolName, imageName in pairs(options.symbols) do
            if type(options.symbols[symbolName]) ~= "table" then
                options.symbols[imageName] = {imageName}
            end
        end

        -- Преобразуем ссылку на папку с изображениями
        -- в полноценный синтаксис.
        --local fileList = {}
        --log (options.path, options.ext)
        --fileList = dir(options.path, options.ext)
        --table.show(fileList, "fileList")

        -- Удаляем параметры переданные, как упрощенные (теперь уже содежатся в полном виде)
        for i=1, #options.symbols do
            table.remove(options.symbols, i)
        end

        -- Приводим options.abs к виду пригодному для финдимиджа.
        if     options.abs == 1 then options.abs = "abs"
        elseif options.abs == 0 then options.abs = ""
        end
        --table.show(options)


        -- Загрузка картинок
        local images={}     --Загружает в память изображения {имя символа, {адреса в памяти}}
        local loadError = 0
        for symbolName, fileList in pairs(options.symbols) do
            images[symbolName] = {}
            for i=1, #fileList, 1 do
                -- Загружен ли файл в буфер, если нет, то подгружаем.
                local filePath = options.path..fileList[i]..options.ext
                if  options.bufferIgnore == 0 and options.bufferUpdate == 0 and buffer[filePath] == nil then
                    images[symbolName][i] = buffer[filePath]
                else
                    -- В буфере изображения нет, загружаем с диска.
                    --log(filePath.."В буфере изображения нет, загружаем с диска.")
                    images[symbolName][i] = loadimage(filePath)
                    -- Обновляем загруженное в буфер изображение
                    if  buffer[filePath] ~= nil then
                        DeleteImage(buffer[filePath])
                        buffer[filePath] =  images[symbolName][i]
                    elseif options.bufferAddNew == 1 and options.bufferIgnore == 0 then
                        -- Добавляем в буфер новое изображение.
                        buffer[filePath] = images[symbolName][i]
                    end
                end
                -- Поиск ошибок загрузки.
                if images[symbolName][i] < 0  then
                    loadError = loadError + 1
                    log("Image loading fail. Error file: "..filePath..'.')
                end
            end
        end
        -- При загрузке изображений произошли ошибки. Останавливаем скрипт.
        if  loadError > 0 then
            log("Error loading count: "..loadError..'.')
            stop_script()
        end
        --table.show(images)


        local timeout = os.clock() + options.timeProc
        crdsRaw={} -- Массив со всеми найденными изображениями, возможны дубли, не сортированный.
        repeat  -- Повторяем пока что-то не найдем или не выйдет время на поиск (options.timeProc).
            -- Получаем изображение с экрана, если источник не указан.
            local screenshot = nil
            if  options.source == nil then
                screenshot = getimage(options.crds[1],options.crds[2],options.crds[3],options.crds[4], options.window)
            else
                screenshot = options.source
            end
            --log(screenshot)
            for symbolName, imageAddress in pairs(images) do
                tmp = {}
                findResult = findimage(
                    options.crds[1] .. " " .. options.crds[2] .. " " ..
                    options.crds[3] .. " " .. options.crds[4] .. " " ..
                    "(" .. options.path .. symbolName .. options.ext .. ") " ..
                    "%tmp " .. screenshot .. " " .. options.accuracy .. " -1 " .. options.deviation .. " " .. options.abs)
                --log("symoblName: ".. symbolName .. " findResult: " .. findResult)
                -- проверяем на возрват нуля или ошбики, со стрингом нормально не сравнить.
                if  findResult ~= "0" and not string.find(findResult, "-") then
                    -- Добавляем найденные значения в общий результат поисков.
                    --table.show(tmp,"tmp")
                    for i = 1, #tmp, 1 do
                        -- Напрямую вернуть таблицу в функцию нельзя из-за синтаксиса.
                        -- FIX. Нужен фикс функции findimage пилота (возвращает координаты стрингом)
                        -- после фикса просто удалить "tonumber(parm)" оставив parm.
                        table.insert(crdsRaw,{x=tonumber(tmp[i][1]),y=tonumber(tmp[i][2]),symbolName=symbolName})
                    end
                end
            end

            -- Удаляем изображение, если делали скриншот.
            if  options.source ~= nil then
                deleteimage(screenshot)
            end

            --table.show(images, "images")
            --log (#crdsRaw, timeout, os.clock(), options.timeProc)
            --log ("until")
            local clock = os.clock()
        until not ((#crdsRaw == 0) and (timeout > clock or options.timeProc == -1))
        --table.show(crdsRaw, "crdsRaw")

        --  Изображения не были найдены, выходим из поиска.
        if  #crdsRaw < 1 then
            return nil
        end
        -- Удаляем дубли.
        crdsClear={} -- Массив без дублей.
        for i=1, #crdsRaw, 1 do
            local catch = 0 -- Флаг найденного дубля.
            for n=i+1, #crdsRaw, 1 do
                --log(
                --  crdsRaw[i].symbolName.." == "..crdsRaw[n].symbolName.." and "..
                --  math.abs(crdsRaw[i].x - crdsRaw[n].x).." <= "..options.repeatImage.." and "..
                --  math.abs(crdsRaw[i].y - crdsRaw[n].y).." <= "..options.repeatImage
                --)
                if  crdsRaw[i].symbolName == crdsRaw[n].symbolName and
                  math.abs(crdsRaw[i].x - crdsRaw[n].x) <= options.repeatImage and
                  math.abs(crdsRaw[i].y - crdsRaw[n].y) <= options.repeatImage then
                    catch = 1
                    break
                end
            end
            --log(catch)
            if  catch == 0 then -- не дубль, копируем значение в чистый массив.
                table.insert(crdsClear,crdsRaw[i])
            end
        end

        -- Сортируем элементы.
        -- Сортировка происходит, как по X координате,
        -- так и по Y учитывая возможность нескольких строк.
        -- Межстрочный интервал задается с помощью options.deltaY.
        -- Для уплотнения поиска options.deltaY может быть отрицательным.
        -- Отрицательный options.deltaY в первую очередь необходим,
        -- если изображения символов содержат сверху и снизу от символа фон.
        -- crdsClear был предварительно очищен от дублей, теперь сортируется.

        --table.show(crdsClear,"crdsClear")
        --table.toInit(crdsClear)
        table.sort(crdsClear,
            function(a,b)
                if  math.abs(a.y - b.y) <= options.deltaY then
                    if  a.x < b.x then
                        return true
                    else
                        return false
                    end
                else
                    if a.y < b.y then
                        return true
                    else
                        return false
                    end
                end
            end
        )
        --table.show(crdsClear,"crdsClear")

        -- Собираем строку
        --log(#crdsClear)
        local result = {{crdsClear[1].symbolName}}
        local resultX, resultY = 1, 1
        for i=2, #crdsClear, 1 do
            -- Добавляем перенос и символ, возрващем каретку.
            if  crdsClear[i-1].y  + options.deltaY < crdsClear[i].y then
                resultX = resultX + 1
                resultY = 1 -- возврат картеки
                result[resultX]={crdsClear[i].symbolName}
            -- Добавляем пробел и символ
            elseif crdsClear[i-1].x  + options.deltaSpace < crdsClear[i].x then
                resultY = resultY + 1
                result[resultX][resultY] = crdsClear[i].symbolName
            -- Добавляем символ
            else
                result[resultX][resultY] = result[resultX][resultY].. crdsClear[i].symbolName
            end
            --table.show(result,"result")
        end
        --table.show(result,"result")
        return result
    end
end

Пример вызова:
Код
result = imageToString{path="img", timeProc=0, crds={0,0,110,150}}


Может пригодится при тестах:
Вывод таблицы в лог
Код
do
    local tab = ""
    local deep = 0
    function table.show(t, comment)
        -- Пишем в лог комментарий.
        deep = deep + 1 -- Уровень вложенности вызовов функции.
        --log(comment .. commentSended .. deep)
        if  comment ~= nil and deep == 1 then
            log(comment)
        end


        if     type(t) == "nil"     then log("table is nil")
        elseif type(t) == "string"  then log('table is string: "'..t..'"')
        elseif type(t) == "number"  then log('table is number: '..t)
        elseif type(t) == "table"   then
            local elementsInTable = 0
            for k,v in pairs(t) do
                if  type (v) == "table" then
                    log(tab.."table: "..k)
                    tab = tab .. "    "
                    table.show(v)
                    tab = string.sub(tab, 1, -5)
                    elementsInTable = elementsInTable + 1
                else
                    elementsInTable = elementsInTable + 1
                    if type(v) == "string" then v = '"'..v..'"' end
                    if type(k) == "string" then k = '"'..k..'"' end
                    log(tab..""..k.." = "..v)
                end
            end
            if elementsInTable == 0 then log("table is empty") end
        else
            log('table is unknow data type')
        end
        -- Пишем в лог комментарий.
        deep = deep - 1 -- Уровень вложенности вызовов функции.
    end
end

Вывод таблицы в лог в формате инициализации
Код
function table.toInit(t)
        log("mode compact")
        log('table_name={')
        for k,v in pairs (t) do
           local str = "    {"
           for k2,v2 in pairs(v) do
               str = str .. k2.. "=" .. v2 .. ","
           end
           str = str .. "},"
           log(str)
        end
        log("}")
end


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 22.9.2017, 4:08
Сообщение #100


**********

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



Цитата
Буду благодарен за тесты и багрепорты

Лучше в отдельную тему, чтобы эту не засорять.
Если используется getimage, то в findimage указываются координаты 0, 0, ширина, высота. Где ширина и высота это размер изображения полученного getimage.
Т. е. при crds={100,100,250,350}, getimage(100,100,250,350) , а findimage не (100,100,250,350), а (0, 0, 151, 251).
Код
    -- Вместо этого:
screenshot = getimage(options.crds[1],options.crds[2],options.crds[3],options.crds[4], options.window)
    -- Это:
screenshot, options.crds[3], options.crds[4] = getimage(options.crds[1], options.crds[2], options.crds[3],options.crds[4], options.window)
options.crds[1], options.crds[2] = 0, 0
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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