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

3 страниц V < 1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Вопрос по массивам и окнам
DarkMaster
сообщение 23.12.2018, 5:36
Сообщение #21


***********

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



tableToFile.lua
Код
local write, writeIndent, writers, refCount;

local persistence =
{
    save = function (path, ...)
        local file, e = io.open(path, "w");
        if not file then
            return error(e);
        end
        local n = select("#", ...);
        -- Count references
        local objRefCount = {}; -- Stores reference that will be exported
        for i = 1, n do
            refCount(objRefCount, (select(i,...)));
        end;
        -- Export Objects with more than one ref and assign name
        -- First, create empty tables for each
        local objRefNames = {};
        local objRefIdx = 0;
        file:write("-- Persistent Data\n");
        file:write("local multiRefObjects = {\n");
        for obj, count in pairs(objRefCount) do
            if count > 1 then
                objRefIdx = objRefIdx + 1;
                objRefNames[obj] = objRefIdx;
                file:write("{};"); -- table objRefIdx
            end;
        end;
        file:write("\n} -- multiRefObjects\n");
        -- Then fill them (this requires all empty multiRefObjects to exist)
        for obj, idx in pairs(objRefNames) do
            for k, v in pairs(obj) do
                file:write("multiRefObjects["..idx.."][");
                write(file, k, 0, objRefNames);
                file:write("] = ");
                write(file, v, 0, objRefNames);
                file:write(";\n");
            end;
        end;
        -- Create the remaining objects
        for i = 1, n do
            file:write("local ".."obj"..i.." = ");
            write(file, (select(i,...)), 0, objRefNames);
            file:write("\n");
        end
        -- Return them
        if n > 0 then
            file:write("return obj1");
            for i = 2, n do
                file:write(" ,obj"..i);
            end;
            file:write("\n");
        else
            file:write("return\n");
        end;
        if type(path) == "string" then
            file:close();
        end;
    end;

    load = function (path)
        local f, e;
        if type(path) == "string" then
            f, e = loadfile(path);
        else
            f, e = path:read('*a')
        end
        if f then
            return f();
        else
            return nil, e;
        end;
    end;
}

-- Private methods

-- write thing (dispatcher)
write = function (file, item, level, objRefNames)
    writers[type(item)](file, item, level, objRefNames);
end;

-- write indent
writeIndent = function (file, level)
    for i = 1, level do
        file:write("\t");
    end;
end;

-- recursively count references
refCount = function (objRefCount, item)
    -- only count reference types (tables)
    if type(item) == "table" then
        -- Increase ref count
        if objRefCount[item] then
            objRefCount[item] = objRefCount[item] + 1;
        else
            objRefCount[item] = 1;
            -- If first encounter, traverse
            for k, v in pairs(item) do
                refCount(objRefCount, k);
                refCount(objRefCount, v);
            end;
        end;
    end;
end;

-- Format items for the purpose of restoring
writers = {
    ["nil"] = function (file, item)
            file:write("nil");
        end;
    ["number"] = function (file, item)
            file:write(tostring(item));
        end;
    ["string"] = function (file, item)
            file:write(string.format("%q", item));
        end;
    ["boolean"] = function (file, item)
            if item then
                file:write("true");
            else
                file:write("false");
            end
        end;
    ["table"] = function (file, item, level, objRefNames)
            local refIdx = objRefNames[item];
            if refIdx then
                -- Table with multiple references
                file:write("multiRefObjects["..refIdx.."]");
            else
                -- Single use table
                file:write("{\n");
                for k, v in pairs(item) do
                    writeIndent(file, level+1);
                    file:write("[");
                    write(file, k, level+1, objRefNames);
                    file:write("] = ");
                    write(file, v, level+1, objRefNames);
                    file:write(";\n");
                end
                writeIndent(file, level);
                file:write("}");
            end;
        end;
    ["function"] = function (file, item)
            -- Does only work for "normal" functions, not those
            -- with upvalues or c functions
            local dInfo = debug.getinfo(item, "uS");
            if dInfo.nups > 0 then
                file:write("nil --[[functions with upvalue not supported]]");
            elseif dInfo.what ~= "Lua" then
                file:write("nil --[[non-lua function not supported]]");
            else
                local r, s = pcall(string.dump,item);
                if r then
                    file:write(string.format("loadstring(%q)", s));
                else
                    file:write("nil --[[function could not be dumped]]");
                end
            end
        end;
    ["thread"] = function (file, item)
            file:write("nil --[[thread]]\n");
        end;
    ["userdata"] = function (file, item)
            file:write("nil --[[userdata]]\n");
        end;
}

