SRL Archive - OSR Help

PR06 (or anything really) Bank Detection - Whats better than FindColor?


johnlukey

2013-01-24 14:37:47

I am currently trying to use if FindColorTolerance to find my bank booth, on my walking script, and i cant get DTMs to work. im thinking i might nee to use rotateDTMs, but i want to first know if there are any stanard procedures to dealing with a bank. im sure its been a problem throughout history XD. currently my script CAN find it with color detection, but it wasts a ton of time and sometimes walks around like a bot >,<. does anyone have any good procedures for identifying bank stalls?
in this scenario my camera by default always faces dead north, my script doesnt touch it after login and i believe PR06 doesnt screen rotate automaticly (anyone know?)

Echo_

2013-01-24 16:45:11

Did you try using TPAs?

From: johnlukey

in this scenario my camera by default always faces dead north, my script doesnt touch it after login and i believe PR06 doesnt screen rotate automaticly (anyone know?)


It probably does considering these private server clients are just decompiled original RS clients. So if the author didn't remove or tamper with it (I don't see why they would, it's pre-written anti macroing for them), it's probably still there.

rj

2013-01-24 18:02:41

Use TPA's to fin d bank booth.

program ClickSpot;
{$i srl/srl.simba}
Procedure FindBankTPA;
var
tmpCTS, l, r:Integer;
BankTPA:TPointArray;
begin
MouseSpeed:=15;
tmpCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.19, 0.91);
if FindColorsTolerance(BankTPA, 3954018, 8, 25, 518, 359, 3) then
begin
SetColorToleranceSpeed(tmpCTS);
SetToleranceSpeed2Modifiers(0.02, 0.02);
L := High(BankTPA)
wait(randomrange(60, 100));
mmouse((BankTPA[r].x), (BankTPA[r].y), 2, 2);
wait(randomrange(100, 150));
clickmouse2(mouse_left);
wait(randomrange(2000, 2500));
end;
end;
begin
FindBankPA;
end.

This clicks a bank on Project06

johnlukey

2013-01-25 22:25:35

thanks for the code above! i think i can get it to work with a little tweaking.
I think my main problem is that im trying to bank in the catherby bank, with the grey and light-grey tiles on the ground, all my scripts get confused by the similar colors. The script above clicks the ground, as do any oters. ill experiment with it to see if ican get it working, but any more advice would be greatly appreciated!

rj

2013-01-25 22:49:54

From: johnlukey
thanks for the code above! i think i can get it to work with a little tweaking.
I think my main problem is that im trying to bank in the catherby bank, with the grey and light-grey tiles on the ground, all my scripts get confused by the similar colors. The script above clicks the ground, as do any oters. ill experiment with it to see if ican get it working, but any more advice would be greatly appreciated!


It's actually not even using TPA's properly.. but I guess it works ok

johnlukey

2013-01-26 00:10:36

its a more advanced color finder/clicker then the one i was using, and i finally found the magic color! the tan of the wood visiable behind the glass worked great.
i think if i used a tpa for the bank it would have to be a really small one, because the camera angle is going to move around a bit.
But i have the bank clicking working again :D
thank you so much!
I think i have enough to get my yew banker working fully now, but im wondering if TPA walking is going to be accurate enough to run for a few hours; it works but seems to get stuck, but them im usually able to quash the bug that caused getting stuck.

Does radial walking work on PR06? I also tried musing the path walking tutorial, but the map i loaded was current RS; would either of these methods work with PR06 if i learned how to use them properly?

I could make a new thread to ask this, but i dont want to fill up 'help' :P
Thank you guys so much! im learning heaps about Simba, and its helping in my beginners CSE class :P

rj

2013-01-26 00:16:37

From: johnlukey
its a more advanced color finder/clicker then the one i was using, and i finally found the magic color! the tan of the wood visiable behind the glass worked great.
i think if i used a tpa for the bank it would have to be a really small one, because the camera angle is going to move around a bit.
But i have the bank clicking working again :D
thank you so much!
I think i have enough to get my yew banker working fully now, but im wondering if TPA walking is going to be accurate enough to run for a few hours; it works but seems to get stuck, but them im usually able to quash the bug that caused getting stuck.

Does radial walking work on PR06? I also tried musing the path walking tutorial, but the map i loaded was current RS; would either of these methods work with PR06 if i learned how to use them properly?

I could make a new thread to ask this, but i dont want to fill up 'help' :P
Thank you guys so much! im learning heaps about Simba, and its helping in my beginners CSE class :P



I'd advise you use Radial walk because I have tried DTM walking and it's bad, SPS is for Rs and all the DDTM tools are for RS. But here is the Radial walk tool, i commented out the RS parts so it is usable on a RSPS:

{
RadialWalkAid - Rebirth
by mormonman
This will help you make Radials for
RadialRoadWalk.
}
program RadialWalkerAid;
//{$DEFINE SMART}
{$i srl\srl.simba}

const
Debug = False; //recommended at false
MCX = 109;
MCY = 85;

//Don't touch below this


var
mForm: TForm;
mMap, mCol: TImage;
mButtons: array[0..5] of TButton;
mLabels: array[0..5] of TLabel;
mEdits: array[0..2] of TEdit;
mList: TListBox;
mCheck: TCheckBox;
emptyMap, CColor, curMap, Ind: Integer;
Paused, Working: Boolean;


procedure m_Debug(str: String);
begin
if Debug then
Writeln('['+MsToTime(GetTimeRunning, TIME_BARE)+'] ' + str);
end;

