SRL Archive - Archive

Esteban - SRL Member Application Form


Esteban

2007-07-17 21:17:13

<!– BEGIN TEMPLATE: formanswers –>
Esteban - SRL Member Application Form
Esteban

What is the meaning to life?


Where you Referred to SRL? If yes, by whom?
no


Programming Knowledge
I will be taking a course in HTML this coming school year.

Other Communitys
Ex RuneHQ moderator. I was known as Dave when moderator, now Nubsta.

How Long have You Played Runescape
I have been playing since September 2003.

Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.

I joined SRL-Forums about 2 weeks after i was removed from my position as a RuneHQ Moderator for having posted on the the Tainted-Ones forum. When i was first here at SRL, i was interested in how SCAR worked, and quite frankly did not know what SRL did. So, i decided to start reading some tutorials around here, and after around a month of slow learning, i released EZTyper AutoTyper, my first functioning and useful SCAR script.

After about a moth after that, i threw around the idea of learning how to create a Skill training script. I came to the decision to learn how to, and would write a little SCAR script to test what i had learned. I slowly started putting these together, but in the last month I have made real progress on my script. I came to the decision today that EZChopper Draynor Willow Chopper was satisfactory enough for it to be released as a release version, which can be found in the Woodcutting section of SRL free scripts.

——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted


{.Script Info:
# ScriptName = E-Z Chopper.
# Author = Esteban, with thanks to 3Garrett3 and Smartzkid for all their help.
# Description = Used for cutting willows next to the Draynor Bank.
# Version = 1.0 Release.
# Date = Release date July 17, 2007
# Comments = Have players start in southern part of Draynor bank, logged out.
Position extra axes to be used as the first item in your bank.
Low Detail, 32 bit true color, very bright for RS client, the usuals.
/Script Info}

program EZChopper;
{.include SRL/SRL.scar}
{.include SRL/SRL/skill/WoodCutting.scar}
{.include SRL/SRL/extended/xBitmap.scar}
var TotalLoads, Ents, Loads: integer;
BrokenAxe: Boolean;

{=====================================================================}
{====================Set These Following Constants====================}
{=====================================================================}

Const
LoadsToDo = 1; //How many loads to do before switching players.
TimePerLoad = 10; //Max number of minutes 1 load should take. Set to your preference.
WillowColorA = 5337208; //Only set the willow colors if the script can't find them.
WillowColorB = 2914408;
WillowColorC = 33453453;
AntiBanageAmount = 50; //How often to perform an AntiBan procedure while chopping.
//Antiban will be performed x percent of the time.
VerNum = '1.0'; //Script Version.

{=====================================================================}
{========================End Setting Constants========================}
{=====================================================================}


{=====================================================================}
{=============================Payer Setup=============================}
{=====================================================================}
procedure DeclarePlayers;
begin
Status('Declaring Players');
HowManyPlayers := 6; //Number of PLAYERS. active or not.
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0; //Player to start on.

//set all user names, passwords, nicks and Boolean2 correctly please.

Players[0].Name := 'UserName';//Username of the account.
Players[0].Pass := 'password';//Account's password.
Players[0].Nick := '3-4 Non capital letters of the username';
Players[0].Active := True;//Is the player to be used?
Players[0].boolean2 := False;//True if axe is wielded.
//If axe is in inventory, must be in first slot, set false.
Players[0].String1 := '1234';//Player's Bank PIN, if any.

Players[1].Name := 'Username';
Players[1].Pass := 'Password';
Players[1].Nick := '3-4 letters of Username';
Players[1].Active := True;
Players[1].boolean2 := False;
Players[1].String1 := '0000';

Players[2].Name := 'UserName';
Players[2].Pass := 'Password';
Players[2].Nick := '3-4 letters of UserName';
Players[2].Active := False;
Players[2].boolean2 := False;
Players[2].String1 := '0000';

Players[3].Name := 'UserName';
Players[3].Pass := 'Password';
Players[3].Nick := '3-4 letters of UserName';
Players[3].Active := False;
Players[3].boolean2 := False;
Players[3].String1 := '0000';

Players[4].Name := 'UserName';
Players[4].Pass := 'Password';
Players[4].Nick := '3-4 letters of UserName';
Players[4].Active := False;
Players[4].boolean2 := False;
Players[4].String1 := '0000';

