WT-Fakawi

03-21-2006, 10:40 PM

RadialWalk is a High Level Map Walker. It finds a color in any given direction, plants the flag and waits until the flag is within a fixed distance of the minimapcenter, in other words, it walks towards the flag. RadialWalk combines three low level routines: color-finding, mapwalking and flag waiting.

RadialWalk uses simple geometry to scan for TheColor. It works with arcs, slices of a circle. It scans the MiniMap both clockwise and counterclockwise. While this may seem futile, it is yet the most powerful feature of RadialWalk. With the clockwise/counterclockwise setting, you can give the function "direction tendencies".

See Picture 1.

http://jaap.wajer.org/SRL/RadialWalk.jpg

RadialWalk examples

1.RadialWalk(TheColor,0,90,70,xmod,ymod)

This will scan TheColor from North to East, starting at 70 distance and ending at the MiniMap Center (MMCX and MMCY)

2.RadialWalk(TheColor,0,90,40,xmod,ymod)

This will scan from North to East, starting at 40 distance and ending at the MiniMap Center.

3.RadialWalk(TheColor,90,0,70,xmod,ymod)

This will scan from East to North, starting at 70 distance and ending at the MiniMap Center.

4.RadialWalk(TheColor,90,0,40,xmod,ymod)

This will scan from East to North, starting at 40 distance and ending at the MiniMap Center.

5.RadialWalk(TheColor,320,400,40,xmod,ymod)

This will scan from NorthEast to NorthWest, starting at 70 distance and ending at the MiniMap Center.

6.RadialWalk(TheColor,320,400,40,xmod,ymod)

This will scan from NorthEast to NorthWest, starting at 40 distance and ending at the MiniMap Center.

7.RadialWalk(TheColor,320,400,40,xmod,ymod)

This will scan from NorthEast to NorthWest, starting at 20 distance and ending at the MiniMap Center.

8,9 and 10. Scan from NorthWest to NortEast

.

11.RadialWalk(TheColor,160,200,70,xmod,ymod)

This will scan from SouthSouthEastto SouthSouthWest, starting at 70 distance and ending at the MiniMap Center.

12.RadialWalk(TheColor,200,160,70,xmod,ymod)

This will scan from SSWto SSE, starting at 70 distance and ending at the MiniMap Center.

13.RadialWalk(TheColor,10,200,70,xmod,ymod)

This will scan from NNEto SSW, starting at 70 distance and ending at the MiniMap Center.

13 and 14.. Here you can clearly see the difference in behaviour. While 13 will move your player in an Upwards direction, 14 does the exact opposite; it moves your Player Downwards, since it starts scanning at the bottom halve of the Minimap.

to complete the Picture:

16. Scans from WNW to E, 17 from E to WNW. 18 and 19 from WSW to N with different Radius. 20 and 21 from SW to NW and reverse :)

This is how it is described inside the Manual:

function RadialWalk(TheColor: Integer; StartRadial, EndRadial: Integer; Radius: Integer; Xmod, Ymod: integer): Boolean;

By: WT-Fakawi & Wizzup?

Description: Walks TheColor from StartRadial to EndRadial for Radius Distance

Valid Arguments:

TheColor:= Any Color, but Road- or WaterColor will do fine :)

StartRadial/EndRadial := Any number between -360 to 1440. 0=N,90=E,180=S,270=W. DO NOT USE NUMBERS UNDER -360 or ABOVE 1440

Radius:= Distance from the centre of minimap, i.e. how far away the mouse clicks. Use numbers 20-72

XMod, YMod := deviation from MouseFindFlag. -2 to 2.

TheColor

This argument is pretty self-explanatory. It is the color we are looking for. No furhter explanation is needed, I hope.

StartRadial/EndRadial

I guess by now you know what they do...

Radius

Distance from Minimap Center where the scanning BEGINS. RadialWalk works inwards: it starts at radius and scans towards the center.

Xmod/Ymod

