SRL Archive - Outdated Tutorials

[Dev #588] New Maze Solver! [Maze.Scar]


Naum

2010-08-22 15:05:41

With developer revision #588 comes the new maze solver, which has been in development for about 8 months now.
It's not 100% done, as I'm not sure about the information for the start tile of Paths[TurquoisePath], I still need accounts in the random to perfect it.
However, since it's been 2 months since the last account, I reckon I'll release it and take the gamble. Better to have one which works than one which doesn't.

//-----------------------------------------------------------------//
//-- Scar Standard Resource Library --//
//-- ? Maze Routines --//
//-----------------------------------------------------------------//
// * function InMaze: Boolean; // * by ZephyrsFury
// * Function Maze_FindDoor : Boolean; // * by Naum
// * function Maze_TouchShrine: Boolean; // * by Sumilion edited by Naum
// * Function Maze_GetBlackBackground : Integer; // * by Naum
// * Procedure Maze_LoadPath(Const Path : Integer); // * by Naum
// * Function Maze_DetectStart : Integer; // * by Naum
// * Procedure Maze_WalkPath(Path : Integer); // * by Naum
// * function SolveMaze: Boolean; // * by Naum & Sum

{ Zeph -<3

~ SPECIAL Thank-you's go to (in no particular order):
> niels
> nickrules
> bbri06 (I love him!) !1!!11
> aran armath
> masterBB
> Heysus
> Hackncrack1 (I <3 him!)
> Town
> g0tp0t
> Broh3n (Cohen)
> keller
> Mrbanana
> Heavenguard
> IcePyre908 (Homie)
> Any other person I might have missed (PM me)

Check these guys out, without them this would not be here. }

//Need to test the 'Turquoise' Path!!!!

Type
TMazeLoc = Record
Name : String; //The name of the path
Path : Integer; //The path index
SearchBox : TBox; // the box to search for black colour in
Counts : TIntegerArray; //0 is min count, 1 is max count
End;

Type TMazeLocArray = Array Of TMazeLoc; // the type that stores the location details.


Const //consts relating to the paths (in the atpa)
Maze_StartFail = -3;

PurplePath = 0;
TurquoisePath = 1;
GreenPath = 2;
BluePath = 3;

NoOfPaths = 4;

Const
Maze_Door = -999; //Point manipulation to show information
ChangeCompass = 999;


Var
Paths : T2DPointArray; //Variable which stores the paths
DetectedPath : Integer; //Integer type which holds the path which has been detected
StartSpots : TMazeLocArray; //The record of start points within the maze

{*******************************************************************************
function InMaze: Boolean;
by: ZephyrsFury
Description: Checks if we're in the Maze Random.
*******************************************************************************}

function InMaze: Boolean;
var
X, Y: Integer;
begin
if (FindColorTolerance(X, Y, 237, MMCX - 10, MMCY - 10, MMCX + 10, MMCY + 10, 17)) then
if (CountColorTolerance(237, MMX1, MMY1, MMX2, MMY2, 17) > 500) then
Result := (CountColor(15395562, 128, 24, 395, 55) > 500);
end;

{*******************************************************************************
Function Maze_FindDoor : Boolean;
By Naum
Description: Opens the maze Maze_Door: using density, axis checks and sorting.
*******************************************************************************}

Const
Maze_Hue = 0.10;
Maze_Sat = 0.07;
Maze_DoorColor = 4868684;
Maze_DoorTolerance = 30;
Maze_DoorSplit = 1;
Maze_DoorSize = 1000;
Maze_DoorYLength = 60;
Maze_DoorArea = 950;
Maze_DoorUpText = 'all';

Function Maze_FindMaze_Door : Boolean;
Var
TPA : TPointArray; //variables
ATPA, ATPA2 : T2DPointArray;
I, II, X, Y : Integer;
TB : TBox;

Begin
If Not LoggedIn Then Exit;

Wait(600 + Random(400)); //waits for char to stop moving
ColorToleranceSpeed(2); //sets mods
SetColorSpeed2Modifiers(Maze_Hue, Maze_Sat);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Maze_DoorColor, MSCX - 120, //searches for gray colors
MSCY - 120, MSCX + 120, MSCY + 113, Maze_DoorTolerance); //in a box around the character

ATPA := SplitTPA(TPA, Maze_DoorSplit); //to get the blocks and Maze_Door pane
SortATPAFromSize(ATPA, Maze_DoorSize, True); //sorts it

SetLength(ATPA2, 4); /// to avoid errors
ATPA2 := [ATPA[0], ATPA[1], ATPA[2], ATPA[3]]; //picks out the first 4 biggest ones

SortATPAFromFirstPoint(ATPA2, Point(MSCX, MSCY)); //sorts it from the char