procedure DrawColor(col: Integer; b: TImage);
var
bmp: Integer;
begin
bmp := BitmapFromString(b.Width-4, b.Height-4, '');
FloodFillBitmap(bmp, Point(0, 0), 0, col);
DrawBitmap(bmp, b.Canvas, 2, 2);
FreeBitmap(bmp);
end;

procedure GetMinimap;
var
tpa: TPointArray;
tia: TIntegerArray;
begin
//if not LoggedIn then
// begin
// m_Debug('Not logged in, unable to get minimap');
// ShowMessage('Unable to get minimap: Either SMART is not enabled or player is not logged in');
// Exit;
// end;
m_Debug('Retrieving map points');
tpa := TPAFromBox(MMBox);
FilterPointsDist(tpa, 0, 80, MMCX, MMCY);
tia := GetColors(tpa);
OffsetTPA(tpa, Point(-517, 0));
FastSetPixels(curMap, tpa, tia);
DrawBitmap(curMap, mMap.Canvas, 0, 0);
end;

procedure NextColor;
var
ColArr: TIntegerArray;
s, Hi: Integer;
begin
ColArr := [clBlue, clWhite, clRed, clGreen, clPurple, clAqua, clOlive, 65536, 49647, 5083366];
if InIntArrayEx(ColArr, s, CColor) then
begin
Hi := High(ColArr);
if s = Hi then
s := 0
else
Inc(s);
CColor := ColArr[s];
end;
end;

function FindRadial(x,y,radius: Integer): Integer;
var
x1,y1,r: Integer;
begin
for r := 0 to 360 do
begin
x1 := Round(Radius*Sin(r * pi / 180)) + MCX;
y1 := Round(-Radius*Cos(r * pi / 180)) + MCY;
if(Distance(x1,y1,x,y)<=1)then
begin
Result := r;
Exit;
end;
end;
m_Debug('Failed to get radial');
end;

procedure DrawRadial(x, y: Integer);
var
Radius, Radial: integer;
begin
Radius := Distance(MCX, MCY, x, y);
if (Radius > 80) then Exit;
Radial := FindRadial(x, y, Radius);
DrawBitmap(curMap, mMap.CANVAS, 0, 0);
mMap.CANVAS.Pen.Color := CColor;
mMap.CANVAS.MoveTo(MCX, MCY);
mMap.CANVAS.LineTo(x, y);
mLabels[1].Caption := 'Radial: ' + ToStr(Radial);
mLabels[0].Caption := 'Radius: ' + ToStr(Radius);
end;

procedure DoRadialPath(StartRadial, EndRadial, Radius: Integer);
var
x1, y1, i, ma, mi, len, c, bmp: Integer;
tpa: TPointArray;
tia: TIntegerArray;
begin
if (Working) then exit;
if (Radius > 80) then exit;
Working := true;

StartRadial := StartRadial + 180;
EndRadial := EndRadial + 180;
StartRadial := 360 - StartRadial;
EndRadial := 360 - EndRadial;
ma := Max(EndRadial, StartRadial);
mi := Min(EndRadial, StartRadial);

c := 0;
SetLength(tpa, ceil((4/3)*Pi*pow(Radius, 3)));
repeat
for i := mi to ma do
begin
x1:= Round(Radius * Sin(i*pi/180)) + MCX;
y1:= Round(Radius * Cos(i*pi/180)) + MCY;
tpa[c] := Point(x1, y1);
Inc(c);
m_Debug('x1: ' + ToStr(x1) + ' y1: '+ToStr(y1));
end;
Radius := Radius - 4;
until(Radius <= 1);
SetLength(tpa, c);
bmp := CopyBitmap(curMap);
DrawTPABitmap(bmp, tpa, CColor);
DrawBitmap(bmp, mMap.CANVAS, 0, 0);

Working := False;
end;

