Cristtk Posted May 6, 2023 Share Posted May 6, 2023 screenW, screenH = guiGetScreenSize() x,y,w,h = 1514, 413, 100, 100 slots = { {1067, 381, 281, 281, imgx = 1101, imgy = 433}, {1067, 381, 281, 281, imgx = 1101, imgy = 513}, {1067, 381, 281, 281, imgx = 1218, imgy = 511}, {1067, 381, 281, 281, imgx = 1179, imgy = 511}, {1067, 381, 281, 281, imgx = 1140, imgy = 512}, {1067, 381, 281, 281, imgx = 1140, imgy = 433}, {1067, 381, 281, 281, imgx = 1179, imgy = 433}, {1067, 381, 281, 281, imgx = 1218, imgy = 433} } addEventHandler("onClientRender", root, function() dxDrawImage(1067, 381, 281, 281, "exemplo1.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x,y,w,h, "exemplo2.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end) showCursor(true) temp = {} movendo = false addEventHandler("onClientClick", root, function(b, s) if b == "left" then if s == "down" then if isMouseInPosition(x,y,w,h) then movendo = true addEventHandler("onClientRender", root, Mover) end else if movendo then movendo = false local inSlot = false if not inSlot then x,y = temp[1], temp[2] end for i,v in ipairs(slots) do if isMouseInPosition(v[1], v[2], v[3], v[4]) then inSlot = true x,y = v.imgx, v.imgy break end end temp = {} difx, dify = nil,nil removeEventHandler("onClientRender", root, Mover) end end end end) difx, dify = nil,nil function Mover() if #temp == 0 then temp[1], temp[2] = x, y end local mx, my = getCursorPosition() if not difx then difx, dify = (screenW * mx) - x, (screenH * my) - y end local cx, cy = (screenW * mx) - difx, (screenH * my) - dify x, y = cx, cy end function isMouseInPosition ( x, y, width, height ) if ( not isCursorShowing( ) ) then return false end local sx, sy = guiGetScreenSize ( ) local cx, cy = getCursorPosition ( ) local cx, cy = ( cx * sx ), ( cy * sy ) return ( ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) ) end Estou na duvida de como fazer com que a imagem exemplo2 fique sempre disponivel para ser movida para imagem exemplo1, ou seja, ao mover a imagem exemplo2 para a exemplo1, ela sera criada no primeiro slot imgx = 1101, imgy = 433. Assim sucessivamente, como se tivesse preenchendo a caixa. Link to comment
Shady1 Posted May 6, 2023 Share Posted May 6, 2023 2 hours ago, Cristtk said: screenW, screenH = guiGetScreenSize() x,y,w,h = 1514, 413, 100, 100 slots = { {1067, 381, 281, 281, imgx = 1101, imgy = 433}, {1067, 381, 281, 281, imgx = 1101, imgy = 513}, {1067, 381, 281, 281, imgx = 1218, imgy = 511}, {1067, 381, 281, 281, imgx = 1179, imgy = 511}, {1067, 381, 281, 281, imgx = 1140, imgy = 512}, {1067, 381, 281, 281, imgx = 1140, imgy = 433}, {1067, 381, 281, 281, imgx = 1179, imgy = 433}, {1067, 381, 281, 281, imgx = 1218, imgy = 433} } addEventHandler("onClientRender", root, function() dxDrawImage(1067, 381, 281, 281, "exemplo1.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x,y,w,h, "exemplo2.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end) showCursor(true) temp = {} movendo = false addEventHandler("onClientClick", root, function(b, s) if b == "left" then if s == "down" then if isMouseInPosition(x,y,w,h) then movendo = true addEventHandler("onClientRender", root, Mover) end else if movendo then movendo = false local inSlot = false if not inSlot then x,y = temp[1], temp[2] end for i,v in ipairs(slots) do if isMouseInPosition(v[1], v[2], v[3], v[4]) then inSlot = true x,y = v.imgx, v.imgy break end end temp = {} difx, dify = nil,nil removeEventHandler("onClientRender", root, Mover) end end end end) difx, dify = nil,nil function Mover() if #temp == 0 then temp[1], temp[2] = x, y end local mx, my = getCursorPosition() if not difx then difx, dify = (screenW * mx) - x, (screenH * my) - y end local cx, cy = (screenW * mx) - difx, (screenH * my) - dify x, y = cx, cy end function isMouseInPosition ( x, y, width, height ) if ( not isCursorShowing( ) ) then return false end local sx, sy = guiGetScreenSize ( ) local cx, cy = getCursorPosition ( ) local cx, cy = ( cx * sx ), ( cy * sy ) return ( ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) ) end Estou na duvida de como fazer com que a imagem exemplo2 fique sempre disponivel para ser movida para imagem exemplo1, ou seja, ao mover a imagem exemplo2 para a exemplo1, ela sera criada no primeiro slot imgx = 1101, imgy = 433. Assim sucessivamente, como se tivesse preenchendo a caixa. Para fazer com que a imagem exemplo2 possa ser movida para a imagem exemplo1, você precisa adicionar algumas linhas de código no evento "onClientClick" que verifica se a imagem exemplo2 está sobre a imagem exemplo1 e, em caso afirmativo, coloca a imagem exemplo2 no primeiro slot livre na imagem exemplo1. Aqui está um exemplo de como você pode fazer isso: addEventHandler("onClientClick", root, function(b, s) if b == "left" then if s == "down" then if isMouseInPosition(x,y,w,h) then movendo = true addEventHandler("onClientRender", root, Mover) end else if movendo then movendo = false local inSlot = false for i,v in ipairs(slots) do if isMouseInPosition(v[1], v[2], v[3], v[4]) then inSlot = true x,y = v.imgx, v.imgy break end end if isMouseInPosition(1067, 381, 281, 281) and not inSlot then -- procura o primeiro slot livre for i,v in ipairs(slots) do if not v.weapon then v.weapon = true x,y = v.imgx, v.imgy break end end end temp = {} difx, dify = nil,nil removeEventHandler("onClientRender", root, Mover) end end end end) 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