local KeyboardEnabled = game:GetService("UserInputService").KeyboardEnabled
local AccelerometerEnabled = game:GetService("UserInputService").AccelerometerEnabled
local GyroscopeEnabled = game:GetService("UserInputService").GyroscopeEnabled
local GamepadEnabled = game:GetService("UserInputService").GamepadEnabled
local TouchEnabled = game:GetService("UserInputService").TouchEnabled
local IsTenFootInterface = game:GetService("GuiService"):IsTenFootInterface()
local Data = {
KeyboardEnabled,
AccelerometerEnabled,
GyroscopeEnabled,
GamepadEnabled,
TouchEnabled,
IsTenFootInterface
}
if Data == nil then return {"error",{"error"}} end
if #Data ~= 6 then return {"error",{"error"}} end
local Points={pc=0, mobile=0, tablet=0, console=0}
if Data[1] then -- Keyboard
Points.pc += 1
end
if Data[2] then -- Accelerometer
Points.mobile += 1
Points.tablet += 1
end
if Data[3] then -- Gyroscope
Points.console += 1
end
if Data[4] then -- Gamepad
Points.mobile += 1
Points.tablet += 1
end
if Data[5] then -- Touch
Points.console += 1
end
if Data[6] then -- IsTenFootInterface
Points.console = math.huge
end
local old = {"error", 0}
local others = {}
for i,v in pairs(Points) do
if v > old[2] then
old = {i, v}
end
end
for i,v in pairs(Points) do
if v == old[2] and i ~= old[1] then
table.insert(others, i)
end
end
local Platform = {old[1], others}
if #Platform[2] ~= 0 then
print("You are probably on: "..Platform[1].." or "..table.concat(Platform[2], " or "))
else
print("You are probably on: "..Platform[1])
end
if table.find(Platform[2], "pc") or Platform[1] == "pc" then
-- Give PC UI
elseif table.find(Platform[2], "mobile") or Platform[1] == "mobile" then
-- Give Mobile UI
end
I have modified it to be on the client only, put it in StarterPlayer → StarterPlayerScripts ; (As a localscript)
by tweaking I meant changing how many points a single determinant gives to be more accurate
It also seems like it detects mobile as console so maybe add points based on the size of the screen to differentiate between the two