procedure OnClick(Sender : TObject);
var
ints: array[0..2] of Integer;
i: Integer;
strarr: array[0..2] of String;
str: String;
begin
if Working then Exit;
m_Debug('OnClick');
case Sender of
mMap:
begin
Paused := not Paused;
if not Paused then mCheck.Checked := True;
mLabels[5].Caption := 'Paused: ' + ToStr(Paused);
end;
mCheck:
begin
Paused := not mCheck.Checked;
mLabels[1].Caption := 'Radial: 0';
mLabels[0].Caption := 'Radius: 0';
mLabels[5].Caption := 'Paused: ' + ToStr(Paused);
DrawBitmap(curMap, mMap.Canvas, 0, 0);
end;
mButtons[0]://Change color
begin
NextColor;
m_Debug('New Color: ' + ToStr(CColor) + ' Old Color: ' + ToStr(mButtons[0].Font.Color));
DrawColor(CColor, mCol);
end;
mButtons[1]://Clear map
begin
m_Debug('Cleared map');
Paused := False;
mLabels[1].Caption := 'Radial: 0';
mLabels[0].Caption := 'Radius: 0';
mLabels[5].Caption := 'Paused: ' + ToStr(Paused);
mCheck.Checked := True;
DrawBitmap(curMap, mMap.Canvas, 0, 0);
end;
mButtons[2]://Load map
begin
m_Debug('Loading new map');
GetMinimap;
end;
mButtons[3]://Add
begin
if mEdits[2].Text <> '0' then
try
for i := 0 to 2 do
ints[i] := StrToIntDef(mEdits[i].TEXT, 0);
if (not InRange(ints[0], 0, 360)) or
(not InRange(ints[1], 0, 360)) or
(not InRange(ints[2], 1, 80)) then
begin
m_Debug('Info not right');
ShowMessage('Please use correct values for radians and radius');
Exit;
end;
m_Debug('Adding info to list');
mList.ITEMS.Add('SR: '+(mEdits[0].Text)+' ER: '+(mEdits[1].Text)+' Rad: '+(mEdits[2].Text)+' ');
except
ShowMessage('Please only use integers!');
finally
end;
end;
mButtons[4]://Delete
begin
if (mList.SELCOUNT > 0) then
begin
m_Debug('Deleting info from list');
mList.ITEMS.Delete(Ind);
case mList.ITEMS.Count of
0:
begin
end;
1:
begin
mList.SELECTED[0] := True;
Ind := 0;
end;
else
begin
Dec(Ind);
mList.SELECTED[Ind] := True;
end;
end;
end;
end;
mButtons[5]://Draw path
begin
if (mList.SELCOUNT > 0) then
begin
Ind := mList.ITEMINDEX;
m_Debug('Drawing radial path');
str := mList.ITEMS.Strings[Ind];
strarr[0] := Between('SR: ', ' ER:', str);
strarr[1] := Between('ER: ', ' Rad:', str);
strarr[2] := Between('Rad: ', ' ', str);
for i := 0 to 2 do
ints[i] := StrToIntDef(strarr[i], 0);
if (not InRange(ints[0], 0, 360)) or
(not InRange(ints[1], 0, 360)) or
(not InRange(ints[2], 1, 80)) then
begin
m_Debug('Info not right');
ShowMessage('Please use correct values for radians and radius');
Exit;
end;
DoRadialPath(ints[0], ints[1], ints[2]);
Paused := True;
mLabels[1].Caption := 'Radial: 0';
mLabels[0].Caption := 'Radius: 0';
mLabels[5].Caption := 'Paused: ' + ToStr(Paused);
mCheck.Checked := False;
end;
end;
mList://Set Ind
begin
if (mList.SELCOUNT > 0) then
begin
Ind := mList.ITEMINDEX;
m_Debug('Index: ' +ToStr(Ind));
end;
end;
end;
end;

procedure OnMouseMove(Sender: TObject; S: TShiftState; x, y: integer);
begin
if Working then Exit;
m_Debug('Mouse moved: ' + ToStr(Point(x, y)));
if not Paused then DrawRadial(x, y);
end;

procedure FormInit;
var
i: Integer;
EBox, BBox, LBox: TBoxArray;
LCap, BCap: TStringArray;
begin
mForm := TForm.Create(nil);
with mForm do
begin
Caption := 'RadialWalkAid - Rebirth';
SetBounds(100, 100, 450, 263);
BorderStyle := bsDialog;
end;

mMap := TImage.Create(mForm);
with mMap do
begin
Parent := mForm;
SetBounds(5, 5, 248, 169);
DrawBitmap(emptyMap, Canvas, 0, 0);
OnMouseMove := @OnMouseMove;
OnClick := @OnClick;
end;

mCol := TImage.Create(mForm);
with mCol do
begin
Parent := mForm;
SetBounds(114, 179, 10, 25);
end;
DrawColor(CColor, mCol);

mList := TListBox.Create(mForm);
with mList do
begin
Parent := mForm;
SetBounds(258, 5, 187, 169);
OnClick := @OnClick;
end;

mCheck := TCheckBox.Create(mForm);
with mCheck do
begin
Parent := mForm;
SetBounds(129, 209, 121, 25);
Caption := 'Draw Radial';
Checked := True;
OnClick := @OnClick;
end;

SetLength(EBox, 3);
EBox[0] := IntToBox(258, 235, 60, 25);
EBox[1] := IntToBox(321, 235, 60, 25);
EBox[2] := IntToBox(384, 235, 60, 25);
SetLength(LBox, 6);
LBox[0] := IntToBox(5, 179, 60, 20);
LBox[1] := IntToBox(5, 199, 60, 20);
LBox[2] := IntToBox(260, 215, 60, 25);
LBox[3] := IntToBox(323, 215, 60, 25);
LBox[4] := IntToBox(386, 215, 60, 25);
LBox[5] := IntToBox(5, 219, 60, 20);
LCap := ['Radius: 0', 'Radial: 0', 'Start Rad:',
'End Rad:', 'Radius:', 'Paused: False'];
SetLength(BBox, 6);
BBox[0] := IntToBox(129, 179, 125, 25);
BBox[1] := IntToBox(5, 234, 123, 25);
BBox[2] := IntToBox(131, 234, 123, 25);
BBox[3] := IntToBox(257, 179, 61, 25);
BBox[4] := IntToBox(321, 179, 61, 25);
BBox[5] := IntToBox(385, 179, 61, 25);
BCap := ['Change Debug Color', 'Clear Map', 'Load Map',
'Add', 'Delete', 'Draw'];


for i := 0 to 5 do
begin
if (i < 3) then
begin
mEdits[i] := TEdit.Create(mForm);
with mEdits[i] do
begin
Parent := mForm;
SetBounds(EBox[i].X1, EBox[i].Y1, EBox[i].X2, EBox[i].Y2);
Text := '0';
end;
end;

