My device checker didnt work

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    make this device script checker work
  2. What is the issue? Include screenshots / videos if possible!
    it appear on pc eventho the users device are on mobile
  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    tried usingai and discord helper
    After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer

local function checkDevice()
	local inputTypeString
	if UserInputService.KeyboardEnabled and UserInputService.MouseEnabled then
		inputTypeString = "PCđŸ–„ïž"
		
	elseif UserInputService.TouchEnabled then
		inputTypeString = "PhoneđŸ“±"
		
	elseif UserInputService.GamepadEnabled then
		inputTypeString = "Console🎼"
		
	end
	txt = "Device: " .. inputTypeString
end

checkDevice()```
3 Likes

KeyboardEnabled has the potential to appear enabled to mobile/Xbox users because they can also have ‘keyboards’ (But not necessarily in the physical sense like in a PC) used for typing in chat and whatnot.

Also, there isn’t a built in way to find what device a user is on so you have to resort to lots of hacky if statements but hopefully this should help, its the best I could find.

(Edit: I also found this other one which also seems to work)

just pure curiosity, whats txt?
like i just replaced it with a print and it works

yes it works on studio but not ingame

Tested it with gui, and it works in game. Whats the issue in game?

i have no idea for some reason me and my players still stuck on Pc device

I have an old code that works fine, am planned to remake it one day since its ugly imo. But it works
Client Sided:

local replicatedStorage = game:GetService("ReplicatedStorage")
local guiService = game:GetService("GuiService")
local UIS = game:GetService("UserInputService")

local function getPlatform()
	if guiService:IsTenFootInterface() then
		return "Console"
	elseif UIS.TouchEnabled and not UIS.MouseEnabled then
		return "Mobile"
	else
		return "Desktop"
	end
end

local platform = getPlatform()
print(platform)
game.ReplicatedStorage.SetNametagIcon:FireServer(platform)

ServerSided:

local OverheadService = {
	Templates = script:FindFirstChild("RankUI"), 
	Configuration = require(script:FindFirstChild('Configuration')) 
}

function OverheadService:SetIconImage(ui, platform)
	local Icon = ui.PlatformFrame.Icon

	if platform == "Mobile" then
		Icon.Image = 'rbxassetid://14188613808' -- Phone UI
	elseif platform == "Console" then
		Icon.Image = 'rbxassetid://14188383923' -- Console UI
	elseif platform == "Desktop" then
		Icon.Image = 'rbxassetid://13539002441' -- PC UI
	end
end

game.ReplicatedStorage.SetNametagIcon.OnServerEvent:Connect(function(player, platform)
	local character = player.Character
	if character then
		OverheadService:SetIconImage(character:WaitForChild("RankUI"), platform)
	end
end)

It didn’t work because you are doing nothing with txt.

In one of Roblox Template, you have a system that can likely help you.

-- We assume that InputCategory is a table.
-- Return an InputCategory based on the UserInputType
function ActionManager._getCategoryOfInputType(inputType: Enum.UserInputType)
	if string.find(inputType.Name, "Gamepad") then
		return InputCategory.Gamepad -- xbox/ps4
	elseif inputType == Enum.UserInputType.Keyboard or string.find(inputType.Name, "Mouse") then
		return InputCategory.KeyboardAndMouse -- pc/or mobile with keyboard and a mouse
	elseif inputType == Enum.UserInputType.Touch then
		return InputCategory.Touch -- mobile
	else
		return InputCategory.Unknown -- not defined
	end
end

The script is in Platformer template in ReplicatedStorage.Utility.ActionManager.

txt are just a replcaement for textlbl

You didn’t define txt and to actually set the text you need to use txt.Text.

the actual ingame experience not in studio