Git Product home page Git Product logo

apex-norecoil-2021's Introduction

Apex-NoRecoil-2021

All Contributors

An AutoHotKey script (works on multiple resolutions) and Python CLI (works on 1080p) to minimize recoil with auto weapon detection for Apex Legends.

Apex Legends 压枪宏,带武器自动检测,包含了一个ahk的版本 (支持多分辨率) 和一个python的版本 (只支持 1080p) 。

AHK Script - Description 介绍

This repository contains an Autohotkey script to help you minimize weapon recoil. Your weapon is auto-detected by the script (no need to press the F key anymore! XD). The detection is based on a straightforward and naive strategy (I call it three-pixel-detection). It is pretty safe because all it does is just capture some pixels and then use mouse DllCall to move your mouse. Run the compiled version if you want more protection.

该库包含了一个带自动武器检测的 Apex Legends 压枪宏,不读内存,不注入游戏文件,纯粹就是识别像素颜色并帮助你移动鼠标(这就类似于那些淘宝卖好几百的主播专用压枪宏)。

  • Pros
    • comes with GUI 有圖形界面
    • support multiple resolution settings 支持多種分辨率
    • simple 简单
    • out of the box 开箱即用
    • support different language setting in game 支持不同的游戏语言设置
  • Cons
    • too many magic pixel position 太多神奇的像素位置设定
    • need lots of modification to support other resolution 很难去支持别的分辨率
    • not many people know how to code with AHK, not DIY friendly 脚本编程语言小众

Python CLI - Description 介绍

The repository also contains a Python version of the AHK script. It uses the Google Tesseract OCR and OpenCV to detect the weapon being used via key listener. The recoil-patterns are applied via win32api mouse_event. The program was built to be consumed as a CLI. The Python dir also contains a recoil-pattern creation tool which can be found in the modules dir. For more info please read the README in the python dir.

该库也包含了一个有着相似功能的 Python 脚本。这个脚本使用到了 Google Tesseract OCR 和 OpenCV 技术并通过监测键盘输入去进行武器检测。这个脚本主要通过命令行交互界面进行操作。

  • Pros
    • DIY friendly 客制化容易
    • Cool CLI 好看的命令行界面
    • Smart detection strategy 更为智能的武器检测策略
  • Cons
    • detection based on OCR, only support English charactor 只支持英文游戏界面
    • currently don't have as much as features as the AHK one 目前功能没有ahk版本那么多

Unknown Cheat thread

I post a thread there too, to let more people know the script.

Contributing

Pull Request is always welcome!

Contributors

Aaron Yau
Aaron Yau

💻
Brandon Williams
Brandon Williams

💻
filen1
filen1

🔣
sayoui001
sayoui001

💻
SiLeNT-Sooul
SiLeNT-Sooul

🔣
Petros
Petros

🔣
VStorm001
VStorm001

💻
VerTox
VerTox

💻
jayking999
jayking999

💻
Eternal
Eternal

💻
Milesians
Milesians

💻
Pengcheng Zeng
Pengcheng Zeng

🔣
MoralFst
MoralFst

🔣

apex-norecoil-2021's People

Contributors

allcontributors[bot] avatar eternal-walnut avatar filen1 avatar jayking999 avatar krampus-nuggets avatar mgsweet avatar milesians avatar moralfst avatar reibc avatar richardzzp avatar sayoui001 avatar silent-sooul avatar vertox avatar vstorm001 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apex-norecoil-2021's Issues

.

.

关于后座力参数的格式

或许你可以将格式改成这样,这样可以编辑每发子弹的延迟

[0,0,60]
x := strsplit(active_pattern[a_index],",")[1]
y := strsplit(active_pattern[a_index],",")[2]
t := strsplit(active_pattern[a_index],",")[3]

dllcall("mouse_event","UInt",0x01,"UInt",xmodifier,"UInt",ymodifier)
sleep t

banned

Great chance of being banned

希望指导或者添加2560x1600,感谢!

您好, Mgsweet,

我刚刚使用您的作品,目前是AHK + hider,按您的视频指导,尝试修改分辨率一直未能成功,不知是哪里出了问题:

  1. Windows桌面分辨率改为2560x1600,缩放改成100%
  2. Python用debug内的py文件,生成新分辨率数据
  3. 创建新ini文件并导入生成的数据,存放至src\resolution,改名字为2560x1600.ini
  4. 修改gui.ahk,添加2560x1600
  5. 修改AHK\src下的settings为分辨率2560x1600,修改sens和ads和游戏内一致,所有其他选项,包括ads only和auto fire,全部为0,因为游戏内是toggle瞄准
  6. 复制ahkhider.ahk, hyde.dll, hyde64.dll至AHK\src下
  7. 创建新AHK脚本命名run,并添加
    run ahkhider.ahk
    run apexmaster.ahk
  8. 管理员权限运行run脚本
  9. 游戏内fireing range不生效

测试下来,只有settings改1680x1050,游戏内设置1680x1050,只有这个能生效。

不知道是哪步做错了,兄弟,请知道,或者你可以在下个版本中支持一下吗?谢谢

How to Compile AHK Script and Python Script

I am shocked that the capacity of exe file, "apexmaster-v1.2.4.exe" , is only 1.2MB. I thought it would be bigger. But I have a problem about how to compile and release the exe file. I tried to compile the file in path '/AHK/src/compile/compile.ahk' (I uncommeted the icon sentence) but the output do not have GUI and I did not konw weather it really worked. What's more, you give the python source. According my experience, the exe file released from python will be huge. Maybe I am wrong. Can you provide python version release file?

New SCRIPT FUNCTIONS.

What do you think about adding a zoom feature to the script? This feature can be very useful for long-range shooting. I will write an example of how this can be done. In order for the recoil scripts to work while shooting through the zoom, it is necessary to make sure that during the zoom the script remembers the last selected weapons. Unlike the example I found for cs:go, for apex, the hotkeys num+ and num - to zoom in and out of the optics would be better suited. It is also possible to make the sensitivity of the mouse during zoom less (if it is possible to do so)
1234
123

;Autohotkey key legend
; # Windows Key
; ^ Control
; ! Alt
; + Shift

#NoEnv
magmin=0
SendMode Event
SetWorkingDir %A_ScriptDir%

;-- Magnifier
!Alt:: sendinput #{NumpadAdd} ;zoom in
+WheelDown:: sendinput #{NumpadSub} ;zoom out
F7:: ;toggle Magnifier visibility
if magmin=0
{
WinMinimize, ahk_class MagUIClass
WinHide, ahk_class MagUIClass
magmin=1
}
else
{
WinShow, ahk_class MagUIClass
magmin=0
}
return

How to expand more resolution support

我一般使用 1920 X 1440 分辨率进行游戏 但是现在并没有该分辨率的支持
是否能简单解释一下 如何进行不同分辨率下的像素标记

I generally use 1920 X 1440 resolution to play games, but there is no support for this resolution now.
Can you explain how to mark pixels at different resolutions

This will help you develop over the script in the future.

You can do pixel recognition in the new version of the script for the regular version of the weapon from.Care Package. For example, Spitfire or Alternator or G7 will return to earth sometime in the future and their color will change from red. This will help you develop over the script in the future.

Pattern generator

https://github.com/CharlesDankoff/ultra_secret_scripts

see pattern_generator.py
edit with notepad++ to your sens and your modifier

  • stand as far away from wall in apex as you can while still seeing impacts from bullets
  • unload bullets into wall
  • return ads to original position and screenshot
  • open paint and zoom 2x to get the spray pattern enlarged
  • use pattern_generator.py created by CharlesDankoff
  • f4 to activate then click all the impact marks
  • f10 to save the tracked_pattern.txt
  • convert the X.XXXXXXXXXXX into X.X and script layout

Sorry, Im new to Github idk where to place something like this, but I saw you two were unaware.

Python-Build | Add Jitter Shot

I've been trying to get the Jitter Shot right on Apex but it seems the weapons are hard-limited on their individual fire-rate. What is possible however is consistently shooting on that fire-rate limit. Switching weapons to single-shot also makes handling recoil way easier. I built a quick POC and it looks promising. I think the feature already exists in the AHK script, this is just adding the functionality to the Python program.

