#Best way to learn AC
1 messages · Page 1 of 1 (latest)
probably this https://create.roblox.com/docs/scripting
roblox studio documentation is peak
Yea i was told to use docs instead of tutorials on youtube
yeah
the problem with yt tuts is that even if it was posted 3 weeks ago it could be outdated
That's not the problem with them dude
you do not know enough about luau or roblox to make an anticheat. just secure your server and call it a day.
like dont put a remote in your game that an exploiter can fire with a dollar amount and your server just lets them have it
also ya this is not the problem with yt tuts. the problem is people copy+pasting code out of them thinking that makes them a scripter.
yea what pyro said making a full on anticheat (that actually works) is difficult if ur new you should just do the bare minimum like not doing validation checks on client etc... but if you still want to know you should look at the roblox fps template they have some anticheat stuff there for remote event value validation from the client and just some server side checks for projectiles
meanwhile, in my full on anticheat that actually works...
if ( IsA(d,"BodyVelocity") -- Primitive scan for deprecated instance classes
or IsA(d,"BodyAngularVelocity")
or IsA(d,"BodyForce") or IsA(d,"BodyGyro") or IsA(d,"BodyMover")
or IsA(d,"BodyPosition") or IsA(d,"BodyThrust")
or IsA(d,"Hint") or IsA(d,"Message")
) then raiseDetection(1,"DeprecatedInstanceClass:"..GetFullName(d))```
why would you have to check for decprecated instance classes? is there a section in ur game where players can write their own code?
-# its a clientside anticheat
what if he uses Lv and Ar

linear velocity alignrotation
then the detection becomes specific to the game. i tried to make a full on instance tree watcher and it is too unstable, there are too many variables and a lot of potential for false positives so it's not worth the effort or the performance cost
e.g what if your game naturally adds Highlight to other player's characters sometimes, and an exploiter just adds highlights to everyone at all times? how do you tell the difference?
but if its clientside cant they just bypass it?
I know enough about luau and roblox to make a clientside anticheat.
in theory you could try to bypass it, and on some levels yeah you can bypass it entirely
mhmmm
who uses hint,message in their executor scripts?
I mean it does make it annoying for any exploiters so I guess its not totally useless
but that dont mean i have to let it be easy 
no
idk, there's more like flag and skateboard but i think only the bodymovers matter, as they're the common ones
cframe,lv others u mentioned
:P
linearvelocity is again, game dependent.
this anticheat has other requirements, you aren't going to accidently create deprecated instance classes while using this
there
what about it?
(This is purely to make sure roblox’s search engine makes this thread pop up on search) Anti Cheat RemoteEvent RemoteFunction Dynamic Communication Anti Exploit [hookmetamethod] Here’s a script I wrote together for my future portfolios and to help people who doesn’t know what a handshake is or how to write one. Before you start throwing...
their implementation can be bypassed in seconds
the point is to show general concept of the handshake and yes, i am aware
The Problem of ur anticheat the exploiter can add himself speedbypass via Their console bar
the problem of this its remving or making ur own remote shit
while urs its only based of basic Speed
idk what this term you're using means in the way you're using it, basic speed?
.
body ***
no, that is in there just to catch skids
that is not a critical detection
in fact that's one of the lowest severity detections in here so far
by comparison, calling the detection function with invalid parameters is a critically severe detection
because it means you have found and have access to the internals of the anticheat
at least to some degree
this isn't my first time making an anticheat 😂
i think u could js add a beam infront of ur char and it will be speed limit,if the Hrp touches it it means the Speed bypassed
the exploiter can just delete the beam
ye
meanwhile, i can just listen for local changes to walkspeed and if they are unexpected you get ban
if there is no beam of player
like u could detect that he deleted it
= ban
no?
no
an exploiter has more access than you might realize
they can just remove the function from your code, in a manner of speaking
Ik
ik
and ye there is a downside
even if exploiter deletes the beam he could add new
without colide
or like js replace it
or just disconnected your .touched event
ye
wat, why? i not exactly giving a lesson here or anything
just sayin im working on an anticheat and take it from me just do server only, you'd have to be mad to attempt this. fortunately i've got that on my side.
What if the anticheat byself doesnt exist?
the most exploit scripts checks anticheat from workspace and replicated storage
Like if its sets on Nil
they aint finding shit
they can pull instances from nil
you can require() destroyed modulescripts too aint that fun
what if exploiter is a bum
then they too skidded to handle what i've got waiting for them
or their computer bluescreens and crashes because their memory gets capped out
due to trying to hold onto all nil instances and turning off gc 
while i spam 100 clones every frame
good luck
-# im exaggerating but srsly, good luck to anyone who wants to try. i wouldn't want to be them
besides, most cheaters spend money on their cheats. at a point, they'll just buy my gamepasses instead 🙂
cheats free
...
u can crack most of them
and there is free executors
most of those don't have the capabilities to beat my anticheat from the outset
what if he use Tweenservice
what of it
like u can move urself with tweenservice
thrkught walls
u can even change ur speed
nvm
u can detect it
Js checked
that's hilarious, i dont think i can trivially detect that on the client, so that gets deferred to serverside movespeed checks, which you still need to do
so u cant detect tween?
crazy

pretty sure propertychangedsignal does not fire if you tween the cframe but i havent tested that
the tween it will be counted as smooth movement even if the exploiter make it on ctazy value
crazy
tweening position isn't all that useful and you cant tween a model's position
so this is actually game defined, and you can check it on the server. i can check it on client too if i wanted to
or could check the his speed and his time (acceleration)
but they could bypass the distance
if aka i set the distance to check its 50 studs
they could js stop at 45-49
to avoid the teleports
and client wont do shit after it
man,fuck this anticheat

buttt
to be specific, i mean the only check you have is the same distance moved per time check you do on the server, except i have the benefit of being able to run the check on the client in the first place as well as not being subject to latency on the client.
wait
it's the same as checking for highlights on the client - i can make that check because running on the client, server can't do it
the point of my anticheat is so you can make those checks at all without being hijacked by skids
u can tween models position,but its buggy
better if u move via Cframe but will be detected js when exploiter injects it
but u actually could tho
i still have to compare cframe against expected velocity
every frame
what i said?
...
u skid
I know basic functions
So whats a good place to learn
The basics
Docs or tutorials
skidding is way better
tutorial; only first 5 mins or explanation of the work and fry ur brain on system
else u will js copy paste
Wdym skidding
Docs,only if u understand
Like steal code?
Yee
Hows that gonna teach me

everything helps but to actually script u need time :P
Ok
its like studying and learning new language
Roblox Studio + docs 
touch all the buttons and see what happens, ya?
tyy
Not exactly
That just depends on the person and how they’re learning
but for example everyone watches brawl dev who’s tutorials are 1+ years old and uses older APIs
If you’re fresh to Roblox Studio then AI isn’t a bad approach, however you have to use it right. However if you’re able to learn Roblox Docs that is arguably the best approach.
there was a time when youtube tutorials and ai did not exist, and people still managed to learn things. be ignorant of the past and be doomed to repeat it
that is to say there is nothing stopping the determined, and most people are just simply not that.
like asking how to do this without telling the whole code?
you need to stop looking at code as 'the whole code' all at once. code is not written like that. in practice, code starts as a bunch of very small very simple things that are added, combined, and mixed together to produce complex results.
what would i make for a begineer
move a part. at all.
put a button on the screen that spawns a part.
touch a part to change its color.
every second your character jumpheight gets bigger
and then save your jump power into a datastore
and then put it on leaderstats
and then make a touch button that resets your jump power and gives you wins
and then make the jump power increase faster with more wins
and then take a screenshot and release your very first +1jump/sec game
-# if you can't make +1jump/sec without a step by step tutorial how do you plan on making anything else
alr
yeah and them times were much more fun
that is true
specifically tell it to not just throw code at you, and instead give it to you in stages (like roblox docs) and explain each part individually.
id say wait on datastores
they're complex in the eyes of a beginner
is there a faster way to like
get a position
Part.Position
instead of using a part and putting it in a position then copying that position and pasting it in the code
ok
local button = script.Parent
button.MouseButton1Click:Connect(function()
local part = Instance.new("Part")
part.Position = Vector3.new(0, 0.5, -8.898)
part.Parent = workspace
end)
this is what i got so far
you could do
the parts new position = old position + 5 studs
that way it dont just jump
once
so it would move fward 5 studs
is there a way to make a radius of teh player and make it spawn outside that radius?
pretty advavced for a beginner imo
yeah
which is exactly why you shouldnt do it
ok
for something like preventing it from moving when inside of the players range (e.g. 5 studs) you would get the player position and the part position, then use .Magnitude to get the distance between them, and prevent the part from jumping if its within that distance.
im rn just using docs hopefully that can help me learn
epicPart.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player then
local r = math.random(0, 255)
local g = math.random(0, 255)
local b = math.random(0, 255)
epicPart.Color = Color3.fromRGB(r, g, b)
end
end)```
how do i make this change once
this only changes once then cant change again?
dont listen to that guy
@formal jackal u need to suffer
but ye spent more time on roblox studio
:P
docs IS suffering gng
@formal jackal make what change once
docs aint peak to a beginner
Yes
debounce
What do i use then
Ok
above the touched put "local debounce = false"
then check inside the script "if debounce == false then" and after you change the colour set "debounce = true"
Example:
local debounce = false
epicPart.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and debounce == false then
local r = math.random(0, 255)
local g = math.random(0, 255)
local b = math.random(0, 255)
epicPart.Color = Color3.fromRGB(r, g, b)
debounce = true
end
end)
Okay
this makes the part not change the color after u hit on it again right?
yea
didnt work
local Players = game:GetService("Players")
local button = script.Parent
button.MouseButton1Click:Connect(function()
local epicPart = Instance.new("Part")
epicPart.Position = Vector3.new(0, 0.5, -8.898)
epicPart.Parent = workspace
local debounce = false
epicPart.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and debounce == false then
local r = math.random(0, 255)
local g = math.random(0, 255)
local b = math.random(0, 255)
epicPart.Color = Color3.fromRGB(r, g, b)
local debounce = true
end
end)
end)```
did u even read the one i sent
OH
wait
wtf
why have u got a touched function inside of a clicked function
you're running a fresh code every time u click it
so just make them seperate blocks 
so how would i learn if docs isnt for beginners
when doing things like debounce (states) always put them OUTSIDE of a trigger function, otherwise they will constantly be reset to their default state or boolean (true or false)
local Players = game:GetService("Players")
local button = script.Parent
button.MouseButton1Click:Connect(function()
local epicPart = Instance.new("Part")
epicPart.Position = Vector3.new(0, 0.5, -8.898)
epicPart.Parent = workspace
end)
local debounce = false
epicPart.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and debounce == false then
local r = math.random(0, 255)
local g = math.random(0, 255)
local b = math.random(0, 255)
epicPart.Color = Color3.fromRGB(r, g, b)
local debounce = true
end
end)```
i did tis wrong
didnt i
Players.Sonarsilly.PlayerGui.GUI.SpawnButton.Script:11: attempt to index nil with 'Touched'
oh
ig you could make a variable for the new part
inside the clicked function add "epicPart.Name = "Epic"
i need smth that can tell me more basics
and then search workspace for that part
this just means "you attempted to use a .Touched event on something that doesnt exist"
how would i do that
also whys ur script inside of a gui
you would need a guard clause considering the part only exists if you click the button
my friend used to script and i kinda just learnt that
so you would do something like uh
local newPart = workspace:FindFirstChild("Epic")
if not newPart then return end
bad practice
only goes in a gui if its something like a state controller for the button
which yours 50% is
the other half should be either a server script in SSS or a local script in SPS/SCS
so the button touch stuff
** You are now Level 6! **
yeah pretty much
do i use like yt tutorials to learn or nah
GUI Script:
local Players = game:GetService("Players")
local button = script.Parent
button.MouseButton1Click:Connect(function()
local epicPart = Instance.new("Part")
epicPart.Position = Vector3.new(0, 0.5, -8.898)
epicPart.Parent = workspace
end)
Server OR Local Script:
local Players = game:GetService("Players")
local debounce = false
epicPart.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and debounce == false then
local r = math.random(0, 255)
local g = math.random(0, 255)
local b = math.random(0, 255)
epicPart.Color = Color3.fromRGB(r, g, b)
local debounce = true
end
end)```
better to use AI now
more up to date with APIs
so just ask it to teach me the basics?
coolio
ServerScriptService -> ServerScript
ButtonGui -> LocalScript
Server:
local Players = game:GetService("Players")
local Epic = workspace:WaitForChild("Epic")
local debounce = false
Epic.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and debounce == false then
print(debounce)
local r = math.random(0, 255)
local g = math.random(0, 255)
local b = math.random(0, 255)
Epic.Color = Color3.fromRGB(r, g, b)
debounce = true
end
end)```
### __Local:__
```lua
local Players = game:GetService("Players")
local button = script.Parent
button.MouseButton1Click:Connect(function()
local epicPart = Instance.new("Part")
epicPart.Position = Vector3.new(0, 0.5, -8.898)
epicPart.Parent = workspace
end)```
whats changed
add a part into workspace / explorer
rename it to "Epic"
and then it looks for that part
and does its job
it wont
@formal jackal
local Players = game:GetService("Players")
local button = script.Parent
button.MouseButton1Click:Connect(function()
local epicPart = Instance.new("Part")
epicPart.Position = Vector3.new(0, 0.5, -8.898)
epicPart.Parent = workspace
epicPart.Touched:Connect(function(hit)
local char = Players:GetPlayerFromCharacter(hit.Parent)
if char then
if epicPart.Color == Color3.fromRGB(163, 162, 165) then
local r = math.random(0, 255)
local g = math.random(0, 255)
local b = math.random(0, 255)
epicPart.Color = Color3.fromRGB(r, g, b)
end
end
end)
end)```
that one does it for parts that are spawned
it basically checks if they're not the default colour then change
damn ur good
local Players = game:GetService("Players")
local button = script.Parent
button.MouseButton1Click:Connect(function()
local epicPart = Instance.new("Part") -- Creates new part
epicPart.Position = Vector3.new(0, 0.5, -8.898) -- Sets part position
epicPart.Parent = workspace -- Sets parts parent
epicPart.Name = "EpicPart" -- Sets parts name
epicPart.Touched:Connect(function(hit) -- Checks if part was touched (by anything)
local char = Players:GetPlayerFromCharacter(hit.Parent) -- Attempts to get the player from the part that touched the part
if char then -- If the player exists / touched the part then
if epicPart.Color == Color3.fromRGB(163, 162, 165) then -- Checks if it is the default colour or not
local r = math.random(0, 255) -->!!!!!!!!!!!!!!!!!<
local g = math.random(0, 255) -->Randomises Colour<
local b = math.random(0, 255) -->iiiiiiiiiiiiiiiii<
epicPart.Color = Color3.fromRGB(r, g, b) -- Randomised Colour
end
end
end)
end)```
Commented version
for better understanding
would a game where u shot objects at like a jenga thing simple for a beginner
dont start games yet
learn the basics
then once you done that, build a simulator.
a basic, 2015 simulator
what should i make now
I started with a simple fight npc simulator lol as a tutorial project
learn
dont build an anticheat. just make sure your game is fully server authorative
???
most people aren't able to build an anticheat, but that aint everyone 
not even related
i take it you didn't read whats in this thread
meanwhile you couldnt help him with this thread
what gives you that idea
you said "just secure your server and call it a day" as if that wasnt litteraly what i just said
i also explained my reasoning why
then what was your point?
my point to you is i think it's time to break this all-too-common rhetoric; yes this applies to most people, but it should not be a blanket statement.
instead of "dont even try" like you have put it
it was genuinely the best option you could have ever tried
I say, you could but you probably don't know enough so do this instead
building a client side anticheat means nothing with server authority
even a studio dev team would do this
its nothing to do with programming capabilities
ehh don't know about this one
you kinda need to know what you're doing
no you literally can't stop cheats fully client side
or even making any progress
roblox btw
well I have certainly made progress
yes roblox luau and all of its restrictions
yes. the restrictions make it impossible for like genuienly good progress
I am aware
its always easy just to delete the scripts that hook onto it
would be nice if roblox could just let me have registry and gc but i think they disable it to stop us messing with corescripts
ehhhhhhhh about that... not really...
what is deleting a script going to do when i've already deleted all the scripts in the game
but think about it like this, if you just have all coins on the server and the client can only make requests and never run actions. then you have a client side script that tries to protect the value. which one is safer?
** You are now Level 17! **
what
no one is saying it is easy, nor is anyone saying it is ever going to be perfect. what I am saying is, what it's hard so you won't even try?
just simply have no clientside defences, at all? is that what you're suggesting?
yep. they are useless. especially in roblox
welp, that's why i call it rhetoric
the only thing they can do is use like aimbot, esp etc
because that's not the only thing
you forgot saveinstance() 💀
or so you assume, so that's the reason why it's not worth even trying?
no im not saying its hard
its just not possible
roblox is the only one who can attempt to stop it
i mean if you're happy having zero clientside defenses at all i mean no one is going to say it's wrong, i wouldn't, but i'm not going to say it is right either.
anyways if you really want to make save instance less usefull just dont replicate important assets back until actually needed. that way half of the game wont even work when decompiled
yes litterally. you dont really need any
from what i've seen so far, you can make it really difficult for exploiters to steal your stuff or break into your game code. that's assuming you at least try
if you do nothing, boy howdy is it easy for a slobbering ipad kid to step in and just download your entire game
minus serverscriptservice/storage ofc
and if you don't mind me pointing out
do you realize just how many cheaters there are in this server?
like, just in this server alone
and then consider how many there are across the rest of roblox
I mean
https://www.helpnetsecurity.com/2026/04/30/ukraine-roblox-account-hacking-scheme/
Prosecutors estimate the group earned close to 10 million Ukrainian hryvnias, which is roughly $227,000.
not actually true because they cant get server sripts
yes and serverscripts. that's the only saving grace you got
yeah but anyways all of this isnt controllable under you
only thing you have to do: never trust the client
keep it separate from the server. its just replicating things and reporting what it does
The hackers distributed infostealing malware disguised as game-enhancement tools
what they mean is cheats. all the stolen accounts were cheaters.
and those are just the ones who fell for it
says you 
now, i'm like 99% certain that the rhetoric of "dont even bother securing the client" is actually pushed by all these cheaters who enjoy the perks of having 0 defenses in all roblox games they play
makes it extremely easy to distribute cheats for a wide variety of games without having to deal with anyone's even remotely trivial defenses
did you listen to a thing?
and then you consider the money behind it all
did you?
at this point i hope not
frankly the only person who can be expected to be in support of not even trying to put any defenses on the client at all whatsoever are themselves cheaters.
that's my opinion, i know it's not entirely accurate since many legitimate players and devs buy into the rhetoric also, but really, the only person who says such things as "dont even try to stop cheaters", are themselves cheaters.
the majority of the time.
ok give me a script that stops every person from using saveinstance
why tf would i give this out for free, i plan to sell it 😂
and if you were paying attention, i did mention one way to stop it, or at least make it excrutiatingly difficult for the cheaters
but y'know, i'm the one not listening to a thing, apparently
come back when you sold it
What’s this mean
basically stopping exploiters saving the game
ah
saveinstance() is a third-party program (exploit) function that copies the contents of your game's DataModel, which the client has access to. Since the client must load the map, models, and scripts to render the game, the exploit simply reads this data from RAM
Butt
u can safe the scripts from them
they can stole Map,Localscripts(turn it off),Remote events (They can delete,rename)
but they cant copy the serverscripts
I am aware, yes
point?
and if they delete it they crash 2 seconds later. next?
rename/Bypass exists
brother thinks if 1 shi gets deleted the game will be safe for 100%
it still sends
brother thinks i know as little as they do
there is also no bypass
you'd have to delete the remote to disable my primary comms
- that's not the only way to send messages to the server
- if you delete it you crash 2 seconds later so said alt methods to send messages to the server can be sent
even if they delete remote events
the game AINT crashing,it js stops working wdym
if i detect you deleted it i just while true do end?
and rip your client
i'm not sure why you're trying 😂
i mean, the only kind of people trying to convince me not to build this are themselves cheaters
and under that assumption, i mean hey if you want to try to attempt this in my anticheat project, i invite you to tell me how long it takes to so much as decompile the anticheat's code, or any other code in the game
i am not expitoter
.
me either, but i know people who are, and who know what they're doing
roblox is in a pretty sad state since normal code is so limited, but what, you think that's going to stop me? 😂
wont it overload the game with often cycle
?
what
or i didnt understand well
wait i think i got wdyn
wdym
u call the server to check
if the remoteevents doesnt exist
but how do you plan to do that if you dont have a remote event
Heartbeat
If the remoteevents exists jn the server ornjto
But they could destroy
what good will that do me if they destroy it
and game will still think that remote events still exidts
if they destroy,the game will think the events still exists.
but the data will be sended no where
yah..? that's kinda what destroying instances does y'know
what is the point you're trying to make here?
holdon
that you don't know how a clientside anticheat can work?
basically, if you touch anything you get ban/crash, if you delete anything you get ban/crash, if the game doesn't like certain things done to the data model you get ban/crash, there is no code to steal without subjecting yourself to a lot of pain, there is no traditional way to access my game's memory, and if you try to hijack anything you get ban/crash. nothing you can do without taking extreme and drastic measures just to get around my anticheat, before attempting to do any of the actual cheating you set out to do in the first place. which is all assuming you're able to decompile and/or reverse engineer how it works in the first place.
and obviously
despite the fact that even if you had a perfect copy of my anticheat you still couldn't break it
it would still be foolish to teach you, or anyone else how it works, such that anyone has an easier time trying to bypass it, eliminating the whole point of all this work i'm putting in.
the short of it is it blocks pretty much everything. there is no tricky trick bypass skiddy workaround.
that's not by accident
that's by design.
this better be satire
just spamming the same gif over and over again
spam? i sent it once...
.
meanwhile, more than 12 hours ago
yeah this is why u are gonna fail
y u mad tho
what do you care if i waste my time on a clientside anticheat or not
or maybe, you just don't want anyone setting a precedent that you can actually secure the client, and all the big studios start implementing their own meaning long gone will the days be that you can just pull skidded cheats out of a literally built-in cheat browser.
for the days of needing game-specific cheats will be upon you