For I := 0 To High(ATPA2) Do //loops through the atpa2
Begin
If MiddleTPAEx(ATPA[I], X, Y) Then //gets the middle of the suspected Maze_Door
Begin
TB := GetTPABounds(ATPA[I]); //gets the bounds of the 'suspected foor'
If (TB.y2 - TB.y1) < Maze_DoorYLength Then // checks that the height is less than 60
If (TB.x2 - TB.x1) * (TB.y2 - TB.y1) > Maze_DoorArea Then // checks that the suspected
Begin //Maze_Door covers an area of at least 950px
MMouse(X, Y, 0, 0); //moves the mouse over it
WriteLn(' ~ Found a suspected Maze_Door');
Wait(300 + Random(100));
{ v FAILSAFE v }
For II := 0 To 3 Do //uses a loop to see if it gets the uptext
Begin
If WaitUpText(Maze_DoorUpText, SRL_MaxWaitTime) Then //if the uptext is there then it breaks
Break;

If Not WaitUpText(Maze_DoorUpText, SRL_MaxWaitTime) Then
Begin
WriteLn(' + Didn''t Get UpText of Maze_Door, Trying again to find it');
GetMousePos(X, Y);
MMouse(X - 5, Y, 0, 1); //moves the mouse to get on the Maze_Door if it missed it
GetMousePos(X, Y); //if it finds it, it gets the mouse pos
End;
End;

If WaitUpText(Maze_DoorUpText, SRL_MaxWaitTime) Then
Begin
Begin //now clicks the Maze_Door
Mouse(X, Y, 0, 0, False);
WaitOption('pen', SRL_MaxWaitTime); //always side clicks
End;

Result := DidRedClick; //to see if clicked
If Not Result Then
Begin
Maze_FindMaze_Door;
WriteLn(' - Didn''t Red Click, Trying to find it again');
End Else
FFlag(0);

While LoggedIn And IsMoving Do //waits while the Maze_Door is opened
Wait(200 + Random(200));

Wait(800 + Random(400));
Exit;
End;
End;
End;
End;
End;

{*******************************************************************************
function TouchShrine: Boolean;
by: Sumilion edited by Naum
Description: Touches the shrine at the end of the maze.
*******************************************************************************}
function Maze_TouchShrine: Boolean;
var
sx, sy, i: Integer;
p: TPoint;
arP: TPointArray;
ararP: T2DPointArray;
bmp1, bmp2: Integer;
begin
If Not LoggedIn Then Exit;

MMouse(MSCX + 6, MSCY - 40, 0, 0);
Wait(200 + Random(200));
Result := IsUpText('Touch');

if Result then
begin
GetMousePos(sx, sy);
Mouse(sx, sy, 0, 0, True);
Wait(8000);
end else
begin
Writeln('Quick Shrine finding failed. Trying motion detector.');
bmp1 := BitmapFromString(MSX2 - MSX1, MSY2 - MSY1, '');
bmp2 := BitmapFromString(MSX2 - MSX1, MSY2 - MSY1, '');

{$IFDEF SIMBA}
CopyClientToBitmap(bmp1, MSX1, MSY1, MSX2, MSY2);
Wait(100);
CopyClientToBitmap(bmp2, MSX1, MSY1, MSX2, MSY2);
{$ELSE}
CopyCanvas(GetClientCanvas, GetBitmapCanvas(bmp1), MSX1, MSY1, MSX2, MSY2, 0, 0, MSX2 - MSX1, MSY2 - MSY1);
Wait(100);
CopyCanvas(GetClientCanvas, GetBitmapCanvas(bmp2), MSX1, MSY1, MSX2, MSY2, 0, 0, MSX2 - MSX1, MSY2 - MSY1);
{$ENDIF}

for sx := 0 to MSX2 - MSX1 - 1 do
for sy := 0 to MSY2 - MSY1 - 1 do
if (FastGetPixel(bmp1, sx, sy) <> FastGetPixel(bmp2, sx, sy)) then
begin
SetLength(arP, Length(arP) + 1);
arP[High(arP)] := Point(sx, sy);
FastSetPixel(bmp1, sx, sy, ClRed);
end;

DisplayDebugImgWindow(MSX2 - MSX1, MSY2 - MSY1);

{$IFDEF SIMBA}
DrawBitmapDebugImg(Bmp1);
{$ELSE}
CopyCanvas(GetBitmapCanvas(bmp1), GetDebugCanvas, 0, 0, MSX2 - MSX1, MSY2 - MSY1, 0, 0, MSX2 - MSX1, MSY2 - MSY1);
{$ENDIF}

ararP := SplitTPA(arP, 1);

SortATPAFromSize(ararP, 0, False);

for i := 0 to High(ararP) do
begin
p := MiddleTPA(ararP[i]);
MMouse(p.x, p.y, 0, 0);
Wait(200 + Random(50));
Result := IsUpText('Touch');
if Result then
Break;
end;

if (i <> Length(ararP)) then
begin
Mouse(p.x, p.y, 0, 0, True);
Wait(8000);
end else

If SpiralMouse(SX, SY, MSCX - 70, MSCY - 70, MSCX + 70, MSCY + 70,
'ouch', 5, 5) Then
Begin
Mouse(SX, SY, 0, 0, True);
Result := True;
End Else
Writeln('Shrine not found!');

FreeBitmap(bmp1);
FreeBitmap(bmp2);
end;
end;

