SRL Archive - Other Scripts

AutoKiller for Hero Online


Frement

2009-09-30 18:48:05

Ok so i made a script for hero online a while back and i just thought i could share it :)

Usage: windowed mode, smallest screen and as bad graphics as you can put.
Start near monsters. Loots stuff after kill. Takes potions if needed.

(It could be smaller, but no interest since i dont play the game anymore.)
program FremBot;
{.include SRL\SRL.scar}


//////////////////////////////////////////
// FREMBOT SETTINGS //
//////////////////////////////////////////
// HP POTION ACTION BAR SLOTS : 1 - 7 //
// MP POTION ACTION BAR SLOT : 8 - 0 //
// USERNAME //
const Username = ''; //
// PASSWORD //
const Password = ''; //
//////////////////////////////////////////
// THE USERNAME AND PASSWORD NOT NEEDED //
// (I stopped improving this script) //
//////////////////////////////////////////


var x,y, MOB_HP_BAR: Integer;
INV_FULL,quizes: Integer;
killed, GMQuiz: Integer;
s1, s2, s3, s4: Integer;
s5, s6, s7, s8: Integer;
s9, s0, HPTaken: Integer;
sKILLED: Boolean;
Status: String;
Patq, lot_1, lot_2, Lot: Integer;
LX1, LY1, LX2, LY2: Integer;
RX1, RY1, RX2, RY2: Integer;
AX1, AY1, BX1, BY1: Integer;
n1, n2, n3, n4: Integer;
n5, n6, n7, n8: Integer;
n9, n10, Solved: Integer;
StartX, StartY, StopX, StopY: Integer;

const Ver = '5';

procedure SolveLot;
begin
if (FindBitmapIn(lot_2, x, y, 0, 0, 1024, 768)) then
begin
StartX := x + 31;
StartY := y + 209;
StopX := x + 92;
StopY := y + 208;
Mouse(StartX, StartY, 1, 1, true);
Wait(1500);
Mouse(StopX, StopY, 1, 1, true);
Wait(250);
Lot := Lot + 1;
end;
end;

procedure FindLot;
begin
if (FindBitmapIn(lot_1, x, y, 0, 0, 1024, 768)) then
begin
SolveLot;
end;
end;

function AddToOnlineReport(Text, Username, Password: String): Boolean;
var
Site: Integer;
S: String;
begin
Site := InitializeHTTPClient ( false, false );
ClearPostData( Site );
AddPostVariable( Site, 'report', Text);
AddPostVariable( Site, 'username', Username);
AddPostVariable( Site, 'password', Password);
S := PostHTTPPageEx ( Site, '' );
if(S <> '') then
begin
if(S = 'Authentication Successful') then
Result:=True
else
Result:=False;
end else
Result:=False;
Writeln(S);
end;

procedure CalculateX1Y1X2Y2;
begin
if (FindDTM(Patq, x, y, 0, 0, 1024, 768)) then
begin
LX1 := x + 1;
LY1 := y + 29;
LX2 := x + 43;
LY2 := y + 54;
RX1 := x + 66;
RY1 := y + 29;
RX2 := x + 115;
RY2 := y + 54;
AX1 := x + 170;
AY1 := y + 42;
BX1 := x + 170;
BY1 := y + 41;
end;
end;