you literally couldn’t patch all cheats. clearly you don’t know what you are doing
No you can’t “secure” the client reliably
always going to be easy to get around
clearly you're just a salty cheater who doesn't like the idea that someone is building a proper anticheat
clearly you’re just a skid
i'd rather be a skid than a salty cheater ngl
how am I a cheater then?
for what other reason do you care that I am building a clientside anticheat
because it’s useless…
let me waste my time then, since it has nothing to do with you?
go ahead then, just don’t spread useless information to others
i mean OP asked about anticheat and that's what we're still discussing, and here's you saying give up before even trying
no need to try when it’s not possible
and i'm the one giving useless information, pointing out the fact you can in fact take some steps to secure the client, yep, that's useless information 💯 you big smarts
look at you go!
explain to me what “secure the client” means
you show me!
and explain how it couldnt just be bypassed in a second
not sure what you're showing me but, you sure do show it!
lmao he couldnt even try
well, for starters i already answered that. this is what "secure the client" means
and why would i care to explain to you how it works?
and tell me how that isnt easily bypassable
if you don't want to believe me, i don't really care 😂
i have nothing to prove to you
literally do
you wish
so you are admitting you are wrong?
i love how this became a anti cheat battle off
lol
i have a quesiton
theres this like fly script
but they like
rotate super fast
how deos that work
you are probably talking about a spinbot
they just rotate the humanoid rootpart really quickly
patched with server authority enabled
interestingg
example
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local hrp = character:WaitForChild("HumanoidRootPart")
local speed = 500 -- rotation speed
game:GetService("RunService").RenderStepped:Connect(function(deltaTime)
hrp.CFrame = hrp.CFrame * CFrame.Angles(0, math.rad(speed * deltaTime), 0)
end)
desync and render order shenanigans, it's mostly for the lulz and doesn't really do anything
you can't detect it either since they could just have extremely high mouse sensitivity
falls under mechanical advantages; to a point you cannot stop hardware attacks, like if someone points an actual camera at the screen and has a custom hardware mouse, it is plausible to use that to create pure hardware aimbots