{*******************************************************************************
Function Maze_GetBlackBackground : Integer;
By Naum
Description: Gets the black background color for location detection.
*******************************************************************************}

Const
Maze_BlackTol = 50;
Maze_BlackBackCTS = 1;

Function Maze_GetBlackBackground : Integer;
Var
TPA : TPointArray;
CTS : Integer;

Begin //gets the black color by using a related colour
If Not LoggedIn Then Exit;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(Maze_BlackBackCTS);
FindColorsTolerance(TPA, ClBlack, MMX1, MMY1, MMX2, MMY2, Maze_BlackTol);

FilterPointsPie(TPA, 0.0, 360.0, 10.0, 76.0, MMCX, MMCY);

If Length(TPA) > 0 Then
Result := GetColor(TPA[0].X, TPA[0].Y);

WriteLn('Maze Background color = '+IntToStr(Result));
ColorToleranceSpeed(CTS);
End;

{*******************************************************************************
Procedure Maze_LoadPath(Const Path : Integer);
By Naum
Description: Loads the 4 walk-paths and ways to the maze.
*******************************************************************************}

Procedure Maze_LoadPath(Const Path : Integer);
Begin
SetLength(Paths, NoOfPaths);

Paths[PurplePath] := [//0
Point(-4, -2), Point(Maze_Door, -1), Point(-45, -8),
Point(Maze_Door, -1), Point(-45, 3), Point(Maze_Door, -1), Point(22, 9),
Point(Maze_Door, -1), Point(-20, 7), Point(Maze_Door, -1), Point(50, 9),
Point(Maze_Door, -1), Point(-50, 9), Point(Maze_Door, -1), Point(-37, 26),
Point(ChangeCompass, 90), Point(Maze_Door, -1), Point(ChangeCompass, 0),
Point(15, -13), Point(Maze_Door, -1), Point(2, 43), Point(ChangeCompass, 90),
Point(Maze_Door, -1), Point(ChangeCompass, 0), Point(19, -46), Point(ChangeCompass, 180),
Point(Maze_Door, -1), Point(ChangeCompass, 0), Point(40, 7), Point(Maze_Door, -1),
Point(17, 15), Point(ChangeCompass, 90), Point(Maze_Door, -1), Point(9, 35),
Point(ChangeCompass, 180), Point(Maze_Door, -1), Point(ChangeCompass, 0), Point(4, 35),
Point(Maze_Door, -1), Point(4, -12), Point(ChangeCompass, 90), Point(Maze_Door, -1)
];

Paths[TurquoisePath] := [//1 //the unsure one.
Point(60, 30{-7, 20}), Point(Maze_Door, -1), Point(-70, 8),
Point(Maze_Door, -1), Point(70, -8), Point(34, -15), Point(ChangeCompass, 270),
Point(Maze_Door, -1), Point(44, -10), Point(Maze_Door, -1), Point(22, -10),
Point(Maze_Door, -1), Point(-60, -6), Point(Maze_Door, -1), Point(40, 3),
Point(38, 3), Point(Maze_Door, -1), Point(34, -3), Point(Maze_Door, -1),
Point(5, -20), Point(ChangeCompass, 0), Point(Maze_Door, -1), Point(-2, 67),
Point(ChangeCompass, 270), Point(Maze_Door, -1), Point(30, -3), Point(Maze_Door, -1),
Point(-3, -25), Point(ChangeCompass, 0), Point(Maze_Door, 1), Point(13, 23),
Point(ChangeCompass, 270), Point(Maze_Door, -1), Point(-5, -38),
Point(ChangeCompass, 180), Point(Maze_Door, -1), Point(ChangeCompass, 0),
Point(0, 38), Point(Maze_Door, -1), Point(4, -12), Point(ChangeCompass, 90),
Point(Maze_Door, -1)
];

Paths[GreenPath] := [//2
Point(51, 4), Point(Maze_Door, -1), Point(-50, -45), Point(ChangeCompass, 90),
Point(Maze_Door, -1), Point(-45, -5), Point(Maze_Door, -1), Point(45, -10),
Point(Maze_Door, -1), Point(23, -10), Point(Maze_Door, -1), Point(6, -34),
Point(ChangeCompass, 0), Point(Maze_Door, -1), Point(40, -3), Point(Maze_Door, -1),
Point(-20, -3), Point(Maze_Door, -1), Point(60, -10), Point(ChangeCompass, 90),
Point(Maze_Door, -1), Point(-35, 10), Point(Maze_Door, -1), Point(ChangeCompass, 0),
Point(-17, 30), Point(Maze_Door, -1), Point(-40, -10), Point(ChangeCompass, 90),
Point(Maze_Door, -1), Point(ChangeCompass, 0), Point(18, -48), Point(Maze_Door, -1),
Point(40, 7), Point(Maze_Door, -1), Point(17, 15), Point(ChangeCompass, 90),
Point(Maze_Door, -1), Point(9, 35), Point(ChangeCompass, 0), Point(Maze_Door, -1),
Point(4, 35), Point(Maze_Door, -1), Point(4, -12), Point(ChangeCompass, 90),
Point(Maze_Door, -1)
];

