Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
StarterGui = :()
VirtualInputManager = :()
TextChatService = :()
ReplicatedStorage = :()
LocalPlayer = Players.LocalPlayer
playerGui = LocalPlayer:()
playerGui:()
playerGui.TotalPCMode_Ultimate:()
(()
touchGui = playerGui:()
touchGui touchGui.Enabled =
)
playerGui.ChildAdded:((child)
child.Name == child.Enabled =
)
()
char = LocalPlayer.Character LocalPlayer.CharacterAdded:()
char:(, )
ScreenGui = .()
ScreenGui.Name =
ScreenGui.ResetOnSpawn =
ScreenGui.DisplayOrder =
ScreenGui.Parent = playerGui
mainControlsFrame = .()
mainControlsFrame.Name =
mainControlsFrame.Size = .(, , , )
mainControlsFrame.BackgroundTransparency =
mainControlsFrame.Parent = ScreenGui
(name, text, size, pos, parent, color)
btn = .()
btn.Name = name
btn.Text = text
btn.Size = size
btn.Position = pos
btn.BackgroundColor3 = color .(, , )
btn.BackgroundTransparency =
btn.TextColor3 = .(, , )
btn.TextSize =
btn.Font = .Font.SourceSansBold
btn.BorderSizePixel =
btn.AutoButtonColor =
corner = .()
corner.CornerRadius = .(, )
corner.Parent = btn
stroke = .()
stroke.Thickness =
stroke.Color = .(, , )
stroke.Parent = btn
btn.Parent = parent mainControlsFrame
btn
(keyCode)
VirtualInputManager
VirtualInputManager:(, keyCode, , )
.(, ()
VirtualInputManager:(, keyCode, , )
)
camZone = .()
camZone.Name =
camZone.Text =
camZone.Size = .(, , , )
camZone.Position = .(, , , )
camZone.BackgroundTransparency =
camZone.Parent = mainControlsFrame
draggingCam =
lastPos = .(, )
sensitivity =
camZone.InputBegan:((input)
input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseButton1
draggingCam =
lastPos = .(input.Position.X, input.Position.Y)
)
camZone.InputChanged:((input)
draggingCam (input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseMovement)
currentPos = .(input.Position.X, input.Position.Y)
delta = currentPos - lastPos
lastPos = currentPos
cam = .CurrentCamera
cam
xAngle = -delta.X * sensitivity
yAngle = -delta.Y * sensitivity
currentCFrame = cam.CFrame
newCFrame = .(, xAngle, ) * currentCFrame * .(yAngle, , )
cam.CFrame = .(currentCFrame.Position, currentCFrame.Position + newCFrame.LookVector)
)
camZone.InputEnded:((input)
input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseButton1
draggingCam =
)
keysPressed = { W = , A = , S = , D = }
keyMap = { W = .KeyCode.W, A = .KeyCode.A, S = .KeyCode.S, D = .KeyCode.D }
dpadFrame = .()
dpadFrame.Size = .(, , , )
dpadFrame.Position = .(, , , )
dpadFrame.BackgroundTransparency =
dpadFrame.Parent = mainControlsFrame
btnW = (, , .(, , , ), .(, , , ), dpadFrame)
btnA = (, , .(, , , ), .(, , , ), dpadFrame)
btnS = (, , .(, , , ), .(, , , ), dpadFrame)
btnD = (, , .(, , , ), .(, , , ), dpadFrame)
(btn, keyName)
keyCode = keyMap[keyName]
btn.InputBegan:((input)
input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseButton1
keysPressed[keyName] =
btn.BackgroundTransparency =
VirtualInputManager keyCode VirtualInputManager:(, keyCode, , )
)
btn.InputEnded:((input)
input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseButton1
keysPressed[keyName] =
btn.BackgroundTransparency =
VirtualInputManager keyCode VirtualInputManager:(, keyCode, , )
)
(btnW, )
(btnA, )
(btnS, )
(btnD, )
RunService.RenderStepped:(()
hum = ()
hum hum.Parent hum.Parent:()
moveVector = .(, , )
keysPressed.W moveVector = moveVector + .(, , -)
keysPressed.S moveVector = moveVector + .(, , )
keysPressed.A moveVector = moveVector + .(-, , )
keysPressed.D moveVector = moveVector + .(, , )
camera = .CurrentCamera
camera moveVector.Magnitude >
moveVector = moveVector.Unit
camCFrame = camera.CFrame
forward = .(camCFrame.LookVector.X, , camCFrame.LookVector.Z).Unit
right = .(camCFrame.RightVector.X, , camCFrame.RightVector.Z).Unit
worldDirection = (forward * -moveVector.Z) + (right * moveVector.X)
hum:(worldDirection, )
hum:(.(, , ), )
)
chatKeyboardFrame = .()
chatKeyboardFrame.Name =
chatKeyboardFrame.Size = .(, , , )
chatKeyboardFrame.Position = .(, , , )
chatKeyboardFrame.BackgroundColor3 = .(, , )
chatKeyboardFrame.BackgroundTransparency =
chatKeyboardFrame.Visible =
chatKeyboardFrame.Parent = ScreenGui
kbCorner = .()
kbCorner.CornerRadius = .(, )
kbCorner.Parent = chatKeyboardFrame
inputDisplay = .()
inputDisplay.Size = .(, , , )
inputDisplay.Position = .(, , , )
inputDisplay.BackgroundColor3 = .(, , )
inputDisplay.TextColor3 = .(, , )
inputDisplay.TextSize =
inputDisplay.Font = .Font.SourceSans
inputDisplay.Text =
inputDisplay.TextXAlignment = .TextXAlignment.Left
inputDisplay.Parent = chatKeyboardFrame
closeKbBtn = (, , .(, , , ), .(, , , ), chatKeyboardFrame, .(, , ))
keysLayout = {
{,,,,,,,,,},
{,,,,,,,,},
{,,,,,,,}
}
currentMessage =
()
inputDisplay.Text = .. currentMessage ..
(msg)
msg == .(msg, , ) ==
(()
TextChatService.ChatVersion == .ChatVersion.TextChatService
generalChannel = TextChatService.TextChannels:()
generalChannel generalChannel:(msg)
ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:(msg, )
)
keyContainer = .()
keyContainer.Size = .(, , , )
keyContainer.Position = .(, , , )
keyContainer.BackgroundTransparency =
keyContainer.Parent = chatKeyboardFrame
rIndex, row (keysLayout)
rowFrame = .()
rowFrame.Size = .(, , , )
rowFrame.Position = .(, , (rIndex - ) * , )
rowFrame.BackgroundTransparency =
rowFrame.Parent = keyContainer
keyWidth = / #row
kIndex, char (row)
btn = (..char, char, .(keyWidth - , , , ), .((kIndex - ) * keyWidth, , , ), rowFrame, .(, , ))
btn.MouseButton1Click:(()
char ==
currentMessage = .(currentMessage, , #currentMessage - )
currentMessage = currentMessage .. .(char)
()
)
spaceBtn = (, , .(, , , ), .(, , , ), keyContainer, .(, , ))
spaceBtn.MouseButton1Click:(()
currentMessage = currentMessage ..
()
)
sendBtn = (, , .(, , , ), .(, , , ), keyContainer, .(, , ))
sendBtn.MouseButton1Click:(()
(currentMessage)
currentMessage =
()
chatKeyboardFrame.Visible =
)
closeKbBtn.MouseButton1Click:(()
chatKeyboardFrame.Visible =
)
topBarFrame = .()
topBarFrame.Size = .(, , , )
topBarFrame.Position = .(, , , )
topBarFrame.BackgroundTransparency =
topBarFrame.Parent = mainControlsFrame
keyCodesNum = {
.KeyCode.One, .KeyCode.Two, .KeyCode.Three,
.KeyCode.Four, .KeyCode.Five, .KeyCode.Six,
.KeyCode.Seven, .KeyCode.Eight, .KeyCode.Nine
}
i = ,
btnNum = (..i, (i), .(, , , ), .(, (i - ) * , , ), topBarFrame)
btnNum.MouseButton1Click:(()
(keyCodesNum[i])
char = LocalPlayer.Character
hum = ()
char hum
tools = {}
_, item (LocalPlayer.Backpack:()) item:() .(tools, item)
_, item (char:()) item:() .(tools, item)
targetTool = tools[i]
targetTool
currentTool = char:()
currentTool == targetTool
hum:()
hum:(targetTool)
)
btnChat = (, , .(, , , ), .(, , , ), topBarFrame, .(, , ))
btnChat.MouseButton1Click:(()
chatKeyboardFrame.Visible = chatKeyboardFrame.Visible
chatKeyboardFrame.Visible
currentMessage =
()
)
btnEsc = (, , .(, , , ), .(, , , ), topBarFrame, .(, , ))
btnEsc.MouseButton1Click:(()
(.KeyCode.Escape)
)
btnInv = (, , .(, , , ), .(, , , ), topBarFrame, .(, , ))
btnInv.MouseButton1Click:(()
(.KeyCode.Backquote)
(()
backpackEnabled = StarterGui:(.CoreGuiType.Backpack)
StarterGui:(.CoreGuiType.Backpack, backpackEnabled)
)
)
actionFrame = .()
actionFrame.Name =
actionFrame.Size = .(, , , )
actionFrame.Position = .(, , , )
actionFrame.BackgroundTransparency =
actionFrame.Parent = mainControlsFrame
btnLClick = (, , .(, , , ), .(, , , ), actionFrame, .(, , ))
btnLClick.MouseButton1Click:(()
VirtualInputManager
VirtualInputManager:(, , , , , )
.(, () VirtualInputManager:(, , , , , ) )
char = LocalPlayer.Character
char
tool = char:()
tool tool:()
)
btnRClick = (, , .(, , , ), .(, , , ), actionFrame, .(, , ))
btnRClick.MouseButton1Click:(()
VirtualInputManager
VirtualInputManager:(, , , , , )
.(, () VirtualInputManager:(, , , , , ) )
)
btnE = (, , .(, , , ), .(, , , ), actionFrame, .(, , ))
btnE.MouseButton1Click:(()
(.KeyCode.E)
)
btnR = (, , .(, , , ), .(, , , ), actionFrame, .(, , ))
btnR.MouseButton1Click:(()
(.KeyCode.R)
)
btnQ = (, , .(, , , ), .(, , , ), actionFrame, .(, , ))
btnQ.MouseButton1Click:(()
(.KeyCode.Q)
)
btnTab = (, , .(, , , ), .(, , , ), actionFrame, .(, , ))
btnTab.MouseButton1Click:(()
(.KeyCode.Tab)
)
btnSpace = (, , .(, , , ), .(, , , ), actionFrame, .(, , ))
btnSpace.MouseButton1Click:(()
(.KeyCode.Space)
hum = ()
hum hum.Jump =
)
isRunning =
btnShift = (, , .(, , , ), .(, , , ), actionFrame, .(, , ))
btnShift.MouseButton1Click:(()
isRunning = isRunning
btnShift.BackgroundTransparency = isRunning
hum = ()
hum hum.WalkSpeed = isRunning
)
btnCtrl = (, , .(, , , ), .(, , , ), actionFrame, .(, , ))
btnCtrl.MouseButton1Click:(()
(.KeyCode.LeftControl)
)🖥️ Turn Your Phone Into a PC in Roblox! 📱🔥 This script simulates a PC environment on your phone, allowing some Roblox games to detect you as a player with an active PC. 🎮⚡ ✅ PC environment simulation. ✅ May be detected as a PC player in compatible games. ✅ Designed to enhance your mobile gaming experience. 🚀 Take your Roblox experience to the next level! ⚠️ Detection depends on the game and how the script works. It does not guarantee that every game will recognize your phone as a real PC.
Never paste your .ROBLOSECURITY cookie anywhere, and use an alt account with scripts.

Universal