despairitemcolor.Value = despairitemcolords:GetAsync(player.UserId) or Color3.fromRGB(255, 255, 255)
The full error says
20:07:02.858 - ServerScriptService.SetupInventory:37: bad argument #3 to 'Value' (Color3 expected, got string)
The value type is Color3Value, and I dont really understand why Color3.fromRGB (255, 255, 255)
would be read as a string.
EDIT
A very similar line works perfectly though:? despair.Value = despairds:GetAsync(player.UserId) or false
It is most likely because when :GetAsync() was called, it returned a string. When or is used after a statement that returns something (like GetAsync), the or and anything after that will only be called if the initial statement is nil. So, when despairitemcolords:GetAsync(player.UserId) is called, if that value is not nil, the Color3 will not come out. To fix this, simply remove the GetAsync
despairitemcolor.Value = Color3.fromRGB(255, 255, 255)
If I helped, accept my answer please!