Paths[BluePath] := [//3
Point(-4, 36), Point(ChangeCompass, 270), Point(Maze_Door, -1), Point(30, -10),
Point(Maze_Door, -1), Point(13, 23), Point(ChangeCompass, 0), Point(Maze_Door, -1),
Point(31, 7), Point(Maze_Door, -1), Point(-15, 7), Point(Maze_Door, -1), Point(-13, 35),
Point(ChangeCompass, 120), Point(Maze_Door, -1), Point(25, -20), Point(Maze_Door, -1),
Point(ChangeCompass, 90), Point(43, -13), Point(Maze_Door, -1), Point(16, -10),
Point(Maze_Door, -1), Point(ChangeCompass, 0), Point(40, -10), Point(Maze_Door, -1),
Point(-30, -20), Point(18, -48), Point(Maze_Door, -1), Point(40, 7), Point(Maze_Door, -1),
Point(17, 15), Point(ChangeCompass, 90), Point(Maze_Door, -1), Point(9, 35),
Point(ChangeCompass, 0), Point(Maze_Door, -1), Point(4, 35), Point(Maze_Door, -1),
Point(4, -12), Point(ChangeCompass, 90), Point(Maze_Door, -1)
];

// Next here.
End;

{*******************************************************************************
Function Maze_DetectStart : Integer;
By Naum
Description: Uses the countcolor on the minimap to get the location.
*******************************************************************************}

Function Maze_DetectStart : Integer;
Var
II : Integer;
//loads all the types for the path
Begin
SetLength(StartSpots, NoOfPaths);
With StartSpots[PurplePath] Do //Purple Path
Begin
Name := 'Purple Path';
Path := PurplePath;
SearchBox := IntToBox(668, 60, 687, 73);
Counts := [100, 1200];
End;

With StartSpots[TurquoisePath] Do //Turquoise Path
Begin
Name := 'Turquoise Path';
Path := TurquoisePath;
SearchBox := IntToBox(MMCX, MMCY, MMX2, MMY2);
Counts := [3000, 99999];
End;

With StartSpots[GreenPath] Do //Green Path
Begin
Name := 'Green Path';
Path := GreenPath;
SearchBox := IntToBox(458, 70, 626, 166);
Counts := [4000, 9999];
End;

With StartSpots[BluePath] Do //Blue Path
Begin
Name := 'Blue Path';
Path := BluePath;
SearchBox := IntToBox(551, 78, 610, 110);
Counts := [1300, 2000];
End;

For II := 0 To High(StartSpots) Do //checks if the count lies within two values
If InRange(
CountColor(Maze_GetBlackBackground, StartSpots[II].SearchBox.X1,
StartSpots[II].SearchBox.Y1, StartSpots[II].SearchBox.X2,
StartSpots[II].SearchBox.Y2),
StartSpots[II].Counts[0],
StartSpots[II].Counts[1]) Then
Begin
WriteLn('Detected '+ StartSpots[II].Name);
Result := (Maze_StartFail * 0);
Break; //sets the result
End Else
Result := Maze_StartFail;

If Result = Maze_StartFail Then
Begin
WriteLn('Couldn''t detect a start point, maze failed');
Exit;
End;

Result := StartSpots[II].Path;
End;

{*******************************************************************************
Procedure Maze_WalkPath(Path : Integer);
By Naum
Description: Walks a specified path, opens Maze_Doors and such; used in a loop.
*******************************************************************************}

Procedure Maze_WalkPath(Path : Integer);
Var
I : Integer;

Begin
If Not LoggedIn Then Exit;

For I := 0 To High(Paths[Path]) Do
Begin
If (Paths[Path][I].X = ChangeCompass) And (LoggedIn) Then //if the point has a 'change compass' then
MakeCompass(Paths[Path][I].Y) //changes the compass to the angle
Else
If (Paths[Path][I].X = Maze_Door) And (LoggedIn) Then //if the point has a 'Maze_Door' in it, then it opens it
If Maze_FindMaze_Door() Then
WriteLn(' ~ Found Maze_Door') //debugs a message
Else
Begin
WriteLn(' * Maze_Door Not Found');
Exit; //exits.
End
Else
Begin
WriteLn('');
WriteLn('-> Walking '+ StartSpots[Path].Name + ' : '
+IntToStr(I)+' / '+IntToStr(High(Paths[Path])));

WriteLn('>> X = ' +IntToStr(Paths[Path][I].X)+', Y = '+IntToStr(Paths[Path][I].Y));
Mouse(MMCX + Paths[Path][I].X, MMCY + Paths[Path][I].Y, 2, 2, True);
FFlag(0); //^ clicks on the path

While IsMoving And LoggedIn Do
If Random(10) = 0 Then //does some mouse movements whilst moving
SleepAndMoveMouse(200 + Random(300));
End;
End;
End;

{*******************************************************************************
Function SolveMaze : Boolean;
By: Naum
Description: Solves the maze random
*******************************************************************************}

Function SolveMaze : Boolean;
Begin //solves the maze using all the procs from before
While ClickContinue(False, False) Do
ClickToContinue;
Wait(600 + Random(200));