The deviation from MouseFindFlag. RadialWalk uses MouseFindFlag to place the flag on the minimap. MouseFindFlag will click as long as it takes on the minimap until the flag appears. It will add Xmod and Ymod to each click. Fill in 1,1 for Xmod and Ymod, and the mouse will gradually move to the lower right corner of the minimap one pixel each click. See the table below.

http://jaap.wajer.org/SRL/MouseFindFlag.jpg

MouseFindFlag deviations.

To end, here is a working example of a Special Version RadialWalk inside a small script. Use it with Paint. Set Paint a target window, select the pen, and run the script! It will demonstrate the use of RadialWalk.

I have also enclosed some working examples of Special VersionLinearWalk, the "WindScreen" scanner.

program RadialWalk;

var x, y:integer;

//----------------------------------------------------------------------------//

function RadialWalk(TheColor:Integer; StartRadial, EndRadial:Integer; Radius:Integer; Xmod, Ymod:integer): Boolean;// By Wizzup? and WT-Fakawi.

var i: Integer;

var X1, Y1: integer;

begin

if StartRadial < EndRadial then

begin

repeat

for i:=StartRadial to EndRadial do

begin

X1:=Round ( Radius * Sin (i * Pi / 180)) + 646;

Y1:=Round (- Radius * Cos (i * Pi / 180)) + 84;

MoveMouse(X1, Y1);

HoldMouse(X1, Y1, True);

ReleaseMouse(X1, Y1, True);

end

Radius:= Radius - 4;

until Radius <= 1 ;

end

if StartRadial > EndRadial then

begin

repeat

for i:=StartRadial Downto EndRadial do

begin

X1:=Round ( Radius * Sin (i * Pi / 180)) + 646;

Y1:=Round (- Radius * Cos (i * Pi / 180)) + 84;

MoveMouse(X1, Y1);

HoldMouse(X1, Y1, True);

ReleaseMouse(X1, Y1, True);

end

Radius := Radius - 4;

until Radius <= 1;

end

end;

//----------------------------------------------------------------------------//

function LinearWalk(TheColor : Integer; Direction : Integer; Radius : Integer; Xmod, Ymod : Integer) : Boolean;// By Wizzup? and WT-Fakawi.

var

i, j, StartRadial, EndRadial, InitRadius : Integer;

var

X1, Y1, Count : Integer;

begin

InitRadius := Radius;

repeat

StartRadial := 360 + Direction - Count;

EndRadial := 360 + Direction + Count;

repeat

for i := StartRadial to EndRadial do

begin

X1:=Round ( Radius * Sin (i * Pi / 180)) + 646;

Y1:=Round (- Radius * Cos (i * Pi / 180)) + 84;

MoveMouse(X1, Y1);

HoldMouse(x1, y1, True);

ReleaseMouse(x1, y1, True);

end;

for i := EndRadial downto StartRadial do

begin

X1:=Round ( Radius * Sin (i * Pi / 180)) + 646;

Y1:=Round (- Radius * Cos (i * Pi / 180)) + 84;

MoveMouse(X1,Y1);

HoldMouse(X1, Y1, True);

ReleaseMouse(X1, Y1, True);

end;

Radius := Radius - 4;

until Radius <= 10;

Radius := InitRadius;

Count := Count + 2;

until ((StartRadial < 2) or (EndRadial > 720));

end;

//----------------------------------------------------------------------------//

begin

RadialWalk(0, 0, 80, 40, -1, -1);

RadialWalk(0, 40, 50, 70, -1, 0);

RadialWalk(0, 90, 120, 70, -1, 0);

RadialWalk(0,200, 130, 70, -1, -1);

RadialWalk(0, 260, 140, 40, -1, -1);

RadialWalk(0, 420, 300, 70, -1, -1);

LinearWalk(0, 320, 70, 1, 1);

end.

More on this subject:

function FindColorRadius(var x, y: Integer; Color, CenterX, CenterY, sAngle, eAngle, minRadius, maxRadius, Tolerance: Integer): Boolean;

By: masquerader

procedure AWalk2(Angle, Radius, Color: Integer);

By: Starblaster100

procedure MapWalk(var x, y: Integer; WalkAng, WalkDist: Integer);

procedure AngleWalker(gAngle: Extended; gDistance: Integer);

