Keypad Cracker Lua
Feel free to suggest changes or fixes. If you have any questions I'll be happy to answer them. If you have any problems I will provide support the best i can.
READ THIS -
When you copy the code there are two instances where i wrote draw[dot]RoundedBox because MPGH censors the original. You have to change those or this isn't going to work.
Directions -
There are no commands, just run the file to get started.
Red boxes indicate keypads without a known code.
Green boxes indicate keypads with a known code.
Codes are not known until someone uses the keypad.
If you look at a keypad a box will pop up that says the code or "Not Found".
http://i.imgur.com/ZwZnb1j.jpg
I also recommend changing the hook names, otherwise it will be way too easy for a server to detect this code.
Code -
Known Bugs -
Sometimes a code will be shown with an extra number in front of it. - Fixable, but I'm not worried about it because it doesn't happen too often.
If two people are looking at the same keypad while a code is being input the received code will be messed up. It's not a huge issue because both players have to be pretty close to the keypad. - Unfixable with my current method of getting codes.
If a keypad is updated their code will still be perceived being known, even though it isn't. Yet it will still get changed if someone uses it correctly again. - Probably fixable, I need to look at how the tool gun is working.
If a code is input really fast it wont be received correctly. Usually this isn't an issue but it can be. - Unfixable with my current method of getting codes.
READ THIS -
When you copy the code there are two instances where i wrote draw[dot]RoundedBox because MPGH censors the original. You have to change those or this isn't going to work.
Directions -
There are no commands, just run the file to get started.
Red boxes indicate keypads without a known code.
Green boxes indicate keypads with a known code.
Codes are not known until someone uses the keypad.
If you look at a keypad a box will pop up that says the code or "Not Found".
http://i.imgur.com/ZwZnb1j.jpg
I also recommend changing the hook names, otherwise it will be way too easy for a server to detect this code.
Code -
Code:
local X = -50
local Y = -100
local KeyPos = {
{X+5, Y+100, 25, 25, -2.2, 3.45, 1.3, -0},
{X+37.5, Y+100, 25, 25, -0.6, 1.85, 1.3, -0},
{X+70, Y+100, 25, 25, 1.0, 0.25, 1.3, -0},
{X+5, Y+132.5, 25, 25, -2.2, 3.45, 2.9, -1.6},
{X+37.5, Y+132.5, 25, 25, -0.6, 1.85, 2.9, -1.6},
{X+70, Y+132.5, 25, 25, 1.0, 0.25, 2.9, -1.6},
{X+5, Y+165, 25, 25, -2.2, 3.45, 4.55, -3.3},
{X+37.5, Y+165, 25, 25, -0.6, 1.85, 4.55, -3.3},
{X+70, Y+165, 25, 25, 1.0, 0.25, 4.55, -3.3},
{X+5, Y+67.5, 50, 25, -2.2, 4.7, -0.3, 1.6},
{X+60, Y+67.5, 35, 25, 0.3, 1.65, -0.3, 1.6}
}
hook.Add("Think", "WatchingPlayers", function()
for k,v in pairs(player.GetAll()) do
local kp = v:GetEyeTrace().Entity
if IsValid(kp) and string.find(kp:GetClass(), "keypad") and v:EyePos():Distance(kp:GetPos()) <= 71 then
kp.tempCode = kp.tempCode or ""
kp.tempText = kp.tempText or ""
kp.tempStatus = kp.tempStatus or 0
if kp:GetDisplayText() != kp.tempText or kp:GetStatus() != kp.tempStatus then
kp.tempText = kp:GetDisplayText()
kp.tempStatus = kp:GetStatus()
local tr = util.TraceLine({
start = v:EyePos(),
endpos = v:GetAimVector() * 32 + v:EyePos(),
filter = v
})
local pos = kp:WorldToLocal(tr.HitPos)
for i,p in pairs(KeyPos) do
local x = (pos.y - p[5]) / (p[5] + p[6])
local y = 1 - (pos.z + p[7]) / (p[7] + p[8])
if (x >= 0 and y >= 0 and x <= 1 and y <= 1) then
if i == 11 then
timer.Simple(0, function() //GetStatus doesnt work for another frame
if kp:GetStatus() == 1 then
kp.code = kp.tempCode
end
kp.tempCode = ""
end)
elseif i == 10 then
kp.tempCode = ""
else
kp.tempCode = kp.tempCode..i
end
end
end
end
end
end
end)
hook.Add( "HUDPaint", "KeypadPasswords", function()
local e = LocalPlayer():GetEyeTrace().Entity
if IsValid(e) and string.find(e:GetClass(), "keypad") then
local text = e.code or "Not Found"
draw.WordBox( 8, ScrW() / 2, ScrH() / 2, text, "Default", Color(50,50,75,100), Color(255,255,255,255) )
end
for k,v in pairs(ents.GetAll()) do
if IsValid(v) then
if string.find(v:GetClass(), "keypad") then
if v != e then
local pos = v:GetPos():ToScreen()
if IsValid(v) and v.code then
draw[dot]RoundedBox( 4, pos.x-5, pos.y-5, 20, 20, Color( 0, 255, 0, 150 ) )
else
draw[dot]RoundedBox( 4, pos.x-5, pos.y-5, 20, 20, Color( 255, 0, 0, 150 ) )
end
end
end
end
end
end)
Sometimes a code will be shown with an extra number in front of it. - Fixable, but I'm not worried about it because it doesn't happen too often.
If two people are looking at the same keypad while a code is being input the received code will be messed up. It's not a huge issue because both players have to be pretty close to the keypad. - Unfixable with my current method of getting codes.
If a keypad is updated their code will still be perceived being known, even though it isn't. Yet it will still get changed if someone uses it correctly again. - Probably fixable, I need to look at how the tool gun is working.
If a code is input really fast it wont be received correctly. Usually this isn't an issue but it can be. - Unfixable with my current method of getting codes.
Good job!