You can pack the results of the function into a table, then return the contents of the table. Something like this:
local function Call(Func, ...)
local Return = table.pack(pcall(Func, ...))
local Success = Return[1]
if Success then
table.remove(Return, 1)
return table.unpack(Return)
end
warn(Return[2])
return nil
end