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

11 страниц V « < 2 3 4 5 6 > »   
Ответить в эту темуОткрыть новую тему
> Плагин графического интерфейса
Cockney
сообщение 3.3.2016, 23:06
Сообщение #61


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



а что оверлей?обычное окно же.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.3.2016, 8:30
Сообщение #62


***********

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



кхе... Оверлей сильно не обычное окно. Прорисовывается уже после формирования выходной картинки при конвертации в сигнал. Т.е. оно может быть поверх всех окон не сбивая фокус. При этом оно не является виндовым окном. Ну разве, что костылями каким-то аналогичный прозрачный апи сделан. Оверлей накладывается на какую-либо область либо на какой-нибудь цвет. Подобным образом тот же фрапс выводит фпс в играх. Аналогично работают видео плееры, если отрисовка включена через оверлей(умеют вроде все или почти все). При воспроизведении видео как правило создается черно окно на которое по цвету проецируется картинка в связи с чем возможны некоторые грабли, которые, как раз и могут пригодиться: уведя плеер на второй план и написав в блокноте черным шрифтом "Hello world", ты получишь воспроизведение в пределах этой надписи. Подобным образом либо при использовании областей, можно выводить любую информацию, при этом будет прозрачный фон(ну точнее фона вообще не будет), необходимый текст/изображение. Так же сквозь подобные надписи можно свободно кликать, т.к. это не окна, а не более чем картинка. При необходимости для кликабельности можно на те же координаты помещать полностью прозрачное окно с необходимыми фичами.

Сообщение отредактировал DarkMaster - 4.3.2016, 8:32


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


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



Я понял про что ты. Да, это реализуемо вроде на GDI или директе, однако, повлечет за собой переписание всего с нуля, абсолютно всего. Вроде как даже нужно ручками определять куда как и чем произошел инпут с клавы или мыши(могу ошибаться). + рисование контролов тоже руками + продумать еще анимации(как при наведении и тд.). По моему это не жизнеспособный вариант.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.3.2016, 13:54
Сообщение #64


***********

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



Цитата
Я понял про что ты. Да, это реализуемо вроде на GDI или директе, однако, повлечет за собой переписание всего с нуля, абсолютно всего. Вроде как даже нужно ручками определять куда как и чем произошел инпут с клавы или мыши(могу ошибаться). + рисование контролов тоже руками + продумать еще анимации(как при наведении и тд.). По моему это не жизнеспособный вариант.

На директе точно можно, на GDI до конца не уверен, т.к. если правильно помню, то оверлей обработка идет после сбора изображения в GDI.
Хелло вролд напишешь - буду ковырять, будет вывод инфы в оверлей, можно будет разделить на 2 модуля, возможно даже вызвать из одного второй получится. Я не смог найти ничего рабочего...
Инпута там вообще нет и быть не может ибо это не окно. По сути это очень схоже с тем, чтобы налепить на монитор трафарет и получать наложенную картинку. Только трафарет этот между видюхой и выходным сигналом.


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


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



как это инпута не может быть?если в директ-приложениях есть возможность использовать мышку и клаву...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.3.2016, 15:46
Сообщение #66


***********

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



Инпута куда? Инпута в оверлей не может быть даже в теории. Инпут в область, где оверлей - возможно. Т.е. по факту, например, инпут в окно бразуера, а мы его перехватываем и обрабатываем. Оверлей не хранится в памяти, не является окном и т.д. Для оси его вообще нет по сути. Его раньше даже вернуть невозможно было(скрином, напрмер, до висты не видел наложенное изображение).


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


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



Вот и на кой такие сложности? Плагин позволяет настроить скрипт щелчками по кнопкам, а уж эти исчезающе-прозрачно-информационные оверлеи явно не для обычного плагина.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.3.2016, 18:36
Сообщение #68


***********

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



Цитата
Вот и на кой такие сложности?

Сначала думал решится все прозрачностью без заморочек и убьется сразу два зайца. Не получилось...
Потом понадеялся, что твоего опыта будет достаточно хотя бы, чтобы показать рабочий пример и наваять наболевшее самому...
Как-то так (IMG:style_emoticons/default/smile.gif)


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


**********

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



За час работы скрипта пару раз вылезла ошибка такого вида:
Прикрепленное изображение
Кусок кода
Код
set linedelay 1
set $edit GUI.GetText (*Edit* *Main2* *edit*)