The approach:

  • Either run one config for all weapons and just give it a big enough loop-count so that it finishes the magazine.
    OR
  • Build individual configs for each weapon, some weapons don't really have much improvement so it may have a smaller support base.

POC Testing:

Video

For those who don't use single fire mode

For those who don't use single fire mode like me

#NoEnv
SetWorkingDir %A_ScriptDir%
#SingleInstance force
#MaxThreadsBuffer on
SetTitleMatchMode, 2
;#IfWinActive r5apex.exe
SetBatchLines -1
#MaxHotkeysPerInterval 99000000
#HotkeyInterval 99000000
#KeyHistory 0
ListLines Off
SetKeyDelay, -1, -1
SetMouseDelay, -1
SetDefaultMouseSpeed, 0
SetWinDelay, -1
if not A_IsAdmin {
Run *RunAs "%A_ScriptFullPath%"
ExitApp
}
; read settings.ini
GoSub, IniRead

; mouse sensitivity setting
modifier:=2.50/sens

; weapon detect
global current_weapon_type := DEFAULT_WEAPON_TYPE
global has_turbocharger := false

; weapon type constant
global WEAPON_NAME = ["DEFAULT", "R99", "R301", "FLATLINE", "SPITFIRE", "LSTAR", "DEVOTION", "PROWLER", "HAVOC", "ALTERNATOR", "G7", "P2020", "RE45", "3030", "wingman", "HEMLOK", "PROWLER", "RAMPAGE"]
global DEFAULT_WEAPON_TYPE := 0
global R99_WEAPON_TYPE := 1
global R301_WEAPON_TYPE := 2
global FLATLINE_WEAPON_TYPE := 3
global SPITFIRE_WEAPON_TYPE := 4
global LSTAR_WEAPON_TYPE := 5
global DEVOTION_WEAPON_TYPE := 6
global VOLT_WEAPON_TYPE := 7
global HAVOC_WEAPON_TYPE := 8
global ALTERNATOR_WEAPON_TYPE := 9
global G7_WEAPON_TYPE := 10
global P2020_WEAPON_TYPE := 11
global RE45_WEAPON_TYPE := 12
global 3030_WEAPON_TYPE := 13
global wingman_WEAPON_TYPE := 14
global HEMLOK_WEAPON_TYPE := 15
global PROWLER_WEAPON_TYPE := 16
global RAMPAGE_WEAPON_TYPE := 17

; x, y pos for weapon1 and weapon 2
global WEAPON_1_PIXELS = [1521, 1038]
global WEAPON_2_PIXELS = [1824, 1036]
; weapon color
global LIGHT_WEAPON_COLOR = 0x2D547D
global HEAVY_WEAPON_COLOR = 0x596B38
global ENERGY_WEAPON_COLOR = 0x286E5A
global SUPPY_DROP_COLOR = 0x3701B2

; three x, y check point, true means 0xFFFFFFFF
; light weapon
global R99_PIXELS := [1606, 986, true, 1671, 974, false, 1641, 1004, true]
global R301_PIXELS := [1655, 976, false, 1683, 968, true, 1692, 974, true]
global ALTERNATOR_PIXELS := [1649, 1006, true, 1646, 977, false, 1661, 983, true]
global G7_PIXELS := [1568, 969, true, 1639, 997, false, 1705, 976, true]
global P2020_PIXELS := [1603, 968, true, 1650, 1008, true, 1639, 978, false]
global RE45_PIXELS := [1603, 972, true, 1663, 1015, true, 1664, 973, false]
; heavy weapon
global FLATLINE_PIXELS := [1651, 985, false, 1575, 980, true, 1586, 984, true]
global SPITFIRE_PIXELS := [1693, 972, true, 1652, 989, true, 1645, 962, true]
global 3030_PIXELS := [1552, 970, true, 1680, 992, false, 1715, 974, true]
global wingman_PIXELS := [1598, 971, true, 1662, 989, false, 1664, 974, true]
global HEMLOK_PIXELS := [1583, 968, true, 1640, 1002, false, 1689, 986, true]
global PROWLER_PIXELS := [1604, 977, true, 1626, 983, false, 1637, 966, true]
global RAMPAGE_PIXELS := [1562, 988, true, 1645, 983, false, 1692, 981, true]
; energy weapon
global LSTAR_PIXELS := [1663, 968, true, 1580, 995, true, 1641, 988, false]
global DEVOTION_PIXELS := [1700, 971, true, 1662, 980, false, 1561, 972, true]
global VOLT_PIXELS := [1644, 981, false, 1585, 976, true, 1680, 971, true]
global HAVOC_PIXELS := [1656, 996, true, 1658, 985, false, 1637, 962, true]
; Turbocharger
global HAVOC_TURBOCHARGER_PIXELS := [1621, 1006]
global DEVOTION_TURBOCHARGER_PIXELS := [1650, 1007]
; hemlok single shot
global single_file_mode := false
global SINGLESHOT_PIXELS := [1715, 1015]

; tips setting
global hint_method
if (script_version = "narrator")
hint_method:="Say"
else if (script_version = "tooltip")
hint_method:="Tooltip"

; voice setting
SAPI.voice := SAPI.GetVoices().Item(1) ; uncomment this line to get female voice.
SAPI:=ComObjCreate("SAPI.SpVoice")
SAPI.rate:=rate
SAPI.volume:=volume

