By dB
Introduction
MAT Automaton is a framework that employs the Python 3 interpreter to allow MAT players to script the behaviour of their player. With Pyreal, MAT Automaton provides tight bindings with the Unreal Engine. As a result, it is possible to write code similar to Unreal Script with full access to Unreal Engine internals. MAT Automaton includes an in game command line console and a graphical menu. A sample aimbot/wallhack script is included, but users are encouraged to modify it or write their own.
Changes in this version
- Fix for CIB anticheat update (not fully tested)
- Minor adjustment to launcher (Filter for "MAT.exe")
- Includes new script updating system
- Added reset, forcealt and forcenorm shortcut links to the installer.
Instructions
1. Start the launcher via the shortcut in the start menu.
2. If you are running Windows XP or Vista/W7 with UAC disabled, start the game and the injection will be performed automatically. Otherwise, MAT Automaton will ask you for the location of of your MAT executable (MAT.exe) (e.g. \Program Files\MAT\System\MAT.exe)
Press END to access the menu.
Press INSERT to access the console.
Press NUMPAD 0 to toggle auto aim.
Press NUMPAD 1 to toggle indicator wallhack.
Press NUMPAD 2 to toggle wireframe wallhack.
Press NUMPAD 3 to toggle auto firing.
The scripts are located in the directory "Scripts" accessible from the installation path.
For an introduction to Python refer to
More importantly for a reference on the Unreal Engine refer to
I would love to see others contribute scripts, as the goal of this project is to see what types of creative things people come up with.
Here is a snippet of the included script, just to whet your appetite:
Code:
# If we are auto aiming if ( AutoAim and PC.Pawn ): # Look for the best target BestPawn = None BestLocation = None for Pawn in PC.DynamicActors ( PawnClass, PC ): # Check if the pawn is valid if ( not self.Valid ( Pawn ) or Pawn == PC.Pawn or not self.Damagable ( Pawn ) ): continue # If it is a team game make sure we are on a different team if ( not self.FriendlyFire and self.SameTeam ( Pawn ) ): continue # Setup bones list BoneList = ( self.BonePrecedence == BONE_Root ) \ and [Pawn.RootBone, Pawn.HeadBone] \ or [Pawn.HeadBone, Pawn.RootBone] # Find a visible bone for bone in BoneList: # Fetch the bone coords BoneCoords = Pawn.GetBoneCoords ( bone ) # Calculate the location BoneLocation = BoneCoords.Origin + BoneCoords.XAxis + BoneCoords.YAxis + BoneCoords.ZAxis # Conditionally apply latency correction if ( self.LatencyCorrection ): BoneLocation += self.Correction ( PC, Pawn, deltatime ) # Adjust according to projectile physics if ( PC.Pawn.Weapon and PC.Pawn.Weapon.FireMode [ FireMode ] and PC.Pawn.Weapon.FireMode [ FireMode ].ProjectileClass ): Projectile = PC.Pawn.Weapon.FireMode [ FireMode ].ProjectileClass.Default if ( Projectile and Projectile.Speed != 0 and Projectile.Physics != PHYS_Falling ): BoneLocation += Pawn.Velocity * ( abs ( BoneLocation - CameraLocation ) / Projectile.Speed ) # Do the check if ( Pawn.FastTrace ( BoneLocation, CameraLocation ) ): # Is this the best one? if ( not BestPawn or self.Compare ( BestPawn, Pawn ) ): BestPawn = Pawn BestLocation = BoneLocation break if ( BestPawn ): # We've found a valid target, so lets set the rotation and fire as required PC.ClientSetRotation ( ( BestLocation - CameraLocation ).Rotation () ) if ( self.AutoFire and PC.Pawn.Weapon ): PC.Pawn.Weapon.ClientStartFire ( FireMode )