return persistence

Код
--lua
-- ПУТЬ ПОПРАВЬТЕ
-- ПУТЬ ПОПРАВЬТЕ
-- ПУТЬ ПОПРАВЬТЕ
local tableToFile   = require[[luaPlugins\tableToFile]]
local a = {123, "HRt", 67}
local b = {"BRS", "AR", "nnfw"}
local c = {Raad=35, ar=89}
tableToFile.save ("saved.txt", a,b,c)
local d, e, f = tableToFile.load ("saved.txt")


Сохраняет в виде валидного lua кода (функции). Что позволяет по сути использовать стандартный:
local d, e, f = loadfile ("saved.txt")()
Обратите внимание на вторую пару скобок. loadfile загружает функцию, а не значения, мы ставим вторую пару скобок и эта функция выполняется и возвращает уже непосредственно значения.

мля. спать надо. пост выше не по теме) ну пусть висить - вообще полезный))


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


**********

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



Цитата
есть способ сделать ровное форматирование, что бы каждый столбик шёл в ряд?

Дописывать пробелы в конец строки, чтобы все были одной длины.
Код
init_arr %list (1 1 1) персонаж1 персонаж2 перс3 перс4
init_arr %list (1 1 2) 3477782 4349346 2174866 318012
init_arr %list (1 1 3) 0 847 0 0

