first ly i want to make this code trigger 2 mode head and body. when i set the body still move to head can help me pls .(
i change chractr to 1 colour but always go to head, i want this code riger mode and head mode. please help. when set code like this aiming will go to left hand and go to head not middle body

SORY BAD ENGLISH

ChooseBody:
Gui, Submit, NoHide
BodyActive := !!BodyChoice
if (BodyActive)
Voice.Speak("Mode body active", 1)
Gosub, UpdateRunState
return

ChooseHead:
Gui, Submit, NoHide
HeadActive := !!HeadChoice
if (HeadActive)
Voice.Speak("Mode head active", 1)
Gosub, UpdateRunState
return

F4::
PinkBody := !PinkActive
GuiControl,, BodyChoice, % BodyActive ? 1 : 0
if (BodyActive)
Voice.Speak("Mode body active", 1)
Gosub, UpdateRunState
return

F5::
HeadActive := !HeadActive
GuiControl,, HeadChoice, % HeadActive ? 1 : 0
if (HeadActive)
Voice.Speak("Mode head active", 1)
Gosub, UpdateRunState
return

F6::Gosub, StopAll

UpdateRunState:
if (BodyActive || HeadActive) {
if (BodyActive && HeadActive)
GuiControl,, Status, STATUS : Body + Head ACTIVE
else if (BodyActive)
GuiControl,, Status, STATUS : Body ACTIVE
else
GuiControl,, Status, STATUS : Head ACTIVE
SetTimer, AimTick, 10
} else {
SetTimer, AimTick, Off
GuiControl,, Status, STATUS : IDLE
}
return

StopAll:
BodyActive := false
HeadActive := false
GuiControl,, BodyChoice, 0
GuiControl,, HeadChoice, 0
SetTimer, AimTick, Off
GuiControl,, Status, STATUS : IDLE
return

SetupAim:
PID := DllCall("GetCurrentProcessId")
Process, Priority, %PID%, High
ColVn := 10
AntiShakeX := (A_ScreenHeight // 100)
AntiShakeY := (A_ScreenHeight // 100)
NearAimScanL := 0
NearAimScanT := 0
NearAimScanR := A_ScreenWidth
NearAimScanB := A_ScreenHeight
ZeroX := (A_ScreenWidth // 2)
ZeroY := (A_ScreenHeight // 2)
CFovX := (A_ScreenWidth // 20)
CFovY := (A_ScreenHeight // 10)
ScanL := ZeroX - CFovX
ScanR := ZeroX + CFovX
return

; The timer runs only while at least one checkbox is selected.
; When both are selected, it checks both colors independently.
AimTick:
if ((!BodyActive && !HeadActive) || !GetKeyState("LButton", "P"))
return

if (BodyActive) {
EMCol := 0x00FF28
ScanT := ZeroY - 10
ScanB := ZeroY + 0
Gosub, ScanSelectedColor
if (FoundTarget)
return
}
if (HeadActive) {
EMCol := 0x00FF28
ScanT := ZeroY - 500
ScanB := ZeroY + CFovY
Gosub, ScanSelectedColor
}
return

ScanSelectedColor:
FoundTarget := false
PixelSearch, AimPixelX, AimPixelY, NearAimScanL, NearAimScanT, NearAimScanR, NearAimScanB, EMCol, ColVn, Fast RGB
if (ErrorLevel = 0) {
Loop, 30 {
if ((!BodyActive && !HeadActive) || !GetKeyState("LButton", "P"))
break
PixelSearch, AimPixelX, AimPixelY, ScanL, ScanT, ScanR, ScanB, EMCol, ColVn, Fast RGB
if (ErrorLevel != 0)
break
FoundTarget := true
AimX := AimPixelX - ZeroX
AimY := AimPixelY - ZeroY
MoveX := Round(AimX * 0.2)
MoveY := Round(AimY * 0.2)
DllCall("mouse_event", "UInt", 1, "Int", Round(MoveX * 2.5), "Int", MoveY, "UInt", 0, "UPtr", 0)
}
}
return