function GetLeftNumber(): Integer;
begin
if (FindBitmapMaskTolerance(n10, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 10)');
Result := 10;
end else if (FindBitmapMaskTolerance(n2, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 2)');
Result := 2;
end else if (FindBitmapMaskTolerance(n3, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 3)');
Result := 3;
end else if (FindBitmapMaskTolerance(n4, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 4)');
Result := 4;
end else if (FindBitmapMaskTolerance(n5, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 5)');
Result := 5;
end else if (FindBitmapMaskTolerance(n6, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 6)');
Result := 6;
end else if (FindBitmapMaskTolerance(n7, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 7)');
Result := 7;
end else if (FindBitmapMaskTolerance(n8, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 8)');
Result := 8;
end else if (FindBitmapMaskTolerance(n9, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 9)');
Result := 9;
end else if (FindBitmapMaskTolerance(n1, x, x, LX1, LY1, LX2, LY2, 10, 5)) then
begin
ClearDebug;
Writeln('Left box validated (Number: 1)');
Result := 1;
end else
begin
ClearDebug;
Writeln('Left box failed in validation.');
end;
end;

function GetRightNumber(): Integer;
begin
if (FindBitmapMaskTolerance(n10, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 10)');
Result := 10;
end else if (FindBitmapMaskTolerance(n2, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 2)');
Result := 2;
end else if (FindBitmapMaskTolerance(n3, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 3)');
Result := 3;
end else if (FindBitmapMaskTolerance(n4, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 4)');
Result := 4;
end else if (FindBitmapMaskTolerance(n5, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 5)');
Result := 5;
end else if (FindBitmapMaskTolerance(n6, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 6)');
Result := 6;
end else if (FindBitmapMaskTolerance(n7, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 7)');
Result := 7;
end else if (FindBitmapMaskTolerance(n8, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 8)');
Result := 8;
end else if (FindBitmapMaskTolerance(n9, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 9)');
Result := 9;
end else if (FindBitmapMaskTolerance(n1, x, x, RX1, RY1, RX2, RY2, 10, 5)) then
begin
Writeln('Right box validated (Number: 1)');
Result := 1;
end else
begin
Writeln('Right box failed in validation.');
end;
end;

function PSlot(potion: String): String;
begin
//Slot 1: 273, 747, 313, 788
//Slot 2: 315, 747, 356, 788
//Slot 3: 358, 747, 399, 788
//Slot 4: 401, 747, 442, 788
//Slot 5: 444, 747, 485, 788
//Slot 6: 487, 747, 528, 788
//Slot 7: 530, 747, 571, 788
//Slot 8: 573, 747, 614, 788
//Slot 9: 616, 747, 657, 788
//Slot 0: 659, 747, 700, 788
if (potion = 'hp') then
begin
if not (findbitmapin(s1, x, y, 273, 747, 313, 788)) then
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using HP slot: 1');
Writeln('-------------------------------');
Result := '1';
end else if not (findbitmapin(s2, x, y, 315, 747, 356, 788)) then
begin

ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using HP slot: 2');
Writeln('-------------------------------');
Result := '2';
end else if not (findbitmapin(s3, x, y, 358, 747, 399, 788)) then
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using HP slot: 3');
Writeln('-------------------------------');
Result := '3';
end else if not (findbitmapin(s4, x, y, 401, 747, 442, 788)) then
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using HP slot: 4');
Writeln('-------------------------------');
Result := '4';
end else if not (findbitmapin(s5, x, y, 444, 747, 485, 788)) then
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using HP slot: 5');
Writeln('-------------------------------');
Result := '5';
end else if not (findbitmapin(s6, x, y, 487, 747, 528, 788)) then
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using HP slot: 6');
Writeln('-------------------------------');
Result := '6';
end else if not (findbitmapin(s7, x, y, 530, 747, 571, 788)) then
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using HP slot: 7');
Writeln('-------------------------------');
Result := '7';
end;
end else if (potion = 'pet') then
begin
if not (findbitmapin(s8, x, y, 573, 747, 614, 788)) then
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using Pet HP slot: 8');
Writeln('-------------------------------');
Result := '8';
end else if not (findbitmapin(s9, x, y, 616, 747, 657, 788)) then
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using Pet HP slot: 9');
Writeln('-------------------------------');
Result := '9';
end else if not (findbitmapin(s0, x, y, 659, 747, 700, 788)) then
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Using Pet HP slot: 0');
Writeln('-------------------------------');
Result := '0';
end;
end;
end;

procedure declareStuff;
begin
killed := 0;
HPTaken := 0;
quizes := 0;
sKILLED := false;
Status := 'on';
Lot := 0;
lot_1 := BitmapFromString(30, 30, 'beNqN1EtoE1EUxvETMmoWVbqQE' +
'lBLiy4MRCGgi2iktFiUanxUKiVQVEJX2ShBEYrFiihIsAgDhVIQgg' +
'+IBstAoQiBQiAIQkGEEVEK4mIWLmbhYhZdjN+9Z3Jvmk5My5/DkMc' +
'vJzPNeLbvuUGuo/I2fZXzx1N5fx1Ury6Kg5bXhP95biF7Gc1cyKaJ' +
'eBZ7dIWYLrdfV6Dw0jIlDzbNrvJ8Lst1lzedJ5ezaO04odoRUTUZQ' +
'/XxQVQ+2WfGY9zba4mvT0cwZ472vjZIF9Gxr+QxovppYhyx/P1hGv' +
'Ly5OFWWVUe2LtFpmC2yQgyp+S2nXGAhX0rx2svTSVeDh/oujNqjBI' +
'HnGX3zTiq3U3BxOaIZT4bYPXaUb22ln2nNJFF9gS9zhDP5TP9yPuY' +
'Q/ajdGUoztkP0mjtRhKtPxtZSPXNxAi93S0SMlhDJP8VtczsiEEl2' +
'de5DIK8lk8E3UiGypV9AY46ycVDWsbakBWLndlElVP91q1kq6zwnc' +
'icORBTAUTmwV7EJlfdL2Jfy99KljmF7DuEHh+mHNGazJWzLGvIVol' +
'eEG3I8Gw9QgtR4VhxUbVXxL8vx3Ha5OolIeel4MrAzpJ4MCcvupJh' +
'cpBXBwIc7UTmZrfJvDl/a5ZrRwXOfldZpU5FWa66qm4Rhg4yBxzs4' +
'tWskH+XrKUp5D4ntJynlCFuKRMyHCwZ5DbzDfocDT4xp75IH9VPUC' +
'0ZNDd6dgS/lB/roTKzt+UsShN+Q8oLkXCZYxl1knnnksR55+JWGVP' +
'JxQFaH6VPZwL8/zunpcny9p25NplxpHfeNK33eeSVCVlFSvRQBq+X' +
'TRKZu8iOibmyh5wYreyix1ERbrzcvWP0+aKoMSx6kh1DvrfRSZ6UZ' +
'ZoyWCWPk6hV/pILcNRJRpAHKcAz8mzwzihULg0LmduhnGnK2JZlPh' +
'XbZXtaxLiWfdP6kEd+hbj0QYoTJeXbh4imI+LyYc5FqWbQfJRuRkQ' +
'JCipfp58FkX1LxPc33Oi6ymO0RWa2Tf51X+M7kYeaMkwEXC2conZZ' +
'4f+XwTKebJERy2Bb5Y0H5DwSsQ+2YS1KuVb9MIvY56az5+ISRwkjP' +
'FxlVLiQXnlVXH6ZV01fOWe9m/c9O1S2KvPA2e8ks8mxefN8ChMscJ' +
'abmTo83sz944Tmu1WdY+r4jf8A0gfF6Q==');
lot_2 := BitmapFromString(182, 18, 'beNqdWmFvG0UQ/U1846STDq' +
'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');
s1 := BitmapFromString(37, 37, 'beNq1l29r2lAUxtuyqnTdyFAk/Y' +
'OQtTikTr3ONhXK1km3sDArZs1WCm6FsBdF+mIEoW/6cfZyH6lfwX0' +
'E98QTb85uYuobLw8hxpv87nPuuecm98bvUSDrcEfXtSUobPbxzp97' +
'A5qx9KXi0N41AyK7sHQcpBd0q1nayG2sTVsmkykWivlCnpRyrhU0S' +
'AhBJ4ni/XunZWO/oj3TXjzNrq6uPjw8TCYTEB8F0Qmx/F8+NLwddv' +
'vdRJzsT7jnG5m7u7vxeDyZNnAXsRbHkQB1+o5oCO6O+hMOzwdFwS0' +
'Sz7i7WqOGE//Wh4jI+xNube3J3/F4ZWWFcAgmZpMrZWokDnIuHFzB' +
'kX5aZ5b0SHJPy5X9Si63uZXf5Dh0dvvuIjhI4ihn5AAGg0Hg+mZYq' +
'9c4TtcN62iPQipxFBCzYULijTBeGjiSovNp4+7CSw0Ba2GQb4ZQ97' +
'y7CA4eoc77TqIScTiCJQUQRAZnON06Kqk4ik9NaJoWX2skCrXs7F6' +
'46cGnVFkEx9faPJwpzMVxoBBufX090V201hoCccbiSnHHl14ch5bN' +
'ZqmIbW9tKzhlrdG0Bpo6AkXB0XhIdtdWcMauTqLOeEI0+1+cQBdM3' +
'5hmuaHg7E+2fII/8s1mGGSJ67V3JE6OVrpLX3cSB9ETLr9eRhM6Y3' +
'HcPHcSJ92JpkgpLJQtkbXZAFJwie4iCyMfYeRbj4Ljo4XNOC7aXOP' +
'BCTfdqFK5l655aNL1sDZalvy386EDRfSWydesk4Tjo6XrosXGP2OB' +
'y4MmU8vzPH47X7MSZx+VEt2508YfCAoJUQ3q8PcBKY7GjYSTxHQc9' +
'UdAoqlsiTCMI59wdJHbVyLD16yTmirK/gUp48FO2uv3Wo2Wko3y3s' +
'SqouD4/hUv+HyDA05m3fWPa45LqZnzcIo1fk4iX6T2cTvdGsfxqsJ' +
'vUXZqhTgPJ/uTqgdVb+AxnEHiJUXURVhv60Lem5D5MyPxv6rVam4z' +
'JyuS3F4B6rX3FJzyasRLsaKUv5BI9BcNOI6jtJQbZWiQJUx8dUgW5' +
'VIil78a8WD+t23VhX1uezceT0tZguZFNZHI3WkFvdMsBcePnavBVb' +
'i4+g508vak/KrM6x53zSsz7xMnIhoYIS1ziQOrclBJf8+XLO+nx0M' +
'x79uBTwHhwCJc+lcMPS3YrD/bYOHIp1h5n1GyK9HdPByve8GcvhbK' +
'Wz2kvM9Eb2usEQ5flGfNInZRY3cR6UyP9+eflmd1jb6XoWXjusfFA' +
'PQPFbR6mg==');
s2 := BitmapFromString(37, 37, 'beNq9l81u20YUhW3rxy4iOUzsBR' +
'eOrAEbIWxoSpPSoFgoMKIKFSpAVayaqMI0iyALIxAcxBCM2jC86co' +
'v0qWXXflZ/Ap+hfYML3U1oSRbKIIODgZjipyP587lnfGFuDqz/zqz' +
'zS2RyPz6MjZFywOIpFjtwEpU//oCi4mBXQTlf3BH/bOtb4yikclkl' +
'uO2srKSz+eNuJmbJsvYNO6X1vRnzU2j2QgqogQtLS2dnp7e3t7+E7' +
'ebmxsQNx5vSFf+Z5y74wZekMKh96pOYS1DoD/iRsT14vroeDQ6GoX' +
'7oV/zdZz9nX0vrvu6e352Hr2Jpt09LmTzuTyCCVMIJqGz2SzhIB2H' +
'GaCgHjg7Tmm7hN52bPGtoB6mILCGR0PgiBjbnOAa9kaz0ZRVmclmL' +
'i8vCZfL5dQjF+feCy954xg3eDPAJOpNjkf9X/tQp9th7bX2oOhdBP' +
'XDPqlSqeBtg7paGnfHJlyhUMAiEuv6+hrT340DyJhqa4U1ViptgLO' +
'2BeHKT8qIJGULeoy9XW8mjkJ0B856akHzcNDz0jpCB0dkDR6Nh8qa' +
'jhu8HSziDiCKJAbz3D0qZA8PDzk5V5ZX7Kd2gjs7D38LIUIgLXqve' +
'8nC7feNgiEdKbYFK3obkX3IqTqcscDFqWJBuewyMp+WDNaQnKurq2' +
'VRnsaBpeNIzVdNFnCsoBGkcOi9qssZojcd58YN1lLuYA0GdXem1vT' +
'vkXFwh+8Oa7c8bqBnM1nGAZQkW9xSwVTS1+g+HNwhM2HcElZSrAwD' +
'5Yvm1Kf1pfrYw4MQF/Emvf3ejOKmVRXcJqVMcGaMM82KZc3EIfH0o' +
'GEA0II4FBbcoJ496BPxXhy7I4FIvzIO8moeoG7V7f7SpR6muIjxs4' +
'TzpLsgjlJiGgeWGnwcKlAsqpkkOW7sDqwYV2zUA1EW6Adh/9PRp8/' +
'Hn0nqM9/19HAhPvQO7+JG6NaPLRK9EmqythckajZkRQiIcSNE4GhI' +
'oNHJ6G5cu9VO4QbRgGYGCylN0dZx8YcgkPnAkRTxZESsmTiO8Dwcr' +
'FFV4fXVcV7V1oNJ7rAcCCmgd7iTNanj8CcGzIJBrCxnr+4OqWJXKh' +
'CSJAr7nf0O9srh8RD6Ahe3xN3JyH/ho+BgAArlxjCODN5H5f+OfPD' +
'wAYpD8VERz4o4VdA7lrW0tNbcaxBODRx7Ho4zFiCVpWMc5T/hAEqq' +
'jRYTHae21zGO9qwFcbTK5C6pJPNxvnSn3TEOIZ3GcalBJFPuGMdEC' +
'uNMd61XLfeZy585RSa9m8ebLK6gN7dMKPo9Srba8d5HOEWsyekSTf' +
'vdgjgMCIdBCkdlB2r/1J4QpZyHA+teHFtTG82UOxKzlPQd4csNiN1' +
'FYUSgFI6toYcAIhYfApO9oyYnBuniQX/KXVEdU587mBa9XpxVWfje' +
'Q4Ht9Xs432I2SJ11NRcf3n9o/9x2nORkAkdJKYh/pRzWT2I6Ds33f' +
'caBQixwefU5aOEg9Hd9BrFA5FLAVYWPtaiZOg6LkmS77xOLoPqEBJ' +
'o+JOhE9qW7i4+1E3elJyVKg0Tzzh5zrqeSP4Ujd3//aYuy3XtZIXV' +
'+EBO91LTA9a4m/Z5WXRim6q8uBHDoQSRN/o2FypoWuT7nHmZd/Qte' +
'Y49g');
s3 := BitmapFromString(37, 37, 'beNq9l1FL21AUx11a27ToCLOUPB' +
'QxCB2FtpoxjHV1Y8FRVsiYmZmsexplD6P4MMpQEd/9InvcJ/Ar+BX' +
'0I/gV3D89zclNchNrhwt/QmjPvb/8zzn39vbc+H3qy6gZuv6I6m2v' +
'/zk3IGI5Hf+TxxOIb1pV4Ij1H9ypqgaiplUrT0uKknsyuRRFKagFr' +
'aLNLb2mQ5Zl+Q+VqSzTaqwZULFYOj05ub6+vptceAC0UCz8C8777I' +
'1/jiFQkribG591fHx8cXGBh9vbW3icG8cskci4cnm5VMgjmfl8Hr7' +
'IYy6Xs9/Z80lkkUQc6tjfWi8Wy3B0eXlJ+VxcXGw0G1PVp+o7fZ5h' +
'9GPUfd2tP6+TwuCozFYTgmV7uxPD3QXXwsKCkguTyeUWcZC7786eY' +
'caBRThkkt2JtWNc51WHWcNvwwcVNOYOd7WswhcZBDrb3eDLYD6cqi' +
'6pfqv4l4hbqaxA1Uo1HCK0gfvZpYBYTJo63SmuUFDR+bQQKJlXV1e' +
'oHSah2aQ4+71NoFjMLDgscyISC9bUksqzZeCSMZB74CLANE0pDpvY' +
's2UVu9d0E8spYPFrZ+CkMeamGSb8wE3iuFW4JSBpQtxDl6fq7fXEe' +
'Nb411iU602J3bfdxpoOMc56YSHAO/QgNB4LFJI/Q3S78A68qQ5Dcb' +
'yvdNxD3YEiNSgdyzha5rPgRHdUozlw7E5cR9I1Fdl1dX10NHL2Hfr' +
'q3rGTVonjYsFi16Gxw5J5HuEgxmWMTcNJRyVx1ksLw2CNDWaPleKk' +
'r8dDYpnE1d5sk0E8ZI+N4vTe1iruafmnyZOL119lR2NSu9XWgktaO' +
'1uGk74kvkL2wp4MdifgvH2PcL7HgCitnZ3iLkmUWuMfJsYxUVq7JC' +
'4t/+hDxkVOXBMcGSSc3zkfHfl+y7ia0e+s4y7NeaQhTUsaM/w+jBw' +
'qPrlm26TE6sHV2Qq2aAGXsdbo/CatS7PVTJ6+CJqNE3MOFv1yiafT' +
'tN84sZdEDb4OAJLixJyzLxDF/VBaF7+O0e5lnZ2egRjBBcucE0imc' +
'KeeT1uPyTrSS+IIylo1VtN2lSQoez+U1hEDmdXeaKdtYlCMIuLuJc' +
'aGOB8cKHFWibhLO0Tda23mk5iPwz9KbUnb26j2d+qhdg2WsxMq+nm' +
'd1d8VhLBAPBCtuLeh0f9lCDi91giFFmLVBEU+F+MF1QypfNBfLrPb' +
'cQ==');
s4 := BitmapFromString(37, 37, 'beNq1l89OGlEUxgGFjv+SqRBzFw' +
'SckphMg4NjaIcxuJlim5hQ69QplKSLxlVDXDTEhSFuuvIVfIBuTFx' +
'25bP4Cr5C+80cuFzu/AFbe/PlZoKH+fmde+65l0vt9kL/eaGzojYS' +
'i1ExRmy2VFVrmQCRfNY7uzJSI0Z7MWrMFlicaOtroMzvjih/4Y7mp' +
'r7mNBy1oGZz2UwwcrlcvpDfKGxgJuEZAaTB9wGXZVmRMZJYQXWa9p' +
'ZWglKpFHDKspJOp38HA0TxJfQQiYMiYyBzx4REHOZ6rUruMguZu7s' +
'7woErWRNf5Z64nMWKLDLGqBmDswHkHruSO+AqpQq3RjjJWgIuHANW' +
'/1ufcEScxuWXlKWbm5v7+3uezN7nnqRup0sang85DuhwZFhb5YrTQ' +
'DJZfduosBW8H5SrqyvuLm7RIRA5LiFsulQYcIACt6osXl9fPzw8oG' +
'b+Nw5ayKTBQjI5Dg/YFE+Oo2TmFidFwsf683VtU0MAlzoefhlwnKp' +
'OxaD+TZPWFA+R7tZXF3PZLBIoJrPyooJvtd60uNrjIeLcj+7R8VF9' +
'p04zscRCIqi4dqCYNUMtMCoYjJXlFYo3XhokVBcoRtUgmYYJgYUYA' +
'pHMYEhEMZkg+tu8aQOXzT0DUVEUsuZvq3GWQASOiDyrhOuf9SFAxW' +
'RySe4CXJ5wJBgJV4Je1fmHfE29jjc4H5C8rseYv75wTWH439rv21I' +
'To23+KFy32yUcB1mvLBaMZBzvKjNxYmcmnLVr+ayOb+pp3cGa6K5p' +
'N8ECCPIfuh63OZ+7Neu1xV2Ecc6BA6HT4kDBPOm9H1yo9bbFJZaKj' +
'PNLpQQBd3hwmICTJOLitnkkzj/vtqvYd8nunhY3M5nz4HpfepB4Gs' +
'YnM09dJbkyJ7jzKRw1bRyCkPfJg6Jw2ObmVlmDUiklrjL1lzo/It2' +
'OS+I4IvJjF0rGBSeCPue+G114ds2wu0nnLzLczWa6mz+Z/4IT3DmR' +
'pRK+Q44Kb+qWNVWZ4sXJO/HGf5KaWCxOukM+CmeZViTOrE1O3tOvp' +
'5I78Q4ZiePlJN14JZzQM53IS3L4Dini6JJML7Tr9vBimIzjPdNu2O' +
'FdDIXXztgxcJhST0Z/pgTy1iqykCWxirDNtXJJK8/ASWvHcf7RM16' +
'vyMxUq1UJ5ycn6Jkijto+rUvk/T9cHqKkO5jkzgx6pogTFfkbIRkX' +
'J+7u1w9d29SP9rdIh3vaRPuC5vi8LUiMaTU0lfnz7aUGHGYQSVO/u' +
'zcFzfN5TAxn3f4B7fZz6g==');
s5 := BitmapFromString(37, 37, 'beNq9l+FK21AUx13btB1zmmFX4i' +
'ibUXDrqK3RuliZiMUhFKozmrl17MPwg4zSDyWIjuGD+AD7IuwJfAV' +
'fwVfwFbZ/ctKTm5vbTgbu8iekaXJ/93/uuSc35+bP777MkmkY96jt' +
'1blf5yZErHbDv3J/AnFjoQgcsf6Du3xeBxHnKy+nNS33QGipVErLa' +
'npBHyGjYLDE61OFKVKxUOSLjbeN8owJAfeiOHF8fPw73iYnJ72+B7' +
'X32tXF6jCc1/Mg58CxLItxABFRiZt8lLu4uADi5uZmbGyM3DGu2+t' +
'C9JSz51iLVhJHdwLK7oioxOW19NXVFXCXl5fAgZXNZTFaxpE72KTO' +
'iUg4d89lHBlka2pcycykU7e3txxGnIM4OztLnUDugWtbNjuF6sv10' +
'O+h450E97iuETTlRDdWI9zDXIZwp6enZBNRzWVzjAOLBAqJu03ieB' +
'KH4aYL46l0mqYMwSSPOBdxYRIaxmh3/AjNoxK33ZjDsbnZhEBJ4ii' +
'YOHIwIWvJghhHRH5EIkY4w3wGd7CXTmuaxu4ymQweqVQrdt3m3nDO' +
'QpZCnJm0Fvw7e6GsBUuZmU8e55NzNzExIeEghAs/KW7Uj4jzfw5wz' +
'ntH1/VhuLOzM07O6+vrbDZbXaju7u/m9byIi2azbks4ypC74JbmDU' +
'3Lc/mCr+WlZTwIHNzBiDQp4TShTyGYIf0OuO03fsXGRSxnSoNoIoK' +
'1RnUMsoJGPWBqeJr8ONOqP3B5PIbQrJpVnjEgxjGLakiyquAklm+6' +
'DguMA0iJAwhqtVoiDoIFFvqExJpJEosVmuiOiIyjvEI7+nokuiMWB' +
'VNU0p2kyFrPEwuCmE6gSDiAWkmcoVv1EIfeXMe1l20cO587rDAlgn' +
'eEiEgmFS0fCcfRk9WL1Gw2y5UyjnQdLBoepS71LKUxQEocR08enuN' +
'CNBFg+b76Ho784vNfRkGHnIdSD0qcPx2CQcd1EE9E1b85iCREf4EF' +
'buzNHm9SSOM4ZMtzKkpICeVWgYyIcwSVX5clHGq1+9Gt1vzHcex+6' +
'/7A2IIF0rAUuNEScdL7xR//iu2/Gk48UCCC8t5pBA6Z3/nSYUmVn3' +
'GdTx0WTEH/hhsmESfvyuLu2jttaXMY4UpmK3i9ivvD2F4xaFY1iGT' +
'QIYxIwzNKhm0P0uPEs5dsaf8pbo0YJ4HC3VTQnH2HccktEHDuB5dx' +
'ye2uEqckRtZo5Cu2Ehet00P3LjilNShi9cMwggiVF8OFgJPIWj+K5' +
'GicuOdn1Wv1WPUbXG++a6orXt8zB+W3+FT6RoilSpK1u7OLNBNLn/' +
'ivsujRpkIE/RVXeVUhEEkshtJXT5LFcyoRk7iNzQ3USRJwCCNvZYf' +
'h6C0MiUNikDKY+KLUx/WtWrG1Nh9p3WS11yLFr8+zWuuCcNtA/CDs' +
'bNV0+l6GgDNK5UhIIVZJUOy6eL+gkqmUD/oDaYWmZQ==');
s6 := BitmapFromString(37, 37, 'beNqtl1FL21AUx9tU5ijoghYXmK' +
'TGsrJsbTQso3ZThEw2JqvVzKJ27HEPo/gwikgRX/bkV/AD7EXwcU9' +
'+Fv0IfoXtn5705HiTSjsMfy43bXJ/+Z+ce27uqXXZs3/3bGPeimQ8' +
'kOZj6QVj482zy1MrVJ/1sV6KtPIw2nxrscBiYt2eAuXB3c0WZklzh' +
'TmjoNdX6midamXVniotlHK5XLZ/oGM8NbY+bwW7Qc2rGYND3m5X7P' +
'bXNuT7vlt1oWA76B52g53AXXb1gg7RlXQL4UpFE8pkMpOPJi8uLv4' +
'Ojl6vVzSL3Z9dqNVqMY5vB47+DXXYBQ4ti4j8bIwjd0/yubOzM1Cu' +
'rq6Oj4/Rubm5YZzijm6XOPjSdZ1ZMEju+NkUdxO57PX1NSiwmdXCe' +
'ObzeafqSGs45O2j4KSA81fq5aIJaVqWYhjisllN00zT7B51ofZe2y' +
'gYpDsjYPwBjt5vTN8Nca7rcp9xaL1qBYYId3t7Sy2yxXEcBed/8Fn' +
'Bl4DHb/UPiSMWC6fsTuLwBs/Pz9FBbKenpxmHFrJf2SzXcSVOcYfx' +
'0abiwmBm7wST+hMTE4SDTo5OoPa39ijBxOC4gHEUzzA4YTANr+rkt' +
'CyFESwQY5wICNT50WlsNZgY2+nnRpQqAzqHl+iEKxdLUH5SwxSgiU' +
'AzIgomArXbSk8VgaNZxjiKLeOkO7DgDo7gheYCsXAaTQSBI3fOkjO' +
'WOyWYIKKIzegzOS0uYouLi1Ea3MWxZCbQXGMcGVTmBR4gxBlGeRG4' +
'2dpKLZ6Sd5+N0kzmtr/uS3c1t4aHid7vYae508Qp2v/Aydc9DEcRU' +
'HAQ3cVjEs5znCQuyZLu7Bf2Pe68ZS+ZWqnuSs9Lm582JYur0D24Ye' +
'5wyPXLX+3jSmGq4HclgKT2QVTENt5vDIstPRLjGjsNJXUJOhYOHTm' +
'+zEx5ChwRITmO5zqMw7wDDqK/9vf378cpsZVmU93BCCiKO8oQ/GUt' +
'WExknPPSIRfJzJGDp+LwgSFLNFLFXargAssyqQK09lrRenfQTq6VY' +
'QUWC5CCawZNyo1huEzmMZyKlXcMHDoKznvtDcPR8gp3Y+HMohm/OM' +
'dVcGQQiidOxVbcUTBHxOEjJ7am68lgEpRx0cfAYL2Du7pX51Isi1g' +
'qjkuxLFNxqmw3sJowjos8r3dj4bC6EU6yUnEAyQWF1zvCQRhczq8k' +
'LmIdxsUtFaf3j/j5hwQT7UnvZBiOWfxZfj9O2SMgG8uWCWGar79bp' +
'2cIGoHE4aOLRkOn870DIVD8QU5DqYv7wLiyR0jFoaNUJ2LhM4xAya' +
'FSa1pyjxAWsYIOHGom42hZVNIgKTlUNPH7VZqrXHKPkOou+cWVKjn' +
'UsGvkXo/2ktT++WVbC3ZzrUySu87NNaERfm8IyZ2s3L0ChxZEktxT' +
'GwtCo/wulXAXbsz/AQMx5Ko=');
s7 := BitmapFromString(37, 37, 'beNq1l99KG0EUxnWTbNJa6VJjGK' +
'iIS4o0uG6zNjWJCJJtNHQhpKam2FgvSkAowYsSqIh47yv4AL0Reum' +
'Vr+Ar+Aq+QvttJjk72X9ZUzt8LLPDmfntmTlnZvZc/XVqS11i6oJK' +
'YoKitAfZkKwN9fe5Lc6qb75sbKgkS1CU9iAbEohbqzPAMaZa61k8l' +
'bQyVnPpOa5MOiO2szQj+dqUN8u5JQYlk0+Tidi0UCRJSsiJIBwG4a' +
'OF4Lw2Iu6Pp8zOztZ365Cvd3w0vBqG0fvRa+41G7sNl3dkE+Td1NT' +
'U5eUlWHd3d8B1j7tc6itnnumzRRzELTnOZePC2WFTzs4+fwEidw0V' +
'fVXn45imKa7FyLooiqE7OJqK4LVTIY6LxxNXV1dg3d7eykmZDwLlt' +
'JwXNPjyUZye10PWV8StLTNy7ejoaD4z78L5EkNwAWs3wLG5mZOTE7' +
'Du7+/Bza/lRZyvayG44LXr45iakuM3Nzd8JqelaXPHFHFBOZh6ltI' +
'0jSwRNrzd6BdXgpgVk3CxmAS/gLu4uIjH4y4cRTu69457zd2mkTeC' +
'cBSrvAvhCm8LhJMkZ+FST1IunNgdOJLWLy6cbTNssQO7Ynq9kxMxj' +
'pNlufK+0j5si11GFIpDEXGidyJuXpmRpBjtXea2450rj5zP3ja9ac' +
'6jxWUzCJXSMM2ZWhvdor04CrYQHEXmv+OI6BqKpu4RcWIeUXun0wF' +
'rMpwVihMPFycMPjXFNEfkGKuG0i9kY32wfLboiXD2l4/D7X/enxhX' +
'3amKCfIgnPZGi47TV3SAgIviHZ5e3KK6SDiFqeb6Mp40YziaHZyiM' +
'KEE4vzUarVoTGunGoQr5AvOXqEbBaPQ+Njofu9CIbjc65wLVywUaU' +
'xjRY/inR3kfRCg4d4BZ26ZI64xFuRd70Cjywkk4uBalMkEjhwcsPq' +
'4zmFbxLGFXK2s//xa8E4+P3Qi7pk8zfEUE6e8Xm4ftIFFZXia++AA' +
'oiPyoXumiAMLIC8OGoBaTQRH0N1yZFfxnN0uXGuvdXZ65ovD045Dg' +
'JhiS+getGe6KCKuaBTBghlw7skcpnnQfVKsuw7riAIOSeHFhYB45X' +
'FxY4ne28jEuLGu0b2RhweCE0LMQO0vbVGdbx1QUKEEJBz+N+vl/l8' +
'neyw5BXsIV7WUxXfW3mXsv9c+sVbK+soSFKW9VlokgcIFIljX58N/' +
'8//vHVjXfwE5+JpF');
s8 := BitmapFromString(37, 37, 'beNq9l+1K21AYx7u+GZFKocVlOn' +
'RdR1icxmZ0S7spQnEbBMrWYBkr7Ksyih9GGegHv+8WvAC/CLsCb8F' +
'b8Ba8BfdPnubp0ySNiY4d/oST2Jyfz+s5Oa2dn9T+nNZqz3w9nUhN' +
'qVnvlqvq3psVUCDgQPm84+vdRHZKzXoXLCZu66V2q12ulkmVaoW0V' +
'F1SqyrJMi1VDPqlaZr8Vvjd6XXKQOBqbG4Ap2lavpB/5I9sNlssFh' +
'cXF4nV3++Pfo5I/X6fcGDxQ2ffIXQYRBPC1ddWoUwmUyqVjo+Pr6+' +
'vb72ByeHhYaFQYNN4ZchqWmSLfAgiWxcmBqzL5/M3NzcA/fYGJriF' +
'mezMsHUSRywo0rSAddt6JZfNkV2wFBSaY8Ixcpc9cuX0HI7UGPdr5' +
'Hx1AkEMCLhOq62trWoeTplTyJNsHW4RwX+Lw7XpOrOysLAAu27FOD' +
'g4eAhOX9cjrSPcvDJ/dXUFytnZ2cXFBSa4jcSZDTMJbvBtMPwxNLa' +
'MSGfmstm42DVMYt1tnTdMw/33hkdDSH+pK4qCZOu0TFybmzpwWYFj' +
'r94PRyzGEZFw2loN8lJljlLl8vIS/qRUQaUDREqIY5bEQaAQDtZlM' +
'sqTxypskWWey+WWl5cBwvoQ42JiZ742ZeETyO7aEDuTrEMNFpUiXM' +
'pNDA5HnSbKTL+JSYu6vS7a/iQzVdUtBFXVntcJJ9ssN4SEOBYoRsO' +
'IqLtYHBOT48K7QySuaRgBnOx1iepO9Mw7cZ51JeutFblnpe0qMfud' +
'l5krUBiXLnbTuFn7ncTZH+z7xy5kXeR+5xUCWrSGNiKtSx07gYvZ7' +
'xiHVHGPIv5OSuvTQGJDVEppY8cLeppq0cAFTgiyMxAxbeyYZbwyJA' +
'5NjKyLLFssgspNZZ0fL5e193EPCmyvkTiuXIlLHjvCDb4PGCedOTn' +
'gHY36vb7VsCiOCXtmZGnjzEYnN7Vc3t1xrxsv6oyj8IEl0+YhOD4o' +
'Eg4siRuflkVGpeqZPECH5F9BicQFlLBn3imnZwtnljrbnbie6e3mX' +
'BTeUUeNzGS5g0/huvbue2tDq0NhXLBnzsDJb4cYHByLzAQOV+DQxM' +
'wtM65nzsBRrGkrp3h1v3RZ/J1CBz/GBawL90wIGSJ36nB85cFvPKa' +
'PtezM3fXSp3Z98rGp/nvRt6T/RamDAuJYrfvLFpLP5dcrcOcn+n+w' +
'zmX9BTTBflo=');
s9 := BitmapFromString(37, 37, 'beNq1l89O20AQxps/lITQKoKUrt' +
'Skwg1CiqA0bgMmCFSVIgVZoiguLm0qTpwqxAGhCnrgDo/AA/SEeuT' +
'EK/AKvAKvQL/dScbrtRNCoatPluOs97czOzO7PrJ+/5KyxoVVtFhC' +
'Uz/Pu/VhuQvWnyMpYq0tvlhfsFiupn6ed+vDAvH96xxwQljuXBnX0' +
'cIoaaww1u1eCOHUHMj3fafqiILorXwhT6ov1ivjAiLc0NCTZDKZUC' +
'2ZSmaymVgoeu/v7be1K6UP7tiOv+Hfiis9ewrI1dXVjWqXl5eAZoe' +
'yUSJ6wy7G+c3Q4DwTcHvgso/TxDo+Pr64uMANrqlUKurPKA4ulVJ2' +
'BYZ3iDG4opVKJsiuR6rh5vr6GgZyZ1YI93Pf3/Sdtw60/HGZZdu2t' +
'+Fxf2rOrFMZtyADBwrd94MDyHAay1YtFpcdbDvz9PQU/rw/DiDq43' +
'/1o7jScxkqcCC5kXBYu53dnbXmWutbixWwOs4k6X3gSb2PnNWsE+B' +
'UImQyw5QItHZo6XTa8728COZcmarwOJXpiu6okAeKwnEcPWxk5NQC' +
'HBIhlUonkgkQCQffZjPZfnBwF+YPP8xUZ2JxsiCoysC4wtMhWruDg' +
'wNKhJOTk1Kx1BtHLiJ3AUdECDj/i/Q5oIEHwrjDw8ObTjs7O8vlcq' +
'uNVbwCYmurxWJc63sLdhERIhCmhLUm0ySrKGJx1QkxMDCY6LSRkZG' +
'lxSXJ2vAQY0G8Tdu6dbHBTwkeU1Xmg6rSUCWa/+IxOVv7wXHwM+ue' +
'uMmJST3YvE2PZcbhQ1in/8U51VYYx/tCLM7tgkMMy2UObzHGyFFtb' +
'21PT00b8zT2uz5xOteesQOpFg2eO+EQvTpuvbkeijrVwPI+e71Z/2' +
'BdrVpDIuvBwDh+2APKuLywVubK+Q6O45lfj27WehTp/eUrNVs/ADD' +
'O/bB8H1w03agEoejpBwDu5ryzb8W1S24EpydIaHo1m3BM7N+64ABw' +
'R5x+tiFQ+ZXFOA4VGpNPOHotCjJOHfbsqh2LMyJZqijk4bAojO01i' +
'jMSrf1c4WJLZSxOvtUT18u0PdM0A2eUBfnWripoGg4sxvGw8aZh1Z' +
'pet40g2LhVKQidtIuho5FbL8vvlIKgTRkZrbNQTOg5bqI5hV1VT/9' +
'YhQ4PHRzVDYPlfnKZhZ+xOXUrjqw2cAbLfmNv/9iGCESKzSkY2JsV' +
'Ojxo1uks2IWrsYhGTgUalnt9W51tAhU1elbB9+ZaXX11iodS0GT1U' +
'FqZL2NWjdkx+fWqiI35cqxcTf08b8y/ZIFCAhGs86POt/n/tw6s87' +
'/b4XzA');
s0 := BitmapFromString(37, 37, 'beNq9l99K40AUxtO0trpQyGrRgK' +
'LrCl0qWozWTbN0V6guglDE7AY1eyN4KV6IeCHi43i5T7Cv4Cv4Cr7' +
'C7jdzkpPJJKlWZYePkE4n88v5M2cmt4t314u/bxcXP8SaS2SPqKJn' +
'rYa9szkLCgQcKPtfY31JtDeiip4Fi4m9Vt3relbD0tRea9tKU/+iH' +
'nfTFeq4uWNS4xsWELi2V1eAm5meMU2zJBtuquNVjDk7P7u8uoSCow' +
'DTZnHoFwMuhIIgeBK3tDAPGYZRLpcfHh7+yoYbQGsTNcYRkR70f/q' +
'O47B1RTh4hkZmrZuomvf39wD9kQ03+IkXGBwMmEVTYYZoctmj4sil' +
'jBOvKvvxiGZd2Sw9Pj6CUjJKsBQ3+FmpVHhyMZvj7u7s8k9QKHCMc' +
'2TzPnuAhr/Cm+ubm6tI3qawq9/1mgvzEGJGbjQRt5IZ3ZsmhoFCCn' +
'4GmBNEZ82BANKsI9cBl2gzUngUEg7XzuoK4yhVGCfWTsMmES4yZC0' +
'ndhQmu6jF1hXhEDu8cC4ONj6JI+uyONWZKg6xwyQ8nOIlQtZ17bko' +
'JYBITO44kOr51Gs0bOlMu7Pa5lQxZKNUGRsb43xjHLFwpUnUXPIDn' +
'3FJRsVEwjUXlqB3tTLlv7oQJt9PatYFxwGxyIGUigyybAvKej5eCB' +
'EO1hkGPFdRlzlM21jfCMMQ1kFYwsLSrhux4nhFq8xOlMXFyzxyJoi' +
'91tR0Y7pWrZmyVavVqakpSvhUayuSjadiceXRcbbE2Xbzo8C56y6N' +
'x01R3SOQRU3JE372BTjhqPNL/8CHaSlWPLn/wxdQ2ckVRhS6wwACS' +
'GVlcZ12O4tLdJEvDQdQrnWUJxnr6sjeCKcktoh+bF1/u6/iUoMzOH' +
'IFqnRnrRP7GcvcaS7MQqPiWiut4TjqB04hviVOix1p/2AfOFwZJ0t' +
'0E5UkiyNieByynm8dOTMG2RpOpEoGp+3OmnVFqZJUPC1VlBL9ehw7' +
'k+pPykXxbs44wxjPdSZwreUWaSTrxN7UcbnsMI6211zraDsAhaTFb' +
'jgOD47gTOkc/9BXq0pvu1eIk56nYp4cYK5Sr63ud6/H0ZyM4+Mumc' +
'k42u/exLrcE0oWN9y65nITIMg/9odbl4vjRAVLcWZdOyTwUVZdRFo' +
'stLyCBoNB/3ufhI0jtRwO9ra+uSufliDGRRmVxmWJ8mSl79rDRTjk' +
'J3CiiBVbp/okOSzF1ek5LBHZhsU41ZkipWVeaRGnVFfOjYm8ngfBk' +
'ycnJ/AhdHp6imuUq9HrWezMreX6rreUfGzaby/6loy/KFuggBip+3' +
'LtKVL71a9X4O6uW//BOsH6B3hX9cM=');
MOB_HP_BAR := BitmapFromString(3, 1, 'beNoTFPQXBCMABe4BVA==' +
'');
INV_FULL := BitmapFromString(38, 6, 'beNqFUtGNwjAMtZMmbdOUC' +
'qi4j9MdSPxR1ipsgHQb3Aqs0BVYgRW6AivcuQmOLFGJyrLcp5c8Pz' +
't1gYh/ABRDyLHwi2K3/9BajQzeAYzR3fG7besfhQ/GKa4Av6Eg0Nq' +
'sO34aoyThjOicPePzF9VTkS6/MEdnyrk8yt24GSq8z9etfwQVEHzg' +
'4jSJ6l70GQ9CyBFRrAjiIIFKz+Dkumkc4mTqHkwlzsBtQ8hxVsk7M' +
'PkqFCeVuVqGzbOqyoeXmVAPaTu9aCO12gvmW0X50cTI5uxM6rq8sa' +
'M4ybK0tPpRgGN4DOlmFCpUF6VJe0xelssqKV54NVHx0H2BmAYtdLv' +
'brFZ+EOD0Jv8BaLyLGQ==');
GMQuiz := DTMFromString('78DA636C67646098CE8002FEFFFF0FA619A17' +
'CC65E22D47403593389503307B71A66989A4504D4CC05B2161350' +
'339B08BBA60059F309A8D90C64CD22A0660B90B580809A2344AA9' +
'94940CD6922FC75167F7C81D59C07B2161250F3888870BE43847B' +
'9E1311CE5F81ACB904D47031118E0B901A42E1AC49841A59A09A7' +
'904D4083111F6972350CD6C026AFC89B02B9489703847136117C8' +
'1C3C712A0DA20BF0DB0556534EA49A4504D4D410760F00B32E897' +
'9');
Patq := DTMFromString('78DABDD5B94AC4501480E144C5B711CC90B9B' +
'999C46E702B14F1319419041702AE8DCB8388A5D8DB4D31697C03' +
'0B5F40100BDB787330838DE7FC95692E818F7BD690D8CD4751321' +
'7FD7E9AA69133FE798F5BD307C603531AC607931926D7CD427B96' +
'C0AC04D3FBDB2C76B112C338600A60D682490DB3A1CF42CC66300' +
'E186F98613003C3ACEA3315B30ECC3630BBD00C80C90CB305FABC' +
'03E67500628DC13D7B60A6FB60A6ED3D05B8C7EAF30898C360726' +
'01C30567F8E813901A60273AF409F2BD81F628A7FECB355FB1130' +
'3760E7AFF5EF74A93D6FF55862EEF4BAC4DCEBB1963BE30CF3A0E' +
'F8F9847609E80790666A2F747CC54DF1F312FFA1E8A79D5FF9579' +
'6752C3BC419300531AE65DEF8F980F90CFA7BECF3363E5F3054C0' +
'D72AE41CEB5BEF3335318E614983350D70530E7C05CC2581EE4EC' +
'41ED19300E983EC8270575A5A03F96B9B2F3F906880F4A95');
n1 := BitmapFromString(6, 12, 'beNr7/58BCfwHAzQuXATCgIsgi' +
'yPrGhARdAAAU39cpA==');
n2 := BitmapFromString(9, 14, 'beNpjYCAG/EcCaOIE2bhEKJGio' +
'hYqimMCfGEKAFO8RLw=');
n3 := BitmapFromString(9, 12, 'beNpjYICD/zDAgAqQRXCxMbnES' +
'OGyDqs4kXYR6RI83kSznbALAQinR7k=');
n4 := BitmapFromString(10, 14, 'beNpjYCAD/P//H48ULlmIOFZZ' +
'uCCpssgiaLJ4uATNwQrICA0KZaEAABzUTbM=');
n5 := BitmapFromString(10, 14, 'beNpjYCAG/McAaLL49ZIhhWkp' +
'fr34jaLEkWiyJLkEq7G4fIQTAAALZE2z');
n6 := BitmapFromString(10, 14, 'beNpjYCAS/IcBrFJY2Zhc/Iqx' +
'qsRlL5oghfZSS5YYD+IJSewAAFMcU60=');
n7 := BitmapFromString(10, 14, 'beNpjYCAI/mMDeBTjN2rwaByc' +
'lmIBAJgSNcs=');
n8 := BitmapFromString(10, 14, 'beNpjYCAS/IcBrFJY2Zhc/Irx' +
'a8dlNZ1dRVM3YwcAYeNQsA==');
n9 := BitmapFromString(10, 14, 'beNpjYCAS/IcBrFJY2Zhc/Iqp' +
'KIupGKt6uDhWf1HFXpJCEjsAAP5UU60=');
n10 := BitmapFromString(17, 14, 'beNpjYKAQ/P//H6sgBOCSwmMI' +
'miyEi1UQqwgmg6AW/FaPaiFbBFcCICnBEAsAHEx6hg==');
end;

procedure HEROcmd(Text: string);
var
S: string;
I, L: Integer;
C: Byte;
Shift: Boolean;
begin
S:= 'ABCDEFGHIJKLMNOPQRSTUVWXZ' + '~!@#$%^&*()_+{}|:"<>?';
L := Length(Text);
for I:= 1 to L do
begin
Shift:= (Pos(Text[i], S) > 0);
if(Shift)then
begin
KeyDown(VK_SHIFT) Wait(40 + Random(40));
while(Pos(Text[i], S) > 0)and(I <= Length(Text))do
begin
C := GetKeyCode(StrGet(Text, I));
TypeByte(c);
I:= I + 1;
if(I > Length(Text))then Break;
end;
end;
if(Shift)then
KeyUp(VK_SHIFT);
Wait(40 + Random(40));
if(I <= Length(Text))then
begin
C:= GetKeyCode(StrGet(Text, I));
TypeByte(C);
Wait(40 + Random(40));
end;
end;
end;

procedure SolveGMQuiz;
begin
CalculateX1Y1X2Y2;
Solved := GetLeftNumber() + GetRightNumber();
Mouse(AX1, AY1, 1, 1, true);
Wait(100);
ClickMouse(AX1, AY1, true); // Clicks on Answer box.
TypeSend(IntToStr(Solved)); // Writes the solved int.
Wait(500);
Mouse(BX1, BY1, 1, 1, true);
Wait(100);
ClickMouse(BX1, BY1, true); // Clicks on OK button.
Wait(1000);
Status := 'on';
quizes := quizes + 1;
end;

procedure CheckForGMQuiz;
begin
FindLot;
if (FindDTM(Patq, x, y, 0, 0, 1024, 768)) then
begin
Status := 'pause';
SolveGMQuiz;
end;
end;

procedure checkPetHP;
begin
FindLot;
if not (Status = 'pause') then
begin
if (findcolor(x, y, 1062094, 188, 114, 192, 121)) then
begin
CheckForGMQuiz;
end else
begin
HEROcmd(PSlot('pet'));
HPTaken := HPTaken + 1;
CheckForGMQuiz;
Wait(10);
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('HP Fill. (Slot: '+PSlot('hp')+')');
Writeln('-------------------------------');
CheckForGMQuiz;
end;
end;
end;

procedure checkHP;
begin
FindLot;
if not (Status = 'pause') then
begin
checkPetHP;
if (findcolor(x, y, 1061070, 174, 63, 184, 72)) then
begin
CheckForGMQuiz;
end else
begin
HEROcmd(PSlot('hp'));
HPTaken := HPTaken + 1;
CheckForGMQuiz;
Wait(10);
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('HP Fill. (Slot: '+PSlot('hp')+')');
Writeln('-------------------------------');
CheckForGMQuiz;
end;
end;
end;

procedure selectMOB;
begin
if not (Status = 'pause') then
begin
HEROcmd('v');
CheckForGMQuiz;
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Selected.');
Writeln('-------------------------------');
end;
end;

procedure attackMOB;
begin
if not (Status = 'pause') then
begin
HEROcmd('a');
CheckForGMQuiz;
FindLot;
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Fighting...');
Writeln('-------------------------------');
Wait(100);
sKILLED := false;
end;
end;

function NotInFight():boolean;
begin
if not (Status = 'pause') then
begin
if (findbitmapin(MOB_HP_BAR, x, y, 442, 121, 621, 136)) then
begin
checkHP;
Wait(100);
attackMOB;
HEROcmd('s');
checkHP;
Wait(100);
HEROcmd('s');
checkHP;
Wait(100);
HEROcmd('s');
checkHP;
Wait(50);
Result := false;
end else
begin
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Writeln('GM Quizes: '+IntToStr(quizes));
Writeln('HP Potions taken: '+IntToStr(HPTaken));
Writeln('-------------------------------');
Writeln('Not in fight.');
Writeln('-------------------------------');
Result := true;
end;
end;
end;

begin
SetUpSRL;
declareStuff;
ClearDebug;
Writeln('-------------------------------');
Writeln('--- FremBot Beta Private V'+Ver+' ---');
Writeln('-------------------------------');
Wait(2000);
repeat
if not (Status = 'pause') then
begin
checkHP;
Wait(100);
selectMOB;
Wait(150);
attackMOB;
repeat
Wait(50);
until(NotInFight);
end else
begin
Wait(200);
end;
until(false);
end.

tico2

2009-09-30 18:54:08

Never heard of that game, I looked trough the code and you should change this
procedure SolveGMQuiz;
begin
CalculateX1Y1X2Y2;
Solved := GetLeftNumber() + GetRightNumber();
Mouse(AX1, AY1, 1, 1, true);
Wait(100);
ClickMouse(AX1, AY1, true); // Clicks on Answer box.
TypeSend(IntToStr(Solved)); // Writes the solved int.
Wait(500);
Mouse(BX1, BY1, 1, 1, true);
Wait(100);
ClickMouse(BX1, BY1, true); // Clicks on OK button.
Wait(1000);
Status := 'on';
quizes := quizes + 1;
end;
to this.
procedure SolveGMQuiz;
begin
CalculateX1Y1X2Y2;
Solved := GetLeftNumber() + GetRightNumber();
Mouse(AX1, AY1, 1, 1, true);
Wait(100);
ClickMouse(AX1, AY1, true); // Clicks on Answer box.
TypeSend(IntToStr(Solved)); // Writes the solved int.
Wait(500);
Mouse(BX1, BY1, 1, 1, true);
Wait(100);
ClickMouse(BX1, BY1, true); // Clicks on OK button.
Wait(1000);
Status := 'on';
quizes := quizes + 1;
end;

Other than that you have good standards and some code I never saw before :p. Ever made a RS script?

Frement

2009-09-30 18:59:02

From: tico2
Never heard of that game, I looked trough the code and you should change this
procedure SolveGMQuiz;
begin
CalculateX1Y1X2Y2;
Solved := GetLeftNumber() + GetRightNumber();
Mouse(AX1, AY1, 1, 1, true);
Wait(100);
ClickMouse(AX1, AY1, true); // Clicks on Answer box.
TypeSend(IntToStr(Solved)); // Writes the solved int.
Wait(500);
Mouse(BX1, BY1, 1, 1, true);
Wait(100);
ClickMouse(BX1, BY1, true); // Clicks on OK button.
Wait(1000);
Status := 'on';
quizes := quizes + 1;
end;
to this.
procedure SolveGMQuiz;
begin
CalculateX1Y1X2Y2;
Solved := GetLeftNumber() + GetRightNumber();
Mouse(AX1, AY1, 1, 1, true);
Wait(100);
ClickMouse(AX1, AY1, true); // Clicks on Answer box.
TypeSend(IntToStr(Solved)); // Writes the solved int.
Wait(500);
Mouse(BX1, BY1, 1, 1, true);
Wait(100);
ClickMouse(BX1, BY1, true); // Clicks on OK button.
Wait(1000);
Status := 'on';
quizes := quizes + 1;
end;

Other than that you have good standards and some code I never saw before :p. Ever made a RS script?


What you changed on that? :D

And yes, some pretty simple for personal use. The script would need like item banking and stuff, else its pretty flawless.

And yes i have made few rs scripts for personal use.

Im interested in applying for srl member so i would need an idea for a script :)

I was thinking like autokiller too, cause its pretty easy to make, but with food filling from bank etc.

tico2

2009-09-30 19:02:02

From: Heliz
What you changed on that? :D

And yes, some pretty simple for personal use. The script would need like item banking and stuff, else its pretty flawless.

And yes i have made few rs scripts for personal use.

Im interested in applying for srl member so i would need an idea for a script :)

I was thinking like autokiller too, cause its pretty easy to make, but with food filling from bank etc.


I just moved everything between begin and end two spaces forward, it looks nicer and it's correct but it doesn't effect the usage. A autokiller that would get food from bank would get you in for sure. :)

Good luck on making it!

Frement

2009-09-30 20:38:37

From: tico2
I just moved everything between begin and end two spaces forward, it looks nicer and it's correct but it doesn't effect the usage. A autokiller that would get food from bank would get you in for sure. :)

Good luck on making it!


Ahh yes…i see it now :) But as you said, no effect on the usage.

rogeruk

2009-09-30 21:56:38

We Love Capital Bold Words


Procedure SolveGMQuiz;
Begin
CalculateX1Y1X2Y2;
Solved := GetLeftNumber() + GetRightNumber();
Mouse(AX1, AY1, 1, 1, True);
Wait(100);
TypeSend(IntToStr(Solved)); // Writes the solved int.
Wait(500);
Mouse(BX1, BY1, 1, 1, True);
Wait(1000);
Status := 'on';
quizes := quizes + 1;
End;

You use Mouse with True so it will click. Why do you need the secon ClickMouse?

Frement

2009-09-30 21:59:47

From: rogeruk
We Love Capital Bold Words


Procedure SolveGMQuiz;
Begin
CalculateX1Y1X2Y2;
Solved := GetLeftNumber() + GetRightNumber();
Mouse(AX1, AY1, 1, 1, True);
Wait(100);
TypeSend(IntToStr(Solved)); // Writes the solved int.
Wait(500);
Mouse(BX1, BY1, 1, 1, True);
Wait(1000);
Status := 'on';
quizes := quizes + 1;
End;

You use Mouse with True so it will click. Why do you need the secon ClickMouse?


I dont remember. :) But i think it was commented out in some version.

Torrent of Flame

2009-09-30 22:20:07

No we dont. Capital bold words are WRONG. They should never be capsed.

rogeruk

2009-09-30 22:33:01

Ah well no need to click mouse again unless the game requires it.

//Offtopic - We <3 capitalizing Bold Leters!

Keywords should be Capitals.
Directives should be Capitals.
Operators should be Upper.
Data Types should be Capitals.
Special cons should be Capital.

Frement

2009-09-30 22:48:16

From: rogeruk
Ah well no need to click mouse again unless the game requires it.

//Offtopic - We <3 capitalizing Bold Leters!

Keywords should be Capitals.
Directives should be Capitals.
Operators should be Upper.
Data Types should be Capitals.
Special cons should be Capital.


Yes i know that the function "Mouse()" does it already :) I dont remember if the game required it, maybe it was because the game screen went out of focus when clicking on the quiz box, so it needed to be focused again so the script can send letters to it, not sure :P