; light weapon pattern
global R99_PATTERN := [[-1.6, 7, 53], [0.1, 7.5, 53], [2.3, 4.9, 53], [-1.8, 10, 53], [-3.3, 15.4, 53]
, [-6.3, 12, 53], [-5.5, 9.7, 53], [-2.5, 10.8, 53], [0.2, 11, 52], [2.3, 6.8, 52]
, [4.5, 5.3, 52], [0.9, 5.1, 52], [1.6, 9.5, 52], [-1.1, 5, 52], [-4.9, 5, 52]
, [-2.3, 5, 52], [-4.5, 5, 52], [4, 1.3, 52], [0, 0, 52], [2.5, 0.7, 52]
, [3.5, 0.7, 52], [4, 4, 52], [3.5, 0, 52], [4.6, 0, 52], [2, 0, 52]
, [2, 0, 52], [-5, -4, 52], [-5, 4, 52], [-5, -4, 52], [0, 4, 52]]
global R301_PATTERN := [[-3.5, 10.4, 80], [4.4, 10.6, 80], [-6.4, 9.5, 80], [-1.2, 10.0, 80], [-5.3, 7.6, 80]
, [-0.4, 4.1, 80], [-1.8, 3.3, 80], [-4.1, 1.9, 80], [-2.4, 3.3, 80], [-3.2, 1.0, 80]
, [0.0, 3.3, 80], [2.0, 2.2, 80], [5.0, 2.8, 80], [4.7, 2.3, 80], [5.0, 1.9, 80]
, [5.2, 0.9, 80], [3.2, 0.9, 80], [0.0, 2.2, 80], [-1.1, 4.2, 80], [-3.1, 2.8, 80]
, [-3.6, 1.3, 80], [-3.6, 0.0, 80], [-2.6, 1.4, 80], [-2.4, 1.4, 80], [-3.0, 0.0, 80]
, [0.0, 0.0, 80], [0.0, 0.0, 80], [0.0, 0.0, 80], [0.0, 0.0, 80], [0.0, 0.0, 80]]
global ALTERNATOR_PATTERN := [[0.0, 14.4, 109], [0.0, 13.0, 109], [0.0, 15.8, 109], [0.0, 13.9, 109], [0.0, 15.6, 109]
, [0.0, 15.6, 109], [-2.0, 12.7, 109], [-2.0, 7.3, 109], [-3.0, 13.2, 109], [-3.0, 6.6, 109]
, [-3.0, 9.8, 109], [-2.0, 1.2, 109], [-2.0, 6.8, 109], [-2.0, 4.6, 109], [-1.0, 10.0, 109]
, [0.0, 9.3, 109], [5.0, 3.2, 109], [5.0, 9.8, 109], [5.0, 0.7, 109], [5.0, 8.3, 109]
, [5.0, -0.2, 109], [5.0, 7.1, 109], [5.0, 1.7, 109], [5.0, 7.6, 109], [5.0, -0.7, 109]
, [5.0, 6.8, 109], [5.0, 0.0, 109]]
global G7_PATTERN := [[0, 5, 60]]
global P2020_PATTERN := [[0, 6, 60]]
global RE45_PATTERN := [[-5, 12, 72], [-5, 12, 72], [-5, 12, 72], [-5, 8, 72], [-5, 8, 72]
, [-5, 5, 72], [-5, 5, 72], [-5, 5, 72], [-5, 5, 72], [-5, 5, 72]
, [-5, 5, 72], [-5, 5, 72], [-5, 5, 72], [-4, 5, 72], [-4, 5, 72]
, [-4, 6, 72], [-4, 6, 72], [-4, 6, 72], [-4, 6, 72], [-4, 6, 72]
, [-4, 6, 72], [-4, 6, 72], [-4, 6, 72], [-4, 6, 72], [-4, 6, 72]]
; energy weapon interval and PATTERN
global LSTAR_PATTERN := [[5, 5, 37], [5, 5, 37], [5, 5, 37], [5, 5, 37], [5, 5, 37]
, [5, 5, 37], [2, 5, 37], [2, 5, 37], [2, 5, 37], [1, 2, 37]
, [1, 2, 37], [-2, 2, 37], [-2, 2, 32], [-2, 2, 32], [-2, 5, 32]
, [-2, 5, 42], [-2, 5, 42], [-2, 5, 42], [-2, 5, 42], [-2, 5, 42]
, [-2, 5, 42], [-2, 5, 42], [-2, 5, 55], [-1, 5, 55], [-1, 5, 55]
, [-1, 5, 55], [-1, 5, 55], [-1, 5, 60], [-1, 5, 60], [-1, 5, 60]
, [-1, 5, 60], [-1, 5, 60], [-1, 5, 60], [1, 5, 65], [1, 5, 65]
, [1, 5, 65], [1, 5, 65], [1, 5, 65], [1, 5, 65], [0, 5, 65]
, [0, 5, 65], [0, 5, 65], [0, 5, 65], [0, 5, 65], [0, 5, 65]]
global DEVOTION_PATTERN := [[5, 25, 100], [5, 25, 100], [5, 25, 100], [0, 20, 100], [0, 20, 100]
, [8, 15, 100], [8, 15, 100], [8, 15, 100], [8, 15, 100], [8, 15, 100]
, [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100], [-10, 5, 100]
, [-10, 5, 100], [-10, 10, 100], [-10, 5, 100], [-10, 5, 100], [-10, 5, 100]
, [-15, 5, 100], [-15, 5, 100], [-8, 5, 100], [-8, 5, 100], [-8, 5, 100]
, [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100]
, [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100]]
global TURBODEVOTION_PATTERN := [[5, 25, 100], [5, 25, 100], [5, 25, 100], [0, 20, 100], [0, 20, 100]
, [8, 15, 100], [8, 15, 100], [8, 15, 100], [8, 15, 100], [8, 15, 100]
, [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100], [-10, 5, 100]
, [-10, 5, 100], [-10, 10, 100], [-10, 5, 100], [-10, 5, 100], [-10, 5, 100]
, [-15, 5, 100], [-15, 5, 100], [-8, 5, 100], [-8, 5, 100], [-8, 5, 100]
, [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100]
, [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100], [8, 5, 100]]
global VOLT_PATTERN := [[-2, 16, 83], [-2, 16, 83], [-2, 16, 83], [-2, 16, 83], [-2, 10, 83]
, [-2, 8, 83], [-2, 6, 83], [-4, 8, 83], [4, 8, 83], [6, 8, 83]
, [8, 0, 83], [8, 0, 83], [8, 2, 83], [8, 2, 83], [-4, 4, 83]
, [-4, 4, 83], [-4, 4, 83], [-4, 4, 83], [4, 2, 83], [4, 2, 83]
, [4, 2, 83], [4, 2, 83] ,[0, 2, 83] , [0, 2, 83] , [0, 2, 83]
,[0, 2, 83] , [0, 2, 83] , [0, 2, 83]]
global HAVOC_PATTERN := [[-6, 10, 89], [-6, 10, 89], [-6, 12, 89], [0, 12, 89], [0, 12, 89]
, [4, 10, 89], [4, 10, 89], [4, 10, 89], [4, 10, 89], [-4, 4, 89]
, [-4, 2, 89], [-4, 2, 89], [-4, 2, 89], [-4, 2, 89], [-2, 4, 89]
, [4, 4, 89], [4, 4, 89], [4, 4, 89], [4, 4, 89], [4, 4, 89]
, [4, 4, 89], [4, 4, 89], [4, 6, 89], [4, 6, 89], [4, 6, 89]
, [4, 9, 89], [4, 9, 89], [4, 9, 89], [4, 9, 89], [4, 9, 89]
, [0, 9, 89], [0, 9, 89], [0, 9, 89], [0, 9, 89], [0, 9, 89]
, [0, 9, 89], [0, 9, 89]]
; heavy weapon interval and PATTERN
global SPITFIRE_PATTERN := [[3.0, 18.2, 110], [1.5, 4.8, 110], [9.6, 9.6, 110], [6.3, 7.0, 110], [3.3, 6.2, 110]
, [-0.3, 9.2, 110], [-4.5, 2.6, 110], [-9.6, -2.0, 110], [-2.7, -1.6, 110], [-3.9, 3.2, 110]
, [-2.7, 6.6, 110], [4.5, 2.0, 110], [9.9, 4.4, 110], [5.1, 1.4, 110], [9.6, -1.6, 110]
, [4.2, 1.4, 110], [1.8, 7.8, 110], [3.3, 7.6, 110], [6.9, 4.4, 110], [9.0, 1.8, 110]
, [3.9, 0.6, 113], [-1.2, 5, 113], [-6.9, 2.5, 113], [-4.5, 2, 113], [-7.8, 2.2, 113]
, [-8.1, 1, 113], [-7.8, -1, 113], [-3.3, 3.6, 113], [-4.5, 4.2, 113], [-0.3, 4.2, 113]
, [-9.6, -2.0, 113], [-2.7, -1.6, 113], [-3.9, 2.2, 113], [-2.6, 3, 113], [4.5, 1.5, 113]
, [9.9, 3.4, 113], [5.1, 1.4, 113], [9.6, -1.6, 113], [4.2, 1.4, 113], [1.8, 7.8, 113]
, [3.3, 7.6, 113], [6.9, 4.4, 113], [9.0, 1.8, 113], [3.9, 0.6, 113], [-1.2, 5.6, 113]
, [-6.9, 3.2, 113], [-4.5, 2.6, 113], [-7.8, 3.2, 113], [-8.1, 2.0, 113], [-7.8, -2.0, 113]
, [-3.3, 4.6, 113], [-4.5, 6.2, 113], [-0.3, 6.2, 113], [-9.6, -2.0, 113], [-2.7, -1.6, 113]
, [-3.9, 3.2, 113], [-2.7, 6.6, 113], [4.5, 2.0, 113], [9.9, 4.4, 113], [5.1, 1.4, 113]
, [9.6, -1.6, 113]]
global FLATLINE_PATTERN := [[3.0, 15.2, 110], [1.5, 5.3, 110], [9.6, 10.1, 110], [6.3, 7.5, 110], [3.3, 9.7, 110]
, [-1.3, 9.7, 110], [-4.5, 2.6, 110], [-10.6, -2.0, 110], [-2.7, -1.3, 110], [-3.9, 3.5, 110]
, [-1.7, 6.6, 110], [4.5, 2.0, 110], [9.9, 4.4, 110], [5.1, 1.9, 110], [9.6, -1.6, 110]
, [4.2, 2.1, 110], [1.8, 8.3, 110], [3.3, 8.1, 110], [6.9, 4.9, 110], [9.0, 2.3, 110]
, [3.9, 0.6, 113], [-1.2, 5, 113], [-7.9, 2.5, 113], [-5.5, 2, 113], [-8.8, 2.2, 113]
, [-9.1, 1.5, 113], [-8.8, 1, 113]]
global 3030_PATTERN := [[0, 2, 60]]
global HEMLOK_PATTERN := [[2, 3, 40]]
global wingman_PATTERN := [[0, 5, 60]]
global PROWLER_PATTERN := [[3, 6, 60]]
global RAMPAGE_PATTERN := [[0, 14, 200], [0, 14, 200], [0, 14, 200], [0, 6, 200], [0, 6, 200]
, [0, 8, 200], [0, 8, 200], [0, 8, 200], [0, 6, 200], [0, 6, 200]
, [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200]
, [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200]
, [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200]
, [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200]
, [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200], [0, 6, 200]
, [0, 5, 200], [0, 5, 200], [0, 5, 200], [0, 5, 200], [0, 5, 200]]

