長瀞早瀬 Posted August 2, 2018 Share Posted August 2, 2018 Вечер добрый, столкнулся с тем, что иногда после нажатия кнопки закрытия не исчезает GUI. Мышка скрывается а интерфейс остается. Юзаю вот такой костыль: function atmGUI() atmGUIMain = guiCreateStaticImage(0, 0, screenx, screeny, "atm.png", false) exitGUIbtn = guiCreateStaticImage(screenx/1.1955, screeny/1.367, screenx/20.5, screeny/17, "button.png", false, atmGUIMain) showCursor(true) end addEvent("drawATMgui", true) addEventHandler("drawATMgui", localPlayer,atmGUI) addEventHandler("onClientGUIClick", getRootElement(), function() if(source == exitGUIbtn) then guiSetVisible(atmGUIMain, false) destroyElement(atmGUIMain) showCursor(false) end end ) В основном всё работает как надо, но иногда бывают траблы с закрытием. Подскажите пожалуйста как исправить этот косяк. Link to comment
長瀞早瀬 Posted August 2, 2018 Author Share Posted August 2, 2018 Пока что решил таким костылем: function checkGUIcall() local var = getElementData(getLocalPlayer(), "PRP_atmuse") if(var == "available") then atmGUI() end end bindKey ( "E", "down", checkGUIcall ) Вопрос только насколько сильно ElementData будет грузить сервер? Link to comment
TEDERIs Posted August 3, 2018 Share Posted August 3, 2018 Если ElementData только локально на клиенте, то это не окажет никакого влияния на сервер. Если ElementData используется для синхронизации между клиентом и сервером, то здесь есть два фактора, влияющих на производительность: Частота изменения ElementData. Чем чаще вызывается setElementData, тем хуже. Длина имени ElementData и объем синхронизируемых данных. Чем длина имени больше и чем объем данных больше, тем хуже. Link to comment
[T]|O|[P]George Posted August 4, 2018 Share Posted August 4, 2018 atmGUIMain = guiCreateStaticImage(0, 0, screenx, screeny, "atm.png", false) guiSetVisible(atmGUIMain, false) exitGUIbtn = guiCreateStaticImage(screenx/1.1955, screeny/1.367, screenx/20.5, screeny/17, "button.png", false, atmGUIMain) function open() if(guiGetVisible(atmGUIMain) == false) then guiSetVisible(atmGUIMain, true) showCursor(true) else guiSetVisible(atmGUIMain, false) showCursor(false) end end bindKey("your key","down",open) addEventHandler("onClientGUIClick", getRootElement(), function() if(source == exitGUIbtn) then guiSetVisible(atmGUIMain, false) showCursor(false) end end ) 1 Link to comment
kashtesov Posted August 13, 2018 Share Posted August 13, 2018 А ещё лучше не говнокодить с "if" и "elseif" там где этого не надо, и не вешать событие на root. local atmGUIMain = guiCreateStaticImage(0, 0, screenx, screeny, "atm.png", false); local exitGUIbtn = guiCreateStaticImage(screenx/1.1955, screeny/1.367, screenx/20.5, screeny/17, "button.png", false, atmGUIMain); guiSetVisible(atmGUIMain, false); bindKey("your key", "down", function() local newVisibleState = not guiGetVisible(atmGUIMain); guiSetVisible(atmGUIMain, newVisibleState); showCursor(newVisibleState); end); addEventHandler("onClientGUIClick", exitGUIbtn, false, function() guiSetVisible(source, false); showCursor(false); end); Link to comment
JeViCo Posted August 14, 2018 Share Posted August 14, 2018 Автор был близок к истине с оптимизированным кодом. Убрал ненужную функцию и добавил проверку на мышь, дабы не было потом дополнительных проблем. Моя версия: function atmGUI() atmGUIMain = guiCreateStaticImage(0, 0, screenx, screeny, "atm.png", false) exitGUIbtn = guiCreateStaticImage(screenx/1.1955, screeny/1.367, screenx/20.5, screeny/17, "button.png", false, atmGUIMain) showCursor(true) end addEvent("drawATMgui", true) addEventHandler("drawATMgui", localPlayer,atmGUI) addEventHandler("onClientGUIClick", getRootElement(), function(bt, st) if bt == "left" and st == "up" then -- проверка на кнопку if source == exitGUIbtn then destroyElement(atmGUIMain) showCursor(false) end end ) 1 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