ClickNorth(True);
DetectedPath := Maze_DetectStart; //gets the start

If DetectedPath = Maze_StartFail Then
Begin
Result := False;
Exit;
End Else
Begin
Maze_LoadPath(DetectedPath);

Maze_WalkPath(DetectedPath);

If Not Maze_TouchShrine Then
Begin
WriteLn('Couldn''t touch shrine!');
Result := False
Exit;
End Else
Begin
Result := True; // if it succeeds :)
WriteLn('');
WriteLn('Touched the shrine!');
WriteLn('');
End;
End;
End;

Everything is compatible with the current AntiRandom settings.
You may, or may not have, noticed the names for the paths in Maze_LoadPath, these correspond to the colours in this map:


^The ticks indicate the paths which I feel have been tested enough.

Blue Path
  • Maze Background color = 132870
  • Detected Blue Path -> Walking Blue Path : 0 / 40 >> X = -4, Y = 36 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 3 / 40 >> X = 30, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 5 / 40 >> X = 13, Y = 23 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 8 / 40 >> X = 31, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 10 / 40 >> X = -15, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 12 / 40 >> X = -13, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 15 / 40 >> X = 25, Y = -20 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 18 / 40 >> X = 46, Y = -13 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 20 / 40 >> X = 16, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 23 / 40 >> X = 43, Y = -10 ~ Found a suspected door + Didn't Get UpText of Door, Trying again to find it ~ Found Door -> Walking Blue Path : 25 / 40 >> X = -30, Y = -20 -> Walking Blue Path : 26 / 40 >> X = 18, Y = -48 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 28 / 40 >> X = 40, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 30 / 40 >> X = 17, Y = 15 ~ Found a suspected door + Didn't Get UpText of Door, Trying again to find it ~ Found Door -> Walking Blue Path : 33 / 40 >> X = 9, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 36 / 40 >> X = 4, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Blue Path : 38 / 40 >> X = 4, Y = -12 ~ Found a suspected door ~ Found Door Quick Shrine finding failed. Trying motion detector. SOLVED MAZE!
  • http://www.youtube.com/watch?v=U35QOWaQI1k


Purple Path
  • Maze Background color = 198404
  • Detected Purple Path -> Walking Purple Path : 0 / 40 >> X = -4, Y = -2 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 2 / 40 >> X = -45, Y = -8 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 4 / 40 >> X = -45, Y = 3 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 6 / 40 >> X = 22, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 8 / 40 >> X = -20, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 10 / 40 >> X = 50, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 12 / 40 >> X = -50, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 14 / 40 >> X = -37, Y = 26 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 18 / 40 >> X = 15, Y = -13 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 20 / 40 >> X = 2, Y = 46 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 24 / 40 >> X = 19, Y = -46 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 28 / 40 >> X = 40, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 30 / 40 >> X = 17, Y = 15 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 33 / 40 >> X = 9, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 36 / 40 >> X = 4, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 38 / 40 >> X = 4, Y = -12 ~ Found a suspected door ~ Found Door SOLVED MAZE!
  • Maze Background color = 328966
  • Detected Purple Path -> Walking Purple Path : 0 / 41 >> X = -4, Y = -2 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 2 / 41 >> X = -45, Y = -8 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 4 / 41 >> X = -45, Y = 3 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 6 / 41 >> X = 22, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 8 / 41 >> X = -20, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 10 / 41 >> X = 50, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 12 / 41 >> X = -50, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 14 / 41 >> X = -37, Y = 26 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 18 / 41 >> X = 15, Y = -13 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 20 / 41 >> X = 2, Y = 46 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 24 / 41 >> X = 19, Y = -46 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 28 / 41 >> X = 40, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 30 / 41 >> X = 17, Y = 15 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 33 / 41 >> X = 9, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 37 / 41 >> X = 4, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 39 / 41 >> X = 4, Y = -12 ~ Found a suspected door ~ Found Door SOLVED MAZE!
  • Maze Background color = 458758
  • Detected Purple Path -> Walking Purple Path : 0 / 41 >> X = -4, Y = -2 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 2 / 41 >> X = -45, Y = -8 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 4 / 41 >> X = -45, Y = 3 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 6 / 41 >> X = 22, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 8 / 41 >> X = -20, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 10 / 41 >> X = 50, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 12 / 41 >> X = -50, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 14 / 41 >> X = -37, Y = 26 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 18 / 41 >> X = 15, Y = -13 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 20 / 41 >> X = 2, Y = 46 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 24 / 41 >> X = 19, Y = -46 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 28 / 41 >> X = 40, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 30 / 41 >> X = 17, Y = 15 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 33 / 41 >> X = 9, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 37 / 41 >> X = 4, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 39 / 41 >> X = 4, Y = -12 ~ Found a suspected door + Didn't Get UpText of Door, Trying again to find it + Didn't Get UpText of Door, Trying again to find it ~ Found Door SOLVED MAZE! ^ Tested by Zyt3x!
  • Compiled succesfully in 593 ms.
  • SRL Compiled in 16 msec Maze Background color = 132865 Detected Purple Path -> Walking Purple Path : 0 / 41 >> X = -4, Y = -2 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 2 / 41 >> X = -45, Y = -8 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 4 / 41 >> X = -45, Y = 3 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 6 / 41 >> X = 22, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 8 / 41 >> X = -20, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 10 / 41 >> X = 50, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 12 / 41 >> X = -50, Y = 9 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 14 / 41 >> X = -37, Y = 26 ~ Found a suspected door + Didn't Get UpText of Door, Trying again to find it ~ Found Door -> Walking Purple Path : 18 / 41 >> X = 15, Y = -13 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 20 / 41 >> X = 2, Y = 43 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 24 / 41 >> X = 19, Y = -46 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 28 / 41 >> X = 40, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 30 / 41 >> X = 17, Y = 15 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 33 / 41 >> X = 9, Y = 35 ~ Found a suspected door + Didn't Get UpText of Door, Trying again to find it + Didn't Get UpText of Door, Trying again to find it ~ Found Door -> Walking Purple Path : 37 / 41 >> X = 4, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Purple Path : 39 / 41 >> X = 4, Y = -12 ~ Found a suspected door ~ Found Door Touched the shrine! SOLVED MAZE! Successfully executed. ^ Tested by bbri06!
  • http://www.youtube.com/watch?v=mxe6hzLKTpo
  • Maze Background color = 262
  • Detected Purple Path -> Walking Purple Path : 0 / 41 >> X = -4, Y = -2 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 2 / 41 >> X = -45, Y = -8 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 4 / 41 >> X = -45, Y = 3 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 6 / 41 >> X = 22, Y = 9 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 8 / 41 >> X = -20, Y = 7 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 10 / 41 >> X = 50, Y = 9 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 12 / 41 >> X = -50, Y = 9 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 14 / 41 >> X = -37, Y = 26 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 18 / 41 >> X = 15, Y = -13 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 20 / 41 >> X = 2, Y = 43 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 24 / 41 >> X = 19, Y = -46 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 28 / 41 >> X = 40, Y = 7 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 30 / 41 >> X = 17, Y = 15 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 33 / 41 >> X = 9, Y = 35 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 37 / 41 >> X = 4, Y = 35 ~ Found a suspected Maze_Door ~ Found Maze_Door -> Walking Purple Path : 39 / 41 >> X = 4, Y = -12 ~ Found a suspected Maze_Door ~ Found Maze_Door Touched the shrine! Successfully executed. ^ Tested By 3Garett3