:start
if #timeRess1cd < timer1 and #timeRess1 > 0
    set #timeRess1 #timeRess1 - 1
    set $ress1cd GUI.SetText (*Text* *Main2* *label* * #timeRess1 *)      //обновляется время(число после кнопки Ress1)
    set #timeRess1cd timer1 + 1000
end_if

if #timeRess2cd < timer2 and #timeRess2 > 0
    set #timeRess2 #timeRess2 - 1
    set $ress2cd GUI.SetText (*Text* *Main2* *label2* * #timeRess2 *)     //обновляется время(число после кнопки Ress2)
    set #timeRess2cd timer2 + 1000
end_if

if #timeRess3cd < timer3 and #timeRess3 > 0
    set #timeRess3 #timeRess3 - 1
    set $ress3cd GUI.SetText (*Text* *Main2* *label3* * #timeRess3 *)     //обновляется время(число после кнопки Ress3)
    set #timeRess3cd timer3 + 1000
end_if

wait 2
set #a GUI.ActionExist ()
if #a = 1
    wait 2
    set %a GUI.GetAction ()
    if %a [1 4] = EDIT_CHANGE                  //если редактируется Edit
        set $edit GUI.GetText (*Edit* *%a [1 1]* *%a [1 2]*)
    end_if

    if %a [1 3] = Ress1 and %a [1 4] = BUTTON_CLICK         //если сделан клик по кнопке Ress1
        set workwindow %handle [1 1]
        send f1
        set #timeRess1 $edit             //присваиваем число из edit
    end_if

    if %a [1 3] = Ress2 and %a [1 4] = BUTTON_CLICK            //если сделан клик по кнопке Ress2
        set workwindow %handle [2 1]
        send f1
        set #timeRess2 $edit               //присваиваем число из edit
    end_if

    if %a [1 3] = Ress3 and %a [1 4] = BUTTON_CLICK             //если сделан клик по кнопке Ress3
        set workwindow %handle [3 1]
        send f1
        set #timeRess3 $edit                //присваиваем число из edit
    end_if
end_if
goto start

Вообще суть скрипта такая: при нажатии на кнопку Ress1, Ress2 или Ress3 обновляется время (число после кнопки). В целом всё работает нормально, но вот пару ошибок было.
Первый раз была ошибка на set $ress1cd GUI.SetText, второй раз та что на скрине. Выскакивала ошибка после нажатия на кнопку (в первом случае Ress1, во-втором Ress3) т. е. дальше должно было время обновиться. Поле edit в это время не редактировалось.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 6.3.2016, 13:23
Сообщение #70


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



прикрепи пожалуйста xml.
----------
А если задержку побольше выставить?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.3.2016, 13:50
Сообщение #71


**********

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



Цитата
А если задержку побольше выставить?

Попробую как время будет.


Прикрепленные файлы
Прикрепленный файл  GUI.rar ( 999 байт ) Кол-во скачиваний: 403
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 6.3.2016, 14:58
Сообщение #72


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



Потестил. Гонял ровно час, баг не воспроизводится. Во время работы менял едит. Все корректно. Возможно задержка. Если еще будет проявляться - пиши, буду глубже смотреть.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.3.2016, 15:24
Сообщение #73


**********

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



Тоже проверял сейчас, причём задержку в 0 поставил, проблем пока нет. Погоняю до вечера, если что-то будет напишу.

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


**********

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



Скорее всего из-за маленьких задержек были ошибки. При linedelay 0, пару раз была эта же ошибка когда быстро и много раз кликал по кнопкам. Хотя иногда как ни старайся ошибки нет. Врят ли кто-то будет такой ерундой заниматься (IMG:style_emoticons/default/smile.gif) Было ещё это:
Прикрепленное изображение
Поставил задержку (точнее таймер на 100мс) перед GUI.ActionExist () пока не было ошибок. Как будет время проверю ещё.

И ещё, если в пустой скрипт написать:
Код
set %a GUI.GetAction ()

Запустить скрипт и пару раз (или больше) кликнуть по кнопке какой-нибудь, то будет ошибка.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 7.3.2016, 6:29
Сообщение #75


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



вот этот второй скрипт работает вместе с основным?или отдельно?

100мс слишком,думаю тут до 20мс вполне нормально будет.

и какую ошибку бьет? что на скрине?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.3.2016, 18:18
Сообщение #76


**********

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



Цитата
вот этот второй скрипт работает вместе с основным?или отдельно?

Отдельно.
Прикрепленное изображение
Пару кликов по любой кнопке и будет такая ошибка.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 7.3.2016, 18:48
Сообщение #77


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



чет я даже не знаю на че думать.....помнится дарк обмолвился, что плагины как-то с вкладками связаны.
-----
А если в этом скрипте перед GetAction вызвать pluginload?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 7.3.2016, 18:59
Сообщение #78


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



Хотя тут что-то другое. Возможно связанное с потоками. Да, скорее всего так и есть.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.3.2016, 19:24
Сообщение #79


**********

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



Пока можно решить проблему таймером. Врят ли кто-то умеет кликать больше 10 раз в секунду. На меньших задержках не тестил.
Код
set #time 100

:start
if #time < timer
    set #time timer + 100
    set %a GUI.GetAction ()
end_if
goto start
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.3.2016, 19:55
Сообщение #80


***********

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



Цитата
чет я даже не знаю на че думать.....помнится дарк обмолвился, что плагины как-то с вкладками связаны.

Плагин общий для всех вкладок вроде. Т.е. если в одной создать что-то в плагине, то и во второй созданное будет доступно. Соответственно надо быть аккуратным, чтобы не налепить одинаковых объектов.


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

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

 

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