Players[5].Name := 'UserName';
Players[5].Pass := 'Password';
Players[5].Nick := '3-4 letters of UserName';
Players[5].Active := False;
Players[5].boolean2 := False;
Players[5].String1 := '0000';

end;
{=====================================================================}
{====================End Player and script Setup======================}
{=========Only edit the below if you know what is being done==========}
{=====================================================================}

{=====================================================================}
{===============================Credits===============================}
{=====================================================================}
Procedure Credits;
begin
ClearDebug;
Wait(500);
Status('Writing Credits');
writeln('E-Z Chopper brought to you by- ');
writeln(' ___ ___ _____ ___ ___ ___ ___ _ ');
writeln('| __| | __| |_ _|| __| | _ | | _ | | | | ');
writeln('| __| |__ | | | | __| | _< | | | | | | ');
writeln('|___| |___| |_| |___| |___| |_|_| |_|___| ');
writeln(' ');
writeln(' -With thanks to 3garrett3 & SmartzKid');
wait(3000+random(500));
end;

{=====================================================================}
{========================Walking to the Willows=======================}
{=====================================================================}


Procedure WalkToWillow;
var TX, TY, WaterEdge, WaitWalkToWillows, WillowGroundWater, Tries, x, y: Integer;
begin if(GetCombatLevel < 15)then TerminateScript;
begin
if(not(LoggedIn))then Exit;
Status('Walking to the willows');
MakeCompass('W');
if(FindSymbol(x,y,'Fish'))then
begin
Writeln('Walking to the Willows via FishSymbol.');
SetRun(True);
Mouse(x,y,2,2,True);
FFlag(0);
end else
begin
WillowGroundWater := BitmapFromString(12, 9, 'z78DA3377B134' +
'70B23047224D9D4D2C0DDD4CDD4C0D8D8CB09266D848739A99033' +
'56D909903F7A30BD08FC82459E660318D0273504CA3D81C78B851' +
'C51C5CB100000F208F80');
MarkTime(WaitWalkToWillows);
repeat
if(FindBitmapTol(TX, TY, WillowGroundWater, MMX1, MMY1, MMX2, MMY2))then
begin
writeln('Found The BitMap.');
WaterEdge := AutoColorThis(WillowGroundWater, 10, MMX1, MMY1, MMX2, MMY2);
If (WaterEdge > 0) then
begin
SetRun(True);
RadialWalk( WaterEdge , 199, 247, 54, 2, 2);
writeln('Walking to the Willows via Bitmap.');
FFlag(1);
exit;
end;
tries:= tries +1;
wait(150+random(250));
end;
until(Tries >= 15) or (TimeFromMark(WaitWalkToWillows) > 10000); C:\DOCUME~1\Owner\LOCALS~1\Temp\EZChopper.scar
end;
end;
end;

{======================================================================}
{=============================Anti Randoms=============================}
{======================================================================}
function FindFastRandoms: Boolean; //Thanks goes to WT=Fakawi for this.
var
i: Integer;
begin
if(not(LoggedIn))then exit;
for i := 1 to 8 do
begin
case I of
1: if FindDead then
Result := True;
2: if FindMod then
Result := True;
3: if FindMime then
Result := True;
4: if FindMaze then
Result := True;
5: if FindQuiz then
Result := True;
6: if FindDemon then
Result := True;
7: begin
if NoGameTab then
begin
Result := True;
Players[CurrentPlayer].loc := 'No GameTab';
Logout;
Exit;
end;
end;
7: begin
if InBlack then
begin
Result := True;
Players[CurrentPlayer].loc := 'InBlack';
Logout;
Exit;
end;
end;
8: RC;
end;
wait(1);
end;
if(Result= true)then LogOut;
end;

Procedure AntiRandoms;
begin
if(not(loggedIn))then exit;
FindFastRandoms;
FindNormalRandoms;
end;

Procedure AntiBan;
begin
if(not(LoggedIn))then Exit;
if(random(100) + 1 < AntiBanageAmount)then Exit;
case Random(9) of

0: begin
HoverSkill('Random', false);
wait(1453+Random(432));
GameTab(4);
end;

1: begin
HoverSkill('Woodcutting',false);
wait(1364+Random(413));
GameTab(4);
end;

2: PickUpMouse;

3: AlmostLogOut;