mLabels[i] := TLabel.Create(mForm);
with mLabels[i] do
begin
Parent := mForm;
SetBounds(LBox[i].X1, LBox[i].Y1, LBox[i].X2, LBox[i].Y2);
Caption := LCap[i];
end;

mButtons[i] := TButton.Create(mForm);
with mButtons[i] do
begin
Parent := mForm;
SetBounds(BBox[i].X1, BBox[i].Y1, BBox[i].X2, BBox[i].Y2);
if (i = 0) then
Font.Color := CColor;
Caption := BCap[i];
OnClick := @OnClick;
end;

end;

mForm.ShowModal;
end;

procedure FormSafeCall(proc: string);
var
v: TVariantArray;
begin
SetLength(v, 0);
ThreadSafeCall(proc, v);
end;

procedure FormFree();
begin
mForm.Free();
end;

procedure Init;
begin
CColor := clBlue;
emptyMap := BitmapFromString(248, 169, 'meJztnQl0FNed7sGxDbbBsc1i' +
'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' +
'ze1U0d5Q3d6xu3FLR7DGfkc75pocfD647D0mPKN0SXjMAlw7UU43E' +
'i5DMAO2DhLMvuqHkrIFC3gMdJUFL6yK2XCLnOCZ+yG+ORZf0wXkYL' +
'Xq+dknmjg2rT+9uRPXTRs9fPPzM8e5Httdtca5akZSQNDcoeVaw+B' +
'Yr52s3u2Fu6TLNzCgvhfOyhvaVdW2lG9vi89eZfAsqiXFpWUA9b+B' +
'Z1f98gep/HlrcCWhhPFS/RLd0s7MWytgY336OnpxtQ4rwyoOAHDVQ' +
'cB5aPYB9lq9vZAuRn/ObY9E5H5yHMTKyJDwFnO9JK4M/b4pfVh21O' +
'Dc0tiwl9aEt619/5mHdn//b+9959emjvS3OooTEpPuDlsx8MGvW/N' +
'wHIktD45ly8eFbPGemc21xPUe6WQXE3Hhw+pbSho68dQ0m38JxFvi' +
'z6dLZ0SXEMN6gF/XKqNbzIJlsw36jAODJP9Zs6GfbUGTpFkAe4jwY' +
'0/tS3rbjEHMOIPJzfnMsJj035mFU+Ra2ELGz1o6UVV2LiupiMrPnR' +
'JamZXzvmy+g4gkNh13BGpD/1TdfKExKTZoelDsnYlVwbElIHCH3xr' +
'nTO+ei52qmDEPPVzdsKd3UXtbYkeVsNvkWPhdaPdFiff3SzmOhTef' +
'V+NAFWaqOuVyhrqL2BIEn8wgUsAUBwnEXAOSq53nKcqwV5NuPs5ui' +
'35zfTIuJc9c8jEZesTEmS/ol7kxZVRO1OCMoqnLZ8pWO9IOb16Li+' +
'X9/+T7sCpQckJfnr4ifGZwx88GVwQsEcvEtZhkfhp67pgYw9Hx1Q3' +
'tpw5allTUyD6OJc0deEVGHqqMuOTUmO2BhgbIixZ1hpdthSwi2Yhv' +
'1TUPDQTV3IOQAHlXX+F1XNnTtJOc0537Ob45F5xxoueZhjIyMmBfv' +
'DFvE3lmIjoS8yvnJy6OSgHr6zAeXL1x4fOdGVDw/t6O+MDEhbtpsQ' +
'J46L2rR/XOLgqJ1MbflvNI906JpRlGTb6l0ca4senlTp6OkWuZhFM' +
'7luRZU9ezm3oiu55RKp5cGxC9FRCxvgPHm8E+ATbZZgOzjclCefO1' +
'AzvG/AOQbdx2QsRX4cj/nN80CzjlclK3/7nkYXdaFIylULMiqjVpc' +
'GpKAWDE3duGM4C1VK95+9TGs42Y8AEMOJQfkWbPmrQyOtYq5JFiGz' +
'7mb9g7l0pu2OFu745etkHkYdT0PMuatUM/wT1minjIE1NsvqZ7klQ' +
'dnZ6wCyQQeMTU2WwXUnlsWFuCKUI9tMYbUwecDcv35cn7Ib6ZFJJ2' +
'cu+ZhNCQdtVF2QWQvxA3zHYiy4IQlgQ+WOpJfPN+LdWpAyPKgGNgV' +
'KLlA7sO0jDQU6vDtbVv1eRg5+M7EOVGPTskoWteQ0DDA6qdq5Szdn' +
'rphNyKhahvXuARgYDhQNOPom7uOHV9Svh6Qb9p9WB/47Of8ZlrMFl' +
'3mYTRcOtyLcM6+iBWhi3JnR6aFzOuuW50SHAYNL9Yqnjrn1ozi6Dh' +
'Xqcj2rfo8jKRan1dRHp0Um5oVk5qBUA9LbO7N2fMoouDoaxkHX2J/' +
'XT7LYsWxq1WPvbH31LnFILzYmVlYXNbYCc4rW3r8nN+UCzlPqOtna' +
'9GGzp3ueRjpXlLBNiEn55Whi5Y/sCB5VvDa3Cysc+dElNhxLpDDtD' +
'BQLm9sX9vW456uTjUSsaAmkjbqpE63sSHeWK9paOMcXqZ5GJVvKV2' +
'XVbUxKCp+Vng0IyAsPCEjr7CqLrOoJC4taziRXeJ0FJZiXdmyddPu' +
'I8VNe/yc35QLOAfkwrkaIqrPw2igDnEm5Iw1IYnL5kRkzpqHtZ5g0' +
'SE3zcMoqLNA2lkQ5sG5MK/sitHLZXVD2+pNmys952EUzgtqm2dHxu' +
'qcp+QUgHPSO2TgcmAB+6/vPoAwOFeoR2XV+Dm/mRbqOSeQ5YALSDp' +
'CzcO42YW6CLseVrxJOCHX52HU66FgmEgjsH3dlm0EWySd+1S466qV' +
'xpSjiOHoOcLEOUgWmH0EPuLJ+R4/5zfZonMuT+gq27QZkdW0H6gHF' +
'h9SM9O5abfFWwj3Ng+jaU5Gb+F+d2+yEUnap/R5GL3puXBuEm1b1P' +
'WN+B4X580uzgOy1/OBitf7/PiXa7PYco4oWt+42o26EnY1D2MZabd' +
'dPs15GHXOdcgRFOfhcK5HyabO9T0G5AxwngPO1/s5v2kWcC4T3+uc' +
'E3XXPIybTyraWy8E1Z8PrezXxfnTn4dxTmSsiXPYcuEcjqWoqi6ts' +
'BSRU+LMKipB8GXa8DlvNjjPAeerrvf58S/XZvHBeWXr1m0nHityzc' +
'PYndW4j9IKjRXV/ZTnYQyOipcHFtGfC+Gzw6NxCYBq4E3IyblAbks' +
'7fA451yEf5DzSz/lNsthzbpzr6s7dnQOnES29xzgPI+x34boGID0o' +
'tu55GGNlHsawcJvw+TgL2ykAhnxMOjmnP5/tyXlqfnHGijWLC0ocO' +
'fkLswsQi3IKU3JXYrtOOyAn57gv+Dm/uRcbzt3nGnre9fA5RFvfSa' +
'BetK5RzcPoyLIqbXBCCsKecC1sH9jibX6uIecCoG+Bws92cz5zXuT' +
'ivBXpBcVJS3ISlyyNXpQWEZv44ALEwvnxSTGpGfFLli7KLkg2gE/N' +
'KUjMyGNSsbB+my3nkxeuvd7nx79cm0XnPL2qSz/X9C3gnJIOqGId2' +
'dEpmYyIhelDgm3mHAbDE/Lg+VHB3jn3PeUiOM+u2gjOIeMgHDeLKT' +
'PnJCYnv/TylX/651/9/qOPfvzjH126dJHxne/+D2z59W9+881vvZm' +
'xLC80IiYmJSMufWmaUW8ta+qycj6jqN3P+U2zDHJesd8b59RzmFgT' +
'56wDmmJGcBjDnnNP1G0fijuEmLtRT3VzPmu++jOmzQl+4sLj//Xb3' +
'4Lny88/m1+QP37cOD0caemPPnr2ww8/+O3vfvfa16+GRsVHLUpPzl' +
'2xakOTCXIELiI/5zfT4uK86awt5wfOXBDO8TIhI88H50K4zrkO/GA' +
'C0OeMosOc58LFeUy8UvLA2cmpSSD81jvvQXzmjs/qodM+6a67Ojs7' +
'QPu62trIxJTkorJVda0Vzd36Pw4bg6OBmODovN7nx79cm0Vx3nTWl' +
'vP1PQd0zlEtHRHnVuY9ct3D4Nz3RLrgfEn5hgfCo2FXilas+Pu//3' +
'sQfvLb7z79w3/8ys9+/sRf/+++b/6458rb6x75IrbPnBkIwoX2sND' +
'gDz78YPe+/UlZebkVG6rad/k5v7mX23OP+eB866lL3vQ8MnmxcO6D' +
'cK+cDxt1b/4cnDtWVU6fHZSbl/GjH/0QMHe+8J0j3/pp3zd+hOh9/' +
'W92vfYuw3nxm3MmPjhzxtSp905yoT5+/M7du99+5390dm925K1YVt' +
'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' +
'8gfj/+dvVLg5F7aFcMTE6JzZ/+ujcd/5LxVGQgbXyPDnVWQMZ15F1' +
'1NDMwtmzpq5c9euHTt3Tr0X1uWzcWs2R9TsQ8C3zEhbC5j1eijz6p' +
'qefxZi3tLSBM7DQoOXrFidW71FOGdtlJz7LfrYXWjOyTm7KerzKuo' +
'1UGVawPnPPgLngFnYnmiwzRhv1EwnGJzf/dM/Yk8l/lD1L36P8yqu' +
'be0ZzlND+Yg5rvUo85xXkZwn5JdOvOPOVEfa2UfPiks3RZKzfcO5l' +
'zONvCL0PPXARV3PoyLnX7p4FmI+ceIdq2qaVhqNoSbO1556A6j7OR' +
'+jCzgH5GtPf0PnXOZVFM4nPvxnd19+B8QK50L1RKMg2EPkhXNlXSD' +
'pRtWV87aY5tsaRejzKpLz5OKqhKy82ydMnHTXXSdPnnjlla8B9YhZ' +
'98QH3YdICZ2GIO1zMtbMXLz6wbLWB5aW35+0AoQjLj//LAK+5d4p0' +
'/Ira+p39nOEhXAOL5fX9XlwjvBbl7G40LQAckRe9+clcy7zcOmcKw' +
'dCzt0Bnq3WhQHyXdaFev6d/7omT4fmc0RlfiLXc6FL1yUXrb57yrT' +
'PfOZWVEUvXryYk5kK1IPvnyy0O+a7suvuUITD5MTFRL722qvQ87sm' +
'Tc5cXrqua29b30kZTCR6ro7SqTeannjLn3UZiwszLU1Pfgec05zjt' +
'OrzKt4eledqHoJvgSyDc5hzDfXxlgop8y0ui049v3acr2lst/oWcL' +
'549fopM2fffd/Uz3zmM1D1Dz/8ANXS0JBgRfvMKaB9yvTZtbV1UXO' +
'nR866hyMsAHlzc+PPf/7PUPI77rzLkVvkbO1u2T/Q9fC5ytatoudS' +
'G4VpAeeg3c/5mFvAOQgH57Au0k1Rn1cRnA/6c0PPx737W9+ci8Krd' +
'lJWRV/9BZgf3XzQw/Et4Dyzsu7+oLCps+fePWXqrbfdVuWs/PGPf/' +
'Srf/vN0YEjcOwgH0j//qOPoPYgPD4+Bi//9od/i8tB9Vqf/NnFRaX' +
'O1q7mfUc6HjoBzjftOWKyLvgJco6AdfH3dRlDC00LICfnOJVsAdTn' +
'VTRzDhPy7m9VBdMNuTmLbkqhu/X8GnJu61vguGaEzLs/OGzqzNmfn' +
'Tb9lltuAdJg+K//+vvAGwVgD6qvXv3Kzl27+EQXCL4aZPeZW3NKKt' +
'a2bW3ef6TnkUf52LHOI6d1ztmhq7hpNzkH8H7Ox9DCGig5x2mVbor' +
'6vIrgXHXfKj0k+RaF7tu/1jj/g1XJCbmL82/9q6qQfvF7H3+KIkZa' +
'sXNwXkVjFBKfxyW9CO6fGzJ15px77w+YfN+UCXfc+Zlbbx0/fjy7p' +
'gN+XAITJkyc/Nl77581d358Ut6a9W39j7jwdkPedezc+p4Dg5zXqU' +
'h3dtKiI1JKqv2oj4kFpwl4EHJYFzEtiMqWLjVjy+YLrvZQw6K78ue' +
'GdZEsoi7mQjhinJFaVEpu6DmuiHHbL18rzhMKKwbnVTSeMmfinKhP' +
'nxME2u8LmHnP9BmT75s6+d4pk6dMmxI4e+bc0OCIBcERsQuS07Mr1' +
'm/o3meCnJyrqVtE0g3Os5z1Yl3yuk77OR8TC05TXvfnxbSImIuky7' +
'yKLuvCzi3nfnDH/Q4iLZ1bTBruUnJmWr7zX6o26hZz87yKo4rYnCK' +
'ZV9Fo9I92+RbLmGvQfv8DwQr4WQ9MnTVn2pygOfOjwuOTY1Iylywv' +
'q2rb3tJ7DGy39Z3EGmxvO/6YRNvBky7O6xhboedYk3MIu5/zMbFMW' +
'HZU3YUNzplPMHHepOZVfGyw53npIdWxnJy/ZOTJfzKYUcTGQaNieB' +
'XV7m/UWNXLskPXSsyp5zKvIjifExlLPR/O02OCouIXLltVXNuCmib' +
'xNsm4jnpx0x6BnAHUqwaubH/+bxD+2uiNv0wwptzi+ao6+lUT5OS8' +
'dXdv3pGnA4sPiXtRQ4ROviNIM/CSW1yEE3LDkzOveEvXuWuVOdc5d' +
'/lzN+fQc3m0nY9Hx6TkFMgzrnXCTUHOYV1MnMO6wLHwuPkl/cZfwH' +
'n16W9sv6zOF5uHTJxD7mq6drYePgGXLu7lNodTDSY6+Y6r4yK8Oqq' +
'l0k331V+44t3fxvz0jzFG3VOHXGaa+5ihz8OlxmJExeuce4vQuIXZ' +
'Jc76nf0+8G7Zfwx2BarOUNZFSfpWXc8R8C0i6f5c+g274NQk1h/im' +
'Wp68i15ioUEfCnu6V0Pn4Okr+47J5PN3b5w5aCB4RgKw8m4hs4ZqR' +
'gX4VB17FD/mI95FUcRaxrbK03zKg6Dc2yPTsmEV1FuXKMaGKsm/to' +
'WmZNOPeo/bzlCFQpKU0qqsU4tqdZRX+zsRG3UdSscuOIfSXfDLhNy' +
'j4nJxCmzmpb1PQdUvezhc5B0RE7n5/R5FUG76sHIdLphVMj2YOsnC' +
'DeyK77nVbzmeu4Ncii5gnz/MV23sSUhIy/Wka0mxm3dyncPfOGCEU' +
'8iOo+catl/tLKlJ7u4MjY1K2FJLgqi6iLpKPsl/QZccFIWV3W5xPy' +
'Jt1QOwRNyiDl0b9uJxxirN21ePTiv4uBMc7elOcdltN22XDUhqVQM' +
'sN9+GS4FxmY48yrmbdruI3zPxugxr+L8qLC4hZz3PCAo1BrYIbOwu' +
'H5HH7hFtB08UVzTHJ2s5rNAAVuA9OEvvbz15EUGLnyEvMRbZB474y' +
'NRaXmgHUGXfvDqe0rS/ZzfeItKsxz9Kk6QcuZdp5VGeXLOahohP3D' +
'mAqffcqHeqmaaC63sD0q7UeZVnBOxQDif/kCIKQJD50OKocnAG6yu' +
'7+6FLEcmpWML8T5w6Sqqk449L8xvPBNcvi+gsE0i2JhiEm9hB+xG4' +
'PFBXCP4EvwiVAKHEeF36TfawpnN+15SZ4eNergLF9Ub+QR3Rw5dzC' +
'U40xyqk8CMtN8I8yqqpOJQnONC3rT7MCAva+wEooXOWpQB7Z4LV6D' +
'bIDkwe93diVV3RKxEoCAhW7ADdsPO+Ag+iI/jS/BVuBWScxxJP+c3' +
'1ALOcVLIeXHTbhpOnXOIOcHmVEQi7HhZ1tTFkcugLvMGmFfRNTKU/' +
'tw752ASNhuugzIOUA8/82eQaKALhsPikzfmZbzRlseYFjF3WkrkPQ' +
'khesyMT0ZgZ3wEH8TH8SUUdtwQj736PgIFP+o3yKIaQI3z8vCr74u' +
'YD3JetxVi3tZ3Uoccwcf7o1BYVcdH+qcUlsJ7D2deRT6/wjZQQ8Ta' +
'+iALHw+1sI3ZbA/1wjkiLDYRqAPy6o5dlHFYEUg0IiA/oW398jf7K' +
'94+uEbirvDZ81bnBBQkAHid+akRc3FR4FP4OIUdXwjU4YhwSGEC/U' +
'Okb4RF9WYpqcbpwEmBmIPtLGe9Djlifc+Bbccf4/yJouTEHmbGUVg' +
'qE1jEOrLVvIp2Sst5FX0Qbn54C2qLnxjn02bNhaSDT9RDCTk0GW5k' +
'Rn4CSAbSgPx7Z+rfv9D+r9/q/48PLzHSygqSu2oi64oQc1c4EAQe+' +
'986ZyqFnajja+HVIfI4qqyQ+lG/vgs4x4ngTRYFgAHCdchLNna0G2' +
'KuBwjnun5nPydqiViYTtSZlAuNWwhop84OYpBhvTwE594hHxHnqaX' +
'riqobps8NVaGjPjcU75bUtgxCHrkKkANdcPv9J9v+7oWN//n9gY9+' +
'98of//iPf/zj74z1j/7wx7f2n9i+6dyR+qePO/Y0Cu0ubY8PxpUiq' +
'MMR4WCi3GdYQT/n13EB5DgFrDRB0qVLkh7ru3u7oeTHHt12/LwRg+' +
'4FBZlIMWpRBvWc2M8Kj7ZCPqSYuzgPCrXlfDh4WzkvrG1WAm6wLZC' +
'zHnrgC0/u1ZSc+gzIQTiodhPOUJBDzKu+8BDiof/20uPff63/ypm4' +
'prWgnWaGwk7U9168gi/HT+DwDroX/wwv12PRHQtCNQxZIIeYo7Lmy' +
'fl5vZsTTQvFnJATe7jrUXIeFGrLuQA8Uj2Hb5nmxpuFgOCwiMQ0cN' +
'j/zNfS9r4w0YAc3hugwpy4NZycD8bP/+k7S7c1kvPiz++CpJcd2w/' +
'a8TK+ppSog/O75s8C6vhafDl+Au6l+rRyL2pUXe4xf7+XT39hv0RC' +
'jkKKZyu2iDnqU12q18cpQs5WFWB/4AsXNu05opsWEXO81E2LCXgfQ' +
'YMBDgPDwk1BegPtJka3h1zjfLon5/iSdZ27VYXx9BsTUzvoyaPLC2' +
'ctSfjDH96idDta1grqv/rlewhwjo0wLYAcpoXaTtqxES9xpagqasR' +
'coD7RoUZesE6aXbWRB7mkec/tfqP+6S4Tco/ylsq7Krtn2Io5W1Ik' +
'+BJKBeaLa1voyWlaaM6xDoqKt7px35wL4QydcI6YGHFonLvaQIPDw' +
'DkKcY5s/P1wzhNSO6amRMY2Ku8BrV5avwaEQ8/BMwDGFhIunGMLzT' +
'lQJ+1Y5+/rQrB+Sq/OamlQ+T78BH4oMSMPsoDjvMOfe/l0lwmeOZa' +
'8rtPMsVjF3IQ31iCf2o61o6AkOnmwBip6rmYYH4aez3A3wVNvpUUe' +
'5lmP2aLPww87zqnn+MLKlp7jX34d1uLuhWsh5lByGg9ADt9CyMEzq' +
'AbbAjn1vO5L5xFQ8tIvDOQd7WQAeBh1SnpwTipRx5fjJ/BD+DkcbU' +
'pK85Nv4U/yG/VPYSHkTU+8pedYrJBD7ZVjOfYouy1R2Mk5NiJwR45' +
'NzYpOzoDXxZqt3rGp2RGJ6QDYxfasuYhprAbahXBuS7gJ9WEyHxwZ' +
'F2zMf6H6n7vzivx+/GF05lBa6O3U5Eg6cyCNNZT8Hz/8OphHBVPR2' +
'7IWL0m4mBZADsILDu9FYDehHZzjg7To8D/Qc13SE9JzxSLiyMO9+I' +
'36J71MMJo+5ZjbQo6o39FHnsm2GBiBn23ciKiFSzTOs8LikyVHjWD' +
'BFm+TmPuGXI85EQsY1i0I4VxvD+UPSZoF1N2dWMUcC/wGyATkv3jv' +
'SwjgCuxhRcg5g5BD58E5CAfekHTsA8KZY8QOgPxvXtj2vTP1QB1lZ' +
'tRVHxgj8aJX+XEM/Rn1T3TBsWU7HW15Ql2/rWOBmDPBQqRNFh0b2Q' +
'4iYg7U2UMVZWDmghxGxY26LeSC36g519n2eOnJue6I2FPLseeFOyJ' +
'WQs9ZeQTkH/zsHCD/4L3nwTlNi3AukCPEqzDAPH0LxRycf//JNnLO' +
'HCN+iL28otLy4A+ZwvX3B/hElwnu9n0ebZS9iTk7OIkz1zmnMwc81' +
'PDIpHSXmKfn0saAQ8lvTLVwbttFdkSQ23LuW8/lV/AWrtDd5y/Pbz' +
'zz2YSQB5Y7QCPwhi0Hz0AdnCMAthVyyjgKsCushCIIuZVz3CBUjjF' +
'8Nn4IP0dZwB8jIoPjj+PsR/2aLzikOLAUE946vUEO40229RAlB+e4' +
'CowaaIYExRyhenqEzrfl3BvhQ3Mu+RODcGKMMLNtSDoL4s9TS6sLw' +
'bk7jRO5MK11/9GtJy8GFLXRtDCdiAKEnZAzdMfCWidtOVWd/py+RT' +
'ctgJyczyvKZo4RP4Sfw48mZuQWGUmtardRx7lIrOv3Dzu6hgtHNwv' +
'kMI3WJiFxLLTiUvE0cc6OrLQoJs7FtOicD6nkPiBXnBuEz5IUijG6' +
'eY4xGxELNmJuEO7Ot3hwHufIwt8P0gJzVGct4J3cVcOAUcFLW9TZP' +
'EQxZzCvmFdjZBdbXDVQtqUi3j64BuacW/BD+Dn8qHCOaHbXj2Ad/a' +
'hfq4WQ73BXglD3XFzVRc7Zj0U6tDBhbrIrrb3H2E6ENQJizvFiypY' +
'nL45JyUQI5zQtcOYqiWfkW4R5V4bcG+eSMLdwLu0+s9ycz5Z6qLs2' +
'Oqjkbj33xjnuR8I5CY9rWgtNtnJuUnUaGAbEn9cINkLSwTlRB+Soh' +
'5Jz3CaEc/woOUdkO+vBto46yPej/jEXQA6kt2uQg/nsqo3S81a6bK' +
'EAhqXiyRxLe99Jl5IbqGOLs3VrSnY+kAbeUg9NzMgD5yiDTFY/pxr' +
'1UBfnRscSZhcVb1bODbzZvm9CXedc9HyWxbF7QO6p5+BK5xy1QoA3' +
'0dEBzmE8mPdGAEuA/X++/yjCRLsAD5hBOIIv8RGKuUBOzr/dVSZ6j' +
'h+qNlIuwjlRx1pOCgrY4kd91Mvty45mOev148knjehsi2PZ0HOAiU' +
'RJmJs4B/yoT+EaQZVT1UAXpgNs4dxlWiDjhNyTc8mfB7AvooXzAGH' +
'bs6ybc5eYu7fY5hWH1HP8Lyv7nifn1GRQqqOuaqPuCqk3eRfOBXKY' +
'c/pzcP5GWx44vychBP4cP4SfE9/iA3W/qo9umZB7TFfyHW7Idbylo' +
'BKJ6gFrj5JqEA6kyTmNevfD57CubOlJzSlwZVrcnMO0gHMUgBbZnm' +
'bhfLBZPyh0BJy79XyWp57PdjsWH/kWW85ZDwV4ICrAnTwnqIDWg3N' +
'P2llLVVL/7iEV7z1PyCnaUgMVc670PGIuAj+En5N6qB7420xe3Y/6' +
'SBcZvK97cutAId2W05nQk+MlPAx7cHELCkrMiyvjHNnknL6FzUPgP' +
'NTItHjjnKZlhh3k7HkyQ2qjGudkdZYpo6j5c2sNVPRcqT375Wqchy' +
'UkAzkYiYCiduZbyKqL55+d+4e3uxXGOuo/O4fdXO7dgBz7/K9vPbx' +
'o0SJdxt/sr5BQSs6+i+Gz8UP4Ofxoak5+kdsoqnCrOs6LoL7jsr9a' +
'OoLFWvGEsNOumMZQsExbDpJZCRXTIractVGmWQRvog7CaVpCYxNdz' +
'aDw5xJa7kVgs8+6SN8tunQvnOv1ULErVn/uyjpGxqr7V22zyywFh8' +
'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');
m_Debug('Loaded empty map');
curMap := CreateBitmap(248, 169);
FastDrawTransparent(0, 0, emptyMap, curMap);
try
m_Debug('Loading form');
FormSafeCall('FormInit');
except
Writeln(exceptionToString(exceptionType, exceptionParam));
finally
FormSafeCall('FormFree');
end;
end;

begin
SetupSRL;
Init;
m_Debug('Form closed');
FreeBitmap(emptyMap);
FreeBitmap(curMap);
m_Debug('Empty/cur map freed');
end.