Roblox Uno Script | AUTO WIN BOT

Created by brianops16

Features:

  • AUTO WIN BOT
--Game: https://www.roblox.com/games/1689414409/Roblox-Uno

--https://detourious.gitbook.io/project-finity/docs
if game:GetService("CoreGui"):FindFirstChild("FinityUI") then
game.CoreGui.FinityUI:Destroy()
end
local desc = [[
This auto will do everything for you, including making a lobby\nToDo: Make an option for AI matches
]]
local plr = game.Players.LocalPlayer
local Finity = loadstring(game:HttpGet("https://pastebin.com/raw/x5p1kPw1"))()
local FinityWindow = Finity.new(true)
FinityWindow.ChangeToggleKey(Enum.KeyCode.Semicolon)
local CreditsCategory = FinityWindow:Category("Credits/Info")
local CreditsCreator = CreditsCategory:Sector("Finity Library Creator:")
local ScriptCredit = CreditsCategory:Sector("Cheat Credit:")
local Description = CreditsCategory:Sector("Description:")
local OC = CreditsCategory:Sector("Open Close Button:")
CreditsCreator:Cheat("Label", "detourious @ v3rmillion.net")
ScriptCredit:Cheat("Label", "brianops16 @ v3rmillion.net")
Description:Cheat("Label", desc)
local Cheats = FinityWindow:Category("Cheats")
local S1 = Cheats:Sector("Main Cheats")
local EnumKeys = {'Semicolon','Tab','Equals','Comma','Minus','Period','F1',"F2","F3","F4",'F5',"F6","F7",
"F8","F9","F10","F11","F12",'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H',
'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M','Slash','One','Two','Three',"Four","Five","Six","Seven","Eight",
"Nine","Zero",'BackSlash','RightBracket','LeftBracket'}
OC:Cheat("Dropdown", "(Default ';')", function(Option) --Dropdowns
 print('Current key: '..Option)
FinityWindow.ChangeToggleKey(Enum.KeyCode[Option])
end, {
options = EnumKeys
})

local PlayedCard = false
local Cam = game.Workspace.CurrentCamera
local ui = plr.PlayerGui.MatchMaker.MainFrame
local MinAmt = 2

S1:Cheat("Textbox", "Min amt of players needed", function(Value) --Textbox
if not pcall(function()
local Val = tonumber(Value)
if Val > 4 or Val < 2 then
MinAmt = 2
else
MinAmt = Val
end
end) then
MinAmt = 2
end
end, {
placeholder = "2 (Max 4 | Min 2)"
})

S1:Cheat("Checkbox","Auto",
function(State)
if not State then
_G.on = 0
else
_G.on = 1
while _G.on == 1 do
local g,b = pcall(function()
if #Cam.PlrData:GetChildren() == 0 then
wait(1)
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, false)
wait(1)
game:GetService("ReplicatedStorage").MatchMaker:FireServer(true, "3", "Light Blue", nil, "None", "7", {[1] = "+4 Mania",[2] = "Reverse Reverse",[3] = "Stacking",[4] = "Draw To Match"})
wait(1)
repeat wait(2) until #game.ReplicatedStorage.Matches[plr.Name].Players:GetChildren() >= MinAmt
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, false, "Start")
wait(3)
end
local Message = PlayACard()
if PlayedCard then PlayedCard = false end
if Message then
print(Message)
end
wait(1)
repeat wait(.1) until ui.YourData.Nam.PlrImage.Timer.Text ~= "" or #Cam.PlrData:GetChildren() == 0


end)
if b then print(b) end
wait()
end
end
end
)



function PlayACard()
ui = plr.PlayerGui.MatchMaker.MainFrame
local g,b = pcall(function()
local Data = Cam.PlrData
local Deck = ui.YourDeck
local Playable = {}
for i,v in pairs(Deck:GetChildren()) do
if v.SelBut.Text ~= "Can't Play" then
table.insert(Playable,v)
end
end

if #Playable < 1 then
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, "PlayCard", {[1] = "Draw",[2] = ""})
wait(.5)
repeat wait() until ui.YourData.Nam.PlrImage.Timer.Text ~= ""
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, "PlayCard", {[1] = "Play"})
wait()
local Highest = FindHighest()
local ColorNumber = {["Red"] = 1,["Yellow"] = 2,["Green"] = 3,["Blue"] = 4,["Wild"] = math.random(1,4)}
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, "PlayCard", {[1] = "ColorPick",[2] = ColorNumber[Highest]})
return
end


local CloseToUno = false

for i,v in pairs(Data:GetChildren()) do
if v.Name ~= plr.Name and v.Name ~= "Deck" then
local Counter = 0
for a,b in pairs(v:GetChildren()) do
if b:IsA("Part") then
Counter = Counter + 1
end
end
if Counter <= 4 then
CloseToUno = true
break
end
end
end
--12 = +2
--11 = skip
--13 = reverse
if not CloseToUno then
     local NewPlayable = {}