4: SayCurrentLevels('Woodcutting');

5: begin
case random(8) of
0: TypeSend('Whats up?');

1: TypeSend('wc lvls?');

2: TypeSend('Woodcutting levels?');

3: TypeSend('sup?');
end;
end;

6: begin
Case random(3) of
0: MakeCompass('N');

1: MakeCompass('S');

2: MakeCompass('W');
end;
wait(100+random(150));
MakeCompass('E');
end;

7: begin
LowestAngle;
HighestAngle;
end;

8: RandomRClick;

end;
end;

{======================================================================}
{=========================Chopping the Willows=========================}
{======================================================================}
Procedure ChopTheWillow;
var ChopTime, waited, TextX, TextY: Integer;
begin
if(not(LoggedIn))then Exit;
Status('Chopping willows');
Wait(50+random(42));
MakeCompass('E');
HighestAngle;
MarkTime(ChopTime);
repeat
Wait(100+random(55));
if(FindColorSpiralTolerance(x, y, WillowColorA, MSX1, MSY1, MSX2, MSY2, 4)or
FindColorSpiralTolerance(x, y, WillowColorB, MSX1, MSY1, MSX2, MSY2, 4)or
FindColorSpiralTolerance(x, y, WillowColorC, MSX1, MSY1, MSX2, MSY2, 4))then
begin
wait(300+random(100));
writeln('Found one of the Willow colors! Checking to see if it is a willow.');
MMouse(x, y, 5, 5);
if(IsUpTextMulti('illow', 'llo', 'low'))then
begin
wait(500+random(100));
writeln('Found a Willow! Begin chopping');
Mouse(x, y, 1, 1, true);
wait(135+random(121));
Inc(Players[CurrentPlayer].Integer3);
if(FindColorSpiralTolerance(TextX, TextY, 516576, 6, 6,117 , 27, 4)or
FindColorSpiralTolerance(TextX, TextY, 118992, 6, 6, 117, 27, 4))then
begin
writeln('Possibly found an ent.');
MakeCompass('E');
MMouse(652, 83, 1, 1);
Mouse(652, 83, 1, 1, true);
writeln(' possibly advoiding an Ent. Waiting for the Possibl ent to go away.');
wait(20123+random(1234));
RunBack;
Ents:= Ents + 1;
Mouse(x, y, 1, 1, true);
if(InChat('do not'))then
begin
BrokenAxe:= True;
Exit;
end;
end;
AntiRandoms;
case random(2)of
0: SleepAndMovemouse(9876+random(1234));

1: wait(8765+random(321));
end;
while(IsUpText('llo') and not (waited > 10))do
begin
wait(500 + random(500));
Inc(waited);
end;
AntiRandoms;
Antiban;
end;
end;
until(Invfull) or (TimeFromMark(ChopTime) > (TimePerLoad * 60000 ));
end;

{======================================================================}
{=========================Walking to the Bank==========================}
{======================================================================}
Procedure WalkToBank;
var x, y, BankSymbol, bankSymbolColor, BankerDTM: integer;
begin
BankerDTM := DTMFromString('78DA63FCC5C4C020C9C8800CE2C3C318FE036' +
'990E87F206004A9114555F3E70F1398868982D5C8E15703004398' +
'0D45');
if(not(LoggedIn))then exit;
Status('Walking to the bank');
MakeCompass('N');
if(FindSymbol(x,y,'Bank'))then
begin
Writeln('Walking to Bank via BankSymbol.');
SetRun(True);
Mouse(x, y, 5, 5, True);
FFlag(0);
exit;
end else
if(DTMRotated(BankerDTM, x, y, MMX1, MMY1, MMX2, MMY2))then
begin
Writeln('Walking to bank via banker bitmap');
MMouse( x +10+random(5), y+4+random(3), 0, 0);
Mouse(x+10+random(5), y+4+random(3), 0, 0, true);
FFlag(0);
FreeDTM(BankerDTM);
Exit;
end else
begin
Writeln('Could not find the entire bank symbol. Looking for Bank Symbol color.');
BankSymbol := BitmapFromString(15, 15, 'z78DAC5D44B0A80300C' +
'04D02BF5A7D1A5B1BDFF955C64331012D2BAA88B410A79C2D098D' +
'29EE7ADBDF4C6C4F5204C395FD3B439FA68675EFB8A6FEAA49B28' +
'5F4FE5C2CDF7B58C02BE63FA329A1159344C9CFD234BEAA9B86CF' +
'56CB511912DDF6A66568E776EC9FEAD8BCBB3B72EDE737CA351B0' +
'4CC9D94D97296B3B36FDCCD20753EF1DC8');

