ServerScriptService → Script:
local Remote = Instance.new("RemoteFunction", game.ReplicatedStorage)
Remote.Name = "PlatformRemote"
function GetPlatform(Player)
local Data = Remote:InvokeClient(Player)
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
return {old[1], others}
end
game.Players.PlayerAdded:Connect(function(Player)
local Platform = GetPlatform(Player)
if #Platform[2] ~= 0 then
print(Player.Name.." is probably on: "..Platform[1].." or "..table.concat(Platform[2], " or "))
else
print(Player.Name.." is probably on: "..Platform[1])
end
--if table.find(Platform[2], "pc") or Platform[1] == "pc" then
-- Do stuff
--end
end)
StarterPlayerScripts → LocalScript
local Remote = game.ReplicatedStorage:WaitForChild("PlatformRemote")
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()
Remote.OnClientInvoke=function()
return {
KeyboardEnabled,
AccelerometerEnabled,
GyroscopeEnabled,
GamepadEnabled,
TouchEnabled,
IsTenFootInterface
}
end