Does anyone know how to abbreviate these command(part findtext() function)

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
emanate22
Posts: 52
Joined: 11 May 2021, 00:03

Does anyone know how to abbreviate these command(part findtext() function)

Post by emanate22 » 30 Nov 2021, 07:36

Does anyone know how to abbreviate these commands. Some use the findtext() function.The following commands are too long because there are 200 coordinates, so I only gave 20 examples. Is there a way to abbreviate them(maybe using algebra)?

Code: Select all

DxA:=77,DyA:=838
wheelup::
t1:=A_TickCount,
Text:=""
if (ok:=FindText(735, 289, 1043, 551, 0, 0.25, Text,,,1,1,1,dir:=9))
{
Cx1:=ok.1.x, Cy1:=ok.1.y,
Cx2:=ok.2.x, Cy2:=ok.2.y,
Cx3:=ok.3.x, Cy3:=ok.3.y,
Cx4:=ok.4.x, Cy4:=ok.4.y,
Cx5:=ok.5.x, Cy5:=ok.5.y,
Cx6:=ok.6.x, Cy6:=ok.6.y,
Cx7:=ok.7.x, Cy7:=ok.7.y,
Cx8:=ok.8.x, Cy8:=ok.8.y,
Cx9:=ok.9.x, Cy9:=ok.9.y,
Cx10:=ok.10.x, Cy10:=ok.10.y,
Cx11:=ok.11.x, Cy11:=ok.11.y,
Cx12:=ok.12.x, Cy12:=ok.12.y,
Cx13:=ok.13.x, Cy13:=ok.13.y,
Cx14:=ok.14.x, Cy14:=ok.14.y,
Cx15:=ok.15.x, Cy15:=ok.15.y,
Cx16:=ok.16.x, Cy16:=ok.16.y,
Cx17:=ok.17.x, Cy17:=ok.17.y,
Cx18:=ok.18.x, Cy18:=ok.18.y,
Cx19:=ok.19.x, Cy19:=ok.19.y,
Cx20:=ok.20.x, Cy20:=ok.20.y,
DistA1:=Sqrt(((Cx1-DxA)*(Cx1-DxA)+(Cy1-DyA)*(Cy1-DyA)))
DistA2:=Sqrt(((Cx2-DxA)*(Cx2-DxA)+(Cy2-DyA)*(Cy2-DyA)))
DistA3:=Sqrt(((Cx3-DxA)*(Cx3-DxA)+(Cy3-DyA)*(Cy3-DyA)))
DistA4:=Sqrt(((Cx4-DxA)*(Cx4-DxA)+(Cy4-DyA)*(Cy4-DyA)))
DistA5:=Sqrt(((Cx5-DxA)*(Cx5-DxA)+(Cy5-DyA)*(Cy5-DyA)))
DistA6:=Sqrt(((Cx6-DxA)*(Cx6-DxA)+(Cy6-DyA)*(Cy6-DyA)))
DistA7:=Sqrt(((Cx7-DxA)*(Cx7-DxA)+(Cy7-DyA)*(Cy7-DyA)))
DistA8:=Sqrt(((Cx8-DxA)*(Cx8-DxA)+(Cy8-DyA)*(Cy8-DyA)))
DistA9:=Sqrt(((Cx9-DxA)*(Cx9-DxA)+(Cy9-DyA)*(Cy9-DyA)))
DistA10:=Sqrt(((Cx10-DxA)*(Cx10-DxA)+(Cy10-DyA)*(Cy10-DyA)))
DistA11:=Sqrt(((Cx11-DxA)*(Cx11-DxA)+(Cy11-DyA)*(Cy11-DyA)))
DistA12:=Sqrt(((Cx12-DxA)*(Cx12-DxA)+(Cy12-DyA)*(Cy12-DyA)))
DistA13:=Sqrt(((Cx13-DxA)*(Cx13-DxA)+(Cy13-DyA)*(Cy13-DyA)))
DistA14:=Sqrt(((Cx14-DxA)*(Cx14-DxA)+(Cy14-DyA)*(Cy14-DyA)))
DistA15:=Sqrt(((Cx15-DxA)*(Cx15-DxA)+(Cy15-DyA)*(Cy15-DyA)))
DistA16:=Sqrt(((Cx16-DxA)*(Cx16-DxA)+(Cy16-DyA)*(Cy16-DyA)))
DistA17:=Sqrt(((Cx17-DxA)*(Cx17-DxA)+(Cy17-DyA)*(Cy17-DyA)))
DistA18:=Sqrt(((Cx18-DxA)*(Cx18-DxA)+(Cy18-DyA)*(Cy18-DyA)))
DistA19:=Sqrt(((Cx19-DxA)*(Cx19-DxA)+(Cy19-DyA)*(Cy19-DyA)))
DistA20:=Sqrt(((Cx20-DxA)*(Cx20-DxA)+(Cy20-DyA)*(Cy20-DyA)))
DistA:= 1.7976931348623157E+308 ; FloatMax
Loop,200
IF DistA%A_Index%
DistA:= Min(DistA, DistA%A_Index%)
if DistA1=%DistA%
MouseClick,left,Cx1,Cy1,
if DistA2=%DistA%
MouseClick,left,Cx2,Cy2,
if DistA3=%DistA%
MouseClick,left,Cx3,Cy3,
if DistA4=%DistA%
MouseClick,left,Cx4,Cy4,
if DistA5=%DistA%
MouseClick,left,Cx5,Cy5,
if DistA6=%DistA%
MouseClick,left,Cx6,Cy6,
if DistA7=%DistA%
MouseClick,left,Cx7,Cy7,
if DistA8=%DistA%
MouseClick,left,Cx8,Cy8,
if DistA9=%DistA%
MouseClick,left,Cx9,Cy9,
if DistA10=%DistA%
MouseClick,left,Cx10,Cy10,
if DistA11=%DistA%
MouseClick,left,Cx11,Cy11,
if DistA12=%DistA%
MouseClick,left,Cx12,Cy12,
if DistA13=%DistA%
MouseClick,left,Cx13,Cy13,
if DistA14=%DistA%
MouseClick,left,Cx14,Cy14,
if DistA15=%DistA%
MouseClick,left,Cx15,Cy15,
if DistA16=%DistA%
MouseClick,left,Cx16,Cy16,
if DistA17=%DistA%
MouseClick,left,Cx17,Cy17,
if DistA18=%DistA%
MouseClick,left,Cx18,Cy18,
if DistA19=%DistA%
MouseClick,left,Cx19,Cy19,
if DistA20=%DistA%
MouseClick,left,Cx20,Cy20,
}
pt := A_TickCount-t1
tooltip,%pt% %DistA%,200,300,
return
Maybe these three parts can be rewritten short,200 rows, too many rows,

