Firespider Posted May 14 Share Posted May 14 (edited) Hello, I'm making an inventory and now I've found that the items can be moved, but it's not good, for example, that if I bring it to another item, they don't change places, the slot[5] table contains the items. Can someone help me fix the bugs? function ItemMove() for i, slot in ipairs(slots) do if isMouseInPosition(sx * slot[1], sy * slot[2], sx * slot[3], sy * slot[4]) then if slot[5] then if slot[5][1] == DragNDrop[1][1] then if slot[5][2] < items[slot[5][1]][3] then if slot[5][2] + DragNDrop[1][2] > items[slot[5][1]][3] then slot[5][2] = items[slot[5][1]][3] else slot[5][2] = slot[5][2] + DragNDrop[1][2] end else DragNDrop[1] = slot[5] slot[5] = DragNDrop[5] end else slots[DragNDrop[2]][5] = slot[5] slot[5] = DragNDrop[5] end else slot[5] = DragNDrop[1] print("XD") end end end end DragNDrop = {slot[5], i} Below, I only wrote what is in the DragNDrop table Edited May 14 by Firespider Link to comment
Tekken Posted May 16 Share Posted May 16 Hello, you will have to paste a good chunk of you code for better support. Greetings. Link to comment
Firespider Posted May 16 Author Share Posted May 16 ddEventHandler("onClientClick", root, function(Button, State) if IsInvShow then for i, slot in ipairs(slots) do if isMouseInPosition(sx * slot[1], sy * slot[2], sx * slot[3], sy * slot[4]) then if Button == "right" and State == "down" then if slot[5][1] then ClickOnItem(slot[5], i) break end else if not slot[5][1] then if Button == "left" and State == "down" then local x, y = getCursorPosition() WindowMove = {x - InvPos[1], y - InvPos[2]} else WindowMove = {false, false} end else if Button == "left" and State == "down" then DragNDrop = {slot[5], i} slot[5] = {false} else if DragNDrop[1] then ItemMove() end end end end end end end end) This is how I call the function --slot, ID, stack {1, 1, 1, ""} This is the content of the slot table Link to comment
P[ow]er Posted May 16 Share Posted May 16 function ItemMove() for i, slot in ipairs(slots) do if isMouseInPosition(sx * slot[1], sy * slot[2], sx * slot[3], sy * slot[4]) then slots[DragNDrop[2]][5], slot[5] = slot[5], slots[DragNDrop[2]][5] local itemId = slots[DragNDrop[2]][5][1] if itemId and slots[DragNDrop[2]][5][2] > items[itemId][3] then print("Stack overflow in slot", DragNDrop[2]) end DragNDrop = nil return end end slots[DragNDrop[2]][5] = DragNDrop[1] DragNDrop = nil end ddEventHandler("onClientClick", root, function(Button, State) if IsInvShow then for i, slot in ipairs(slots) do if isMouseInPosition(sx * slot[1], sy * slot[2], sx * slot[3], sy * slot[4]) then if Button == "right" and State == "down" and slot[5][1] then ClickOnItem(slot[5], i) return elseif Button == "left" then if not slot[5][1] then if State == "down" then WindowMove = {getCursorPosition() - InvPos[1], getCursorPosition() - InvPos[2]} else WindowMove = {false, false} end else if State == "down" then DragNDrop = {slot[5], i} slot[5] = {false} elseif DragNDrop then ItemMove() end end end return 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