; check whether the current weapon match the weapon pixels
check_weapon(weapon_pixels) {
target_color := 0xFFFFFF
i := 1
loop, 3 {
PixelGetColor, check_point_color, weapon_pixels[i], weapon_pixels[i + 1]
if (weapon_pixels[i + 2] != (check_point_color == target_color)) {
return False
}
i := i + 3
}
return True
}

check_single_file_mode() {
target_color := 0xFFFFFF
PixelGetColor, check_point_color, SINGLESHOT_PIXELS[1], SINGLESHOT_PIXELS[2]
if (check_point_color == target_color) {
return true
}
return false
}

check_turbocharger(turbocharger_pixels) {
target_color := 0xFFFFFF
PixelGetColor, check_point_color, turbocharger_pixels[1], turbocharger_pixels[2]
if (check_point_color == target_color) {
return true
}
return false
}

detect_weapon() {
; first check which weapon is activate
check_point_color := 0
PixelGetColor, check_weapon1_color, WEAPON_1_PIXELS[1], WEAPON_1_PIXELS[2]
PixelGetColor, check_weapon2_color, WEAPON_2_PIXELS[1], WEAPON_2_PIXELS[2]
if (check_weapon1_color == LIGHT_WEAPON_COLOR || check_weapon1_color == HEAVY_WEAPON_COLOR || check_weapon1_color == ENERGY_WEAPON_COLOR || check_weapon1_color == SUPPY_DROP_COLOR) {
check_point_color := check_weapon1_color
} else if (check_weapon2_color == LIGHT_WEAPON_COLOR || check_weapon2_color == HEAVY_WEAPON_COLOR || check_weapon2_color == ENERGY_WEAPON_COLOR || check_weapon2_color == SUPPY_DROP_COLOR) {
check_point_color := check_weapon2_color
} else {
return DEFAULT_WEAPON_TYPE
}
; then check the weapon type
if (check_point_color == LIGHT_WEAPON_COLOR) {
if (check_weapon(R301_PIXELS)) {
return R301_WEAPON_TYPE
} else if (check_weapon(R99_PIXELS)) {
return R99_WEAPON_TYPE
} else if (check_weapon(ALTERNATOR_PIXELS)) {
return ALTERNATOR_WEAPON_TYPE
} else if (check_weapon(G7_PIXELS)) {
return G7_WEAPON_TYPE
} else if (check_weapon(P2020_PIXELS)) {
return P2020_WEAPON_TYPE
} else if (check_weapon(RE45_PIXELS)) {
return RE45_WEAPON_TYPE
}
} else if (check_point_color == HEAVY_WEAPON_COLOR) {
if (check_weapon(FLATLINE_PIXELS)) {
return FLATLINE_WEAPON_TYPE
} else if (check_weapon(SPITFIRE_PIXELS)) {
return SPITFIRE_WEAPON_TYPE
} else if (check_weapon(3030_PIXELS)) {
return 3030_WEAPON_TYPE
} else if (check_weapon(wingman_PIXELS)) {
return wingman_WEAPON_TYPE
} else if (check_weapon(HEMLOK_PIXELS)) {
return HEMLOK_WEAPON_TYPE
} else if (check_weapon(PROWLER_PIXELS)) {
return PROWLER_WEAPON_TYPE
} else if (check_weapon(RAMPAGE_PIXELS)) {
return RAMPAGE_WEAPON_TYPE
}
} else if (check_point_color == ENERGY_WEAPON_COLOR) {
if (check_weapon(LSTAR_PIXELS)) {
return LSTAR_WEAPON_TYPE
} else if (check_weapon(DEVOTION_PIXELS)) {
return DEVOTION_WEAPON_TYPE
} else if (check_weapon(VOLT_PIXELS)) {
return VOLT_WEAPON_TYPE
} else if (check_weapon(HAVOC_PIXELS)) {
return HAVOC_WEAPON_TYPE
}
} else if (check_point_color == SUPPY_DROP_COLOR) {
if (check_weapon(SPITFIRE_PIXELS)) {
return SPITFIRE_WEAPON_TYPE
} else if (check_weapon(ALTERNATOR_PIXELS)) {
return ALTERNATOR_WEAPON_TYPE
}
}
return DEFAULT_WEAPON_TYPE
}

detectAndSetWeapon() {
sleep 500
current_weapon_type := detect_weapon()
single_file_mode := check_single_file_mode()
; set turbocharger
if (current_weapon_type == DEVOTION_WEAPON_TYPE)
has_turbocharger := check_turbocharger(DEVOTION_TURBOCHARGER_PIXELS)
else if (current_weapon_type == HAVOC_WEAPON_TYPE)
has_turbocharger := check_turbocharger(HAVOC_TURBOCHARGER_PIXELS)
else
has_turbocharger := false
; %hint_method%(WEAPON_NAME[current_weapon_type + 1])
}

~E Up::
detectAndSetWeapon()
return

~1::
detectAndSetWeapon()
return

~2::
detectAndSetWeapon()
return

~B::
detectAndSetWeapon()
return

~$*LButton::
if (GetKeyState("RButton")) {
i := 1
if (current_weapon_type == R99_WEAPON_TYPE) {
pattern := R99_PATTERN
} else if (current_weapon_type == R301_WEAPON_TYPE) {
pattern := R301_PATTERN
} else if (current_weapon_type == ALTERNATOR_WEAPON_TYPE) {
pattern := ALTERNATOR_PATTERN
} else if (current_weapon_type == G7_WEAPON_TYPE) {
pattern := G7_PATTERN
} else if (current_weapon_type == P2020_WEAPON_TYPE) {
pattern := P2020_PATTERN
} else if (current_weapon_type == RE45_WEAPON_TYPE) {
pattern := RE45_PATTERN
} else if (current_weapon_type == 3030_WEAPON_TYPE) {
pattern := 3030_PATTERN
} else if (current_weapon_type == PROWLER_WEAPON_TYPE) {
pattern := PROWLER_PATTERN
} else if (current_weapon_type == RAMPAGE_WEAPON_TYPE) {
pattern := RAMPAGE_PATTERN
} else if (current_weapon_type == wingman_WEAPON_TYPE) {
pattern := wingman_PATTERN
} else if (current_weapon_type == SPITFIRE_WEAPON_TYPE) {
pattern := SPITFIRE_PATTERN
} else if (current_weapon_type == FLATLINE_WEAPON_TYPE) {
pattern := FLATLINE_PATTERN
} else if (current_weapon_type == LSTAR_WEAPON_TYPE) {
pattern := LSTAR_PATTERN
} else if (current_weapon_type == VOLT_WEAPON_TYPE) {
pattern := VOLT_PATTERN
} else if (current_weapon_type == HAVOC_WEAPON_TYPE) {
pattern := HAVOC_PATTERN
if (!has_turbocharger)
sleep 300
} else if (current_weapon_type == DEVOTION_WEAPON_TYPE) {
pattern := DEVOTION_PATTERN
if (has_turbocharger) {
pattern := TURBODEVOTION_PATTERN
}
} else if (current_weapon_type == PROWLER_WEAPON_TYPE) {
pattern := PROWLER_PATTERN
} else if (current_weapon_type == HEMLOK_WEAPON_TYPE) {
pattern := HEMLOK_PATTERN
} else {
return
}
Loop
{
x := pattern[i][1]
y := pattern[i][2]
interval := pattern[i][3]
if (single_file_mode) {
if (current_weapon_type == HEMLOK_WEAPON_TYPE || current_weapon_type == PROWLER_WEAPON_TYPE || current_weapon_type == G7_WEAPON_TYPE || current_weapon_type == P2020_WEAPON_TYPE || current_weapon_type == 3030_WEAPON_TYPE || current_weapon_type == wingman_WEAPON_TYPE) {
GetKeyState, LButton, LButton, P
if LButton = U
Break
DllCall("mouse_event", uint, 0x01, uint, x * modifier, uint, y * modifier)
Random, rand, 1, 10
sleep interval + rand
MouseClick, Left,,, 1
} else {
return
}
} else {
if (!GetKeyState("LButton") || i > pattern.Length()) {
DllCall("mouse_event", uint, 4, int, 0, int, 0, uint, 0, int, 0)
break
}
DllCall("mouse_event", uint, 0x01, uint, x * modifier, uint, y * modifier)
sleep interval
i += 1
}
}
}
return

