This is the client script, in a ModuleScript that is required from a localscript:
function inventoryModule:addItem(item, category)
local canContinue = remotes.InventoryAdd:InvokeServer(item)
print(canContinue)
if canContinue == true then
print("item added")
elseif canContinue == false then
print("item not found; exploiter or bad connection")
end
end
The issue right now is not with the client script. Right now, the server-side function is not running at all:
remotes.InventoryAdd.OnServerInvoke = function(p, item)
print(p.Name)
if item then
return true
else
return false
end
end
Nothing prints. I can change it to print anything, even random strings, and nothing. The server script is running, because if I do this:
local function addInventoryItem(p, item)
print(p.Name)
if item then
return true
else
return false
end
end
remotes.InventoryAdd.OnServerInvoke = addInventoryItem()
It works. A little bit. The arguments are not passed to the function, so I can an error for p.Name. If I delete the parentheses after remotes.InventoryAdd.OnServerInvoke = addInventoryItem(), which is what it's supposed to be, I get the same problem as before. In short, the server-side function is not running for some reason.

2 comments
Where is the remote function located?
replicatedstorage, but thats not important because 1) there are no errors in server script and 2) the server script does indeed run on OnServerInvoke if i incorrectly put the parentheses after addInventoryItem.