BankSymbolColor:= AutoColorThis(BankSymbol, 40, MMX1, MMY1, MMX2, MMY2);
FreeBitmap(BankSymbol);
MakeCompass('N');
RadialWalk( BankSymbolColor , 5, 60, 66, 2, 2);
FFlag(0);
Exit;
end;
end;

{=======================================================================}
{===========================Banking Inventory===========================}
{=======================================================================}
Procedure BankInventory;
var WillowDTM, BrokenAxeDTM: integer;

begin
if(not(loggedIn))then exit;
Status('Banking inventory');
BrokenAxeDTM := DTMFromString('78DA633CCCC4C0B082910119D4C5F331FC07D' +
'220D1FF40C0781AA86615AA1A882C8C04D267816A561250730EA8' +
'661DAA1A030505143500A7410C3F');
WillowDTM := DTMFromString('78DA633CCFC4C0308991010420240383BB830' +
'4C32F28FF3F1030EE07AA9985AA06C682F1190F02D54C20A0E610' +
'504D170135D7806ADA09A8B905543383809AB3403573F0AB01002' +
'9EF0F55');
MakeCompass('S');
wait(4345+random(423));
if(BrokenAxe)then
begin
if(Players[CurrentPlayer].Boolean2)then
begin
GameTab(5);
TakeOff(BrokenAxeDTM);
end else
GameTab(4);
end;
OpenBankQuiet('db');
wait(321+random(111));
if(FindDTM(WillowDTM, x, y, 625, 324, 815, 587)) and ((bankscreen) or (pinscreen))then
begin
if(pinscreen)then
InPin(Players[CurrentPlayer].String1);
wait(345+random(123));
MMouse(x, y, 2, 2);
if(IsUpTextMulti('illow', 'llo', 'low'))then
begin
wait(300+random(123));
Mouse(x, y, 0, 0, false);
wait(100+random(99));
ChooseOption(x, y, 'All');
if(BrokenAxe)then
begin
DepositAll;
Wait(321+random(123));
Withdraw(1, 1, 1);
end;
end;
if(Not(Players[CurrentPlayer].Boolean2))then
begin
Deposit(2, 28, 2);
end;
wait(123+random(123));
end;
CloseBank;
Loads:= Loads + 1;
TotalLoads:= TotalLoads + 1;
wait(321+random(123));
FreeDTM(BrokenAxeDTM);
FreeDTM(WillowDTM);
begin
RadialRoadWalk(FindRoadColor, 143, 200, 32, -2, -2);
FFlag(0);
end;
end;

Procedure ProgressReport;
begin
Writeln('<------------------------------------------->' );
Writeln('|E-Z Chopper Version ' + VerNum + ' by Esteban' );
Writeln('|===========================================|' );
Writeln('|Worked for '+ ScriptTime2(2) );
Writeln('|-------------------------------------------|' );
Writeln('|Total Loads Chopped: '+ IntToStr(TotalLoads) );
Writeln('|-------------------------------------------|' );
Writeln('|Current Player: '+ Players[CurrentPlayer].Name );
Writeln('|Current Player Chopped: '+ IntToStr(Players[CurrentPlayer].Integer3) + ' logs');
Writeln('|-------------------------------------------|' );
Writeln('|Possibly Avoided '+ IntToStr(Ents) + ' Ents' );
Writeln('|-------------------------------------------|' );
Writeln('|Make sure to post all progress reports.' );
Writeln('<------------------------------------------->' );
SRLRandomsReport;
end;

begin
Credits;
SetupSRL;
DeclarePlayers;
ActivateClient;
LoginPlayer;
wait(1000+random(1000));
repeat
WalkToWillow;
Wait(2654+random(1230));
ChopTheWillow;
WalkToBank;
BankInventory;
ProgressReport;
if(not(LoggedIn))then
begin
writeln('User was logged out for some reason. Switching players');
Nextplayer(false);
Loads:= 0;
end;
If(LoadsToDo >= Loads)then
begin
writeln('Sucessfully completed player loads. Switching Players');
NextPlayer(True);
Loads:= 0;
end;
until (false);
end.