for i,v in pairs(Playable) do
       local Num = v.Tag.Tag
       pcall(function()
         if Num.Value ~= "" and tonumber(Num.Value) and tonumber(Num.Value) >= 0 and tonumber(Num.Value) <= 13 then
           table.insert(NewPlayable,v)
         end
       end)
     end
     if #NewPlayable > 0 then
       Playable = NewPlayable
       local Highest = FindHighest()
local WillPlay = {[1] = {},[2] = {},[3] = {}} --Priority System
       for i,v in pairs(Playable) do
         local Color = v.Tag.Value
         local Num = v.Tag.Tag.Value
         local Similar = FindSimilar(Num,Color)
if Similar then
table.insert(WillPlay[3],v) --Has a similar card, will play last
elseif Num and tonumber(Num) < 10 then
table.insert(WillPlay[1],v) --Just a random 0-9 card, will play first
else
table.insert(WillPlay[2],v) --A special card, will play if there are no 0-9 cards
end
end
for i,v in pairs(WillPlay) do
if #v > 0 then
for a,b in pairs(v) do
if b.Tag.Value == Highest then
Play(b)
break
end
end
Play(v[1])
break
end
end
     else
       Play(Playable[1])
     end
else
local WillPlay = {[1] = {},[2] = {},[3] = {},[4] = {}}
for i,v in pairs(Playable) do
local Color = v.Tag.Value
local Num = v.Tag.Tag.Value
if v then
if Color == "+4" then
table.insert(WillPlay[1],v)
break
elseif Num and Num ~= "" and tonumber(Num) == 12 then
table.insert(WillPlay[2],v)
elseif Num and Num ~= "" and tonumber(Num) > 10 then
table.insert(WillPlay[3],v)
else
table.insert(WillPlay[4],v)
end
end
end
for i,v in pairs(WillPlay) do
if #v > 0 then
Play(v[1])
end
end
end
end)
if b then
return b
end
return nil
end

function Play(Card)
if PlayedCard then return end
wait(.5)
Uno = false
if ui.Uno.Position == UDim2.new(0,0,0,0) then
Uno = true
end
if not Card then
print("Card passed through function Play was nil for some reason??? Please fix :(")
local Data = Cam.PlrData
local Deck = ui.YourDeck
local Playable = {}
for i,v in pairs(Deck:GetChildren()) do
if v.SelBut.Text ~= "Can't Play" then
table.insert(Playable,v)
end
end
Card = Playable[1]
end
PlayedCard = true
local Num = Card.Tag.Tag.Value
local Color = Card.Tag.Value
local Highest = FindHighest()
local ColorNumber = {["Red"] = 1,["Yellow"] = 2,["Green"] = 3,["Blue"] = 4,["Wild"] = math.random(1,4)}
if Color == "+4" then
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, "PlayCard", {[1] = "+4",[2] = "",[3] = Uno})
wait()
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, "PlayCard", {[1] = "ColorPick",[2] = ColorNumber[Highest]})
elseif Color == "wild" then
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, "PlayCard", {[1] = "wild",[2] = "",[3] = Uno})
wait()
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, "PlayCard", {[1] = "ColorPick",[2] = ColorNumber[Highest]})
else
if type(Num) == "number" then
Num = tostring(Num)
end
game:GetService("ReplicatedStorage").MatchMaker:FireServer(false, "PlayCard", {[1] = Color,[2] = Num,[3] = Uno})
end
end

function FindSimilar(Num,Color)
for i,v in pairs(ui.YourDeck:GetChildren()) do
   if v.Tag.Value ~= Color and (v.Tag.Value == "Red" or v.Tag.Value == "Green" or v.Tag.Value == "Blue" or v.Tag.Value == "Yellow") and v.Tag.Tag.Value == Num then
     return v
   end
 end
return nil
end

function FindHighest()
 --This is done to find what the most amount of a color you would have
 --This is because we want to be playing with the most amount of cards when possible
 local R,G,B,Y = 0,0,0,0
 local Highest,High = 0,nil
 for i,v in pairs(ui.YourDeck:GetChildren()) do
   if v.Tag.Value == "Red" then
     R = R + 1
     if R > Highest then Highest = R High = "Red" end
   elseif v.Tag.Value == "Green" then
     G = G + 1
     if G > Highest then Highest = G High = "Green" end
   elseif v.Tag.Value == "Blue" then
     B = B + 1
     if B > Highest then Highest = B High = "Blue" end
   elseif v.Tag.Value == "Yellow" then
     Y = Y + 1
     if Y > Highest then Highest = Y High = "Yellow" end
   end
 end
 if (R+G+B+Y) == 0 then
   return "Wild"
 else
   return High
 end
end

ENJOY!

Warning: DO NOT DOWNLOAD anything from this page, you’re only here to copy the script!

Share This Post

Share on facebook
Share on linkedin
Share on twitter
Share on email

More Scripts!

TOP 10 TRENDING SCRIPTS