Мне надо получить координаты всех на экране(и переведя это все в экранные координаты конечно-же) я написал вот такую огромную дерьмо конструкцию и это пздц, она получает координаты секунд 20-40. (Я если что esp пытаюсь сделать)
Предлагайте как сократить код и время поиска координат на экране до минимума.
AutoHotKey:
; # - getPlayerPosById(dwId) - Возвращает позицию игрока по id игрока #
; # - isPlayerInStreamById(player_id [, dist]) - Определяет есть ли игроки на заданной дистации от вас #
; # - calcScreenCoors(fX,fY,fZ) - Возвращает массив координат [fX,fY,fZ] относительно экрана #
/*
BoxCreate(x,y,width,height,Color,show)
{
global BoxCreate_func
res := DllCall(BoxCreate_func,Int,x,Int,y,Int,width,Int,height,UInt,Color,UChar,show)
return res
}
BoxDestroy(id)
{
global BoxDestroy_func
res := DllCall(BoxDestroy_func,Int,id)
return res
}
*/
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#Include inc\samp.ahk
#Include inc\DX9-Overlay-API-master\include\ahk\overlay.ahk
SetParam("use_window", "1")
SetParam("window", "GTA:SA:MP")
r:=[]
numpad5::
MsgBox, start
goto, GetCoords ; В массив r вводятся координаты игроков в зоне стрима, в переменной all содержится число игроков в зоне стрима
l:
screen := []
i = 0
d = 0
Loop{
screen[i] := calcScreenCoors(r[i][1],r[i][2],r[i][3])
i++
if(i >= all)
break
if(GetKeyState("Numpad1","P")){
break
}
}
num = 1
i = 1
Loop
{
num++
if(num==3)
{
num = 1
i++
}
if(screen[i][1] != null && screen[i][1] > 0)
{
if(screen[i][2] != null && screen[i][2] > 0)
{
q = 1
loop{
box%q% = BoxCreate(screen[i][1], screen[i][2],5,5,0xFFFFFFFF, true)
addchatmessage("box created")
q++
if(q == all)
{
Sleep, 3000
Loop{
BoxDestroy(boxQ)
addchatmessage("box destroy")
q--
if(q==0)
{
break
}
}
break
}
}
return
}
}
if(i == all)
break
}
return
GetCoords:
{
r := []
i = 0
b = 0
Loop{
if(isPlayerInStreamById(i ,300)){
r[b] := getPlayerPosById(i)
b++
}
i++
if(i >= 1001)
break
}
all := b
goto, l
}