Green Path
  • Maze Background color = 770
  • Maze Background color = 770 Maze Background color = 770 Detected Green Path -> Walking Green Path : 0 / 44 >> X = 51, Y = 4 ~ Found a suspected door ~ Found Door -> Walking Green Path : 2 / 44 >> X = -50, Y = -45 ~ Found a suspected door ~ Found Door -> Walking Green Path : 5 / 44 >> X = -45, Y = -5 ~ Found a suspected door ~ Found Door -> Walking Green Path : 7 / 44 >> X = 45, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 9 / 44 >> X = 23, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 11 / 44 >> X = 6, Y = -34 ~ Found a suspected door ~ Found Door -> Walking Green Path : 14 / 44 >> X = 40, Y = -3 ~ Found a suspected door ~ Found Door -> Walking Green Path : 16 / 44 >> X = -20, Y = -3 ~ Found a suspected door ~ Found Door -> Walking Green Path : 18 / 44 >> X = 60, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 21 / 44 >> X = -35, Y = 10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 24 / 44 >> X = -17, Y = 30 ~ Found a suspected door ~ Found Door -> Walking Green Path : 26 / 44 >> X = -40, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 30 / 44 >> X = 18, Y = -48 ~ Found a suspected door ~ Found Door -> Walking Green Path : 32 / 44 >> X = 40, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Green Path : 34 / 44 >> X = 17, Y = 15 ~ Found a suspected door ~ Found Door -> Walking Green Path : 37 / 44 >> X = 9, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Green Path : 40 / 44 >> X = 4, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Green Path : 42 / 44 >> X = 4, Y = -12 ~ Found a suspected door ~ Found Door SOLVED MAZE! Successfully executed
  • Maze Background color = 770
  • Maze Background color = 770 Maze Background color = 770 Detected Green Path -> Walking Green Path : 0 / 44 >> X = 51, Y = 4 ~ Found a suspected door ~ Found Door -> Walking Green Path : 2 / 44 >> X = -50, Y = -45 ~ Found a suspected door ~ Found Door -> Walking Green Path : 5 / 44 >> X = -45, Y = -5 ~ Found a suspected door ~ Found Door -> Walking Green Path : 7 / 44 >> X = 45, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 9 / 44 >> X = 23, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 11 / 44 >> X = 6, Y = -34 ~ Found a suspected door ~ Found Door -> Walking Green Path : 14 / 44 >> X = 40, Y = -3 ~ Found a suspected door ~ Found Door -> Walking Green Path : 16 / 44 >> X = -20, Y = -3 ~ Found a suspected door ~ Found Door -> Walking Green Path : 18 / 44 >> X = 60, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 21 / 44 >> X = -35, Y = 10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 24 / 44 >> X = -17, Y = 30 ~ Found a suspected door ~ Found Door -> Walking Green Path : 26 / 44 >> X = -40, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 30 / 44 >> X = 18, Y = -48 ~ Found a suspected door ~ Found Door -> Walking Green Path : 32 / 44 >> X = 40, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Green Path : 34 / 44 >> X = 17, Y = 15 ~ Found a suspected door ~ Found Door -> Walking Green Path : 37 / 44 >> X = 9, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Green Path : 40 / 44 >> X = 4, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Green Path : 42 / 44 >> X = 4, Y = -12 ~ Found a suspected door ~ Found Door SOLVED MAZE! Successfully executed ^ Tested by Zyt3x!
  • Compiled succesfully in 624 ms.
  • SRL Compiled in 15 msec Maze Background color = 460548 Maze Background color = 460548 Maze Background color = 460548 Detected Green Path -> Walking Green Path : 0 / 44 >> X = 51, Y = 4 ~ Found a suspected door ~ Found Door -> Walking Green Path : 2 / 44 >> X = -50, Y = -45 ~ Found a suspected door ~ Found Door -> Walking Green Path : 5 / 44 >> X = -45, Y = -5 ~ Found a suspected door ~ Found Door -> Walking Green Path : 7 / 44 >> X = 45, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 9 / 44 >> X = 23, Y = -10 ~ Found a suspected door + Didn't Get UpText of Door, Trying again to find it + Didn't Get UpText of Door, Trying again to find it ~ Found Door -> Walking Green Path : 11 / 44 >> X = 6, Y = -34 ~ Found a suspected door ~ Found Door -> Walking Green Path : 14 / 44 >> X = 40, Y = -3 ~ Found a suspected door ~ Found Door -> Walking Green Path : 16 / 44 >> X = -20, Y = -3 ~ Found a suspected door ~ Found Door -> Walking Green Path : 18 / 44 >> X = 60, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 21 / 44 >> X = -35, Y = 10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 24 / 44 >> X = -17, Y = 30 ~ Found a suspected door ~ Found Door -> Walking Green Path : 26 / 44 >> X = -40, Y = -10 ~ Found a suspected door ~ Found Door -> Walking Green Path : 30 / 44 >> X = 18, Y = -48 ~ Found a suspected door ~ Found Door -> Walking Green Path : 32 / 44 >> X = 40, Y = 7 ~ Found a suspected door ~ Found Door -> Walking Green Path : 34 / 44 >> X = 17, Y = 15 ~ Found a suspected door ~ Found Door -> Walking Green Path : 37 / 44 >> X = 9, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Green Path : 40 / 44 >> X = 4, Y = 35 ~ Found a suspected door ~ Found Door -> Walking Green Path : 42 / 44 >> X = 4, Y = -12 ~ Found a suspected door ~ Found Door Touched the shrine! SOLVED MAZE! Successfully executed. ^Tested by bbri06!