Code: Select all

Cx1:=ok.1.x, Cy1:=ok.1.y,
Cx2:=ok.2.x, Cy2:=ok.2.y,
Cx3:=ok.3.x, Cy3:=ok.3.y,
Cx4:=ok.4.x, Cy4:=ok.4.y,
Cx5:=ok.5.x, Cy5:=ok.5.y,
Cx6:=ok.6.x, Cy6:=ok.6.y,
Cx7:=ok.7.x, Cy7:=ok.7.y,
Cx8:=ok.8.x, Cy8:=ok.8.y,
Cx9:=ok.9.x, Cy9:=ok.9.y,
Cx10:=ok.10.x, Cy10:=ok.10.y,
Cx11:=ok.11.x, Cy11:=ok.11.y,
Cx12:=ok.12.x, Cy12:=ok.12.y,
Cx13:=ok.13.x, Cy13:=ok.13.y,
Cx14:=ok.14.x, Cy14:=ok.14.y,
Cx15:=ok.15.x, Cy15:=ok.15.y,
Cx16:=ok.16.x, Cy16:=ok.16.y,
Cx17:=ok.17.x, Cy17:=ok.17.y,
Cx18:=ok.18.x, Cy18:=ok.18.y,
Cx19:=ok.19.x, Cy19:=ok.19.y,
Cx20:=ok.20.x, Cy20:=ok.20.y,

