Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Что ему не нравиться

Автор: XaЛBa 22.5.2020, 2:24

решил писать на Луа, а в маленьком скрипте сразу же запнулся

Код
--lua
local path = [["C:\Users\Второй Пользователь\Desktop\UoPiloT\LA\G.bmp"]]
::metka::
if  color(1171, 1024) == 7925487 then
    --if  1171, 1024 7925487
    send ("{Spacebar}")
    --    send {Spacebar}
    wait (100)
    --    wait 100
    end
    --end_if
    local A, a = findimage (578, 281, 1469, 888, {path}, 2, 80, 1, 5)
    --set #a findimage (578, 281 1469, 888 (LA\G.bmp) %a 2 80 1 5)
    log ( A a )
    --//log #a
    if  A then
        --if  #a > 0
        send ("G")
        --    send G
        wait (200)
        --    wait 200
        end
        --end_if
        goto metka
уже волосы дыбом. Пишет такую ошибку - 14: ')' expected near 'a', к чему относиться так и не въеду

Автор: cirus 22.5.2020, 2:32

Он же пишет в какой строке ошибка. В данном случае в 14, т. к. индексация строк начинается с 0, то смотрим на 13 строку.

Цитата
log ( A a )

Параметры в лог нужно передавать через запятую.
Код
log ( A, a )


Автор: XaЛBa 22.5.2020, 2:36

Цитата(cirus @ 22.5.2020, 2:32) *

Он же пишет в какой строке ошибка. В данном случае в 14, т. к. индексация строк начинается с 0, то смотрим на 13 строку.

Параметры в лог нужно передавать через запятую.
Код
log ( A, a )


твоюж медь, ааааа, все, у меня коронавирус, спасиб огромное

Автор: XaЛBa 15.6.2020, 18:16

Код
 --lua
local path = [[C:\Users\второй пользователь\Desktop\UoPiloT\VicDeath]] --рабочий каталог
local image, count = dir (path, "*.bmp")       --загрузка картинок в массив тока bmp
local pole = {750,150,1220,520}    --размер поля для поиска
while true do
    for i=1, count do
        workwindow(windowfromcursor())
        local A, a = findimage (pole[1], pole[2], pole[3], pole[4], {image[i][1]}, 2, 80, -1)
        log ( A, a )
        if  A then
            local x = ((A[1][1] + A[1][3])/2)  
            local y = ((A[1][2] + A[1][4])/2)
            left (x, y)   --жмакает в центр
            wait (3000)
            end
            end
            wait (5)
            end

вопрос1 - выдает ошибку nil -4, что тут не так ему натворил, вопрос2 - почему не хочет понимать local A, a = findimage (pole, {image[i][1]}, 2, 80, -1), хотя финдимадж с массивом может работать

Автор: Madeus 15.6.2020, 22:56

Цитата(XaЛBa @ 15.6.2020, 18:16) *

вопрос1 - выдает ошибку nil -4, что тут не так ему натворил, вопрос2 - почему не хочет понимать local A, a = findimage (pole, {image[i][1]}, 2, 80, -1), хотя финдимадж с массивом может работать


вопрос1 - выдает ошибку nil -4 -- count = nil
вопрос2 - почему не хочет понимать local A, a = findimage (pole, {image[i][1]}, 2, 80, -1), хотя финдимадж с массивом может работать -- не правильно задан путь

Код
local image = {"1", "2", "3"}
local A, a = findimage (pole[1], pole[2], pole[3], pole[4],{path .. image[i] .. ".bmp"}, 2, 80, -1)

Автор: cirus 16.6.2020, 1:36

Цитата
-4

Картинка не найдена.
Цитата
local path = [[C:\Users\второй пользователь\Desktop\UoPiloT\VicDeath]] --рабочий каталог

Если в пути есть пробелы, то он должен быть заключён в кавычки.
Код
local path = [["C:\Users\второй пользователь\Desktop\UoPiloT\VicDeath"]] --рабочий каталог


Автор: XaЛBa 16.6.2020, 11:53

Цитата(cirus @ 16.6.2020, 1:36) *

Картинка не найдена.

Если в пути есть пробелы, то он должен быть заключён в кавычки.
Код
local path = [["C:\Users\второй пользователь\Desktop\UoPiloT\VicDeath"]] --рабочий каталог

чудеса в решете, ставлю кавычки - пишет в логе - Найдено файлов 0, убираю пишет уже что найдено 7 файлов, но выдает ошибку в строке с финдом, хотя там уже прописал путь по другому , а именно local A, a = findimage (pole[1], pole[2], pole[3], pole[4], {path .. "\\" .. image[i] .. ".bmp"}, 2, 80, -1). Да и image - это уже масссив, где image[i][1] содержит полный путь с именем и расширением . а вот такой мутью типа local image = {"1", "2", "3"} - ну , это муть избирательная, но не как для 10 файлов, а если 50 .... и проверял ещо
Код
if count then      -- если файлы найдены
    for i=1, #image do
        log (image[i][1])         -- показать в логе список
    end
end

Автор: cirus 16.6.2020, 12:50

Код
--lua
log 'clear' log 'mode compact'
local path = [[C:\Users\второй пользователь\Desktop\UoPiloT\VicDeath]]      -- путь к папке
local image, count = dir (path, '*.bmp', 'norecursion')
local pole = {750,150,1220,520}


log ("Найдено файлов: " .. tostring(count))

if count then
    for i=1, #image do
        log (tostring(i) .. ' ' .. image[i][1])
        local A, a = findimage (pole[1], pole[2], pole[3], pole[4], { string.format ("%q", image[i][1]) }, 2, 80, -1)
        log('Результат поиска: ' .. tostring(a))
        log ()
    end
end

В рамках пилота лучше не использовать пути с пробелами, чтобы избежать лишних проблем.

Автор: XaЛBa 16.6.2020, 13:40

тестанул, все ок, корень зла именно в пробеле, в local path..... кавычки мешают (хотя почему так и не понял), а в финде - там грамотно избавились за счет string.format ("%q", image[i][1]) - вернуть строку в двойных кавычках, проще переставить пилот в другое место и гиморой исправиться, спасибки , разобрался , учту

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)