By: based on Sythes AWalk/Liquid

procedure RoadWalk(RColor: Integer; Dir: String);

By: Stupid3ooo

RadialWalk uses simple geometry to scan for TheColor. It works with arcs, slices of a circle. It scans the MiniMap both clockwise and counterclockwise. While this may seem futile, it is yet the most powerful feature of RadialWalk. With the clockwise/counterclockwise setting, you can give the function "direction tendencies".

See Picture 1.

http://jaap.wajer.org/SRL/RadialWalk.jpg

RadialWalk examples

1.RadialWalk(TheColor,0,90,70,xmod,ymod)

This will scan TheColor from North to East, starting at 70 distance and ending at the MiniMap Center (MMCX and MMCY)

2.RadialWalk(TheColor,0,90,40,xmod,ymod)

This will scan from North to East, starting at 40 distance and ending at the MiniMap Center.

3.RadialWalk(TheColor,90,0,70,xmod,ymod)

This will scan from East to North, starting at 70 distance and ending at the MiniMap Center.

4.RadialWalk(TheColor,90,0,40,xmod,ymod)

This will scan from East to North, starting at 40 distance and ending at the MiniMap Center.

5.RadialWalk(TheColor,320,400,40,xmod,ymod)

This will scan from NorthEast to NorthWest, starting at 70 distance and ending at the MiniMap Center.

6.RadialWalk(TheColor,320,400,40,xmod,ymod)

This will scan from NorthEast to NorthWest, starting at 40 distance and ending at the MiniMap Center.

7.RadialWalk(TheColor,320,400,40,xmod,ymod)

This will scan from NorthEast to NorthWest, starting at 20 distance and ending at the MiniMap Center.

8,9 and 10. Scan from NorthWest to NortEast

.

11.RadialWalk(TheColor,160,200,70,xmod,ymod)

This will scan from SouthSouthEastto SouthSouthWest, starting at 70 distance and ending at the MiniMap Center.

12.RadialWalk(TheColor,200,160,70,xmod,ymod)

This will scan from SSWto SSE, starting at 70 distance and ending at the MiniMap Center.

13.RadialWalk(TheColor,10,200,70,xmod,ymod)

This will scan from NNEto SSW, starting at 70 distance and ending at the MiniMap Center.

13 and 14.. Here you can clearly see the difference in behaviour. While 13 will move your player in an Upwards direction, 14 does the exact opposite; it moves your Player Downwards, since it starts scanning at the bottom halve of the Minimap.

to complete the Picture:

16. Scans from WNW to E, 17 from E to WNW. 18 and 19 from WSW to N with different Radius. 20 and 21 from SW to NW and reverse :)

This is how it is described inside the Manual:

function RadialWalk(TheColor: Integer; StartRadial, EndRadial: Integer; Radius: Integer; Xmod, Ymod: integer): Boolean;

By: WT-Fakawi & Wizzup?

Description: Walks TheColor from StartRadial to EndRadial for Radius Distance

Valid Arguments:

TheColor:= Any Color, but Road- or WaterColor will do fine :)

StartRadial/EndRadial := Any number between -360 to 1440. 0=N,90=E,180=S,270=W. DO NOT USE NUMBERS UNDER -360 or ABOVE 1440

Radius:= Distance from the centre of minimap, i.e. how far away the mouse clicks. Use numbers 20-72

XMod, YMod := deviation from MouseFindFlag. -2 to 2.

TheColor

This argument is pretty self-explanatory. It is the color we are looking for. No furhter explanation is needed, I hope.

StartRadial/EndRadial

I guess by now you know what they do...

Radius

Distance from Minimap Center where the scanning BEGINS. RadialWalk works inwards: it starts at radius and scans towards the center.

Xmod/Ymod

The deviation from MouseFindFlag. RadialWalk uses MouseFindFlag to place the flag on the minimap. MouseFindFlag will click as long as it takes on the minimap until the flag appears. It will add Xmod and Ymod to each click. Fill in 1,1 for Xmod and Ymod, and the mouse will gradually move to the lower right corner of the minimap one pixel each click. See the table below.