IniRead:
IfNotExist, settings.ini
{
MsgBox, Couldn't find settings.ini. I'll create one for you.
IniWrite, "5.0", settings.ini, mouse settings, sens
IniWrite, "1.0"n, settings.ini, mouse settings, zoom_sens IniWrite, "80", settings.ini, voice settings, volume IniWrite, "7"n, settings.ini, voice settings, rate
IniWrite, "narrator", settings.ini, script configs, script_version
IniRead, script_name, settings.ini, script configs, script_name
IniWrite, "apexmaster.ahk"n, settings.ini, script configs, script_name ; IniWrite, "apexmaster.exe"n, settings.ini, script configs, script_name
IniWrite, "", settings.ini, window position, gui_position
IniRead, script_name, settings.ini, script configs, script_name
Run, %script_name%
}
Else {
IniRead, sens, settings.ini, mouse settings, sens
IniRead, zoom_sens, settings.ini, mouse settings, zoom_sens
IniRead, volume, settings.ini, voice settings, volume
IniRead, rate, settings.ini, voice settings, rate
IniRead, script_version, settings.ini, script configs, script_version
}
return

activeMonitorInfo(ByRef X, ByRef Y, ByRef Width, ByRef Height) {
CoordMode, Mouse, Screen
MouseGetPos, mouseX, mouseY
SysGet, monCount, MonitorCount
Loop %monCount% {
SysGet, curMon, Monitor, %a_index%
if ( mouseX >= curMonLeft and mouseX <= curMonRight and mouseY >= curMonTop and mouseY <= curMonBottom ) {
X := curMonTop
y := curMonLeft
Height := curMonBottom - curMonTop
Width := curMonRight - curMonLeft
return
}
}
}

Say(text) {
global SAPI
SAPI.Speak(text, 1)
sleep 150
return
}

Tooltip(Text) {
activeMonitorInfo(X, Y, Width, Height)
xPos := Width / 2 - 50
yPos := Height / 2 + (Height / 10)
Tooltip, %Text%, xPos, yPos
SetTimer, RemoveTooltip, 500
return
RemoveTooltip:
SetTimer, RemoveTooltip, Off
Tooltip
return
}

Ban investigation

First is fist, special thanks to mgsweet for this incredible tool and I'm a big fan of your work. Then myself used the tool for couple of days with no problem's. 1.2.4 version. I saw some of users reported that they got banned. we need to see if this manual ban or anti cheap ban. Therefore who ever got banned need to report his ban and how possibly he got it. Like abusing the tool with high DMG and KILLS or spoke about it with random player or just was too obvious that he running the tool. Then after we might come to conclusion why there is a ban. Thanks all for your time.

Golden Optics Aimbot | High-Level Documentation [Python Build Update]

Hey @mgsweet

I'm really interested in the golden optics aimbot feature you implemented on the AHK Project. I've done some quick reads around the project and it seemed to have worked better than expected, kudos for the implementation. If possible could you please give me a high-level explanation of the following, you don't need to get into the nitty-gritty of how it works, just a plain explanation:

  1. Your detection strategy
  2. The post player detection action that was applied
  3. Your thoughts on what could have lead to the recent bans

In asking the above, I'd prefer to just have a better high-level overview of the feature than to get into the weeds with AHK using time I do not have. Hopefully leading us to improve it and make it safer for players in future updates.

How to run the script safely?

This script is awesome and works great but just know that any account you use it with will get banned in about 24 hours

What's an effective way of finding the correct 3 pixels?

Hi,

Not sure if this is the right place to put this im not a git hub user.

I've been playing around to get 1440p to work with your code... (I'm no developer). All I did was increase the pixel values by 33.333% which works for all the weapons apart from the p2020 or the R99. What's an effective way of finding the correct 3 pixels?

Happy to share with you the changes if you want to post a working 1440p version.

DNBR

Recoil Patterns

