public void Update()
{
if (!MiscUtils.ShouldUpdate())
return;
ReadSettings();
if (!_triggerEnabled)
return;
if (Core.KeyUtils.KeyIsDown(_triggerKey))
{
ViewAngles = Core.Memory.Read<Vector3>((IntPtr)(Core.ClientState + Offsets.ClientState.ViewAngles));
if (_triggerZoomed)
if (Core.LocalPlayerWeapon.ZoomLevel == 0)
return;
if (_triggerDash)
if (Core.LocalPlayer.Velocity > 0)
return;
RandomizeDelay();
if (_inCrossTrigger)
InCrossTriggerBot();
else if (_boneTrigger)
BoneTriggerBot();
else if (_hitboxTrigger)
HitBoxTriggerBot();
}
else
AimOntarget = false;
}
private void HitBoxTriggerBot()
{
GetValidTargets();
foreach (Player target in _validTargets)
{
if (target.Health > 0 & !target.IsDormant)
{
Vector3 bBone = target.GetBonePos(target, 8) + new Vector3(0, 0, 3);
Vector3 bottomHitboxHead = new Vector3(bBone.X - 2.54f, bBone.Y - 4.145f, bBone.Z - 7f);
Vector3 topHitboxHead = new Vector3(bBone.X + 2.54f, bBone.Y + 4.145f, bBone.Z + 3f);
Vector3 hBone = target.GetBonePos(target, 3);
Vector3 bottomHitboxBody = new Vector3(hBone.X - 7f, hBone.Y - 5.5f, hBone.Z - 25f);
Vector3 topHitboxBody = new Vector3(hBone.X + 7f, hBone.Y + 5.5f, hBone.Z + 15f);
Vector3 viewDirection = TraceRay.AngleToDirection(ViewAngles);
TraceRay viewRay = new TraceRay(Core.LocalPlayer.Position + Core.LocalPlayer.VecView, viewDirection);
float distance = 0;
if (viewRay.Trace(bottomHitboxHead, topHitboxHead, ref distance) | viewRay.Trace(bottomHitboxBody, topHitboxBody, ref distance))
{
if (!CheckDelay())
return;
_triggerLastShot = DateTime.Now.Ticks;
Engine.ForceAttack(0, 12, 10);
}
}
}
}
public float GetNextEnemyToCrosshair(int bone, ref IntPtr pPointer)
{
float fov = 0;
Vector3 pAngles = ViewAngles;
int[] playerArray = new int[33];
float[] angleArray = new float[33];
for (int i = 1; i <= 32; i++)
{
Player player = new Player(Core.Objects.GetEntityPtr(i));
Vector3 pAngle = player.GetBonePos(player, bone);
pAngle = Core.LocalPlayer.Position.CalcAngle(pAngle);
pAngle = pAngle.ClampAngle();
float iDiff = MathUtils.Get3DDistance(pAngle, pAngles);
playerArray[i] = (int)player.BaseAddress;
angleArray[i] = iDiff;
}
int closestPlayer = 0;
float closestAngle = 360;
for (int i = 1; i <= 32; i++)
{
Player player = new Player((IntPtr)playerArray[i]);
float angle = angleArray[i];
int curPlayerTeam = (int)player.Team;
bool dormant = player.IsDormant;
int health = player.Health;
Vector3 pOriginVec = player.Position;
pOriginVec.Z += 64;
if (!(curPlayerTeam != (int) Core.LocalPlayer.Team & (!dormant) & health > 0 & angle < closestAngle))
continue;
closestPlayer = (int)player.BaseAddress;
closestAngle = angle;
fov = angle;
}
pPointer = (IntPtr)closestPlayer;
return fov;
}
private void InCrossTriggerBot()
{
BaseEntity target = Core.LocalPlayer.Target;
if (target != null && ((_triggerAllies && target.Team == Core.LocalPlayer.Team) || (_triggerEnemies && target.Team != Core.LocalPlayer.Team)))
{
if (!AimOntarget)
{
AimOntarget = true;
_triggerLastTarget = DateTime.Now.Ticks;
}
else
{
if (!CheckDelay())
return;
_triggerLastShot = DateTime.Now.Ticks;
if (!_triggerSpawnProtection)
if (target.GunGameImmune)
return;
Engine.ForceAttack(0, 12, 10);
}
}
}
private void BoneTriggerBot()
{
GetValidTargets();
foreach (Player validTarget in _validTargets)
{
Vector3 myView = Core.LocalPlayer.Position + Core.LocalPlayer.VecView;
for (int i = 0; i < 81; i++)
{
Vector3 aimView = validTarget.GetBonePos(validTarget, i);
Vector3 dst = myView.CalcAngle(aimView);
dst = dst.NormalizeAngle();
var fov = MathUtils.Fov(ViewAngles, dst, Vector3.Distance(Core.LocalPlayer.Position, validTarget.Position));
if (!(fov <= 5))
continue;
if (!AimOntarget)
{
AimOntarget = true;
_triggerLastTarget = DateTime.Now.Ticks;
}
else
{
if (!CheckDelay())
return;
_triggerLastShot = DateTime.Now.Ticks;
Engine.ForceAttack(0, 12, 10);
}
}
}
}
private bool CheckDelay()
{
if (!(new TimeSpan(DateTime.Now.Ticks - _triggerLastTarget).TotalMilliseconds >= TriggerDelayFirstRandomize))
return false;
if (!(new TimeSpan(DateTime.Now.Ticks - _triggerLastShot).TotalMilliseconds >= TriggerDelayShotsRandomize))
return false;
return true;
}
private void GetValidTargets()
{
_validTargets = Core.Objects.Players.Where(p => p.IsAlive && !p.IsDormant && p.Id != Core.LocalPlayer.Id /*&& p.SeenBy(Core.LocalPlayer)*/);
if (_triggerEnemies)
_validTargets = _validTargets.Where(p => p.Team != Core.LocalPlayer.Team);
if (_triggerAllies)
_validTargets = _validTargets.Where(p => p.Team == Core.LocalPlayer.Team);
if (!_triggerSpawnProtection)
_validTargets = _validTargets.Where(p => !p.GunGameImmune);
}
private void RandomizeDelay()
{
TriggerDelayFirstRandomize = new Random().Next(_triggerDelayFirstShotMin, _triggerDelayFirstShotMax) + 1;
TriggerDelayShotsRandomize = new Random().Next(_triggerDelayShotsMin, _triggerDelayShotsMax) + 1;
}
Public Class Triggerbot
Public Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
WithEvents Timer1 As Timer = New Timer
Public Player_Base_Pointer As Integer = &HAA5834 ' client.dll
Public Entity_Base_Pointer As Integer = &H4AC8014 ' client.dll
Public Loop_Distance As Integer = &H10
Public Crosshair_ID_Distance As Integer = &HAA70
Public Team_Distance As Integer = &HF0
Private Base_Client As Integer
Private Base_Engine As Integer
Private Player_Pointer As Integer
Private Entity_Pointer As Integer
Private Crosshair_Still_On As Boolean = False
Private Delay_After_Hover As Integer = 0
Private Process() As Process
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim Entity_In_Crosshair_Base_Pointer As Integer
Dim In_Crosshair_Entity_ID As Integer
Dim Entity_Team_Number As Integer
Dim My_Team_Number As Integer
If Delay_After_Hover = 0 Then GoTo nexter
If Crosshair_Still_On = False Then
pause(Delay_After_Hover)
End If
nexter:
ReadProcessMemory(Process(0).Handle, Base_Client + Player_Base_Pointer, Player_Pointer, 4, 0)
ReadProcessMemory(Process(0).Handle, Player_Pointer + Crosshair_ID_Distance, In_Crosshair_Entity_ID, 4, 0)
Form1.TextBox1.Text = In_Crosshair_Entity_ID
If In_Crosshair_Entity_ID > 0 And In_Crosshair_Entity_ID < 69 Then
ReadProcessMemory(Process(0).Handle, Base_Client + Entity_Base_Pointer + ((In_Crosshair_Entity_ID - 1) * Loop_Distance), Entity_Pointer, 4, 0)
ReadProcessMemory(Process(0).Handle, Entity_Pointer + Team_Distance, Entity_Team_Number, 4, 0)
ReadProcessMemory(Process(0).Handle, Player_Pointer + Team_Distance, My_Team_Number, 4, 0)
Form1.TextBox1.Text = My_Team_Number & " " & Entity_Team_Number
If Not Entity_Team_Number = My_Team_Number And Not Entity_Team_Number = 0 Then
Crosshair_Still_On = True
Click_With_Random()
GoTo last
End If
End If
Crosshair_Still_On = False
last:
End Sub
Private Sub Click_With_Random()
mouse_event(&H2, 0, 0, 0, 1)
Threading.Thread.Sleep(Random(15, 25))
mouse_event(&H4, 0, 0, 0, 1)
End Sub
Private Function Random(ByVal Min As Integer, ByVal Max As Integer) As Integer
Static Generator As System.Random = New System.Random()
Return Generator.Next(Min, Max)
End Function
Private Sub pause(delay As Integer)
Dim a As String = DateTime.Now.AddMilliseconds(delay)
Do Until DateTime.Now > a
My.Application.DoEvents()
Loop
End Sub
Public Sub Start(Delay As Integer)
Timer1.Interval = 1
Delay_After_Hover = Delay
Base_Client = GetBaseAdress("csgo", "client.dll")
Process = System.Diagnostics.Process.GetProcessesByName("csgo")
Timer1.Start()
End Sub
Public Sub Stop_It()
Timer1.Stop()
End Sub
Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Long, ByVal Size As Long, ByRef BytesWritten As Long) As Long
Public Function GetBaseAdress(Process As String, BaseDLL As String)
Dim Proc() As Process
Dim base As Integer = 0
Proc = System.Diagnostics.Process.GetProcessesByName(Process)
If Proc.Length > 0 Then
For Each [Module] As System.Diagnostics.ProcessModule In Proc(0).Modules
If [Module].ModuleName = BaseDLL Then
base = [Module].BaseAddress
End If
Next
Else
MsgBox("Start Process before")
End If
Return base
End Function
End Class
Delay_After_Hover = Delay