
Key Required

local ReplicatedStorage = game:GetService('ReplicatedStorage')
local VirtualInputManager = game:GetService('VirtualInputManager')
local StartQuestionEvent = ReplicatedStorage.Events:WaitForChild('StartQuestion')
local QuestionDataEvent = ReplicatedStorage.Events:WaitForChild('QuestionData')
local allRounds = {}
local currentRound = nil
---->>> CONFIG <<<----
--[[
Speed Translations:
["SUPER FAST ANSWER!"] = < 1.5,
["SPEEDY ANSWER!"] = < 3
--]]
local waitTime = 1.4
---->>>>>><<<<<<----
local function PressKey(keyNumber)
local keyMap = {
[1] = Enum.KeyCode.One,
[2] = Enum.KeyCode.Two,
[3] = Enum.KeyCode.Three,
[4] = Enum.KeyCode.Four,
}
local keyCode = keyMap[keyNumber]
VirtualInputManager:SendKeyEvent(true, keyCode, false, game)
task.wait(0.05)
VirtualInputManager:SendKeyEvent(false, keyCode, false, game)
end
-->> Capture QuestionData info for all rounds
--[[
For some reason when a round starts, they send you:
- Current Round #
- Round Type (Vote, Song)
- Options in the form of IDs (37, 48, 63, 92)
- SongNum in the form of an ID. [Ex. 48]
+ Data for future rounds (upwards of 20 rounds)
+ SongNum is always the correct song choice
--]]
QuestionDataEvent.OnClientEvent:Connect(function(roundsTable)
for _, roundData in ipairs(roundsTable) do
allRounds[roundData.Round] = roundData
end
end)
-->> Listen for when a new round starts
StartQuestionEvent.OnClientEvent:Connect(function(data)
if not data or not data.RoundNumber then
return
end
local roundNumber = data.RoundNumber
local roundInfo = allRounds[roundNumber]
if not roundInfo then
warn('⚠️ No data found for round', roundNumber)
return
end
-->> Determine the correct option and button index
if roundInfo.RoundType == 'Song' then
local correctSongNum = roundInfo.SongNum
-->> They put this in the UI's localscript for some reason
local correctIndex = table.find(roundInfo.Options, correctSongNum)
if correctIndex then
--[[
The correctIndex is a number (1-4) which represents your four buttons.
I just get that number by using table.find with the same args they used in
the localscript. "LocalPlayer.PlayerGui.QuestionGUI.GameClient"
"if table.find(v154.Options, v154.ArtistNum or v154.SongNum) == u47 then"
--]]
-->> Since there's no event or anything to submit your selection I just fake a key press.
task.wait(waitTime)
PressKey(correctIndex)
else
warn('⚠️ Could not find SongNum in options for this round.')
end
elseif roundInfo.RoundType == 'Vote' then
-->> Voting rounds don't have a correct answer but voting
-->> will always give you some extra height for some reason
task.wait(6)
PressKey(1)
else
warn('⚠️ Unknown round type:', roundInfo.RoundType)
end
end)
print("✅ [Auto Guesser] Initialized")
very nice script
Love your script, keep going, man I hope you have a great year
How to change the speed?