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

18 страниц V « < 12 13 14 15 16 > »   
Ответить в эту темуОткрыть новую тему
> Новая Версия Uopilot v.2.40 (05.11.2017), Официальный сайт. Скачать. Последняя версия.
DarkMaster
сообщение 30.11.2018, 0:11
Сообщение #261


***********

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



Код
--lua
send217()
end_script ()

уже плохеет.

Не вылизано, может есть огрехи, но оно работает. По крайней мере у меня настольный инструмент. Предлагаю включить в пилот, со временем может допилится до чего-то более красивого. На данный момент технически не имею возможности выдергивать значения передаваемые в функцию. С переменными можно исключительно через Ж выдернуть значения по сути написав собственный парсер, а вот с внешних функций уже увы не получится без использования апи на стороне пилота.
Код
--lua
--log = print

    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
                        if type(k) == "string" then
                            log(tab..'table: "'..k..'"')
                        else
                            log(tab..'table: '..k)
                        end
                        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(v) == "boolean" then v = '"'.. tostring(v)..'"' end
                        if type(v) == "function" then v = '"'.. tostring(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




local dbg    = {}
dbg.trace    = 1                   -- Отображение стека
dbg.line     = 1                   -- Отображение номеров строк
dbg.code     = 1                   -- Отображение исходного кода
dbg.source   = 1                   -- Отображение источника кода(адрес файла, строка и т.д.)
dbg.source_abs = 0                 -- Абсолютные адреса файлов.
dbg.tab      = 75                  -- Выравнивание исходного кода в символах.
--     стек                 выравнивание     код
--(213)main->                             mycall()
--(213)main->(209)mycall->                file_echo()
--     стек                 выравнивание     код
                                  
dbg.file  = {}                   -- Настройки файла лога
dbg.file.enable = 1              -- Включить логирование в файл
dbg.file.path = "lua_log.txt"    -- Путь файла лога
dbg.file.append = 0              -- Дописывать лог (не удалять старый)
dbg.file.handle = nil            -- Хендл файла
dbg.buffer = {}                  -- Буфер с файлами скриптов.

dbg.homepath = [[i:\!sandboxie\wxLua\drive\C\LuaJIT-2.0.5 x86 bin_2\]]          -- Копируем адрес директории с пилотом для
                                   -- преобразования абсолютного в относительный.
                                   -- Очень сильно экономит такты.


if  dbg.file.enable == 1 then
    if  dbg.file.append == 1 then
        dbg.file.handle = io.open("lua_log.txt", "a+b")
    else
        dbg.file.handle = io.open("lua_log.txt", "wb") -- Стираем файл.
--        dbg.file.handle:close()                       -- Стираем файл.
--        dbg.file.handle = io.open("lua_log.txt", "a+b")
    end
end


function dbg.func()
    local result = ""
    local short_src = ""
    local source_line = ""
    local source_is_file = nil

    
    local info = debug.getinfo(2,'nSl')
--    table.show(info)
    
    if  info then
    
        -- Включено логгирование строк исходника.
        -- Только вычлнение строки,
        -- конкатенция после получения стека.
        if  dbg.code == 1 then
            local source_line_n = info.currentline
            local line_pos = 0

            -- Если источник кода внешний файл, то
            -- подгружаем файл в источник вместо адреса файла.
            if string.sub(info.source,1,1) == "@" then
                source_is_file = true
                local source_file = io.open(string.sub(info.source, 2), "r")
                info.source = source_file:read("*a")
                source_file:close()
            end

            -- Находим строку с кодом в исходнике.
            for i=1, source_line_n - 1 do
                --log("i: "..i.."source_line_n: "..source_line_n - 1)
                line_pos = string.find(info.source, "\n", line_pos +1)
            end
            local line_end = string.find(info.source, "\n", line_pos +1)
            source_line = string.sub(info.source, line_pos + 1, line_end - 1)
            
--            result = result.."\t"..source_line
        end


        -- Получаем стек, пути.
        if dbg.trace == 1 then
        for i=3, 100 do
            if  info then
                if  not info.name then info.name = info.what end
                -- Добавление источника.
                if  dbg.source == 1 then
                    if  short_src ~= info.short_src then
                        if  i > 3 then
                            -- Преобразуем абсолютный путь в отностиельный.
                            if  source_is_file and dbg.source_abs == 0 then
                                local prefix = string.sub(short_src, 1, #dbg.homepath)
                                if prefix == dbg.homepath then
                                    j=i
                                    short_src = string.sub(short_src, #dbg.homepath + 1)
                                end
                            end
                            result = '"'..short_src..'"->'..result
                        end
                        short_src =  info.short_src
                    end
                end
                -- Добавление стека
                result = "("..info.currentline -1 ..")"..info.name .. "->" .. result
            else
               break
            end
            info = debug.getinfo(i,'nSl')
        end
        end
    else
        return
    end
    
    
    -- Добавляем строку исходника.
    if  dbg.code == 1 and dbg.code == 1 then
        if  dbg.trace == 1 then
            result = result..string.rep(" ", dbg.tab-#result)..source_line
        else
            result = tostring(info.currentline)
            result = result..string.rep(" ", 5-#result).."-> "..source_line
        end
    end

    log(result)

    if  string.sub(result, -1) == "\r" then
        result = result .. "\n"
    else
        result = result .. "\r\n"
    end

    if  dbg.file.enable == 1 then
        dbg.file.handle:write(result)
        dbg.file.handle:flush()
    end
--    log(source_line)
end

function dbg.enable (state)     -- Вкл|выкл лога. nil, false, 0 - выключают, любые другие значения включают.
    if  state and state ~= 0 then
        if  dbg.line == 1 or dbg.trace == 1 then
            debug.sethook (dbg.func, "l")
        end
    else
        log "disable debug"
        debug.sethook ()
    end
end


return dbg




По сути аналог log commands


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 2.12.2018, 14:11
Сообщение #262


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Unstable
02.12.2018 Build 016.16
Исправил эксепшен, возникающий при перезапуске Lua скриптов.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.12.2018, 14:14
Сообщение #263


***********

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



(IMG:style_emoticons/default/worthy.gif)


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 7.12.2018, 13:19
Сообщение #264


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Unstable
07.12.2018 Build 016.17

Добавил "*.lua" в маску по умолчанию, в диалоги открытия\сохранения скриптов.

Исправил галочку "Добавлять пробелы", слегка переделал алгоритм.

Исправил 'dir' в Lua. Если ничего не найдено, то возвращает "nil", а не пустую таблицу.

В хелп с Wiki, который вызывается по "F1" или по ПКМ на операторе в скрипте, добавил команды Lua. Какую справку показывать, Lua или обычную, определяется по предшествующему комментарию.

В "Перекачать всё с Wiki" добавил скачивание Lua вариантов команд.

Исправил эксепшен при использовании 'send' без параметров.

Убрал зацикливание одинокого скрипта Lua без признака конца скрипта "--endlua".

Добавил редактор "Подсветки синтаксиса" в меню "Настройки".

Исправил ошибку "EConvertError '^xx'", где "хх" номер скрипта, иногда возникающую при выполнении процедур.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sel
сообщение 7.12.2018, 18:08
Сообщение #265


**

Neophyte
Сообщений: 32
Регистрация: 4.7.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.986
Возраст: 27



Цитата(WKnight @ 7.12.2018, 15:19) *

Unstable
07.12.2018 Build 016.17


Исправил ошибку "EConvertError '^xx'", где "хх" номер скрипта, иногда возникающую при выполнении процедур.


Не знаю, должно быть так или нет, но если в качестве хендла задать несуществующее окно, то пилот зависает, и его приходится убивать через диспетчер задач.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 7.12.2018, 21:39
Сообщение #266


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Мне нужен пример, для воспроизведения ошибки.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sel
сообщение 7.12.2018, 23:09
Сообщение #267


**

Neophyte
Сообщений: 32
Регистрация: 4.7.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.986
Возраст: 27



Цитата(WKnight @ 7.12.2018, 23:39) *

Мне нужен пример, для воспроизведения ошибки.


Попробуйте запустить этот скрипт без запущенного калькулятора.
Код
call test

proc test
set #handleWin findWindow (Калькулятор)
set workwindow #handleWin
end_proc
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 7.12.2018, 23:42
Сообщение #268


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Попробуйте запустить этот скрипт без запущенного калькулятора.

Здесь нет ошибки. Надо всегда проверять результат того, чего может не быть. В данном случае проверить, что #handleWin не является nil.

В лом искать пример на языке Пилота, кусочек кода на lua...
Код
local mic=findwindow("Микшер")
if mic==nil then                                                               -- Если окно Микшера громкости не найдено
...



В Пилоте есть оператор is_real. Смотрите справку. Очень нужный оператор.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 8.12.2018, 0:04
Сообщение #269


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



В Вашем случае нужно смотреть, чтобы значение #handleWin , было более нуля.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 8.12.2018, 0:36
Сообщение #270


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Нет, тут вопросы к Кнайту, попробовал, без запущенного калькулятора вешает Пилот наглухо. Хотя я бы ни в жизнь не запустил такой ненужный, да ещё и глюкавый оператор как proc.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sel
сообщение 8.12.2018, 0:44
Сообщение #271


**

Neophyte
Сообщений: 32
Регистрация: 4.7.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.986
Возраст: 27



Цитата(sutra @ 8.12.2018, 2:36) *

Нет, тут вопросы к Кнайту, попробовал, без запущенного калькулятора вешает Пилот наглухо. Хотя я бы ни в жизнь не запустил такой ненужный, да ещё и глюкавый оператор как proc.


Дело в том, что раньше такого не было, а сейчас да, вешает наглухо)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.12.2018, 0:47
Сообщение #272


***********

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



Цитата
Хотя я бы ни в жизнь не запустил такой ненужный, да ещё и глюкавый оператор как proc.

Да оператор то как раз очень нужный. По крайней мере в пилотовском синтаксисе. В первую очередь он хорош тем, что имеет свое пространство имен. По сути это аналог функций. А вот проблемки у него случались. Это кстати одна из основных причин, почему я склонял на встраивание луа.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 8.12.2018, 0:52
Сообщение #273


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



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

Ну так и откажись от него, он живёт своей жизнью, никаких преимуществ не даёт, наоборот - одни проблемы. Используй gosub, просто, эффективно и понятно. А Кнайт пусть репу чешет, как решать сию проблему. Вам спасибо, запесплатно выявили ошибку.

Цитата
Да оператор то как раз очень нужный

Да нафиг он нужен. Ну своё пространство - это суперпроблема для Пилота? Ты то давно в lua.

Цитата
Да оператор то как раз очень нужный

Настолько нужный, что с версии 2.15 "чудно работал".
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.12.2018, 2:38
Сообщение #274


***********

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



Цитата
Ну своё пространство - это суперпроблема для Пилота?

Да, я уже писал об этом (IMG:style_emoticons/default/smile.gif)
Цитата
Ты то давно в lua.

Ну поэтому и в луа, что в луа нет этой проблемы. Для старого синтаксиса важно. По сути я старый синтаксис рассматриваю сейчас в первую очередь, как совместимость. По большому счету нужно на lua пересаживать народ, а это тяжело. В первую очередь потому, что это не язык по умолчанию и его еще нужно включить и выглядит он сейчас больше, как пасхалка. Во вторых вика ну очень хорошо написана, но написана она не под луа и ее нужно редактировать и редактировать много. Да правки там символические, но для людей неразибрающихся они нужны и сильно.

Сообщение отредактировал DarkMaster - 8.12.2018, 2:38


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 8.12.2018, 2:54
Сообщение #275


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
но для людей неразибрающихся они нужны и сильно.

Всё так, ты как всегда прав. Ну со временем всё будет как надо. Ещё раз спасибо Кнайту, высказывать пожелания и критиковать легко, а вот реально что-то сделать, не так просто.


Лично я до сих пор, все кусочки кода методом тыка сначала пробую на работоспособность, потом тестирую на скорость и только потом внедряю в рабочий скрипт. Процесс небыстрый, но потихоньку продвигаюсь. Проектирую новый код на перспективу, да, медленно, но сомнений нет, всё будет переведено на lua, и как и обещал, прибью даже блоху, в любой координате, даже если она появится на миг.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 9.12.2018, 14:26
Сообщение #276


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Обнаружил вот такую ошибочку.
Код
local p,w,h,l=getimage(655,938,684,938,ww)
saveimage(p,[[image.bmp]])  -- размер картинки 30 х 88 вместо 30 х 1
deleteimage(p)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 9.12.2018, 23:59
Сообщение #277


***********

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



ctrl-Y отвалился. (Противоположность ctrl+z). Так же был странный глюк, когда ctrl+Y начинал стирать строки. Это было как-то связано с выделением строки.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 10.12.2018, 9:51
Сообщение #278


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



По ходу дела минимальная зона захвата getimage - 2x2
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 10.12.2018, 10:18
Сообщение #279


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
ctrl-Y отвалился.

Конечно это неплохая вещь. Однако, как говорят в народе, на скорость не влияет! У меня с давних пор выработана привычка, если придумал что-то супер эксклюзивное, немедленно сохраняй. Если нацарапал абзац - сохраняй. Раньше бесперебойников не было. Ну а бекап вроде давно уже стандарт, в Пилоте слава богу с этим проблем нет. Ну а если по собственному недосмотру удалил какую-нить хрень, ну откат то работает, остальное господа - излишества, заставляющие мозг окончательно забыть про его предназначение.

Я вообще по привычке частенько в FARе всё делаю, там нет проблем, там можно всё, хоть вертикальными блоками таскай, сдвиги влево вправо и redo работает, правда не CTRL-Y. И подсветка меня устраивает, сразу показывает какой end к чему относится.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 10.12.2018, 11:25
Сообщение #280


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Во во,я и говорю - Far (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

18 страниц V « < 12 13 14 15 16 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

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