Guess the Drawing Roblox Script
Created by ceg#6014
Features:
- AUTO GUESS
- OPEN SOURCE
- PRESS F9 FOR INFO
-- script archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archivedscript archived -- ceg#6014 shared.autoGuess = true shared.guessTimeout = 1 shared.hintRevealPercent = 0.25 shared.experimental = false shared.emergencyTime = "0:20" shared.drawItCheatExecuted = shared.drawItCheatExecuted or false if shared.drawItCheatExecuted then print("Already executed, applying options") return end shared.drawItCheatExecuted = true local HttpService = game:GetService("HttpService") local Words = game:HttpGet("https://pastebin.com/raw/33JcCqc2") local AlreadyUsed = {} local Guessed = false local Force = false local function Trim(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end Words = Words:lower():split("n") local Success, Return = pcall(readfile, "GuessItunknown.txt") if Success then for _, UnknownWord in ipairs(Return:split("n")) do warn(("Unknown word %s allocated"):format(UnknownWord)) table.insert(Words, UnknownWord) end end -- load unknown words local ActivityBar = game:GetService("Players").LocalPlayer.PlayerGui.App.Game.ActivityBar local Label = ActivityBar.Label local Timer = ActivityBar.Timer local function GetWord() local text = Label.Text local result = (text:sub(15, #text):gsub("([%a_%- ]) ([%a_%- ]) ", "%1%2")) result = result:gsub("%s%s%s?", " ") result = result:gsub(" (.+) ", "%1") result = Trim(result) return result end local function levenshtein(a,b)local c=string.len(a)local d=string.len(b)local e={}local f=0;if c==0 then return d elseif d==0 then return c elseif a==b then return 0 end;for g=0,c,1 do e[g]={}e[g][0]=g end;for h=0,d,1 do e[0][h]=h end;for g=1,c,1 do for h=1,d,1 do if a:byte(g)==b:byte(h)then f=0 else f=1 end;e[g][h]=math.min(e[g-1][h]+1,e[g][h-1]+1,e[g-1][h-1]+f)end end;return e[c][d]end local function Similar(One, Two) local Hits = 0 for Index = 1, #One do local OneChar = One:sub(Index, Index) local TwoChar = Two:sub(Index, Index) if OneChar == TwoChar then Hits = Hits + 1 end end return Hits end local ApiUrl = "https://api.dictionaryapi.dev/api/v2/entries/en/%s" local function isNoun(word) local RequestFormat = ApiUrl:format(word) local Request, Ret = pcall(game.HttpGet, game, RequestFormat) if not Request then return true end Request = Ret local Body = HttpService:JSONDecode(Request)[1] local foundNoun = false if Body.title and Body.title == "No Definitions Found" then return true end for _, meaning in ipairs(Body.meanings) do if meaning.partOfSpeech == "noun" then foundNoun = true break end end return foundNoun end local function Chat(Sentence) game:GetService("ReplicatedStorage").Knit.Services.ChatService.RE.SendMessage:FireServer(Sentence) end local function Guess(Expect) Expect = Expect:lower() local Results = {} local Threshold = #Expect:gsub("[^_]", "") + 1 for _, Word in ipairs(Words) do local Levenshteined = levenshtein(Word, Expect) if #Expect + 1 ~= #Word then continue end if Levenshteined == Threshold then local Simple = Similar(Expect, Word) local Check = #(Expect:gsub("[^_]", "")) if Levenshteined - Check <= Simple then local ContainsSpace = Label.Text:find(" ") if Word:find(" ") and not ContainsSpace then continue end table.insert(Results, Word) end -- warn(Expect, Word, "simp", Simple, "leven", Levenshteined, "check", Check) end end local HintRevealPercent = #Expect:gsub("_", "") / #Expect if (#Results == 0 and HintRevealPercent >= shared.hintRevealPercent) or Force then -- backup Force = false warn(("Unable to find word '%s' using local database, using online"):format(Expect)) local MuseRequest = game:HttpGet(("https://api.datamuse.com/sug?s=%s&max=25"):format((Expect:gsub("_", "?")))) local MuseBody = HttpService:JSONDecode(MuseRequest) for _, Info in ipairs(MuseBody) do if Guessed then break end print(isNoun(Info.word), Info.word) if isNoun(Info.word) then warn(("Using word '%s' (score: %s)"):format(Info.word, Info.score)) Chat(Info.word) task.wait(1) end end end return Results end local function Exists(Table, Find) for _, Value in pairs(Table) do Value = Value:gsub("r", "") if Value == Find then return true end end return false end local function SaveUnknown() local Unknown = Label.Text:match(""(.+)"") Unknown = Unknown:lower() local Success, Return = pcall(readfile, "GuessItconfirmed.txt") if Success then Return = Return:split("n") if not Exists(Return, Unknown) then appendfile("GuessItconfirmed.txt", "n" .. Unknown) end else writefile("GuessItconfirmed.txt", Unknown) end if Exists(Words, Unknown) then warn(("The word %s already exists in dictionary, skipping"):format(Unknown)) return end warn(("Got unknown word: %s"):format(Unknown)) local Success, Return = pcall(readfile, "GuessItunknown.txt") if Success then appendfile("GuessItunknown.txt", "n" .. Unknown) else writefile("GuessItunknown.txt", Unknown) end return Unknown end local function TextHandler() local Text = Label.Text print("Game: " .. Text) print() if Text:find("Everyone guessed") or Text:find("The round has ended") or Text:find("artist left") then if not Guessed then -- failed to get word, will store it for future use local Unknown = SaveUnknown() if Unknown then warn(("Unknown word %s saved"):format(Unknown)) table.insert(Words, Unknown) end end AlreadyUsed = {} Guessed = false end if Text:find("You guessed") then Guessed = true local Unknown = SaveUnknown() if Unknown then warn(("Unknown word %s saved"):format(Unknown)) table.insert(Words, Unknown) end end if Text:find("hint") and not Guessed then -- in round local CurrentHints = GetWord() if not CurrentHints then return end local NoHint = CurrentHints:match("[^_]") if not NoHint then return end warn(("--_--"):rep(10)) print(("Guess attempt for word: %s"):format(CurrentHints)) print() local Guesses = Guess(CurrentHints) table.foreach(Guesses, print) if #Guesses <= 5 and shared.autoGuess then for _, Word in ipairs(Guesses) do if Guessed then break end if not AlreadyUsed[Word] then Chat(Word) end AlreadyUsed[Word] = true warn(("Auto guessing word '%s'"):format(Word)) task.wait(shared.guessTimeout) end if not Guessed then Force = true end end warn(("--_--"):rep(10)) end end local function TimeHandler() local Text = Timer.Text if Text == shared.emergencyTime and not Guessed then local Expect = GetWord() local MuseRequest = game:HttpGet(("https://api.datamuse.com/sug?s=%s&max=15"):format((Expect:gsub("_", "?")))) local MuseBody = HttpService:JSONDecode(MuseRequest) for _, Info in ipairs(MuseBody) do if Guessed then break end warn(("Using word '%s' (score: %s)"):format(Info.word, Info.score)) Chat(Info.word) task.wait(shared.guessTimeout) end end end Label:GetPropertyChangedSignal("Text"):Connect(TextHandler) Timer:GetPropertyChangedSignal("Text"):Connect(TimeHandler) TextHandler()
ENJOY!
Warning: DO NOT DOWNLOAD anything from this page, you're only here to copy the script!
burgoonevered1950.blogspot.com
Source: https://rbxscripts.net/draw-it-script-auto-guess-open-source/
0 Response to "Guess the Drawing Roblox Script"
Post a Comment