Cazax
2009-12-11 09:44:22
Made a fix for FindRoadColor:
Function FindRoadColor: Integer;
Var
TPA : TPointArray;
H, S, L : Extended;
I, J, X, Y : Integer;
B : Boolean;
Begin
Result := -1;
FFlag(0);
If Not FindColorsTolerance(TPA, 6842733, MMX1, MMY1, MMX2, MMY2, 25) Then
Exit;
J := High(TPA);
For I := 0 To J Do
Begin
If Not rs_OnMinimap(TPA[I].X, TPA[I].Y) Then
Continue;
ColorToHSL(GetColor(TPA[I].X, TPA[I].Y), H, S, L);
If (S > 0.16) And (S < 4.8) Then
If (L > 38.5) And (L < 45.0) Then
Begin
B := False;
For X := TPA[I].X - 1 To TPA[I].X + 1 Do
For Y := TPA[I].Y - 1 To TPA[I].Y + 1 Do
Begin
ColorToHSL(GetColor(X, Y), H, S, L);
If Not ((S > 0.16) And (S < 4.8) And (L > 38.5) And (L < 45.0)) Then
Begin
B := True;
Break;
End;
End;
If B Then
Continue;
Result := GetColor(TPA[I].X, TPA[I].Y);
Writeln('RoadColor = ' + IntToStr(Result));
Exit;
End;
End;
Writeln('Could not find RoadColor!');
End;Pretty much the same algorithm it had but instead of RGB check it does HSL(specifically Saturation and Luminance).