Can someone help me try the following patterns (copy from other's code, and need to thansfer to the way my code need)?

r301_pattern := {1: "-3.5,10.4,80", 2: "4.4,10.6,80", 3: "-6.4,9.5,80"
,4: "-1.2,10.0,80", 5: "-5.3,7.6,80", 6: "-0.4,4.1,80"
,7: "-1.8,3.3,80", 8: "-4.1,1.9,80", 9: "-2.4,3.3,80"
,10: "-3.2,1.0,80", 11: "0.0,3.3,80", 12: "2.0,2.2,80"
,13: "5.0,2.8,80", 14: "4.7,2.3,80", 15: "5.0,1.9,80"
,16: "5.2,0.9,80", 17: "3.2,0.9,80", 18: "0.0,2.2,80"
,19: "-1.1,4.2,80", 20: "-3.1,2.8,80", 21: "-3.6,1.3,80"
,22: "-3.6,0.0,80", 23: "-2.6,1.4,80", 24: "-2.4,1.4,80"
,25: "-3.0,0.0,80", 26: "0.0,0.0,80", 27: "0.0,0.0,80"
,28: "0.0,0.0,80", 29: "0.0,0.0,80", 30: "0.0,0.0,80"}

r99_pattern := {1: "-1.6,7,53", 2: "0.1,7.5,53", 3: "2.3,4.9,53"
,4: "-1.8,10,53", 5: "-3.3,15.4,53", 6: "-6.3,12,53"
,7: "-5.5,9.7,53", 8: "-2.5,10.8,53", 9: "0.2,11,52"
,10: "2.3,6.8,52", 11: "4.5,5.3,52", 12: "0.9,5.1,52"
,13: "1.6,9.5,52", 14: "-1.1,4,52", 15: "-4.9,1,52"
,16: "-2.3,1.8,52", 17: "-4.5,0.5,52", 18: "4,1.3,52"
,19: "0,0,52", 20: "2.5,0.7,52", 21: "3.5,0.7,52"
,22: "4,4,52", 23: "3.5,0,52", 24: "4.6,0,52"
,25: "2,0,52", 26: "2,0,52", 27: "-5,-4,52"
,28: "-5,4,52", 29: "-5,-4,52", 30: "0,4,52"}

alternator_pattern := {1: "0.0,14.4,109", 2: "0.0,13.0,109", 3: "0.0,15.8,109"
,4: "0.0,13.9,109", 5: "0.0,15.6,109", 6: "0.0,15.6,109"
,7: "-2.0,12.7,109", 8: "-2.0,7.3,109", 9: "-3.0,13.2,109"
,10: "-3.0,6.6,109", 11: "-3.0,9.8,109", 12: "-2.0,1.2,109"
,13: "-2.0,6.8,109", 14: "-2.0,4.6,109", 15: "-1.0,10.0,109"
,16: "0.0,9.3,109", 17: "5.0,3.2,109", 18: "5.0,9.8,109"
,19: "5.0,0.7,109", 20: "5.0,8.3,109", 21: "5.0,-0.2,109"
,22: "5.0,7.1,109", 23: "5.0,1.7,109", 24: "5.0,7.6,109"
,25: "5.0,-0.7,109", 26: "5.0,6.8,109", 27: "5.0,0.0,109"}

re45_pattern := {1: "-0.7,12.6,112", 2: "-1.4,10.9,112", 3: "-6.1,11.2,112"
,4: "-3.0,11.6,112", 5: "-4.1,9.9,112", 6: "-5.7,8.0,112"
,7: "-5.9,7.1,112", 8: "-7.7,6.9,112", 9: "-7.2,6.2,112"
,10: "-6.7,5.0,112", 11: "-4.7,5.1,112", 12: "1.0,6.4,112"
,13: "-5.7,5.7,112", 14: "-3.4,5.1,112", 15: "-2.4,6.4,112"
,16: "2.4,5.7,112", 17: "-3.1,4.7,142", 18: "0,1.3,142"
,19: "0,3.4,147", 20: "0,4.1,147", 21: "0,2.4,147"
,22: "0,4.1,147", 23: "0,0.0,147"}

spitfire_pattern := {1: "3.0,18.2,110", 2: "1.5,4.8,110", 3: "9.6,9.6,110", 4: "6.3,7.0,110"
,5: "3.3,6.2,110", 6: "-0.3,9.2,110", 7: "-4.5,2.6,110", 8: "-9.6,-2.0,110"
,9: "-2.7,-1.6,110", 10: "-3.9,3.2,110", 11: "-2.7,6.6,110", 12: "4.5,2.0,110"
,13: "9.9,4.4,110", 14: "5.1,1.4,110", 15: "9.6,-1.6,110", 16: "4.2,1.4,110"
,17: "1.8,7.8,110", 18: "3.3,7.6,110", 19: "6.9,4.4,110", 20: "9.0,1.8,110"
,21: "3.9,0.6,113", 22: "-1.2,5,113", 23: "-6.9,2.5,113", 24: "-4.5,2,113"
,25: "-7.8,2.2,113", 26: "-8.1,1,113", 27: "-7.8,-1,113", 28: "-3.3,3.6,113"
,29: "-4.5,4.2,113", 30: "-0.3,4.2,113", 31: "-9.6,-2.0,113", 32: "-2.7,-1.6,113"
,33: "-3.9,2.2,113", 34: "-2.6,3,113", 35: "4.5,1.5,113", 36: "9.9,3.4,113"
,37: "5.1,1.4,113", 38: "9.6,-1.6,113", 39: "4.2,1.4,113", 40: "1.8,7.8,113"
,41: "3.3,7.6,113", 42: "6.9,4.4,113", 43: "9.0,1.8,113", 44: "3.9,0.6,113"
,45: "-1.2,5.6,113", 46: "-6.9,3.2,113", 47: "-4.5,2.6,113", 48: "-7.8,3.2,113"
,49: "-8.1,2.0,113", 50: "-7.8,-2.0,113", 51: "-3.3,4.6,113", 52: "-4.5,6.2,113"
,53: "-0.3,6.2,113", 54: "-9.6,-2.0,113", 55: "-2.7,-1.6,113", 56: "-3.9,3.2,113"
,57: "-2.7,6.6,113", 58: "4.5,2.0,113", 59: "9.9,4.4,113", 60: "5.1,1.4,113"
,61: "9.6,-1.6,113"}

prowlerselect_pattern := {1: "2,15.2,120", 2: "2,11.7,120", 3: "2,12.9,120"
,4: "2,12.4,120", 5: "3,9.4,120", 6: "3,10.6,120"
,7: "3,9.0,120", 8: "3,8.5,120", 9: "-2,3.9,120"
,10: "-3,6.0,120", 11: "-3,6.0,120", 12: "-3,6.4,120"
,13: "-3,6.9,120", 14: "-3,3.9,120", 15: "3,7.8,120"
,16: "3,4.8,120", 17: "3,3.7,120", 18: "0,3.9,120"
,19: "0,6.0,120", 20: "0.0,5.3,120", 21: "0.0,0.0,120"}

volt_pattern := {1: "0.0,12.9,81", 2: "0.0,9.5,81", 3: "-1.5,11.3,81"
,4: "-1.7,9.4,81", 5: "-1.7,11.1,81", 6: "-2.5,13.1,81"
,7: "-2.5,9.7,81", 8: "-2,9.8,81", 9: "-2.5,9.2,81"
,10: "-2.0,6.6,81", 11: "1.0,5.8,81", 12: "2.7,1.2,81"
,13: "4.0,6.8,81", 14: "6.0,4,81", 15: "5.0,3.0,81"
,16: "5.0,3.3,81", 17: "0.0,1.2,81", 18: "-2.0,1.8,81"
,19: "-2.0,1.7,81", 20: "-2.0,5.3,81", 21: "3.0,0,81"
,22: "1,0.0,81", 23: "1,7.0,81", 24: "1,0.0,81"
,25: "1,0.0,81", 26: "1,0.0,81", 27: "1,0.0,81"}

scout_pattern := {1: "0,5,60", 2: "0,5,55", 3: "0,5,60"
,4: "0,5,55", 5: "0,5,60", 6: "0,5,60"
,7: "0,5,55", 8: "0,5,60", 9: "0,5,60"
,10: "0,5,55", 11: "0,5,60", 12: "0,5,60"
,13: "0,5,55", 14: "0,5,60", 15: "0,5,60"
,16: "0,5,55", 17: "0,5,60", 18: "0,5,60"
,19: "0,5,55", 20: "0,5,60", 21: "0,5,60"
,22: "0,5,55", 23: "0,5,60", 24: "0,5,60"
,25: "0,5,55", 26: "0,5,60", 27: "0,5,60"
,28: "0,5,55", 29: "0,5,60", 30: "0,5,60"}

hemlok_pattern := {1: "0,0,40", 2: "0,8,40", 3: "0,8,40"
,4: "0,1,50", 5: "0,1,50", 6: "0,1,50"}

lstar_pattern := {1: "5,5,37", 2: "5,5,37", 3: "5,5,37"
,4: "5,5,37", 5: "5,5,37", 6: "5,5,37"
,7: "2,5,37", 8: "2,5,37", 9: "2,5,37"
,10: "1,2,37", 11: "1,2,37", 12: "-2,2,37"
,13: "-2,2,32", 14: "-2,2,32", 15: "-2,5,32"
,16: "-2,5,42", 17: "-2,5,42", 18: "-2,5,42"
,19: "-2,5,42", 20: "-2,5,42", 21: "-2,5,42"
,22: "-2,5,42", 23: "-2,5,55", 24: "-1,5,55"
,25: "-1,5,55", 26: "-1,5,55", 27: "-1,5,55"
,28: "-1,5,60", 29: "-1,5,60", 30: "-1,5,60"
,31: "-1,5,60", 32: "-1,5,60", 33: "-1,5,60"
,34: "1,5,65", 35: "1,5,65", 36: "1,5,65"
,37: "1,5,65", 38: "1,5,65", 39: "1,5,65"
,40: "0,5,65", 41: "0,5,65", 42: "0,5,65"
,43: "0,5,65", 44: "0,5,65", 45: "0,5,65"}

havoc_pattern := {1: "0.0,0.0,460", 2: "-15,14.8,84", 3: "-5,14.9,84"
,4: "5,13.4,84", 5: "5,11.8,84", 6: "5,11.0,84"
,7: "2,11,84", 8: "2,14.1,84", 9: "2,10.1,65"
,10: "-2,5.5,65", 11: "-2.4,5.2,65", 12: "-2.2,5,65"
,13: "-2,1.5,65", 14: "-1,1.2,65", 15: "-1,1,65"
,16: "-1.,1,65", 17: "-1.5,0.8,65", 18: "1.5,0.5,65"
,19: "1.6,0.0,65", 20: "1.8,0.0,65", 21: "1.8,0.0,65"
,22: "1.8,0.0,65", 23: "1.8,0.0,65", 24: "1.8,0.0,65"
,25: "1,5,65", 26: "1.5,5.5,65", 27: "1.8,6,65"
,28: "1.8,7,65", 29: "2.5,8,65", 30: "2.5,10,65"
,31: "2.5,11,65", 32: "2.5,16,65", 33: "2.5,16,65"}

prowler_pattern := {1: "0.0,0.0,10", 2: "-15,12.8,84", 3: "-5,12.9,84"
,4: "0,11.4,84", 5: "3,9.8,84", 6: "4,9.0,84"
,7: "4,9.1,84", 8: "2,12.1,84", 9: "-0.9,12.1,84"
,10: "0,12.1,84", 11: "0,10.3,84", 12: "-2,6.4,84"
,13: "-3.5,5.1,84", 14: "-4.0,3.1,84", 15: "-5.0,2.1,84"
,16: "-5.4,2,83", 17: "-5.4,1.5,83", 18: "-4.0,5.4,83"
,19: "-1.9,5,83", 20: "0,5,84", 21: "0,5,84"
,22: "2.8,5.8,84", 23: "2.0,5.8,84", 24: "0.9,2.8,84"
,25: "-0.9,5.5,84", 26: "-2.0,5.5,84", 27: "0.0,6,84"
,28: "0.0,6.5,84", 29: "0.0,7,84", 30: "0.0,7,84"
,31: "0.0,7,84", 32: "0.0,7,84", 33: "0.0,7,100"}

devotion_pattern := {1: "0.0,0.0,40", 2: "0.8,24.5,180", 3: "0.3,20.0,170"
,4: "0.3,23.5,140", 5: "2.0,23.2,120", 6: "3.1,19.5,100"
,7: "2.8,12.6,85", 8: "2.8,10.6,85", 9: "6.2,4.8,85"
,10: "2.8,6.4,85", 11: "3.1,5.8,68", 12: "4.8,7.1,68"
,13: "5.0,4.4,68", 14: "6.2,2.3,68", 15: "7.6,1.8,68"
,16: "7.0,0.5,68", 17: "4.2,-1.6,68", 18: "6.2,1.6,68"
,19: "-1.4,4.6,68", 20: "0.0,5.3,66", 21: "-3.9,3.9,66"
,22: "-4.5,2.3,66", 23: "-4.5,2.5,66", 24: "-6.7,3.0,66"
,25: "-7.0,3.0,66", 26: "-3.1,3.2,66", 27: "1.7,3.7,66"
,28: "-1.4,4.8,66", 29: "-3.6,4.4,66", 30: "-5.0,3.5,70"
,31: "-6.2,2.1,70", 32: "-5.6,-0.5,70", 33: "-5.6,-0.5,70"
,34: "-4.8,3.7,70", 35: "-4.8,3.7,67", 36: "-0.8,4.1,67"
,37: "-2.8,3.5,67", 38: "2.0,3.5,67", 39: "2.0,3.5,66"
,40: "-1.4,3.7,67", 41: "-1.4,2.8,67", 42: "-3.6,1.6,67"
,43: "-1.4,2.3,67", 44: "0.0,3.0,67", 45: "3.6,1.8,67"}

taabodevotion_pattern := {1: "0.0,0.0,40", 2: "0.8,24.5,140", 3: "0.3,20.0,140"
,4: "0.3,23.5,140", 5: "2.0,23.2,100", 6: "3.1,19.5,100"
,7: "2.8,12.6,100", 8: "2.8,10.6,100", 9: "6.2,4.8,100"
,10: "2.8,6.4,88", 11: "3.1,5.8,88", 12: "4.8,7.1,88"
,13: "5.0,4.4,88", 14: "6.2,2.3,88", 15: "7.6,10.8,86"
,16: "7.0,0.5,86", 17: "4.2,-1.6,86", 18: "6.2,1.6,86"
,19: "-1.4,4.6,86", 20: "0.0,5.3,86", 21: "-3.9,3.9,86"
,22: "-4.5,2.3,86", 23: "-4.5,2.5,86", 24: "-6.7,3.0,86"
,25: "-7.0,3.0,86", 26: "-3.1,3.2,86", 27: "1.7,3.7,86"
,28: "-1.4,4.8,86", 29: "-3.6,4.4,86", 30: "-5.0,3.5,88"
,31: "-6.2,2.1,88", 32: "-5.6,-0.5,88", 33: "-5.6,-0.5,88"
,34: "-4.8,3.7,88", 35: "-4.8,3.7,87", 36: "-0.8,4.1,87"
,37: "-2.8,3.5,87", 38: "2.0,3.5,87", 39: "2.0,3.5,86"
,40: "-1.4,3.7,86", 41: "-1.4,2.8,86", 42: "-3.6,1.6,86"
,43: "-1.4,2.3,86", 44: "0.0,3.0,87", 45: "0.0,0.0,120"}

flatline_pattern := {1: "3.0,15.2,110", 2: "1.5,5.3,110", 3: "9.6,10.1,110", 4: "6.3,7.5,110"
,5: "3.3,9.7,110", 6: "-1.3,9.7,110", 7: "-4.5,2.6,110", 8: "-10.6,-2.0,110"
,9: "-2.7,-1.3,110", 10: "-3.9,3.5,110", 11: "-1.7,6.6,110", 12: "4.5,2.0,110"
,13: "9.9,4.4,110", 14: "5.1,1.9,110", 15: "9.6,-1.6,110", 16: "4.2,2.1,110"
,17: "1.8,8.3,110", 18: "3.3,8.1,110", 19: "6.9,4.9,110", 20: "9.0,2.3,110"
,21: "3.9,0.6,113", 22: "-1.2,5,113", 23: "-7.9,2.5,113", 24: "-5.5,2,113"
,25: "-8.8,2.2,113", 26: "-9.1,1.5,113", 27: "-8.8,1,113"}

About golden optics feature.

You can try to do this function again. You made it as an aimbot. And that's why people could get banned. You can make this function as an aimasist. This means it will be aimed at the target slightly and without sudden movements (like aimasist for ps5 and xbox) This can be done by changing the parameter ColVn := 2 I have been playing with this ahk aimasist since season 2. And my account has never been banned. You can also make this function turn on only after the golden optics on your weapon are detected. This can be done in the same way as weapon recognition via pixelhunt. Only in this case, the script will recognize the yellow pixel on the weapon icon. To be honest, my friends and I didn't get banned for your more powerful script.

init:
#NoEnv
#SingleInstance, Force
#Persistent
#InstallKeybdHook
#UseHook
#KeyHistory, 0
#HotKeyInterval 1
#MaxHotkeysPerInterval 127
version = 1.0
traytip, GamerGuyAHK %version%, Running in background!, 5, 1
Menu, tray, NoStandard
Menu, tray, Tip, Sharpshooter %version%
Menu, tray, Add, Sharpshooter %version%, return
Menu, tray, Add
Menu, tray, Add, Help, info
Menu, tray, Add, Exit, exit
SetKeyDelay,-1, 1
SetControlDelay, -1
SetMouseDelay, -1
SetWinDelay,-1
SendMode, InputThenPlay
SetBatchLines,-1
ListLines, Off
CoordMode, Pixel, Screen, RGB
CoordMode, Mouse, Screen
PID := DllCall("GetCurrentProcessId")
Process, Priority, %PID%, High

EMCol := 0xc33b36,0xc93932
ColVn := 2
AntiShakeX := (A_ScreenHeight // 160)
AntiShakeY := (A_ScreenHeight // 128)
ZeroX := (A_ScreenWidth // 2)
ZeroY := (A_ScreenHeight // 2)
CFovX := (A_ScreenWidth // 8)
CFovY := (A_ScreenHeight // 64)
ScanL := ZeroX - CFovX
ScanT := ZeroY
ScanR := ZeroX + CFovX
ScanB := ZeroY + CFovY
NearAimScanL := ZeroX - AntiShakeX
NearAimScanT := ZeroY - AntiShakeY
NearAimScanR := ZeroX + AntiShakeX
NearAimScanB := ZeroY + AntiShakeY

Loop, {
KeyWait, RButton, D
PixelSearch, AimPixelX, AimPixelY, NearAimScanL, NearAimScanT, NearAimScanR, NearAimScanB, EMCol, ColVn, Fast RGB
if (!ErrorLevel=0) {
loop, 10 {
PixelSearch, AimPixelX, AimPixelY, ScanL, ScanT, ScanR, ScanB, EMCol, ColVn, Fast RGB
AimX := AimPixelX - ZeroX
AimY := AimPixelY - ZeroY
DirX := -1
DirY := -1
If ( AimX > 0 ) {
DirX := 1
}
If ( AimY > 0 ) {
DirY := 1
}
AimOffsetX := AimX * DirX
AimOffsetY := AimY * DirY
MoveX := Floor(( AimOffsetX ** ( 1 / 2 ))) * DirX
MoveY := Floor(( AimOffsetY ** ( 1 / 2 ))) * DirY
DllCall("mouse_event", uint, 1, int, MoveX * 1.5, int, MoveY, uint, 0, int, 0)
}
}
}

Pause:: pause
return:
goto, init

info:
msgbox, 0, Sharpsooter %version%, Made by ANUS RAMMERnOverwatch must be running in borderless windowed mode.nPress pause key to pause this program.nLeft click automatically aims down target near the center of the screen.nRecommended for near distance(~15m) and full-auto weapons.
return

exit:
exitapp

Support for 1366x768?

Its a popular resolution and ive tried to get it working but i cant seem to get to add it myself

How to fit 2560X1440

Nice project! I just want to modify your code to fit 2560X1440. How to modify the pattern to fit successfully?
Thanks!

Unable to connect (code:snake)

so i use your sofware, 1-3 times game is fine, but game by game i got crashed, and try to restart my pc, when im relogin apex, i got unable to connect(code:snake). i try to find out what that code mean. and thats code is for whos palying apex and detected for cheating. thanks

AHK v1.2.4 is released! Comes with a powerful feature.

Release notes

  • support 3030
  • update patterns
  • new feature: gold optics shotgun aimbot

How to use the new feature:

  • Tick the op_gold_optics (Aim asist for gold optics for shotgun.)
  • Go to fire range, pick a shotgun and gold optics.
  • You will find that Mozambique is very OP with this feature.

For Those who tick the op_gold_optics option, I suggest the following setting:
image
The reason is to avoid confusing the pixel search process.

Credit

The idea is from @Igors7999 . Check: #34

CAR Pattern

will be any update for CAR & new package load ?

New SCRIPT FUNCTIONS.

What do you think about adding an aim asist for gold optics for submachine guns? This function can be done in the likeness of the red pixel aimbot script. It works like pixel hunting because golden optics changes the color of enemies completely to red. It is full legit and safe. It doesn't work as an aim bot. It just slowly brings up the red pixels. This script needs more color codes as it won't work because these color codes are wrong. This is just an example of how you can create such a script.

init:
#NoEnv
#SingleInstance, Force
#Persistent
#InstallKeybdHook
#UseHook
#KeyHistory, 0
#HotKeyInterval 1
#MaxHotkeysPerInterval 127
version = 1.0
traytip, GamerGuyAHK %version%, Running in background!, 5, 1
Menu, tray, NoStandard
Menu, tray, Tip, Sharpshooter %version%
Menu, tray, Add, Sharpshooter %version%, return
Menu, tray, Add
Menu, tray, Add, Help, info
Menu, tray, Add, Exit, exit
SetKeyDelay,-1, 1
SetControlDelay, -1
SetMouseDelay, -1
SetWinDelay,-1
SendMode, InputThenPlay
SetBatchLines,-1
ListLines, Off
CoordMode, Pixel, Screen, RGB
CoordMode, Mouse, Screen
PID := DllCall("GetCurrentProcessId")
Process, Priority, %PID%, High

EMCol := 0xc33b36,0xc93932
ColVn := 2
AntiShakeX := (A_ScreenHeight // 160)
AntiShakeY := (A_ScreenHeight // 128)
ZeroX := (A_ScreenWidth // 2)
ZeroY := (A_ScreenHeight // 2)
CFovX := (A_ScreenWidth // 8)
CFovY := (A_ScreenHeight // 64)
ScanL := ZeroX - CFovX
ScanT := ZeroY
ScanR := ZeroX + CFovX
ScanB := ZeroY + CFovY
NearAimScanL := ZeroX - AntiShakeX
NearAimScanT := ZeroY - AntiShakeY
NearAimScanR := ZeroX + AntiShakeX
NearAimScanB := ZeroY + AntiShakeY

Loop, {
KeyWait, RButton, D
PixelSearch, AimPixelX, AimPixelY, NearAimScanL, NearAimScanT, NearAimScanR, NearAimScanB, EMCol, ColVn, Fast RGB
if (!ErrorLevel=0) {
loop, 10 {
PixelSearch, AimPixelX, AimPixelY, ScanL, ScanT, ScanR, ScanB, EMCol, ColVn, Fast RGB
AimX := AimPixelX - ZeroX
AimY := AimPixelY - ZeroY
DirX := -1
DirY := -1
If ( AimX > 0 ) {
DirX := 1
}
If ( AimY > 0 ) {
DirY := 1
}
AimOffsetX := AimX * DirX
AimOffsetY := AimY * DirY
MoveX := Floor(( AimOffsetX ** ( 1 / 2 ))) * DirX
MoveY := Floor(( AimOffsetY ** ( 1 / 2 ))) * DirY
DllCall("mouse_event", uint, 1, int, MoveX * 1.5, int, MoveY, uint, 0, int, 0)
}
}
}

Pause:: pause
return:
goto, init

info:
msgbox, 0, Sharpsooter %version%, Made by ANUS RAMMERnOverwatch must be running in borderless windowed mode.nPress pause key to pause this program.nLeft click automatically aims down target near the center of the screen.nRecommended for near distance(~15m) and full-auto weapons.
return

exit:
exitapp

Color aimbot glitch

When you hit the target, the damage done is shown. The sight is magnified by these numbers. Because of this, the sight goes up. To fix this, you can change just change the color filter in the game settings. (the tritanopia filter is the best of all and many players play with it) But after changing the filter, the script stops recognizing spitfire, ALTERNATOR and G7. Therefore, for these weapons, the patterns without recoil do not work. To fix this, you need to add other pixels for recognition.

2
3

p2020 bug

p2020 recoil pattern isn't contained like the others. If you right click in tab menu, death box, or out of game the script plays the recoil pattern for p2020.

Controller Support

Wonder if that is possible, doesn't sound that complicated but idk, and it would be a very nice addition since recoil on controller is more annoying than on mouse and keyboard.

Script without auto detection

Could you please give me the latest version of the script but without the auto weapon detection and instead you press a button for each weapon recoil?

Automatic Identification

You can upload a version with automatic recognition and one without automatic recognition
Did not automatically recognize that switch with hotkey

AHK version 1.1 important notes

Hey, guys

I just updated my AHK script which "stole" all the recoil patterns from https://github.com/sayoui001/ApexAHK-Reduce-recoil. (see #23 for more details about those magic pattern data).

The single-shot-auto-fire feature is a bit aggressive. So if you want to run the script in a safer mode, please make sure you set the auto_fire in setting.ini to "off". For me, I would go traveling for a few days (national holiday).

Feel free to report any bugs here. I will check that 5 days later.

Enjoy the new script, cheers!

AHK v1.2.2 is released! Now the script supports both 2k and 4k!

Hey guys!

I know people keep asking me to support multiple resolutions. Now, it comes! Moreover, I build a GUI to help u guys do the configuration thing.

For v1.2.2, the script only support 1080x1920, 2560x1440 and 3840x2160. Sorry, these days I don't have much time to play the game myself. I hope u guys can download the latest version and do some more real game testing. Please report any bugs here. Thanks!

Cheers!
mgsweet

Color filter problem

tried my sens also nothing happened ,350 uncomment 351 ; ,, also nothing happened

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.