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.
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.
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.
More on this subject:Code: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.
- 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