alastair2k17 Posted April 3, 2017 Share Posted April 3, 2017 Здравствуйте! Я делаю свой класс dxeditbox как в нём реализовать вставку текста из буфера? Link to comment
TheNormalnij Posted April 3, 2017 Share Posted April 3, 2017 В целях безопасности такой функции нет. Разве что вы можете реализовать только между своими гуи. Link to comment
alastair2k17 Posted April 6, 2017 Author Share Posted April 6, 2017 А как сделали данную функцию на сервере MTA RP?(предположительно) Link to comment
Fabervox Posted April 7, 2017 Share Posted April 7, 2017 @alastair2k17, к вам встречный вопрос точно такой же. Как там сделали? Можно подставить поле ввода стандартного гуи, при этом можно поверх этого гуи нарисовать свое dx функциями. Далее человек после активации этого невидимого гуи(видимым оно не обязано при этом становиться), человек должен нажать ctrl+v, и вы сможете ессно считать из того gui текст, и написать в своем. Если гуи не скрыто то возможно сделать распознавание, но это вариант теоретический и никому не нужный. Любые другие варианты насколько я понимаю, слежка, воровство, и наверное стоит обратиться непосредственно к MTA Team, дабы они знали об этом, дали соответствующую оценку и при необходимости пресекли подобные действия в будущем. Link to comment
alastair2k17 Posted April 7, 2017 Author Share Posted April 7, 2017 Т.е полноценный dxeditbox можно сделать с помощью наложение невидимого guieditbox(стандартный)? Link to comment
TheNormalnij Posted April 7, 2017 Share Posted April 7, 2017 onClientCharacter позволяет вполне успешно обработать свои dxedit. Link to comment
Fabervox Posted April 7, 2017 Share Posted April 7, 2017 @alastair2k17, я не говорил о том что нужно делать особый gui-элемент, я говорил о том что он, не обязан становиться видимым пользователю. Невидимым его должно было сделать, наложенное сверху dxgui. Без такого костыля, содержимое буфера обмена вряд ли удастся получить. Конечно при каких-то багах или недоработках, стандартное окно ввода может вылезти наружу. Тут уж ничего не поделаешь, красоты требуют жертв, и уже каждому выбирать каких, то ли расстроенных игроков, то ли более тщательной проработки, тестов, а следовательно и времени. Для реального проекта, я бы задался вопросом, а надо ли? Многие же и иначе решают задачу, делая интерфейс браузером, не всё конечно, но вот то что прямо таки является окнами, вполне нормально. Link to comment
Space_Unicorn Posted May 2, 2017 Share Posted May 2, 2017 Сталкивался с подобной проблемой, решение костыльное но рабочее Вырезал сразу код из своего чата для понимания логики CLIPBOARD = guiCreateEdit(1.1,1.1, 0.0001,0.0001,'',true) guiSetEnabled(CLIPBOARD,false) if key == 'v' and getKeyState('lctrl') then if isTimer(self.clipTimer) then return end guiSetText(CLIPBOARD,'') guiSetEnabled(CLIPBOARD,true) guiBringToFront(CLIPBOARD) self.clipTimer = setTimer(function() self.text = self.text..guiGetText(CLIPBOARD) self.carretIndex = utf8.len(self.text) guiSetText(CLIPBOARD,'') self.clipTimer = false end,50,1) guiSetEnabled(CLIPBOARD,false) return end 1 Link to comment
alastair2k17 Posted May 2, 2017 Author Share Posted May 2, 2017 А копирование текста как реализовать? Link to comment
Space_Unicorn Posted May 2, 2017 Share Posted May 2, 2017 В смысле вставка вашего текста в буфер обмена? так есть же https://wiki.multitheftauto.com/wiki/SetClipboard Link to comment
Dr.Deft Posted May 2, 2017 Share Posted May 2, 2017 36 minutes ago, Space_Unicorn said: В смысле вставка вашего текста в буфер обмена? так есть же https://wiki.multitheftauto.com/wiki/SetClipboard Эта функция заполняет буфер обмена, а не получает данные из него. Link to comment
Space_Unicorn Posted May 2, 2017 Share Posted May 2, 2017 >В смысле ставка вашего текста В буфер обмена? >setClipboard не знаю, как можно было понять это по другому Link to comment
alastair2k17 Posted May 2, 2017 Author Share Posted May 2, 2017 (edited) 55 minutes ago, Dr.Deft said: Эта функция заполняет буфер обмена, а не получает данные из него. Это типо копирует в буффер? Или как? Т.е выполняет действие Ctrl+C?))) Edited May 2, 2017 by alastair2k17 Link to comment
Dr.Deft Posted May 2, 2017 Share Posted May 2, 2017 5 minutes ago, alastair2k17 said: Это типо копирует в буффер? Или как? Т.е выполняет действие Ctrl+C?))) Да. Это что то типо CTRL+C 1 hour ago, Space_Unicorn said: >В смысле ставка вашего текста В буфер обмена? >setClipboard не знаю, как можно было понять это по другому Автору нужно не вставить в буфер, а получить из него Link to comment
Fabervox Posted May 2, 2017 Share Posted May 2, 2017 @Dr.Deft, то что автору нужно получить, было сразу понятно. И на это ответил @TheNormalnij, что прямую функцию не создавали, в виду того что тогда буффер обмена становится небезопасным. Но при этом игрок может вставить нажатием ctrl-v в любое стандартное гуи, будь то хоть меню мта, хоть созданное на конкретном игровом сервере. Наделить кастомное поле ввода таким свойством нельзя. Но т.к. главная цель кастомного гуи обычно визуальное отличие от стандартного, то можно создать стандартное поле ввода, и останется лишь спрятать его и активировать ввод в него когда активируется ввод в кастомное поле. Причем @Space_Unicorn сделал одно стандартное поле ввода в своем коде и ждет когда будет нажата ctrl-v. Я же предлагал просто прятать под каждое поле ввода, стандартное, что может быть и хуже. Но с другой стороны, активировать ввод можно при активации кастомного поля, а не тогда когда будет нажата ctrl-v, что я и предполагал в своем первом ответе, может быть это будет в чем-то лучше, может быть и хуже, тут уже по месту надо смотреть, но этот вариант может вообще упростить работу с кастомными полями ввода. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now