——————————————————
<!– END TEMPLATE: formanswers –>

JAD

2007-07-17 21:23:46

I can tell you based a lot of things in this script off some of my tutorial(s) eh? :)

Anyways.. I'll think about it once I look over the code a bit more later. It may be a yes though, not 100% sure yet.

Esteban

2007-07-17 21:44:06

yea, your tutorial were quite helpful, but i did try to take what i looked at and turn it to my own, which I found to be a challenge sometimes, as you have what will work right in front of you, but you have to make it work a different way.

bullzeye95

2007-07-17 21:50:27

I'd vote no for the script, but I think I see you helping out sometimes. I'll look through your posts.

EDIT: Yeah a few of your posts were helping out. None of the others were anything to do with "omg wer r da skrpt???//" type stuff though. They were testing and stuff. I like you. You ask questions when you need help with YOUR scripts. You try to help. You seem to know what you're doing for the most part. I think I'll vote yes.

Oh and I have a tip for you. When walking to the willows, if what you have doesn't work all the time, I found that making a DTM of the bankers on the minimap (a point for each dot), finding it with rotation, and clicking the mouse with x and y adjustments (like x - 25, y - 100, that stuff) works great.

Smartzkid

2007-07-17 22:10:49

I'm gonna say yes.

-I helped him with it, so I know a lot of the code is his
-Multiplayer
-Antirandoms
-Antiban
-Standards
-Credits
-*will add more as I think of them*

LordGregGreg

2007-07-17 22:16:34

Hmm, not a bad walking method, Im glad you didn't rely on the symbol being there.

but after that… you radial walk along the river … 15 times.. that doesnt seem right at all, should you have a "break;" in there somewhere?

Its also safe to take out the broken axe procedure now…

Also, if i remove the comments and the stuff you didnt make, it is only half as long…

On the plus side, it seems to have everyhting you need to be a member, dtms, bitmaps, radial walking, anti ban, anti randoms, etc, so that is very good.

Im going to look at your posts and see if you are helpfull or not.

bullzeye95

2007-07-17 22:21:51

Greg, which one are you talking about? Cause ents are still there. The random where the head files off isn't. But I can't tell which he has in there. I'm assuming ent.

Oh and I realized you have a bankerdtm in there that you use to walk TO the bank. I'd recommend using it as a backup for walking OUT of the bank.

JAD

2007-07-17 22:31:42

I know, you did a good job on not copying the things from my tutorial to :p

I rarely vote yes, but I think you're a good guy, and the script isn't terrible, so I think I may vote yes to. I'm still going to think about it for a little longer though…

Esteban

2007-07-17 22:32:28

Find symbol for the fishing symbol has always worked every single time that i have run the script. I have the banker DTM in walking to the bank, as you may know, the draynor bank can be very crowded, with the bank symbol being covered up very often. The banker DTM will find the Bankers, and since depending where the bankers are clicked on, the flag either appears inside or outside the bank, so i have it click to the right of the bankers. The flag will end up, if not in the bank, close enough for the script to find the bank booths.

@greg- I was under the impression of the way i have it walk to the willows by the bitmap, it will try to find or click a color from the bitmap 15 times, not repeat it 15 times. But i have not confirmed that it does what i have intended it to do, as it has never failed to find the fish symbol, if the player is in the general correct position.

LordGregGreg

2007-07-17 22:36:49

From: bullzeye95
Greg, which one are you talking about? Cause ents are still there. The random where the head files off isn't. But I can't tell which he has in there. I'm assuming ent.

Oh and I realized you have a bankerdtm in there that you use to walk TO the bank. I'd recommend using it as a backup for walking OUT of the bank.


Referring to axe head. yes, my bad, you should leave that in, I forgot about that.

Edit, yeah, i see what your trying to do, i just noticed that little logic flaw. It would come out very quickly if you actualy got a chance to test it…

you could fix it for sure by having a little detection method , for when you are where you need to be, or by adding in 'break;' once you have radial walked.

Still havnt cheked ure posts…doing that now

Esteban

2007-07-17 22:43:15

