Anti Tab Glitch (server-sided | original release)

Unstable Network / Ping Spikes seem to also trigger this

1 Like

why not teleport the player character to the old position other than kicking the player? so

Player:Kick('Tab-Glitching')

would be

HumanoidRootPart.Position = OldPosition
HumanoidRootPart.Velocity = Vector3.zero -- idk about this one

whatdya think?

1 Like

This is not an anti-tp anticheat. How would you even define the old position? Before they glitched? That would just be doing what the exploit is supposed to do; to stall their fall.

If you want the anticheat to be less intrusive in other ways then just reset the player instead of kicking them

1 Like

I think this should work better (I know that this is a release, just sharing my method)

local players = game:GetService("Players")
local localplayer = players.LocalPlayer

function checkTick(last: number): number
	return tick() - last
end

while task.wait() do
	local new = tick()
	task.wait(1)
	local calculated = checkTick(new)
	if calculated >= 1.5 then
		localplayer["Kick\000" .. tostring(tick())](localplayer, "You have been kicked for tab glitching.")
	end
end
1 Like

Wouldnā€™t this be better?

-- Force the character to fall by using roblox network owner physics
if HumanoidRootPart:GetNetworkOwner() ~= nil then
      HumanoidRootPart:SetNetworkOwner(nil)
      task.wait(5)
      HumanoidRootPart:SetNetworkOwner(Player)
end
1 Like

Trying to implement a completely foolproof method to try & put an end to tab glitching through Modules/Scripts is flat out impossible, there are so many variables to consider when accounting for a playerā€™s ping, and blatantly considering a certain circumstance ā€œtab glitchingā€ isnā€™t a good practice.

Just submit a bug report, they could easily add a bandaid fix to this by detecting if the player is holding right click on the topbarā€™s window for prolonged periods of time.

1 Like

so if i have bad internet i can glitch all I want?
amazing!

also the main thing the freeze glitch is used for is noclip which this doesnt detect for

3 Likes

well i was trying to make it less worse other than kicking the player, just imagine 50% of your players in-game got kicked because of a bad network, they sure not gonna play the game again

in the original code theres a variable named OldPosition as you can see here:

i have never tested the code, so you can check my code suggestion to see if its good or not

im just giving out my opinion, you can have your own too

thats a great suggestion! i never thought of using :SetNetworkOwner

1 Like

Itā€™s not, I explained in my previous reply. Trying to teleport the player back is just you helping them cheat in the game because you are doing exactly what they wanted

The OldPosition variable is just used to check if the player is frozen by comparing it at different times. Yes, the variable name is confusing, so hereā€™s an explanation:

To break it down:
OldPosition == CurrentPosition checks if the player hasnā€™t moved after a set amount of time (the position is the same after x seconds)
OldVelocity ~= Vector3.zero checks if the player was moving before (old)
CurrentVelocity ~= Vector3.zero checks if the player is supposed to still
be moving now (current)

So, if the player still had some velocity for x seconds yet their position hasnā€™t changed, itā€™s assumed that they are frozen, which is likely caused by tabglitching

3 Likes

ahh i see, sorry for misunderstanding :sweat_smile:

1 Like

Sorry, If anyone needs support or has any questions Iā€™m more active over on Discord.
Thanks VERON for helping people here. :smile:

@pingulovesu

1 Like

Thanks for posting!
If anyone Is looking for a client-sided method this might be for them.

But I have my doubts; Iā€™ve been working on securing the Roblox client/server side for over 2 years now, and I see this as easily bypassed.

  1. tick() method can be spoofed.
  2. The kick method of LocalPlayer can 100% be suppressed by an exploiter.
  3. Why do it from the client and not the server?
1 Like

Edit: Itā€™s not meant to be a anti-cheat in any meaning.
Itā€™s just supposed to help with tab glitching for some parkour or maybe games who need or want to prevent it.

Also if you have bad internet this glitch wonā€™t even be possible.

1 Like

Itā€™s been in the game client since the earliest versions, itā€™s not going anywhere.
We could argure for hours on this, but I use to do this with other incompetent ā€œanti-cheatā€ devs on this platform and it got me no where.

1 Like

Of course.
But this is a simple resource release, Itā€™s supposed to be a template for anyone who wants to implement it into their stack.

1 Like

Exploiters canā€™t spoof lua functions without a UNC api supported executor, as they have Cheat Engine for now (which is patched).

This is also from the client, because it detects tab glitching with high ping too.

Even if they finally got a UNC supported executor after the new Hyperion update, you can use the resource that TheLikerYT provided.

And Iā€™m pretty sure, that the script I gave calls Index, not Namecall. (The ā€œKickā€ method btw) You can make it a ban/kick remote event too.

1 Like

RoExec has a 100% UNC.
Not even patched.

1 Like

Why do you need to patch this? Competitive games? Just use server-authoritive player character or just donā€™t bother as i donā€™t think this affects other players unless maybe if itā€™s in a game like Jailbreak or Mad City where criminal does alt-tab to freeze mid-air and cop canā€™t cuff them

2 Likes

No way LOL they need to add this to deepwoken :joy:

2 Likes

it wonā€™t be patched because as far as I know when you do that on any program on windows you are essentially stopping it from running, and since roblox calculates physics on the client and sends the result over to the server you literally get frozen.

Also i donā€™t know if roblox has fixed this but :GetNetworkPing() is very unreliable and often literally gives results that are far from true (again idk if roblox has fixed this), in the case roblox hasnt fixed this a simple remote event can be used for measuring ping.

1 Like