Killerdou
07-18-2007, 08:58 AM
This is my object finder, it is pretty advanced.
There are only 2 parameters however, 1 a integer array which contains all the
colors you want it to search for(1 is alright aswell) and the second is a string which contains all the different options you want to use separated by a comma and the last one has a semicolon.
the following commands are available atm:
Settings
dev - prints time it took to find the objects and saves/shows a picture of here it found different groups.
huemod/satmod(e.g. huemod:0.2,) - sets hue or satmod to given value
tol (e.g. tol:10,) - sets tolerance to given value
maxdistance (e.g. maxdistance:10,) - how far away a point can be from the group to still belong to it
AccA/AccB( e.g. AccA:10,) - accurecy, shouldnt really be used unless you find objects that are like 25% of the main screen, AccA will exclude all points that are within the range you specify and AccB will only include every x point, so AccB:10, would only include every tenth point.
Remove
RemoveDensity( e.g. RemoveDensity<0.5,) - this 'draws' a box around the outer points of a group and returns how much of that box is a found point(so if you have a box of 10 pixels and 5 pixels of that were found it would have a density of 0.5) you can use both < and > to specify what you want to remove
RemoveDistance( e.g. RemoveDistance>10,) - does the same as density but then with distance from the middle of the screen
RemoveAmount( e.g. RemoveAmount<10) does the same as density and distance but checks for the size of a group
Rearrange
You can rearrange the array of groups to distance,size,density both from small to large after what you want to rearrange you put true for large to small and false for small to large so DensityTrue would mean rearrange the array from large to small density, this is important in the next step where it will check all the groups(in order) for uptext
TheClicking
you can use clickleft and clickright, both will check all groups for the given uptext(it will click what you specified once it found one with the correct uptext obviously) e.g. ClickRight:mine would move its mouse to the middle of all groups and check for the uptext mine, if that uptext is found it will right click
A good example of a string would be:
'dev,RemoveAmount>100,DistanceTrue,ClickLeft:chop;'
{.include SRL/SRL.scar}
var
MyColorArray : Array of Integer;
AI, BI, Color, TheBitMap: integer;
// from mastaraymond
Function TPointArrayToIntegerArray(ThePoints:TPointArray;Re turnX:Boolean): TIntegerArray;
var
I:integer;
begin;
Try
SetArrayLength(Result,Length(ThePoints));
For I:= 0 to Length(ThePoints)-1 do
If ReturnX then Result[i]:=ThePoints[i].x
else Result[i]:=ThePoints[i].y;
Except
Writeln('There is an error, sorry!');
end;
end;
Function Density(A : TPointArray) : Extended;
var
B, C : Array of Integer;
D, E : Integer;
Begin
B := TPointArrayToIntegerArray(A, True);
C := TPointArrayToIntegerArray(A, False);
BubbleSort(B);
BubbleSort(C);
D := GetArrayLength(A);
E := (B[D - 1] - B[0] + 1)*(C[D - 1] - C[0] + 1)
Result := 1 / (E / D);
end;
Function RemoveSmallDensityGroups(A :TPointArrayArray; WhatDensity: Extended) : TPointArrayArray;
var
RV, I: Integer;
begin
RV := 0;
For I := 0 To Length(A) - 1 do
Begin
If Density(A[i]) > WhatDensity then
begin
RV := RV + 1;
SetLength(Result, RV);
Result[RV - 1] := A[i];
end;
end;
end;
Function RemoveBigDensityGroups(A : TPointArrayArray; WhatDensity: extended) : TPointArrayArray;
var
RV, I: Integer;
begin
RV := 0;
For I := 0 To Length(A) - 1 do
Begin
If Density(A[i]) < WhatDensity then
begin
RV := RV + 1;
SetLength(Result, RV);
Result[RV - 1] := A[i];
end;
end;
end;
Function WhatIsDistance(a :TPointArray) : integer;
var
X, Y : integer;
begin
FindMiddle(X, Y, A);
Result := Distance(X, Y, 259, 144);
end;
//rearrange procedures thanks to wizzup
Procedure SwapA(var a, b :TPointArray);
Var
c: TPointArray;
Begin
c := a;
a := b;
b := c;
End;
Procedure RearrangeArrayByDensity(var a: Array Of TPointArray; Small: Boolean);
Var
B: Boolean;
I: Integer;
L: extended;
Begin
B := True;
L := GetArrayLength(a);
While B Do
Begin
B := False;
For I := 0 To L - 2 Do
If Small Then
Begin
If Density(a[i]) > Density(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End
Else
Begin
If Density(a[i]) < Density(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End;
End;
End;
Procedure RearrangeArrayByDistance(var a: Array Of TPointArray; Small: Boolean);
Var
B: Boolean;
L, I: Integer;
Begin
B := True;
L := GetArrayLength(a);
While B Do
Begin
B := False;
For I := 0 To L - 2 Do
If Small Then
Begin
If WhatIsDistance(a[i]) > WhatIsDistance(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End
Else
Begin
If WhatIsDistance(a[i]) < WhatIsDistance(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End;
End;
End;
Procedure RearrangeArrayByLength(var a: Array Of TPointArray; Small: Boolean);
Var
B: Boolean;
L, I: Integer;
Begin
B := True;
L := GetArrayLength(a);
While B Do
Begin
B := False;
For I := 0 To L - 2 Do
If Small Then
Begin
If GetArrayLength(a[i]) > GetArrayLength(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End
Else
Begin
If GetArrayLength(a[i]) < GetArrayLength(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End;
End;
End;
Function Checkall(A : TPointArrayArray; UpText: String; Left : boolean) : boolean;
var
I, X, Y : integer;
begin
For I := 0 to Length(A) - 1 do
begin
FindMiddle(X, Y, A[i]);
MMouse(X, Y, 0, 0);
Wait(50 + Random(25));
If IsUpText(UpText) then
begin
Mouse(X, Y, 0, 0, Left);
Result := True;
Exit;
end;
end;
end;
Function LoveObjectFinder(Colors : Array of Integer; Sort : String) : Boolean;
Var
Dev : Boolean;
I, A,Tol, MaxDist, AccA, AccB, TempI, ColorMarker, FindGroupsMarker: Integer;
HueMod, SatMod : extended;
SplittedText : Array of String;
FoundPoints, FoundPoints2 : TPointArray;
TwoDArrayOfTPoints: array of TPointArray;
Begin
HueMod := 0.2;
SatMod := 0.2;
Tol := 15;
MaxDist := 5;
AccA := 0;
AccB := 1;
SplittedText := SplitText(Sort);
For I := 0 to GetArrayLength(SplittedText) - 1 do
Case LowerCase(GetLetters(SplittedText[i])) of
'huemod' : HueMod := StrToInt(GetNumbers(SplittedText[i])) div IntPow(10,Length(GetNumbers(SplittedText[i])) - 1);
'satmod' : SatMod := StrToInt(GetNumbers(SplittedText[i])) div IntPow(10,Length(GetNumbers(SplittedText[i])) - 1);
'tol' : Tol := StrToInt(GetNumbers(SplittedText[i]));
'maxdist' : MaxDist := StrToInt(GetNumbers(SplittedText[i]));
'acca' : AccA := StrToInt(GetNumbers(SplittedText[i]));
'accb' : AccB := StrToInt(GetNumbers(SplittedText[i]));
'dev' : Dev := True;
end;
If AccA > MaxDist then
begin
TempI := AccA;
AccA := MaxDist;
MaxDist := TempI;
end;
ColorToleranceSpeed(2);
SetColorspeed2Modifiers(HueMod, SatMod);
If dev then TheBitmap := BitMapFromString(MSX2 - MSX1, MSY2 - MSY1, '');
If dev then CopyClientToBitmap(TheBitMap, MSX1, MSY1, MSX2, MSY2);
if dev then ColorMarker:= GetTimeRunning;
For A := 0 to GetArrayLength(Colors) - 1 do
begin
FindColorsSpiralTolerance(259, 144, FoundPoints2, Colors[A], MSX1, MSY1, MSX2, MSY2, Tol);
AddTPointArray(FoundPoints, FoundPoints2);
end;
if dev then WriteLn('Colorfinding took: ' + IntToStr(GetTimeRunning - ColorMarker) + 'ms.');
if dev then FindGroupsMarker := GetTimeRunning;
TwoDArrayOfTPoints := FindGroups(FoundPoints, MaxDist, AccA, AccB);
if dev then WriteLn('FindGroups took: ' + IntToStr(GetTimeRunning - FindGroupsMarker) + 'ms.');
If GetArrayLength(TwoDArrayOfTPoints) = 0 then Exit;
For I := 0 to GetArrayLength(SplittedText) - 1 do
begin
If LowerCase(GetLetters(SplittedText[i])) = 'removedensity' then
Begin
If Copy(SplittedText[i], 14, 1) = '<' then
TwoDArrayOfTPoints := RemoveSmallDensityGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])) div IntPow(10,Length(GetNumbers(SplittedText[i])) - 1));
If Copy(SplittedText[i], 14, 1) = '>' then
TwoDArrayOfTPoints := RemoveBigDensityGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])) div IntPow(10,Length(GetNumbers(SplittedText[i])) - 1));
end;
If LowerCase(GetLetters(SplittedText[i])) = 'removeamount' then
Begin
If Copy(SplittedText[i], 13, 1) = '<' then
TwoDArrayOfTPoints := RemoveSmallPointGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])));
If Copy(SplittedText[i], 13, 1) = '>' then
TwoDArrayOfTPoints := RemoveBigPointGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])));
end;
If LowerCase(GetLetters(SplittedText[i])) = 'removedistance' then
Begin
If Copy(SplittedText[i], 15, 1) = '<' then
TwoDArrayOfTPoints := RemoveLowerDistancePointGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])));
If Copy(SplittedText[i], 15, 1) = '>' then
TwoDArrayOfTPoints := RemoveHigherDistancePointGroups(TwoDArrayOfTPoints , StrToInt(GetNumbers(SplittedText[i])));
end;
Case LowerCase(SplittedText[i]) of
'lengthtrue' : RearrangeArrayByLength(TwoDArrayOfTPoints,True);
'distancetrue' : ReArrangeArrayByDistance(TwoDArrayOfTPoints,True);
'densitytrue' : ReArrangeArrayByDensity(TwoDArrayOfTPoints,True);
'lengthfalse' : RearrangeArrayByLength(TwoDArrayOfTPoints,False);
'distancefalse' : ReArrangeArrayByDistance(TwoDArrayOfTPoints,False) ;
'densityfalse' : ReArrangeArrayByDensity(TwoDArrayOfTPoints,False);
end;
end;
For I := 0 to GetArrayLength(SplittedText) - 1 do
begin
If LowerCase(Copy(SplittedText[i], 1, 9)) = 'clickleft' then
begin
Delete(SplittedText[i], 1, 9);
Result := CheckAll(TwoDArrayOfTPoints, LowerCase(GetLetters(SplittedText[i])), True);
end;
If LowerCase(Copy(SplittedText[i], 1, 10)) = 'clickright' then
begin
Delete(SplittedText[i], 1, 10);
Result := CheckAll(TwoDArrayOfTPoints, LowerCase(GetLetters(SplittedText[i])), False);
end;
end;
Result := True;
If dev then
Begin
For AI := 0 To GetArrayLength(TwoDArrayOfTPoints) - 1 do
begin
Color := Round((16581375/GetArrayLength(TwoDArrayOfTPoints)) * (AI + 1));
For BI := 0 to GetArrayLength(TwoDArrayOfTPoints[AI]) - 1 do
FastSetPixel(TheBitMap, TwoDArrayOfTPoints[AI][BI].x - MSX1, TwoDArrayOfTPoints[AI][BI].y - MSY1, Color);
end;
SaveBitmap(TheBitmap, 'c:\TheBitmap.bmp');
DisplayDebugImgWindow(MSX2 - MSX1, MSY2 - MSY1);
SafeDrawBitmap(TheBitmap, GetDebugCanvas, 0, 0);
end;
end;
begin
ActivateClient;
Wait(1000);
SetArrayLength(MyColorArray, 1);
MyColorArray[0] := 1977645;
LoveObjectFinder(MyColorArray, 'dev,ClickRight:ine;');
end.
There are only 2 parameters however, 1 a integer array which contains all the
colors you want it to search for(1 is alright aswell) and the second is a string which contains all the different options you want to use separated by a comma and the last one has a semicolon.
the following commands are available atm:
Settings
dev - prints time it took to find the objects and saves/shows a picture of here it found different groups.
huemod/satmod(e.g. huemod:0.2,) - sets hue or satmod to given value
tol (e.g. tol:10,) - sets tolerance to given value
maxdistance (e.g. maxdistance:10,) - how far away a point can be from the group to still belong to it
AccA/AccB( e.g. AccA:10,) - accurecy, shouldnt really be used unless you find objects that are like 25% of the main screen, AccA will exclude all points that are within the range you specify and AccB will only include every x point, so AccB:10, would only include every tenth point.
Remove
RemoveDensity( e.g. RemoveDensity<0.5,) - this 'draws' a box around the outer points of a group and returns how much of that box is a found point(so if you have a box of 10 pixels and 5 pixels of that were found it would have a density of 0.5) you can use both < and > to specify what you want to remove
RemoveDistance( e.g. RemoveDistance>10,) - does the same as density but then with distance from the middle of the screen
RemoveAmount( e.g. RemoveAmount<10) does the same as density and distance but checks for the size of a group
Rearrange
You can rearrange the array of groups to distance,size,density both from small to large after what you want to rearrange you put true for large to small and false for small to large so DensityTrue would mean rearrange the array from large to small density, this is important in the next step where it will check all the groups(in order) for uptext
TheClicking
you can use clickleft and clickright, both will check all groups for the given uptext(it will click what you specified once it found one with the correct uptext obviously) e.g. ClickRight:mine would move its mouse to the middle of all groups and check for the uptext mine, if that uptext is found it will right click
A good example of a string would be:
'dev,RemoveAmount>100,DistanceTrue,ClickLeft:chop;'
{.include SRL/SRL.scar}
var
MyColorArray : Array of Integer;
AI, BI, Color, TheBitMap: integer;
// from mastaraymond
Function TPointArrayToIntegerArray(ThePoints:TPointArray;Re turnX:Boolean): TIntegerArray;
var
I:integer;
begin;
Try
SetArrayLength(Result,Length(ThePoints));
For I:= 0 to Length(ThePoints)-1 do
If ReturnX then Result[i]:=ThePoints[i].x
else Result[i]:=ThePoints[i].y;
Except
Writeln('There is an error, sorry!');
end;
end;
Function Density(A : TPointArray) : Extended;
var
B, C : Array of Integer;
D, E : Integer;
Begin
B := TPointArrayToIntegerArray(A, True);
C := TPointArrayToIntegerArray(A, False);
BubbleSort(B);
BubbleSort(C);
D := GetArrayLength(A);
E := (B[D - 1] - B[0] + 1)*(C[D - 1] - C[0] + 1)
Result := 1 / (E / D);
end;
Function RemoveSmallDensityGroups(A :TPointArrayArray; WhatDensity: Extended) : TPointArrayArray;
var
RV, I: Integer;
begin
RV := 0;
For I := 0 To Length(A) - 1 do
Begin
If Density(A[i]) > WhatDensity then
begin
RV := RV + 1;
SetLength(Result, RV);
Result[RV - 1] := A[i];
end;
end;
end;
Function RemoveBigDensityGroups(A : TPointArrayArray; WhatDensity: extended) : TPointArrayArray;
var
RV, I: Integer;
begin
RV := 0;
For I := 0 To Length(A) - 1 do
Begin
If Density(A[i]) < WhatDensity then
begin
RV := RV + 1;
SetLength(Result, RV);
Result[RV - 1] := A[i];
end;
end;
end;
Function WhatIsDistance(a :TPointArray) : integer;
var
X, Y : integer;
begin
FindMiddle(X, Y, A);
Result := Distance(X, Y, 259, 144);
end;
//rearrange procedures thanks to wizzup
Procedure SwapA(var a, b :TPointArray);
Var
c: TPointArray;
Begin
c := a;
a := b;
b := c;
End;
Procedure RearrangeArrayByDensity(var a: Array Of TPointArray; Small: Boolean);
Var
B: Boolean;
I: Integer;
L: extended;
Begin
B := True;
L := GetArrayLength(a);
While B Do
Begin
B := False;
For I := 0 To L - 2 Do
If Small Then
Begin
If Density(a[i]) > Density(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End
Else
Begin
If Density(a[i]) < Density(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End;
End;
End;
Procedure RearrangeArrayByDistance(var a: Array Of TPointArray; Small: Boolean);
Var
B: Boolean;
L, I: Integer;
Begin
B := True;
L := GetArrayLength(a);
While B Do
Begin
B := False;
For I := 0 To L - 2 Do
If Small Then
Begin
If WhatIsDistance(a[i]) > WhatIsDistance(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End
Else
Begin
If WhatIsDistance(a[i]) < WhatIsDistance(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End;
End;
End;
Procedure RearrangeArrayByLength(var a: Array Of TPointArray; Small: Boolean);
Var
B: Boolean;
L, I: Integer;
Begin
B := True;
L := GetArrayLength(a);
While B Do
Begin
B := False;
For I := 0 To L - 2 Do
If Small Then
Begin
If GetArrayLength(a[i]) > GetArrayLength(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End
Else
Begin
If GetArrayLength(a[i]) < GetArrayLength(a[i+1]) then
Begin
SwapA(a[i], a[i + 1]);
B := True;
End
End;
End;
End;
Function Checkall(A : TPointArrayArray; UpText: String; Left : boolean) : boolean;
var
I, X, Y : integer;
begin
For I := 0 to Length(A) - 1 do
begin
FindMiddle(X, Y, A[i]);
MMouse(X, Y, 0, 0);
Wait(50 + Random(25));
If IsUpText(UpText) then
begin
Mouse(X, Y, 0, 0, Left);
Result := True;
Exit;
end;
end;
end;
Function LoveObjectFinder(Colors : Array of Integer; Sort : String) : Boolean;
Var
Dev : Boolean;
I, A,Tol, MaxDist, AccA, AccB, TempI, ColorMarker, FindGroupsMarker: Integer;
HueMod, SatMod : extended;
SplittedText : Array of String;
FoundPoints, FoundPoints2 : TPointArray;
TwoDArrayOfTPoints: array of TPointArray;
Begin
HueMod := 0.2;
SatMod := 0.2;
Tol := 15;
MaxDist := 5;
AccA := 0;
AccB := 1;
SplittedText := SplitText(Sort);
For I := 0 to GetArrayLength(SplittedText) - 1 do
Case LowerCase(GetLetters(SplittedText[i])) of
'huemod' : HueMod := StrToInt(GetNumbers(SplittedText[i])) div IntPow(10,Length(GetNumbers(SplittedText[i])) - 1);
'satmod' : SatMod := StrToInt(GetNumbers(SplittedText[i])) div IntPow(10,Length(GetNumbers(SplittedText[i])) - 1);
'tol' : Tol := StrToInt(GetNumbers(SplittedText[i]));
'maxdist' : MaxDist := StrToInt(GetNumbers(SplittedText[i]));
'acca' : AccA := StrToInt(GetNumbers(SplittedText[i]));
'accb' : AccB := StrToInt(GetNumbers(SplittedText[i]));
'dev' : Dev := True;
end;
If AccA > MaxDist then
begin
TempI := AccA;
AccA := MaxDist;
MaxDist := TempI;
end;
ColorToleranceSpeed(2);
SetColorspeed2Modifiers(HueMod, SatMod);
If dev then TheBitmap := BitMapFromString(MSX2 - MSX1, MSY2 - MSY1, '');
If dev then CopyClientToBitmap(TheBitMap, MSX1, MSY1, MSX2, MSY2);
if dev then ColorMarker:= GetTimeRunning;
For A := 0 to GetArrayLength(Colors) - 1 do
begin
FindColorsSpiralTolerance(259, 144, FoundPoints2, Colors[A], MSX1, MSY1, MSX2, MSY2, Tol);
AddTPointArray(FoundPoints, FoundPoints2);
end;
if dev then WriteLn('Colorfinding took: ' + IntToStr(GetTimeRunning - ColorMarker) + 'ms.');
if dev then FindGroupsMarker := GetTimeRunning;
TwoDArrayOfTPoints := FindGroups(FoundPoints, MaxDist, AccA, AccB);
if dev then WriteLn('FindGroups took: ' + IntToStr(GetTimeRunning - FindGroupsMarker) + 'ms.');
If GetArrayLength(TwoDArrayOfTPoints) = 0 then Exit;
For I := 0 to GetArrayLength(SplittedText) - 1 do
begin
If LowerCase(GetLetters(SplittedText[i])) = 'removedensity' then
Begin
If Copy(SplittedText[i], 14, 1) = '<' then
TwoDArrayOfTPoints := RemoveSmallDensityGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])) div IntPow(10,Length(GetNumbers(SplittedText[i])) - 1));
If Copy(SplittedText[i], 14, 1) = '>' then
TwoDArrayOfTPoints := RemoveBigDensityGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])) div IntPow(10,Length(GetNumbers(SplittedText[i])) - 1));
end;
If LowerCase(GetLetters(SplittedText[i])) = 'removeamount' then
Begin
If Copy(SplittedText[i], 13, 1) = '<' then
TwoDArrayOfTPoints := RemoveSmallPointGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])));
If Copy(SplittedText[i], 13, 1) = '>' then
TwoDArrayOfTPoints := RemoveBigPointGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])));
end;
If LowerCase(GetLetters(SplittedText[i])) = 'removedistance' then
Begin
If Copy(SplittedText[i], 15, 1) = '<' then
TwoDArrayOfTPoints := RemoveLowerDistancePointGroups(TwoDArrayOfTPoints, StrToInt(GetNumbers(SplittedText[i])));
If Copy(SplittedText[i], 15, 1) = '>' then
TwoDArrayOfTPoints := RemoveHigherDistancePointGroups(TwoDArrayOfTPoints , StrToInt(GetNumbers(SplittedText[i])));
end;
Case LowerCase(SplittedText[i]) of
'lengthtrue' : RearrangeArrayByLength(TwoDArrayOfTPoints,True);
'distancetrue' : ReArrangeArrayByDistance(TwoDArrayOfTPoints,True);
'densitytrue' : ReArrangeArrayByDensity(TwoDArrayOfTPoints,True);
'lengthfalse' : RearrangeArrayByLength(TwoDArrayOfTPoints,False);
'distancefalse' : ReArrangeArrayByDistance(TwoDArrayOfTPoints,False) ;
'densityfalse' : ReArrangeArrayByDensity(TwoDArrayOfTPoints,False);
end;
end;
For I := 0 to GetArrayLength(SplittedText) - 1 do
begin
If LowerCase(Copy(SplittedText[i], 1, 9)) = 'clickleft' then
begin
Delete(SplittedText[i], 1, 9);
Result := CheckAll(TwoDArrayOfTPoints, LowerCase(GetLetters(SplittedText[i])), True);
end;
If LowerCase(Copy(SplittedText[i], 1, 10)) = 'clickright' then
begin
Delete(SplittedText[i], 1, 10);
Result := CheckAll(TwoDArrayOfTPoints, LowerCase(GetLetters(SplittedText[i])), False);
end;
end;
Result := True;
If dev then
Begin
For AI := 0 To GetArrayLength(TwoDArrayOfTPoints) - 1 do
begin
Color := Round((16581375/GetArrayLength(TwoDArrayOfTPoints)) * (AI + 1));
For BI := 0 to GetArrayLength(TwoDArrayOfTPoints[AI]) - 1 do
FastSetPixel(TheBitMap, TwoDArrayOfTPoints[AI][BI].x - MSX1, TwoDArrayOfTPoints[AI][BI].y - MSY1, Color);
end;
SaveBitmap(TheBitmap, 'c:\TheBitmap.bmp');
DisplayDebugImgWindow(MSX2 - MSX1, MSY2 - MSY1);
SafeDrawBitmap(TheBitmap, GetDebugCanvas, 0, 0);
end;
end;
begin
ActivateClient;
Wait(1000);
SetArrayLength(MyColorArray, 1);
MyColorArray[0] := 1977645;
LoveObjectFinder(MyColorArray, 'dev,ClickRight:ine;');
end.