http://jaap.wajer.org/SRL/MouseFindFlag.jpg

MouseFindFlag deviations.

To end, here is a working example of a Special Version RadialWalk inside a small script. Use it with Paint. Set Paint a target window, select the pen, and run the script! It will demonstrate the use of RadialWalk.

I have also enclosed some working examples of Special VersionLinearWalk, the "WindScreen" scanner.

program RadialWalk;

var x, y:integer;

//----------------------------------------------------------------------------//

function RadialWalk(TheColor:Integer; StartRadial, EndRadial:Integer; Radius:Integer; Xmod, Ymod:integer): Boolean;// By Wizzup? and WT-Fakawi.

var i: Integer;

var X1, Y1: integer;

begin

if StartRadial < EndRadial then

begin

repeat

for i:=StartRadial to EndRadial do

begin

X1:=Round ( Radius * Sin (i * Pi / 180)) + 646;

Y1:=Round (- Radius * Cos (i * Pi / 180)) + 84;

MoveMouse(X1, Y1);

HoldMouse(X1, Y1, True);

ReleaseMouse(X1, Y1, True);

end

Radius:= Radius - 4;

until Radius <= 1 ;

end

if StartRadial > EndRadial then

begin

repeat

for i:=StartRadial Downto EndRadial do

begin

X1:=Round ( Radius * Sin (i * Pi / 180)) + 646;

Y1:=Round (- Radius * Cos (i * Pi / 180)) + 84;

MoveMouse(X1, Y1);

HoldMouse(X1, Y1, True);

ReleaseMouse(X1, Y1, True);

end

Radius := Radius - 4;

until Radius <= 1;

end

end;

//----------------------------------------------------------------------------//

function LinearWalk(TheColor : Integer; Direction : Integer; Radius : Integer; Xmod, Ymod : Integer) : Boolean;// By Wizzup? and WT-Fakawi.

var

i, j, StartRadial, EndRadial, InitRadius : Integer;

var

X1, Y1, Count : Integer;

begin

InitRadius := Radius;

repeat

StartRadial := 360 + Direction - Count;

EndRadial := 360 + Direction + Count;

repeat

for i := StartRadial to EndRadial do

begin

X1:=Round ( Radius * Sin (i * Pi / 180)) + 646;

Y1:=Round (- Radius * Cos (i * Pi / 180)) + 84;

MoveMouse(X1, Y1);

HoldMouse(x1, y1, True);

ReleaseMouse(x1, y1, True);

end;

for i := EndRadial downto StartRadial do

begin

X1:=Round ( Radius * Sin (i * Pi / 180)) + 646;

Y1:=Round (- Radius * Cos (i * Pi / 180)) + 84;

MoveMouse(X1,Y1);

HoldMouse(X1, Y1, True);

ReleaseMouse(X1, Y1, True);

end;

Radius := Radius - 4;

until Radius <= 10;

Radius := InitRadius;

Count := Count + 2;

until ((StartRadial < 2) or (EndRadial > 720));

end;

//----------------------------------------------------------------------------//

begin

RadialWalk(0, 0, 80, 40, -1, -1);

RadialWalk(0, 40, 50, 70, -1, 0);

RadialWalk(0, 90, 120, 70, -1, 0);

RadialWalk(0,200, 130, 70, -1, -1);

RadialWalk(0, 260, 140, 40, -1, -1);

RadialWalk(0, 420, 300, 70, -1, -1);

LinearWalk(0, 320, 70, 1, 1);

end.

More on this subject:

function FindColorRadius(var x, y: Integer; Color, CenterX, CenterY, sAngle, eAngle, minRadius, maxRadius, Tolerance: Integer): Boolean;

By: masquerader

procedure AWalk2(Angle, Radius, Color: Integer);

By: Starblaster100

procedure MapWalk(var x, y: Integer; WalkAng, WalkDist: Integer);

procedure AngleWalker(gAngle: Extended; gDistance: Integer);

By: based on Sythes AWalk/Liquid

procedure RoadWalk(RColor: Integer; Dir: String);

By: Stupid3ooo