Is it possible to detect if a player is running the UWP version of roblox aka the microsoft store version. This will be useful and prevent most exploits currently available since byfron slightly secures the web version.
There’s no way to accurately detect it. There are various ways to make a guess, and I believe the only reliable way was patched.
One way I’ve heard is to use UserInputService:GetLastInputType()
, which returns an enum value indicating the type of input that was last used by the player. For example, if the player is using a keyboard or mouse, the method will return Enum.UserInputType.Keyboard
or Enum.UserInputType.MouseButton1
. However, if the player is using the UWP version of Roblox, the method will return Enum.UserInputType.Gamepad1
, regardless of the actual input device used. This is because the UWP version of Roblox emulates a gamepad input for compatibility reasons. This may have been patched - you’ll have to test it.
Let me know if it works. There’s also another devforum post on the same subject, but no one ever gave an answer.
yes you can detect UWP by calling deprecated “version” function that returns their current roblox client version
print(version())
keep in mind this will work only inside localscript and exploiters could spoof version function!
for example if the client version doesnt match byfron client feel free to kick them from the game but that will lock your game and only allow people on PC to play it so you gotta whitelist other client versions like macos version and xbox version (pretty sure xbox is also UWP so by kicking out UWP you kick out mobile phones that have android and IOS and you also kick out xbox players)
Taken from my post from this thread: https://devforum.roblox.com/t/byfron-required-place/2544853/29
This isn’t the ideal solution because many injectors automatically modify the version name to match the 64-bit Byfron-enabled client. It’s probably better than nothing but won’t stop the majority of people, especially if they’re determined enough.
Preciate it and sorry for the late reply ill be sure to check ur method out!
I can’t risk kicking mobiles out so thats not a method for me to consider. Thank you tho!
Ill have a look at this it looks very useful
add check for TouchEnabled and version
TouchEnabled is located in UserInputService
game:GetService(“UserInputService”).TouchEnabled --usually true if the screen is touchable
localscript in ReplicatedFirst (so it executes faster than most auto-execute in UWP exploits)
reminder: exploiters might downgrade to old version in order to bypass this or just force __newindex on LocalPlayer and change it to Instance.new(“Player”) lol
local UWPVersions={
"2.590.678",
"2.592.586",
}
if table.find(UWPVersions,version()) and game:GetService(“UserInputService”).TouchEnabled == false then
game:GetService("Players").LocalPlayer:Kick("UWP detected")
end
local UWPVersions = {
"2.590.678",
"2.592.586",
}
game.Players.PlayerAdded:Connect(function(player)
local success, version = pcall(function()
return player:GetJoinData().ClientVersionString
end)
if success and table.find(UWPVersions, version) then
player:Kick("UWP detected")
end
end)
how about we try to make module that will update uwpversions?
local UWPVersions = {
"2.590.678",
"2.592.586",
}
return UWPVersions
-- MainScript.lua
local UWPVersions = require(script:WaitForChild("UWPVersions"))
game.Players.PlayerAdded:Connect(function(player)
local success, version = pcall(function()
return player:GetJoinData().ClientVersionString
end)
if success and table.find(UWPVersions, version) then
player:Kick("UWP detected")
end
end)
the UWPVersions
table is stored in a separate module script called UWPVersions.lua
, simply edit the UWPVersions.lua
module script and add or remove versions as needed (ikr its stupid idea but if someone can come with brilliant idea then )
i would use your version
but i would add one more thing
getting roblox client version directly from Google Play Store (or apple store) because those versions are equal to the one from UWP microsoft store with HTTPEnabled
automaticially add the version to blacklist
win!
HOW IT WILL FIX UWP thing?
IF IT CHECKS YOUR BITS ON COMPUTER
WHAT IF 64-BIT PLAYER PLAYING THE UWP VERSION
local HttpService = game:GetService("HttpService")
local UWPVersions = require(script:WaitForChild("UWPVersions"))
-- Get the latest version of the Roblox client from the Google Play Store
local success, response = pcall(function()
return HttpService:GetAsync("https://play.google.com/store/apps/details?id=com.roblox.client&hl=en_US&gl=US")
end)
if success then
local version = string.match(response, "Current Version.+>([%d%.]+)<")
if version and not table.find(UWPVersions, version) then
table.insert(UWPVersions, version)
end
end
game.Players.PlayerAdded:Connect(function(player)
local success, version = pcall(function()
return player:GetJoinData().ClientVersionString
end)
if success and table.find(UWPVersions, version) then
player:Kick("UWP detected")
end
end)
player:GetJoinData().ClientVersionString
I believe this doesnt work i tried and all i got is LaunchData in that table (tested in roblox player)
game:GetService("Players").PlayerAdded:Connect(function(plr)
print("printing data")
table.foreach(plr:GetJoinData(),print)
print(plr:GetJoinData().LaunchData,"launch data")
print("printed successfully")
end)
idk if i remade it but here you go
local UWPVersions = {
"2.590.678",
"2.592.586",
}
game.Players.PlayerAdded:Connect(function(player)
local success, version = pcall(function()
return player:GetJoinData().ClientVersionString
end)
if success and table.find(UWPVersions, version) then
player:Kick("UWP detected")
end
end)
what its the same thing
GetJoinData doesnt have client version inside of it!
you must call Version() on localscript instead
local version = Version()
print(“Client version:”, version)
?
local HttpService = game:GetService("HttpService")
local UWPVersions = require(script:WaitForChild("UWPVersions"))
-- Get the latest version of the Roblox client from the Google Play Store
local success, response = pcall(function()
return HttpService:GetAsync("https://play.google.com/store/apps/details?id=com.roblox.client&hl=en_US&gl=US")
end)
if success then
local version = string.match(response, "Current Version.+>([%d%.]+)<")
if version and not table.find(UWPVersions, version) then
table.insert(UWPVersions, version)
end
end
game.Players.PlayerAdded:Connect(function(player)
local success, version = pcall(function()
return player:GetJoinData().ClientVersionString
end)
if success and table.find(UWPVersions, version) then
player:Kick("UWP detected")
end
end)
yes and it must be localscript not serverscript