Good news! I figured out a way to correctly disable both functions so the items both drop! Sort of…
Before I tell you what I did to (sort of) resolve the problem, I just have to let you know something.
The first thing I tried doing was try to make some print statements in a few places. the 1st place I put them was line 49 of the local script. And I just found out that the 2nd time you grab an item (Not only grabbing a left, then right item, also grabbing a left, dropping then getting another left) it will run run service twice)

This is the most likely reason why the item is not dropping in the right hand every time.
Now for what I personally did to sort of fix the problem. (Only local script)
I added two new variables at the start of the local script
local Lhold = false
and
local Rhold = false
With these, I can check if the player wants to pickup or drop an item. I just add an “if Lhold (or Rhold) then” at the start of each RS. at the end of the RS code, and added an else, which just means if Lhold/Rhold (player isn’t holding anything) it runs this code
else
item:Destroy() – So it get’s droped
print(“destroyedL”) – to check if it ran (and also to talk about something later)
Quick note: I don’t know if I mentioned this last time I posted, but the leftHandRS and rightHandRS were not defined in the code at all. I think just in case you should add this at the start of the code.
local leftHandRS
local rightHandRS
Just so you don’t get an error later.
After that, after line 100 and 102, add this
Lhold = false (or Rhold)
I think this should make it work now.
The only thing I think you should be aware of is the 2nd grabbed item still running Runservice
(It will keep running)
Other than adding another an interactable tag to all other items (only pumpkin and fries have them), and on the local script change the Enum.RaycastFilterType on line 21 from Blacklist to Exclude (I think blacklist is depricated, that should hopefully be it!
Have a happy new year!!!