+[T]rakin Posted December 12, 2018 Share Posted December 12, 2018 Olá gostaria de sabe como faço para deixar um dxDrawRectangle ai quando ele tiver selecionado eu aperta em outro dxDrawRectangle e fazer uma função exemplo: Um som. Obs: Da parte de fazer uma função eu ja tenho função determinada. Link to comment
Other Languages Moderators Lord Henry Posted December 12, 2018 Other Languages Moderators Share Posted December 12, 2018 Use GUI em vez de DX e seja feliz. ----------------------- Tirando a zoeira, coloque os parâmetros do DX em variáveis e então você pode alterar essas propriedades da aparência do DX com uma função. E então você ativa essa função com onClientClick, verificando se a posição clicada está em cima do DX ou não. Exemplo maneiro: local sX, sY = guiGetScreenSize () -- Recebe a resolução do jogador. showCursor (true) -- Mostra o cursor. local parameters = { ["superior"] = {100, 100, 100, 150}, -- Cores RGBA. ["inferior"] = {0, 0, 0, 255}, ["esquerda"] = {100, 100, 100, 150}, ["direita"] = {0, 0, 0, 255}, ["texto"] = "OFF", } function renderDX () dxDrawRectangle (sX/2 - 50, sY/2 - 20, 100, 40, tocolor (0, 0, 0, 150), true) -- Botão de Áudio dxDrawLine (sX/2 - 50, sY/2 - 20, sX/2 + 50, sY/2 - 20, tocolor (unpack (parameters["superior"])), 2, true) -- Linha superior dxDrawLine (sX/2 - 50, sY/2 + 20, sX/2 + 50, sY/2 + 20, tocolor (unpack (parameters["inferior"])), 2, true) -- Linha inferior dxDrawLine (sX/2 - 50, sY/2 - 20, sX/2 - 50, sY/2 + 20, tocolor (unpack (parameters["esquerda"])), 2, true) -- Linha esquerda dxDrawLine (sX/2 + 50, sY/2 - 20, sX/2 + 50, sY/2 + 20, tocolor (unpack (parameters["direita"])), 2, true) -- Linha direita dxDrawText (parameters["texto"], sX/2 - 50, sY/2 - 20, sX/2 + 50, sY/2 + 20, tocolor (255, 255, 255, 255), 2.0, 2.0, "default", "center", "center", false, false, true) -- Texto botão de áudio dxDrawRectangle (sX/2 - 50, sY/2 + 30, 100, 40, tocolor (0, 0, 0, 150), true) -- Botão de Play (eu não quis colocar bordas nesse por preguiça) dxDrawText ("PLAY", sX/2 - 50, sY/2 + 30, sX/2 + 50, sY/2 + 70, tocolor (255, 255, 255, 255), 2.0, 2.0, "default", "center", "center", false, false, true) -- Texto botão de play. end addEventHandler ("onClientRender", getRootElement(), renderDX) function changeDX (button, state, absoluteX, absoluteY, worldX, worldY, worldZ, clickedWorld) if button ~= "left" then return end -- Se o botão do mouse clicado não for o esquerdo, então nada acontece. if state == "up" then -- Se o botão foi soltado, então: if (absoluteX >= sX/2 - 50) and (absoluteX <= sX/2 + 50) and (absoluteY >= sY/2 - 20) and (absoluteY <= sY/2 + 20) then -- Se a posição clicada está dentro do botão de áudio, então: if (parameters["texto"] == "OFF") then -- Se o texto do botão de áudio está como "OFF" então: parameters = { ["superior"] = {0, 0, 0, 255}, -- Altera os valores, pra mudar a aparência do botão. ["inferior"] = {100, 100, 100, 150}, ["esquerda"] = {0, 0, 0, 255}, ["direita"] = {100, 100, 100, 150}, ["texto"] = "ON", -- Muda o texto do botão de áudio pra "ON". } else -- Senão, se o botão de áudio está com outro texto que não seja "OFF", então: parameters = { ["superior"] = {100, 100, 100, 150}, -- Volta ao normal. ["inferior"] = {0, 0, 0, 255}, ["esquerda"] = {100, 100, 100, 150}, ["direita"] = {0, 0, 0, 255}, ["texto"] = "OFF", -- Muda o texto do botão de áudio pra "OFF". } end elseif (absoluteX >= sX/2 - 50) and (absoluteX <= sX/2 + 50) and (absoluteY >= sY/2 + 30) and (absoluteY <= sY/2 + 70) then -- Senão se a posição clicada está dentro do botão de play, então: if (parameters["texto"] == "ON") then -- Se o botão de áudio está habilitado, então: outputChatBox ("(Tocou a música.)") end -- Se o botão não está habilitado, então nada acontece. end end end addEventHandler ("onClientClick", getRootElement(), changeDX) -- Executa essa função quando o player clicar. 1 2 Link to comment
+[T]rakin Posted December 12, 2018 Author Share Posted December 12, 2018 Sinceramente acho que vou para o GUI ksksk o triste que é feio mas ne fazer o que. Sobre o seu exemplo vi com calma para ver se dava para entende e algumas partes conseguir entende outras não. Vou está explicando aqui de novo causo a primeira duvida fico meio dificil de entende, assim Vou está selecionando o dxDrawRectangle do Hamburguer ai para eu conseguir comer o Hamburguer eu teria que clicar em Comer/Beber em outro dxDrawRectangle. Link to comment
Other Languages Moderators Lord Henry Posted December 12, 2018 Other Languages Moderators Share Posted December 12, 2018 (edited) Bom, se você não tem conhecimento suficiente para mexer com DX, é melhor ir pro GUI que é mais simples. É como eu falei em outro tópico, o DX precisa ser todo feito na mão, enquanto que o GUI é só usar as funções prontas e mudar os parâmetros. O DX é mais complicado de entender. Quais partes ali do código de exemplo vc não entendeu? Quem sabe se eu explicar melhor, você consiga usar em DX. Edited December 12, 2018 by Lord Henry 1 Link to comment
+[T]rakin Posted December 12, 2018 Author Share Posted December 12, 2018 Realmente o Dx é um pouco chato mas assim o painel do inventario ta todo feito já o estaria faltando era Comer/Beber, mas vou fazer de clicar mesmo. Obrigado pela ajuda. Link to comment
#DaNiLiN Posted December 12, 2018 Share Posted December 12, 2018 Ou então tu pode utilizar assim também, veja! function Dx () local Item_Selecionado = getElementData ( localPlayer, "Item_Selecionado" ) or nil local Item = getElementData ( localPlayer, "Item" ) dxDrawRectangle(434, 263, 499, 290, CorItem, false) CorItem = tocolor(255, 255, 255, 255) if Item_Selecionado == "Item" then CorItem = tocolor(0, 255, 0, 90) end end function Click ( _,state ) if state == "down" then if isCursorOnElement ( 434, 263, 499, 290 ) then setElementData ( localPlayer, "Item_Selecionado", "Item" ) playSoundFrontEnd ( 45 ) end end end addEventHandler ( "onClientClick", root, Click ) local x,y = guiGetScreenSize() function isCursorOnElement(x,y,w,h) local mx,my = getCursorPosition () local fullx,fully = guiGetScreenSize() cursorx,cursory = mx*fullx,my*fully if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then return true else return false end end Não e nada profissional, Mas talvez possa te ajudar! Link to comment
DNL291 Posted December 14, 2018 Share Posted December 14, 2018 (edited) Seria melhor se você explicasse o que você quer fazer, então poderíamos te mostrar a melhor forma de fazer. Tem GUI como já foi falado e é mais fácil de fazer em comparação ao DX, mas se você optar mesmo pelo DX, então estude os códigos que foi mostrado aqui (além disso tem outros aqui pelo fórum) e boa sorte. Edited December 14, 2018 by DNL291 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