Code: Select all

if DistA1=%DistA%
MouseClick,left,Cx1,Cy1,
if DistA2=%DistA%
MouseClick,left,Cx2,Cy2,
if DistA3=%DistA%
MouseClick,left,Cx3,Cy3,
if DistA4=%DistA%
MouseClick,left,Cx4,Cy4,
if DistA5=%DistA%
MouseClick,left,Cx5,Cy5,
if DistA6=%DistA%
MouseClick,left,Cx6,Cy6,
if DistA7=%DistA%
MouseClick,left,Cx7,Cy7,
if DistA8=%DistA%
MouseClick,left,Cx8,Cy8,
if DistA9=%DistA%
MouseClick,left,Cx9,Cy9,
if DistA10=%DistA%
MouseClick,left,Cx10,Cy10,
if DistA11=%DistA%
MouseClick,left,Cx11,Cy11,
if DistA12=%DistA%
MouseClick,left,Cx12,Cy12,
if DistA13=%DistA%
MouseClick,left,Cx13,Cy13,
if DistA14=%DistA%
MouseClick,left,Cx14,Cy14,
if DistA15=%DistA%
MouseClick,left,Cx15,Cy15,
if DistA16=%DistA%
MouseClick,left,Cx16,Cy16,
if DistA17=%DistA%
MouseClick,left,Cx17,Cy17,
if DistA18=%DistA%
MouseClick,left,Cx18,Cy18,
if DistA19=%DistA%
MouseClick,left,Cx19,Cy19,
if DistA20=%DistA%
MouseClick,left,Cx20,Cy20,
DistA1:=Sqrt(((Cx1-DxA)*(Cx1-DxA)+(Cy1-DyA)*(Cy1-DyA)))
DistA2:=Sqrt(((Cx2-DxA)*(Cx2-DxA)+(Cy2-DyA)*(Cy2-DyA)))
DistA3:=Sqrt(((Cx3-DxA)*(Cx3-DxA)+(Cy3-DyA)*(Cy3-DyA)))
DistA4:=Sqrt(((Cx4-DxA)*(Cx4-DxA)+(Cy4-DyA)*(Cy4-DyA)))
DistA5:=Sqrt(((Cx5-DxA)*(Cx5-DxA)+(Cy5-DyA)*(Cy5-DyA)))
DistA6:=Sqrt(((Cx6-DxA)*(Cx6-DxA)+(Cy6-DyA)*(Cy6-DyA)))
DistA7:=Sqrt(((Cx7-DxA)*(Cx7-DxA)+(Cy7-DyA)*(Cy7-DyA)))
DistA8:=Sqrt(((Cx8-DxA)*(Cx8-DxA)+(Cy8-DyA)*(Cy8-DyA)))
DistA9:=Sqrt(((Cx9-DxA)*(Cx9-DxA)+(Cy9-DyA)*(Cy9-DyA)))
DistA10:=Sqrt(((Cx10-DxA)*(Cx10-DxA)+(Cy10-DyA)*(Cy10-DyA)))
DistA11:=Sqrt(((Cx11-DxA)*(Cx11-DxA)+(Cy11-DyA)*(Cy11-DyA)))
DistA12:=Sqrt(((Cx12-DxA)*(Cx12-DxA)+(Cy12-DyA)*(Cy12-DyA)))
DistA13:=Sqrt(((Cx13-DxA)*(Cx13-DxA)+(Cy13-DyA)*(Cy13-DyA)))
DistA14:=Sqrt(((Cx14-DxA)*(Cx14-DxA)+(Cy14-DyA)*(Cy14-DyA)))
DistA15:=Sqrt(((Cx15-DxA)*(Cx15-DxA)+(Cy15-DyA)*(Cy15-DyA)))
DistA16:=Sqrt(((Cx16-DxA)*(Cx16-DxA)+(Cy16-DyA)*(Cy16-DyA)))
DistA17:=Sqrt(((Cx17-DxA)*(Cx17-DxA)+(Cy17-DyA)*(Cy17-DyA)))
DistA18:=Sqrt(((Cx18-DxA)*(Cx18-DxA)+(Cy18-DyA)*(Cy18-DyA)))
DistA19:=Sqrt(((Cx19-DxA)*(Cx19-DxA)+(Cy19-DyA)*(Cy19-DyA)))
DistA20:=Sqrt(((Cx20-DxA)*(Cx20-DxA)+(Cy20-DyA)*(Cy20-DyA)))