I am unaware if i am able to do this or not, but may i make changes to my script I submitted as the poll continues (I'm thinking the answer is no, but does it hurt to ask?).

LordGregGreg

2007-07-17 22:44:32

From: Esteban
I am unaware if i am able to do this or not, but may i make changes to my script I submitted as the poll continues (I'm thinking the answer is no, but does it hurt to ask?).

I couldn't when i apllied, not sure for you.

Oh, i vote yes. Best of luck to you, and I hope to see more from you :)

you have help full posts.

you dont seem to be hiding anything.

you made a tutorial.

you are trying hard.

here didnt have anything bad to say about you.

YOU HAD SEMI COLONS! :)

Esteban

2007-07-17 22:53:17

I have the ability to edit my Application, it is that i am unaware if it is allowed.

jhildy

2007-07-17 22:55:37

i did lol idk i guess its fine but you already lost the votes from the people.

Esteban

2007-07-17 22:59:12

From: jhildy
i did lol idk i guess its fine but you already lost the votes from the people.


I've only had 3 people vote so far? I'm not understand what you are saying from that.

LordGregGreg

2007-07-17 23:01:21

I dont understand what he meant either… lol

yeah, ure doing great so far. go a head an edit it, just make sure it makes it better.

or you can wait, i thin its fine either way..or you could wait for a mod

atm, it doesnt look like you need it.

Esteban

2007-07-17 23:03:45

It's just that i don't want to be breaking any rules that could get my application taken down.

LordGregGreg

2007-07-17 23:09:52

From: Esteban
It's just that i don't want to be breaking any rules that could get my application taken down.

well, its better to be safe then sorry i supose. you can post a post with the edits you would make.

and thenm just wait for a mod.

jhildy

2007-07-18 00:22:53

i was saying when you have to edit it because people are voting no you already lost their votes but otherwise editing it fine.

n3ss3s

2007-07-18 03:30:23

Im with smartz

Killerdou

2007-07-18 03:39:10

cant seem to find anything bad… so i vote YES

LordGregGreg

2007-07-18 10:29:08

From: RamRune
Think on it, google it if you have to…..Applications are left open for awhile..it has been common practice, to allow people to amend to their applications, demonstrating that they have the knowledge and ability to make pertinent changes which can show that they are worthy of being a member…if they cannot do this in a timely fashion (before the poll is closed), than more than likely they will not be able to do so in 1 weeks time…


That was by ram rune, so yes, you can change ure script.

3Garrett3

2007-07-18 12:36:36

Esteban, I didnt even know you were posting your app yet. Good thing the script is good :p. I didnt want it to turn out to be another shadows-collide incedent. I dont know if I would be aloud to vote, I was/am your mentor after all :p

Esteban

2007-07-18 16:59:30

Thanks Greg, and Garrett, I don't think you should of worried, if you would of stayed on MSN for more then 2 minutes :P, i would of explained that Smartzkid was helping me out since you didn't really have the time.

3Garrett3

2007-07-18 17:03:15

I was on for 8 versions of it! :p. I have litterally 8 EZChoppers saved on my comp. Most of the time i was on, and you never said anything, so I figured that you didnt need anymore help.

Esteban

2007-07-18 17:14:19

Well, you may have a point there :P. But really, you were a great help to me. When reading the informative message when applying that stated it would be 7-14 days after the application was submitted, what affects the amount of time that must be waited?

3Garrett3

2007-07-18 17:22:33

Well, fawki and the admins wait until its obvious that the person is in or out, or the poll closes, and either fawki goes In! or Yoho comes by and says No!. I havnt seen fawki actually personally reject someone in a while…

Esteban

2007-07-18 17:28:16

Thanks Garrett. I'm going to add this to the very bottom of the banking inventory-


begin
RadialRoadWalk(FindRoadColor, 143, 200, 32, -2, -2);
FFlag(0);
end;

What the does, if it opens up the most northern bank booth, it can't always find the fish symbol. This will walk to the southern part of the bank, so that the fish symbol can be seen.

Harry

2007-07-18 17:29:30

Yes, looks good. :)

3Garrett3

2007-07-18 17:29:36

Ohh, smart, cause the bank floor and the road are the same color! Genious! :p

Esteban

2007-07-18 17:37:47

Yep, thats what i noticed, when i tried to find ways to walk to the bank ;).

Boreas

2007-07-23 22:06:45

Congrats!