mastaraymond
07-07-2007, 06:17 PM
Oke, here is the problem: I thought a DDTM always takes up a lot of space so i just made a function which allows you to load DDTMs in 1 line. But it doesn't work, i did all kind of tests and I think its a bug in Scar :(.
Oke here the script:
program New;
var
X,Y,TheDTM,I:integer;
Bla:extended;
DDTM:TDTM;
Procedure MakeTheDTM;
begin
DDTM.MainPoint.x := 669;
DDTM.MainPoint.y := 86;
DDTM.MainPoint.AreaSize := 0;
DDTM.MainPoint.AreaShape := 0;
DDTM.MainPoint.Color := 5995142;
DDTM.MainPoint.Tolerance := 300;
SetArrayLength(DDTM.SubPoints, 5);
DDTM.SubPoints[0].x := 655;
DDTM.SubPoints[0].y := 81;
DDTM.SubPoints[0].AreaSize :=1;
DDTM.SubPoints[0].AreaShape := 0;
DDTM.SubPoints[0].Color := 195836;
DDTM.SubPoints[0].Tolerance := 0;
DDTM.SubPoints[1].x := 646;
DDTM.SubPoints[1].y := 96;
DDTM.SubPoints[1].AreaSize := 2;
DDTM.SubPoints[1].AreaShape := 0;
DDTM.SubPoints[1].Color := 15661038;
DDTM.SubPoints[1].Tolerance := 30;
DDTM.SubPoints[2].x := 677;
DDTM.SubPoints[2].y := 96;
DDTM.SubPoints[2].AreaSize := 2;
DDTM.SubPoints[2].AreaShape := 0;
DDTM.SubPoints[2].Color := 15661038;
DDTM.SubPoints[2].Tolerance := 30;
DDTM.SubPoints[3].x := 708;
DDTM.SubPoints[3].y := 108;
DDTM.SubPoints[3].AreaSize := 2;
DDTM.SubPoints[3].AreaShape := 0;
DDTM.SubPoints[3].Color := 15661038;
DDTM.SubPoints[3].Tolerance :=30;
DDTM.SubPoints[4].x := 669;
DDTM.SubPoints[4].y := 119;
DDTM.SubPoints[4].AreaSize := 7;
DDTM.SubPoints[4].AreaShape := 0;
DDTM.SubPoints[4].Color := 2383671;
DDTM.SubPoints[4].Tolerance := 0;
TheDTM := AddDTM(DDTM);
end;
Procedure MakeDTM(TheX,TheY,Color,Tolerance,Shape,Size: TIntegerArray);
begin;
DDTM.MainPoint.x:= TheX[0];
DDTM.MainPoint.y:= TheY[0];
DDTM.MainPoint.color:= Color[0];
DDTM.MainPoint.Tolerance:= Tolerance[0];
DDTM.MainPoint.AreaShape:= Shape[0];
DDTM.MainPoint.AreaSize:= Size[0];
SetArrayLength(DDTM.SubPoints,Length(TheX)-1);
For I:=1 to length(TheX) -1 do
begin;
DDTM.SubPoints[i-1].x:= TheX[i];
DDTM.SubPoints[i-1].y:= TheY[i];
DDTM.SubPoints[i-1].color:= Color[i];
DDTM.SubPoints[i-1].Tolerance:= Tolerance[i];
DDTM.SubPoints[i-1].AreaShape:= Shape[i];
DDTM.SubPoints[i-1].AreaSize:= Size[i];
end;
TheDTM := AddDTM(DDTM);
end;
begin
MakeDTM([669,655,646,677,708,699],[86,81,96,96,108,119],[5995142,195836,15661038,15661038,15661038,2383671],[300,0,30,30,30,0],[0,0,0,0,0,0],[0,1,2,2,2,7]); //This one Doesn't work!
MakeTheDTM; //This one does WORK
if FindDTMRotated(TheDTM,x,y,MMX1,MMY1,MMX2,MMY2,0,2* pi,0.05, bla) then MoveMouse(x,y);
end.
The MakeDTM function does NOT work but the MakeTheDTM one does work:redface:.
Here i took a picture of what is inside the DDTMs before converting them to a integer:
http://img68.imageshack.us/img68/5518/40810756vd9.png. Im confused :p
~Raymond
Oke here the script:
program New;
var
X,Y,TheDTM,I:integer;
Bla:extended;
DDTM:TDTM;
Procedure MakeTheDTM;
begin
DDTM.MainPoint.x := 669;
DDTM.MainPoint.y := 86;
DDTM.MainPoint.AreaSize := 0;
DDTM.MainPoint.AreaShape := 0;
DDTM.MainPoint.Color := 5995142;
DDTM.MainPoint.Tolerance := 300;
SetArrayLength(DDTM.SubPoints, 5);
DDTM.SubPoints[0].x := 655;
DDTM.SubPoints[0].y := 81;
DDTM.SubPoints[0].AreaSize :=1;
DDTM.SubPoints[0].AreaShape := 0;
DDTM.SubPoints[0].Color := 195836;
DDTM.SubPoints[0].Tolerance := 0;
DDTM.SubPoints[1].x := 646;
DDTM.SubPoints[1].y := 96;
DDTM.SubPoints[1].AreaSize := 2;
DDTM.SubPoints[1].AreaShape := 0;
DDTM.SubPoints[1].Color := 15661038;
DDTM.SubPoints[1].Tolerance := 30;
DDTM.SubPoints[2].x := 677;
DDTM.SubPoints[2].y := 96;
DDTM.SubPoints[2].AreaSize := 2;
DDTM.SubPoints[2].AreaShape := 0;
DDTM.SubPoints[2].Color := 15661038;
DDTM.SubPoints[2].Tolerance := 30;
DDTM.SubPoints[3].x := 708;
DDTM.SubPoints[3].y := 108;
DDTM.SubPoints[3].AreaSize := 2;
DDTM.SubPoints[3].AreaShape := 0;
DDTM.SubPoints[3].Color := 15661038;
DDTM.SubPoints[3].Tolerance :=30;
DDTM.SubPoints[4].x := 669;
DDTM.SubPoints[4].y := 119;
DDTM.SubPoints[4].AreaSize := 7;
DDTM.SubPoints[4].AreaShape := 0;
DDTM.SubPoints[4].Color := 2383671;
DDTM.SubPoints[4].Tolerance := 0;
TheDTM := AddDTM(DDTM);
end;
Procedure MakeDTM(TheX,TheY,Color,Tolerance,Shape,Size: TIntegerArray);
begin;
DDTM.MainPoint.x:= TheX[0];
DDTM.MainPoint.y:= TheY[0];
DDTM.MainPoint.color:= Color[0];
DDTM.MainPoint.Tolerance:= Tolerance[0];
DDTM.MainPoint.AreaShape:= Shape[0];
DDTM.MainPoint.AreaSize:= Size[0];
SetArrayLength(DDTM.SubPoints,Length(TheX)-1);
For I:=1 to length(TheX) -1 do
begin;
DDTM.SubPoints[i-1].x:= TheX[i];
DDTM.SubPoints[i-1].y:= TheY[i];
DDTM.SubPoints[i-1].color:= Color[i];
DDTM.SubPoints[i-1].Tolerance:= Tolerance[i];
DDTM.SubPoints[i-1].AreaShape:= Shape[i];
DDTM.SubPoints[i-1].AreaSize:= Size[i];
end;
TheDTM := AddDTM(DDTM);
end;
begin
MakeDTM([669,655,646,677,708,699],[86,81,96,96,108,119],[5995142,195836,15661038,15661038,15661038,2383671],[300,0,30,30,30,0],[0,0,0,0,0,0],[0,1,2,2,2,7]); //This one Doesn't work!
MakeTheDTM; //This one does WORK
if FindDTMRotated(TheDTM,x,y,MMX1,MMY1,MMX2,MMY2,0,2* pi,0.05, bla) then MoveMouse(x,y);
end.
The MakeDTM function does NOT work but the MakeTheDTM one does work:redface:.
Here i took a picture of what is inside the DDTMs before converting them to a integer:
http://img68.imageshack.us/img68/5518/40810756vd9.png. Im confused :p
~Raymond