I would love to see some photos or examples of normal player shots versus aimbot/no recoil shots from the same perspective as Arkan so I can see what I am looking for.
I agree, coming across the same thing, trying to wrap my heat around all these angles xD
The main idea of checking aimbot in this plugin is to ensure that the projectile trajectory and the projectile’s reverse trajectory are as similar as possible, but slight deviations are allowed. In Rust, a random floating projectile trajectory is implemented. Therefore, it is impossible to repeat this trajectory accurately. After a new calculation of the projectile trajectory and the projectile’s reverse trajectory, the following values are checked:
LastSegment - the last segment of the projectile trajectory that the Rust engine returns as HitInfo.StartPoint and HitInfo.EndPoint
ProjectileTrajectoryPlane - a plane that is calculated from three points (FiredProjectile.projectilePosition, FiredProjectile.projectilePosition + Vector3.up, FiredProjectile.projectilePosition + FiredProjectile.projectileVelocity)
HitPoint - the hit point of the player’s model. This point is not the same as the point of intersection of the projectile trajectory with the player’s model.
The IsLastSegmentCloseToProjectileTrajectoryPlane() function checks if the LastSegment is near the ProjectileTrajectoryPlane.
The IsHitPointCloseToProjectileTrajectory ) function checks if the HitPoint is near the ProjectileTrajectoryPlane.
For example, a player shoots to the side or to the sky, but with the help of a cheat hits into the victim’s head. In this case, LastSegment and HitPoint will be but a considerable distance from the plane of the projectile trajectory.
If these two functions return a positive result, then additional values are checked:
Whether the HitPoint is within or near the last segment of the re-calculated trajectory. Minor deviations are allowed.
Is the start position of the projectile near the end point of the projectile’s reverse trajectory? Minor deviations are allowed.
After publishing the plugin on uMod, I received several reviews about the many “false” positives of some players. In most cases of these “false” positives, the last segment of the projectile trajectory(from HitInfo.PointStart to HitInfo.PointEnd, the first segment of the projectile’s reverse trajectory(green)) is shorter than it should be. HitInfo.StartPoint and HitInfo.EndPoint points are received from the client. I have not yet come to the conclusion why they are shorter than they should be. Either this is a Rust issue, or it is a sign of a player using a cheat. I’d like to know the answer from the developers of the Rust. What can cause such a change in the length of the last segment of the projectile trajectory?
In this example, I will show how the projectile trajectories look without aimbot violation. I use «vis.attack 1» as a control trajectory.
In this example, a violation in which the last segment of the projectile trajectory is shorter than it should be. If you shoot from the same weapon in the same direction, and with the same attachments, then the control yellow projectile trajectory has segments of almost the same length as the blue projectile trajectory. The projectile’s reverse trajectory(green) has shorter segments than they should be:
The following example shows a real false positive, to avoid which I will need to find a solution.
Alright so I think I understand it a little more. Here is a violation I got earlier
and here is the log from that
I see when investivating that the reverse trajectory is actially shooting through the ground at a sharp angle and actually goes under the map (I had to noclip to find the ending). The person claims that my information is flawed and must be because of lag. Of course this person has generated multiple violations (4) in the last 24 hours, none of which were on a boat.
I wanted to add another image since the green line may be hard to see. This one shows the angle. The green line was the lower line which quickly gets under the map.
Also, here is another violation from the same player, this one looks more in line with what you have shown as a clear violation.