Turquoise Path
(The one with the golden arrow on the map)
Paths[TurquoisePath] := [//1     //the unsure one.
Point(60, 30{-7, 20}), Point(Maze_Door, -1), Point(-70, 8),

This part here: Point(60, 30{-7, 20})

Not sure which one it is basically, I've had 4 accounts in this situation, 2 were in different positions in relation to the other 2. Maybe it was the old maze solver that moved the accounts from the starting positions? Obviously, with caution being the best guide, I've decided to leave both measurements.
So if anyone has an account in the South East (Turquoise path) part of the random, then please PM me, so I can get this crap sorted out, make sure the account is in the start position :)

P.S: A lot of editing and tweaking was done after testing, so I may need an account to see if the changes I've put in actually work!
So please, if you get an account in the random - PM me :)!

TRiLeZ

2010-08-22 15:07:47

Good work! It's nice to see you finally releasing this. :)

Wizzup?

2010-08-22 15:31:38

No more rotation for the points? Or was the compass angle detection by wall + point rotation completely broken? I remember writing that for Sumilion… :)

Changing the compass all the time is a bit… detectable. ;)

Dynamite

2010-08-22 15:32:35

Holy…
Very nice naum

Rick

2010-08-22 15:36:07

This is incredible. Great work !

Naum

2010-08-22 16:12:09

From: Wizzup?
No more rotation for the points? Or was the compass angle detection by wall + point rotation completely broken? I remember writing that for Sumilion… :)

Changing the compass all the time is a bit… detectable. ;)


@Changing the compass: It was only done for the door opener, it's very difficult to do it side on! I need to be able to get the right angle, I know it's detectable, but I don't think there is another way.

I dunno about the point rotation, I didn't need it?

@Everyone, thanks, I've hope the work I put in has paid off. :)

Blumblebee

2010-08-22 16:15:35

you are godly :)

3Garrett3

2010-08-22 16:17:48

From: Naum
@Changing the compass: It was only done for the door opener, it's very difficult to do it side on! I need to be able to get the right angle, I know it's detectable, but I don't think there is another way.


I can't even open the doors legit without rotating :P

