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

35 страниц V « < 33 34 35  
Ответить в эту темуОткрыть новую тему
> Помогите освоить LUA
sutra
сообщение 1.8.2019, 2:06
Сообщение #681


*******

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



Дарк, коллеги, спасибо за то, что посоветовали перейти на LUA. Подведя итоги за те 6 месяцев моих мытарств изучения языка (точнее его запрограммированных глюков), результат таков - всё просто летает, любой анализ, любой сложности, выполняется на УРА! Почитал комменты (не все), многие так и не поняли чего они не поняли, хотя вся основа была разжёвана. Практически не особо правил свои функции поиска (правил чисто ляпы и косметику, сама концепция неизменна и эффективна), но всё работает как часы. При правильном алгоритмировании, время поиска даже достаточно сложных и объёмных комбинаций объектов поиска, у меня не превышает 2-5 сотых секунды, при этом минимум 90% скорости кушает getimage. От него и надо плясать. Нашёл немало глюков в Пилоте, но как обычно обошёл их своими "колхозными" методами, информировать о них никого не стал, тем более, что Кнайту это всё наверное надоело (мне бы тоже надоело). В общем, при желании, на текущей версии Пилота, реализовать можно практически любую задачу. Во всяком случае получается искать ВСЁ что требуется, за требуемый интервал времени. Ещё раз всем спасибо!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 2.8.2019, 0:41
Сообщение #682


********

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



Я рад, что плоды моего труда приносят пользу. В моей программе полно глюков, поскольку я самоучка, но мне очень нравится творить хотя бы таким образом. На этом форуме точно есть люди (постоянные посетители), которые знают в программировании гораздо больше меня, и полно людей, которые знают поведение моей программы гораздо лучше меня. Но я жид (еврей), сцука русский жид... поэтому я пока пишу один.
И я всячески приветствую расширение функционала, в том числе посредством плагинов, луа, иным образом... Если вы нашли обход какого то глюка - поделитесь, люди вам скажут спасибо, а я направлю свои усилия на исправление другого надоедливого глюка, или расширение функционала.
Я вам всем безмерно благодарен за поддержку, без которой скорее всего вы сидели бы на других эмуляторах, эта программа закончилась бы на версии 0.96, а я тупо гамил бы в очередную онлайн поделку (не факт, что онлайн, но не суть).

ps: крик души. пьян. воспринимать официально...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 3.8.2019, 9:00
Сообщение #683


***********

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



WKnight, без тебя тем более всего этого не было бы)


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


*

Registred
Сообщений: 4
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.486



Господа сторожилы, всех приветствую!

Вопрос - как проверить действия скрипта на Lua построчно в пилоте?

Например: написан замороченный большой скрипт, но ловлю лишний клик, это заметно (kleft). Хотелось бы посмотреть в каком месте отрабатывается этот момент.
Спасибо!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 10.5.2023, 15:55
Сообщение #685


***********

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



Код
--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 = homepath()          -- Копируем адрес директории с пилотом для
                                   -- преобразования абсолютного в относительный.
                                   -- Очень сильно экономит такты.

local log_orig = log



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

    if string.match(result, [[\luaPlugins\mydbg.lua]]) then
        return
    end

    log_orig(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

local log_debug = function(...)
    log_orig(...)

    if  dbg.file.enable == 1 then
        local params = {...}
        for i = 1, #params do
            dbg.file.handle:write(tostring(params[i]))
            if i < #params then
                dbg.file.handle:write(" ")
            end
        end
        dbg.file.handle:write("\r\n")
        
        dbg.file.handle:flush()
    end
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
        log_orig = log
        log = log_debug
    else
        log "disable debug"
        debug.sethook ()
        log = log_orig
    end
end


return dbg



сохранить в файл mydbg.lua и поместить в папку рядом спилотом с названием lua_plugins.
В вашем скрипте добавить в шапку:
local dbg = require[[lua_plugins\mydbg]]
dbg.enable(1)


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


*

Registred
Сообщений: 4
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.486



Большое спасибо!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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