set $c "@"    // можно любой символ использовать
for #i 1 size(%list)
    for #j 1 size(%list[])
        set $s %list[#i #j]
        while size($s) < 10    // пока длина строки меньше 10
            set $s $s$c        // дописываем символ в конец строки
        end_while
        set $s string_replace ($s $c " " "all")  // заменяем дописанные символы на пробел
        set %list[#i #j] $s    // записываем в массив
    end_for
end_for
save_array %list ДЕНЬГИ2.txt
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 23.12.2018, 13:10
Сообщение #23


*******

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



Цитата
есть способ сделать ровное форматирование

Я бы порекомендовал использовать табуляцию. Просто дописывать после каждого элемента вот такую штуку chr(9). Кстати такой файл легко автоматически подгружается в эксель, где можно потом хоть сортировать, да что угодно, формулы использовать и т.д.
Код
set $sep chr(9)
set $a1 "строка1"
set $a2 "строка2"
set $res $a1$sep$a2
log $res
end_script



Я сам использую этот принцип. Вся статистика автоматом подгружается в отдельный лист экселя, а остальные листы берут эти данные и уже и сортируют и обрабатывают. Очень удобно.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 23.12.2018, 13:41
Сообщение #24


***********

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



Цитата
Я бы порекомендовал использовать табуляцию.

Проблема в том, что текстовые редакторы табуляцию растягивают ограниченно. Поэтому при большой разнице строк все равно съезжает текст. Можно попробовать настроить редактор, но обратной стороной будет проблема, что растягивает строки слишком сильно, либо когда это не требуется. Имхо если ну очень сильно хочется, то проще csv писать и сразу каким-нибудь екселем открывать.


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


*******

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



Да вариантов полно, табуляция - это просто выравнивание по границе, которую кстати многие программы определяют сами (8 или например 4 пробела). Универсально Cirus показал как, я просто поделился опытом. Опять же по умолчанию табуляция является символом разделителем, хоть в экселе, хоть в Пилоте. Можно потом грузить этот файл в скрипт, не задумываясь.

Кстати Пилот и сохраняет вроде как в том же формате. Так что можно не мучаться, а просто сохранять в файл Пилотовским оператором.

Что собственно и делается. Открывать потом экселем вот и всё.

Затупил я. Изначально табуляция и ставится.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 23.12.2018, 14:33
Сообщение #26


*******

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



Если конечно установлен эксель. Выбираешь вкладку "данные", выбираешь "из текста", выбираешь свой текстовый файл, сохраняешь экселевский файл куда удобно. В дальнейшем используя экселевский файл жмёшь в любой момент Ctrl+Alt+F5 и актуальное содержимое текстового файла на экране.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sel
сообщение 29.12.2018, 0:48
Сообщение #27


**

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



Ииии, мне снова нужна ваша помощь друзья:)
Проблема: иногда пилот НЕНАХОДИТ окна, вот мой скрипт:

Код
init_arr %list (1 1) Персонаж1 Персонаж2 Персонаж3 Персонаж4 ... Персонаж(х)
set #listsize size(%list)
while (1 = 1)
for #j 1 #listsize
        set %handle FindWindow ("_ИГРА")
        set #handlesize size(%handle)
        set #result indexOf (%handle noabs (%list[#j 1]) )
        if #result = -1 and #handlesize < #listsize
            log Вылетел: %list [#j 1]
            stop_script
            gosub %list [#j 1] // перенаправление в подпрограмму для завода окна
            set #result 0
        end_if
    end_for
for #i 1 #handlesize  
.....
код
.....
end_for
end_while

:Персонаж1
...
код
...
return

:Персонаж(х)
...
код
...
return




Вот что пишут логи:

23:57:45 : while (1 = 1)
23:57:45 : for #j(18) 1 #listsize(18)
23:57:45 : set %handle FindWindow ("_ИГРА")
23:57:45 : %("_ИГРА") [ 19 1 ] =
23:57:45 : set #handlesize(18) size(%handle)
23:57:45 : #handlesize = 18
23:57:45 : set #result(1) indexOf (%handle noabs (%list[#j(1) 1]) )
23:57:45 : #result = 6
23:57:45 : if #result(6) = -1 and #handlesize(18) < #listsize(18)
23:57:45 : end_for
23:57:46 : set %handle FindWindow ("_ИГРА")
23:57:46 : %("_ИГРА") [ 19 1 ] =
23:57:46 : set #handlesize(18) size(%handle)
23:57:46 : #handlesize = 18
23:57:46 : set #result(6) indexOf (%handle noabs (%list[#j(2) 1]) )
23:57:46 : #result = 1
23:57:46 : if #result(1) = -1 and #handlesize(18) < #listsize(18)
23:57:46 : end_for
23:57:46 : set %handle FindWindow ("_ИГРА")
23:57:46 : %("_ИГРА") [ 19 1 ] =
23:57:46 : set #handlesize(18) size(%handle)
23:57:46 : #handlesize = 18
23:57:46 : set #result(1) indexOf (%handle noabs (%list[#j(3) 1]) )
23:57:46 : #result = 2
23:57:47 : if #result(2) = -1 and #handlesize(18) < #listsize(18)
23:57:47 : end_for
23:57:47 : set %handle FindWindow ("_ИГРА")
23:57:47 : %("_ИГРА") [ 0 0 ] = handle
23:57:47 : set #handlesize(18) size(%handle)
23:57:47 : #handlesize = 0
23:57:47 : set #result(2) indexOf (%handle noabs (%list[#j(4) 1]) )
23:57:47 : #result = -1
23:57:47 : if #result(-1) = -1 and #handlesize(0) < #listsize(18)
23:57:47 : Вылетел: Персонаж(х)
23:57:50 : stop_script


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

Раньше было всё нормально, после каких то изменений в скрипте, перестал находить окна, уже ума не приложу в чём может быть дело.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 29.12.2018, 1:22
Сообщение #28


**********

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



Цитата
после каких то изменений в скрипте, перестал находить окна

В папке с пилотом Scripts\Backup. Ищите работающий вариант.
Цитата
если в общем скрипте так делаю

Значит где-то в скрипте что-то не так.
Из мелочей:
Цитата
while (1 = 1)

Скобки не нужны.
Цитата
for #j 1 #listsize
set %handle FindWindow ("_ИГРА")

Зачем искать на каждой итерации. Поменяйте местами.
Цитата
end_while

Если linedelay 0, то добавьте wait 1. Чтобы проц не грузить.
Код
wait 1
end_while

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 29.12.2018, 3:29
Сообщение #29


*******

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



Ну если быстро (чисто для Вашего случая) не вникая в остальное. В 4-ю и 5-ю строку, добавьте к Перс3 и Перс4 строку chr(9).

Сорри, уже не актуально, что-то у меня стал тупить браузер, на старую сраничку выводит.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sel
сообщение 28.2.2019, 0:26
Сообщение #30


**

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



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



скрипт

Код

set %handle FindWindow ("PW")
init_arr %list (1 1) перс1 перс2 перс3
set #listsizecheck size(%list)
while (1 = 1) //пока не прекратим
for #i 1 size(%handle)              // цикл////////проверялка окон
set #handlesize size(%handle)
set #listsize size(%list)
    for #j 1 #listsize
        set #result1 indexOf (%handle noabs (%list[#j 1]) )
        if #result1 = -1 and #handlesize <= #listsizecheck
            set $log Вылетел: %list [#j 1]
            Log $log
            gosub %list [#j 1] // перенаправление в подпрограмму для завода окна
            set #result1 0
        end_if
    end_for
wait 100
set %handle findwindow ("PW")
...
скрипт гуляющий по окнам через for
...
end_while
....
тут скрипт для завода окна в игру, к нему переход осуществляется при помощи gosub
....

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


**********

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



Цитата
gosub %list [#j 1]

Возможно в этом проблема. Попробуйте не использовать подпрограмму. Переход из циклов исправлялся когда-то, но может где-то осталась проблема.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 28.2.2019, 1:55
Сообщение #32


*******

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



Цитата
Возможно в этом проблема
Тоже хотел сказать про это, но и это не главное. Идёт нагромождение операторов, а логика решения задачи туманная. Всё в одну кучу свалено. Ну надо искать окна, так давайте их сначала найдём. Так и не понял где проблема. Вылетело окно, ну что мешает определить это?


Поиск окон (в моей практике) работает как часы, там нет никаких нюансов.

Есть массив запущенных окон. Нашли массив действующих. Что мешает сравнить? В чём проблема?

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

Нормально использовать подпрограммы, только это не вызов подпрограммы - это всего лишь мысль, как это делать. Вот и вызывайте подпрограмму (по метке подпрограммы) и там анализируйте и обрабатывайте массив.

Цитата
Переход из циклов исправлялся когда-то
Не сталкивался с такими проблемами, из любого места подпрограммы отрабатывают без проблем. Десятки вызовов из разных ИФ-ов и разных циклов работают без проблем.


Я вроде даже где-то 100% рабочий пример давал с "Блокнотами". Что там не устраивало?? Что не работало? Что работало не так??
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 28.2.2019, 2:27
Сообщение #33


*******

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



Подпрограмма в Пилоте - это собственно goto на метку. Используется, если в коде нужно много (несколько) раз выполнять одно и то же (однотипный кусок кода). В этом куске доступны все переменные основного тела скрипта. Разница лишь в том, что после её отработки Вас возвращают в то же место, откуда был вызов подпрограммы, с возможно уже модифицированными переменными (массивами) или уже с выполненными действиями. Тем не менее из подпрограммы возможен и переход goto, тогда Вы не возвратитесь в место вызова, а начнёте действие с того места, куда будет указывать переход goto. Да, с точки зрения "нормального" кода это не приветствуется, но в Пилоте это всё реализовано как надо. Я не видел проблем.

Разница между функцией и подпрограммой даже не знаю, есть ли она сейчас. В классических языках программирования есть конкретная интерпретация и разница между ними. Современные синтаксисы всё свалили в одну кучу. Раньше всё было просто, функция возвращает РЕЗУЛЬТАТ, подпрограмма просто выполняет кусок кода. Раньше конкретно различали параметр и переменную, сейчас, дабы не напрягать и без того ослабший мозг юзеров, всё свалили в одну кучу. Юзер чувствует себя прекрасно, а вот спецу найти косяки в чужом коде стало очень сложно. Поэтому никто не ищет - пишет свои косяки.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 28.2.2019, 2:47
Сообщение #34


*******

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



findwindow ищет окна в том порядке, в котором они были созданы. Там нет вообще никаких проблем. Поэкспериментируйте с окнами (Блокнота, калькулятора и т.п.) и посмотрите что к чему. Сразу будет понятен алгоритм действий. Ещё раз повторюсь, с поиском окон у меня никогда никаких проблем не было.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sel
сообщение 28.2.2019, 2:58
Сообщение #35


**

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



Цитата(sutra @ 28.2.2019, 3:55) *

Я вроде даже где-то 100% рабочий пример давал с "Блокнотами". Что там не устраивало?? Что не работало? Что работало не так??


Давали, это видоизменённая версия, окна переименовываются по имени персонажа при заходе в игру, список имён описан в списке %list, как бы я не пробовал экспериментировать, после 8-10 часов работы скрипта, FindWindow не находит ни одного окна и начинает заводить все окна по новой в итоге я прихожу домой, и вижу 35-40 копий игры(комп может выдержать не более 20). Сравнение массивов хорошая штука, но произойдёт то же самое, был массив с 10 окнами, FindWindow не найдёт ни одного окна и скрипт решит что все окна закрылись(хоть это и не так) и в результате сравнения массивов скрипт начнёт заводить новые окна. У меня был вопрос, может есть предел буфера памяти пилота? и при его достижении он забывает всё что в него записывалось?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.2.2019, 3:04
Сообщение #36


**********

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



Цитата
У меня был вопрос, может есть предел буфера памяти пилота?

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


*******

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



Цитата
2гб и вылет.
Ну хоть что-то, я тоже думал на эту тему. Всё-таки 32-х разрядное приложение. По логике 32 разряда + отрицательные значения, так и получается 2 ГБ.


Цитата
и вижу 35-40 копий игры
Вот просто на 100% уверен, что-то у Вас неправильно анализируется. Сегодня голова уже не варит. Если не сможете решить вопрос сами и Гуру не помогут, давайте свой код, убью час времени - решу вопрос. Давать своё, как-то вроде не в тему, дайте кусок своего кода, только не придуманный, а рабочий, так будет быстрее. Дадите придуманный, ну посмотрим и придуманный. Только я не сижу на форуме сутками, можем долго решать проблему.


Просто я пересел на lua и реально забыл Пилотовский язык. Сходу не получается, надо вникать ...

Просто на виртуальных примерах, мы даём "общее" решение проблемы, но возможно частное решение окажется более простым и эффективным. Ну вот Вы пытаетесь что-то сделать с якобы существующим окном. Так ведь можно именно это окно проверить, существует ли оно и если оно вылетело ... СРАЗУ решить проблему, а не лопатить все окна. Ну думаю Вы поняли мою мысль. Перед тем как что-то делать в окне (ведь его хендл у нас уже есть) можно проверить существование в реальности этого окна.

Ну просто масса частных вариантов решения проблемы. Надо сделать просто, понятно, надёжно - и это 100% возможно.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 28.2.2019, 3:42
Сообщение #38


*******

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



Цитата
У меня был вопрос, может есть предел буфера памяти пилота? и при его достижении он забывает всё что в него записывалось?
Голову на отсечение конечно давать не буду. Но искать окна Пилот умеет. Надо смотреть ваш конкретный вариант. Могу сказать только одно, у меня скрипт на языке Пилота (со множеством недоделок, теперь уж сразу всё на lua переведу) работает СУТКАМИ. Я спокойно уезжаю на дачу, а он 3-е суток лопатит, с перезагрузками браузера (а он его тоже ищет), со сворачиванием разворачванием окон, с активизацией микшера и прочих прибамбасов, с сохранением статистики в Эксель ... всё работает как часы. Надо искать ошибки, а их я за свою жизнь наделал немало. И бывало матерился ... ну как же так, но потом всё выяснялось и оказывалось, что я сам накуралесил.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 28.2.2019, 3:55
Сообщение #39


*******

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



Вот без всякого хвастовства говорю (хотя гордость внутри себя присутствует), не раз, как у Вас бывало, прихожу домой, смотрю, а игруха затупила. Почти год боролся с разными глюками и игры и Пилота. И всё-таки решил все вопросы. А игруха непростая, бездумные клики не всегда прокатывают, то сработало раньше, то сработало позже, то сработало, когда уже нужно делать совершенно другое. ВСЕ вопросы решил, не хватало только в определённых ситуациях скорости, вот и перешёл на lua. ВСЁ можно сделать - это 100%.

Ну и результат конечно есть - конкуренты в глубочайшем ауте. Там есть конечно боты, только им до меня, как до Парижу.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.2.2019, 14:00
Сообщение #40


***********

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



Цитата
Попробуйте не использовать подпрограмму

gosub работает полностью корректно с циклами при условии возврата по return


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

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

 

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