Gu3st...

2010-08-22 16:42:17

Finally you released it :)
Good job!!!

NCDS

2010-08-22 17:37:03

Beautiful <333

I was beginning to think this day would never come! >.<

nielsie95

2010-08-22 17:39:49

From: 3Garrett3
I can't even open the doors legit without rotating :P


Yeah, I also rotate to see the door head on when I play legit :)

MasterKill

2010-08-22 18:09:54

Maybe an idea, rotate the camera while running to the next door? Would make it much more human like.

This looks very nice, I would love to see it working with the reward still at 100%.

Very nice.

Tickyy

2010-08-23 05:17:47

GJ, Finally something in this category. :)!

Wizzup?

2010-08-23 05:32:37

From: Naum
@Changing the compass: It was only done for the door opener, it's very difficult to do it side on! I need to be able to get the right angle, I know it's detectable, but I don't think there is another way.


Ah… ok then! :)

Nava2

2010-08-23 07:25:58

Rotating, while running would be difficult to accurately detect motion. I would think at least.

mormonman

2010-08-23 09:51:13

From: Nava2
Rotating, while running would be difficult to accurately detect motion. I would think at least.


It wouldn't matter though, because you can't open the door until your done moving or done rotating.

Narcle

2010-08-23 11:53:49

While flag rotate to next angle? Would definitely make it more human like, but solving is priority.

Cstrike

2010-08-23 12:25:40

Wow I though the maze was pretty much unsolvable :|, was I wrong.

Coh3n

2010-08-23 13:44:57

Very nice Naum! :)

WT-Fakawi

2010-08-23 14:13:44

Man, sometimes I cant even find my way out the maze legit, though I think I have done it more than anybody else….even the runescape developers :)

What an epic job!

3Garrett3

2010-08-24 10:20:39


Maze Background color = 262
Detected Purple Path

-> Walking Purple Path : 0 / 41
>> X = -4, Y = -2
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 2 / 41
>> X = -45, Y = -8
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 4 / 41
>> X = -45, Y = 3
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 6 / 41
>> X = 22, Y = 9
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 8 / 41
>> X = -20, Y = 7
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 10 / 41
>> X = 50, Y = 9
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 12 / 41
>> X = -50, Y = 9
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 14 / 41
>> X = -37, Y = 26
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 18 / 41
>> X = 15, Y = -13
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 20 / 41
>> X = 2, Y = 43
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 24 / 41
>> X = 19, Y = -46
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 28 / 41
>> X = 40, Y = 7
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 30 / 41
>> X = 17, Y = 15
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 33 / 41
>> X = 9, Y = 35
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 37 / 41
>> X = 4, Y = 35
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 39 / 41
>> X = 4, Y = -12
~ Found a suspected Maze_Door
~ Found Maze_Door

Touched the shrine!

Successfully executed.

:D

Naum

2010-08-24 10:38:59

From: 3Garrett3

Maze Background color = 262
Detected Purple Path

-> Walking Purple Path : 0 / 41
>> X = -4, Y = -2
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 2 / 41
>> X = -45, Y = -8
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 4 / 41
>> X = -45, Y = 3
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 6 / 41
>> X = 22, Y = 9
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 8 / 41
>> X = -20, Y = 7
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 10 / 41
>> X = 50, Y = 9
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 12 / 41
>> X = -50, Y = 9
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 14 / 41
>> X = -37, Y = 26
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 18 / 41
>> X = 15, Y = -13
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 20 / 41
>> X = 2, Y = 43
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 24 / 41
>> X = 19, Y = -46
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 28 / 41
>> X = 40, Y = 7
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 30 / 41
>> X = 17, Y = 15
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 33 / 41
>> X = 9, Y = 35
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 37 / 41
>> X = 4, Y = 35
~ Found a suspected Maze_Door
~ Found Maze_Door

-> Walking Purple Path : 39 / 41
>> X = 4, Y = -12
~ Found a suspected Maze_Door
~ Found Maze_Door

Touched the shrine!

Successfully executed.

:D


Thanks bro, added to first post

marpis

2010-08-25 05:11:35

This is just awesome. :)
I see you don't use the ATPA2 in opendoor anywhere?

I can't believe a random like this can be solved with such simple idea.
And how long did it take to get all the paths? :D

Great job man! This is why you were taken to devs!

Naum

2010-08-25 07:29:05

From: marpis
This is just awesome. :)


Thanks, still need to test stuff.

From: marpis

I see you don't use the ATPA2 in opendoor anywhere?


I do use it :p

From: marpis

I can't believe a random like this can be solved with such simple idea.
And how long did it take to get all the paths? :D


The idea was Sumilion's, all credit goes to him :)!
The paths took about 6 months, to gather all the information and test accounts through them, it wasn't that easy.

From: marpis

Great job man! This is why you were taken to devs!


Thanks, I value your support dearly!

Sir R. M8gic1an

2010-08-26 23:35:54

+1 for I rotate the door legit :)

Good job man, good job :)

~RM

Naum

2010-09-01 16:45:50

Lol, special thanks to IceFire for activating the solver >.>