Run it
Copy the script and paste it into your executor.
PlayersService = :()
LocalPlayer = PlayersService.LocalPlayer
Services = :()
ALLOW_FREEZE =
CharacterPresent, GetNumber, ParseExpression;
(str, character)
i=, #str
.(str, i, i) == character
(expression)
validCharacters =
foundDigit =
i =
currentCharacter = .(expression, i, i)
(validCharacters, currentCharacter)
i ==
validCharacters =
currentCharacter ==
validCharacters =
(, currentCharacter)
foundDigit =
i +=
i > #expression
currentCharacter = .(expression, i, i)
foundDigit
i =
(.(expression, , i-)), .(expression, i, #expression)
(expression, expectEndParentheses)
(expression) ~=
,
expression = .(expression, , )
expectingExpression =
lastExpressionWasParenthetical =
operators =
parts = {}
foundEndParentheses =
expectEndParentheses = expectEndParentheses
expression ~=
nextNumber, expressionAfterNumber = (expression)
nextCharacter = .(expression, , )
nextPiece = .(expression, , )
#expression <=
nextPiece ..=
expectingExpression
nextCharacter ==
nestedExpressionValue, expressionAfterParentheses = (.(expression, , #expression), )
nestedExpressionValue ==
nestedExpressionValue, expressionAfterParentheses
.(parts, nestedExpressionValue)
expression = expressionAfterParentheses
lastExpressionWasParenthetical =
nextNumber ==
, ..nextPiece..
.(parts, nextNumber)
expression = expressionAfterNumber
lastExpressionWasParenthetical =
(operators, nextCharacter)
.(parts, nextCharacter)
expression = .(expression, , #expression)
nextCharacter == (lastExpressionWasParenthetical nextNumber ~= )
.(parts, )
nextCharacter ==
expectEndParentheses
expression = .(expression, , #expression)
foundEndParentheses =
, ..nextPiece..
, ..nextPiece..
expectingExpression = expectingExpression
expectEndParentheses foundEndParentheses
,
expectingExpression
,
i = #parts
i >=
parts[i] ==
parts[i-] ^= parts[i+]
.(parts, i+)
.(parts, i)
i -=
i =
i <= #parts
parts[i] ==
parts[i-] *= parts[i+]
.(parts, i+)
.(parts, i)
parts[i] ==
parts[i-] /= parts[i+]
.(parts, i+)
.(parts, i)
parts[i] ==
parts[i-] %= parts[i+]
.(parts, i+)
.(parts, i)
i +=
i =
i <= #parts
parts[i] ==
parts[i-] += parts[i+]
.(parts, i+)
.(parts, i)
parts[i] ==
parts[i-] -= parts[i+]
.(parts, i+)
.(parts, i)
i +=
parts[], expression
GetDictionaryLength;
(dictionary)
length =
key, value (dictionary)
length +=
length
OnHack;
SubmitSolution = Services:()
(expressions, letters, answers, objectId)
results = {}
generatedNumbers = {}
lastGeneratedNumbers
allowSubmit =
index, expression (expressions)
correctAnswer = (answers[index])
result, errorMessage
expression = expression
lastGeneratedNumbers
generatedNumbers = lastGeneratedNumbers
(generatedNumbers) ==
index, letter (letters)
generatedNumbers[letter] = .(, )
letter, value (generatedNumbers)
expression = .(expression, letter, value)
result, errorMessage = (expression)
(result) ~= correctAnswer
lastGeneratedNumbers == generatedNumbers
allowSubmit =
.(OnHack, expressions, letters, answers, objectId)
.(generatedNumbers)
ALLOW_FREEZE
.()
(result) == correctAnswer
lastGeneratedNumbers = generatedNumbers
allowSubmit
SubmitSolution:(objectId, generatedNumbers)
HackReceiver = LocalPlayer.Character:()
HackReceiver.OnClientEvent:(OnHack)Guesses the codes in the game How to use: 1. Execute script 2. Use the hack tool thingy on crates/doors 3. Wait for it to guess You can toggle if you want to allow the script to freeze your game (does guessing faster) or not (slower) by changing the "local ALLOW_FREEZE" to true/false Credits to w a e: https://v3rmillion.net/member.php?action=profile&uid=667341 And the thread: https://v3rmillion.net/showthread.php?tid=1173000