User avatar
boiler
Posts: 16767
Joined: 21 Dec 2014, 02:44

Re: Does anyone know how to abbreviate these command(part findtext() function)

Post by boiler » 30 Nov 2021, 09:29

Try:

Code: Select all

loop, 20 {
	cx1 := ok[A_Index].x
	cy1 := ok[A_Index].y
}

However, I don’t see why you would want to assign array values to a series of individual variables. Why do you want to do that? You can/should do your subsequent calculations/assignments using the array elements. And you should use a loop and an array for those too rather than a series of nearly identical lines of code.

emanate22
Posts: 52
Joined: 11 May 2021, 00:03

Re: Does anyone know how to abbreviate these command(part findtext() function)

Post by emanate22 » 30 Nov 2021, 20:41

boiler wrote:
30 Nov 2021, 09:29
Try:

Code: Select all

loop, 20 {
	cx1 := ok[A_Index].x
	cy1 := ok[A_Index].y
}

However, I don’t see why you would want to assign array values to a series of individual variables. Why do you want to do that? You can/should do your subsequent calculations/assignments using the array elements. And you should use a loop and an array for those too rather than a series of nearly identical lines of code.
Sorry for not understanding what you mean, they are not individual variables. This script can run accurately at the moment, but because 200 lines are too long, I don’t know how to simplify it. If possible, I want to count as many lines as possible.
It doesn't work normally with what you gave. I currently try the following simplified code, but it doesn't work either. I don't know what's wrong.
I used findtext to find out the coordinates of these images, and then calculated the straight-line distance between these points and the target, and then found the nearest, and then leftclick the image coordinates related to it.

Code: Select all

Cx%A_Index%:=ok[A_Index].x, Cy%A_Index%:=ok[A_Index].y,
DistA%A_Index%:=Sqrt(((Cx%A_Index%-DxA)*(Cx%A_Index%-DxA)+(Cy%A_Index%-DyA)*(Cy%A_Index%-DyA)))
DistA:= 1.7976931348623157E+308 ; FloatMax
Loop,200
IF DistA%A_Index%
DistA:= Min(DistA,DistA%A_Index%)
if DistA%A_Index%=%DistA%
MouseClick,left,Cx%A_Index%,Cy%A_Index%,

User avatar
boiler
Posts: 16767
Joined: 21 Dec 2014, 02:44

Re: Does anyone know how to abbreviate these command(part findtext() function)

Post by boiler » 30 Nov 2021, 20:47

Cx1…, Cy1… and DistA1… are all individual variables. What do you mean they’re not?

emanate22
Posts: 52
Joined: 11 May 2021, 00:03

Re: Does anyone know how to abbreviate these command(part findtext() function)

Post by emanate22 » 30 Nov 2021, 20:51

Code: Select all

Loop,200
Cx%A_Index%:=ok[A_Index].x, Cy%A_Index%:=ok[A_Index].y,
Loop,200
DistA%A_Index%:=Sqrt(((Cx%A_Index%-DxA)*(Cx%A_Index%-DxA)+(Cy%A_Index%-DyA)*(Cy%A_Index%-DyA)))
DistA:= 1.7976931348623157E+308 ; FloatMax
Loop,200
IF DistA%A_Index%
DistA:= Min(DistA,DistA%A_Index%)
Loop,200
if DistA%A_Index%=%DistA%
MouseClick,left,Cx%A_Index%,Cy%A_Index%,
Tested it, it seems work now,but not sure :D

Post Reply

Return to “Ask for Help (v1)”