hrh
2009-01-27 14:58:44
<!– BEGIN TEMPLATE: formanswers –>
hrh - SRL Member Application Form
hrh
What is the meaning to life?
Where you Referred to SRL? If yes, by whom?
no
Programming Knowledge
HTML, PHP, Dabble in C
Other Communitys
Miniclip, Tip.it, Zybez, SwiftIRC
How Long have You Played Runescape
4-5 years
Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.
The name's Nitesh, I'm 16, living in Leicester, England. British Asain, Full-time student. IDK what else do you want to know? If, you want more details, ask on IRC/PM or whatnot, hehe, just nothing uhhhm that will result in you stalking me :)
Well I was browsing sythe, and knew about the whole botting community as a whole for years, and decided I'll read up about how it works, as i never actually knew, and learned there was two main sectors, java bots (RSBot) and colour (Scar). Reading topics, i learned Scar/SRL, was the harder to grasp as a newb, but being computer savvy, i chose to try Scar, safer due to colour. Started to learn about how to use things, smart, reflection and so on. While ago I felt I wanted to try out the language, seemed very clean and layed out nicely, easy to learn, and the learning curve has be nice, lots of help off from IRC and lots of laughs along the way. Spent a good while trying to perfect a Draynor Woodcutter, and feel it shows some of the nice functions and procedures I have learned, by all means, far from perfect, but I feel I done best I could, hopefully my best is good enough, I guess.
Hrh
PS: If you do happen to vote no, please could you message with why and maybe how I could be able to improve on the reason(s) resulting in a no. Thanks.
——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted
——————————————————
<!– END TEMPLATE: formanswers –>
hrh - SRL Member Application Form
hrh
What is the meaning to life?
Where you Referred to SRL? If yes, by whom?
no
Programming Knowledge
HTML, PHP, Dabble in C
Other Communitys
Miniclip, Tip.it, Zybez, SwiftIRC
How Long have You Played Runescape
4-5 years
Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.
The name's Nitesh, I'm 16, living in Leicester, England. British Asain, Full-time student. IDK what else do you want to know? If, you want more details, ask on IRC/PM or whatnot, hehe, just nothing uhhhm that will result in you stalking me :)
Well I was browsing sythe, and knew about the whole botting community as a whole for years, and decided I'll read up about how it works, as i never actually knew, and learned there was two main sectors, java bots (RSBot) and colour (Scar). Reading topics, i learned Scar/SRL, was the harder to grasp as a newb, but being computer savvy, i chose to try Scar, safer due to colour. Started to learn about how to use things, smart, reflection and so on. While ago I felt I wanted to try out the language, seemed very clean and layed out nicely, easy to learn, and the learning curve has be nice, lots of help off from IRC and lots of laughs along the way. Spent a good while trying to perfect a Draynor Woodcutter, and feel it shows some of the nice functions and procedures I have learned, by all means, far from perfect, but I feel I done best I could, hopefully my best is good enough, I guess.
Hrh
PS: If you do happen to vote no, please could you message with why and maybe how I could be able to improve on the reason(s) resulting in a no. Thanks.
——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted
{ __ _ _ ____ ____ ___ ____ ___ ____
/__\ ( \/ )( ___)( _ \ / __)(_ _)/ __)(_ _)
/(__)\ ) ( )__) ) /( (__ _)(_ \__ \ )(
(__)(__)(_/\_)(____)(_)\_) \___)(____)(___/ (__)
Version 1.0 By His Royal Highness (HRH)
[------------------------------------------------------------------------------]
[ ## INSTRUCTIONS ## ]
[------------------------------------------------------------------------------]
[1] Place your characters at Draynor bank, preferably against the booths.
[2] Try to have a few spare axes in case one breaks and needs to be replaced.
[3] Deposit all items from your inventory.
[4] Either equip an axe, or have it in your inventory (1st slot).
[5] Start the script! (After filling in details including SRL-Stats)
}
program TheAxercist;
{.include srl/srl/misc/smart.scar}
{.include srl/srl.scar}
{.include srl/srl/skill/WoodCutting.scar}
var
SleepMark, DTMLog, SleepTimes, AxesReplaced, DTMBank :Integer;
const
SRLStatsID = ''; //SRL Stats ID
SRLStatsPass = ''; //SRL Stats Password
Members = false; //True for members world, False for free worlds.
SmartWorld = 16; //World Smart should load by default.
procedure declarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; // RuneScape Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 3-4 letters from your username
Players[0].Pin := '' // Bank Pin! Must be a string, put '' for no pin
Players[0].integers[0] := 30; // Minutes to run before taking a nap (put 99999 for no sleeps)
Players[0].integers[1] := 10; // Length of time to sleep (minutes)
Players[0].integers[2] := 50; // Amount of inventory fulls of willows to cut
Players[0].Active := True;
{
Players[1].Name := ''; // RuneScape Username
Players[1].Pass := ''; // Password
Players[1].Nick := ''; // 3-4 letters from your username
Players[1].Pin := '' // Bank Pin! Must be a string, put '' for no pin
Players[1].integers[0] := 30; // Minutes to run before taking a nap (put 99999 for no sleeps)
Players[1].integers[1] := 10; // Length of time to sleep (minutes)
Players[1].integers[2] := 50; // Amount of inventory fulls of willows to cut
Players[1].Active := True;
Players[1].Name := ''; // RuneScape Username
Players[1].Pass := ''; // Password
Players[1].Nick := ''; // 3-4 letters from your username
Players[1].Pin := '' // Bank Pin! Must be a string, put '' for no pin
Players[1].integers[0] := 30; // Minutes to run before taking a nap (put 99999 for no sleeps)
Players[1].integers[1] := 10; // Length of time to sleep (minutes)
Players[1].integers[2] := 50; // Amount of inventory fulls of willows to cut
Players[1].Active := True;
}
end;
procedure AntiRandoms;
begin
if not LoggedIn then
Exit;
FindNormalRandoms;
if FindFight then
RunAway('N', True, 1, randomrange(4700,5300));
end;
procedure AntiBan;
var T1: Integer;
begin
if not LoggedIn then
Exit;
Inc(Players[CurrentPlayer].integers[6]);
case random(300) of
1: if (TimeFromMark(T1) > 1800000) then
begin
Status('Performing Antiban [1]');
case random(5) of
1: TypeSend('WC level? '+InttoStr(Players[CurrentPlayer].integers[9])+' here');
2: Typesend('My woodcutting level is '+InttoStr(Players[CurrentPlayer].integers[9]));
3: Typesend('wc levels?');
4: Typesend('Nearly leveling');
5: Typesend('wc lvl?');
end;
MarkTime(T1);
end;
2: if (TimeFromMark(T1) > 1800000) then
begin
Status('Performing Antiban [2]');
TypeSend('What axe is that?');
MarkTime(T1);
end;
3-8: begin
Status('Performing Antiban [3]');
HoverSkill('woodcutting', False);
GameTab(4)
end;
9-12: begin
Status('Performing Antiban [4]');
PickUpMouse;
end;
13-15: begin
Status('Performing Antiban [5]');
BoredHuman;
end;
16, 17: begin
Status('Performing Antiban [6]');
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Left);
KeyDown(VK_Right);
Wait(random(1000));
KeyUp(VK_Right);
end;
18-20: begin
Status('Performing Antiban [7]');
HoverSkill('random', False);
GameTab(4)
end;
21, 22: begin
Status('Performing Antiban [8]');
GameTab(random(15));
Wait(random(4000));
GameTab(4)
end;
else Dec(Players[CurrentPlayer].integers[6]);
end;
end;
procedure DTMs;
begin
DTMLog := DTMFromString('78DA63B463626078CA800242BCE5185881342' +
'310FF07024607A09A3B0C6880118904D23E40350F09A8B105AAF9' +
'48408D3150CD0BFC6A001AAD0A8C');
DTMBank := DTMFromString('78DA63CC626060086100036608C5606F6DC5C' +
'00FA419A17CC61820E1C78002FEFC6182C821AB0923424D147E35' +
'0089A3098D');
end;
//I had a bit of help from Tootoot222 with this function
function DTMAxe: Integer;
var
x, y, AxeMask: Integer;
AxeDDTM: TDTM;
begin
AxeMask := BitmapFromString(32, 32, 'beNpjYBgh4D8SoIXhuOyii' +
'r1E6iXbCpqaT7yuwW8+/gglw3zMlIPfNFKtwG8gHtupYj6yIHUDBz' +
'O7UR6zNC0WqG4+5XE3QgJnyDl+NHAGifmjgUPnwKGwPB8FJAMAh/b' +
'jHQ==');
with AxeDDTM do
begin
if(FindBitmapMaskTolerance(AxeMask, X, Y, MIX1, MIY1, MIX2, MIY2, 10, 10)) then
begin
MainPoint.AreaShape:= 0;
MainPoint.AreaSize:= 0;
MainPoint.Tolerance:= 10;
MainPoint.X:= X + 21;
MainPoint.Y:= Y + 5;
MainPoint.Color:= GetColor(MainPoint.X, MainPoint.Y);
SetLength(SubPoints, 6);
SubPoints[0].AreaShape:= 0;
SubPoints[0].AreaSize:= 0;
SubPoints[0].Tolerance:= 10;
SubPoints[0].X:= MainPoint.X + 13;
SubPoints[0].Y:= MainPoint.Y + 7;
SubPoints[0].Color:= GetColor(SubPoints[0].X, SubPoints[0].Y);
SubPoints[1].AreaShape:= 0;
SubPoints[1].AreaSize:= 0;
SubPoints[1].Tolerance:= 10;
SubPoints[1].X:= MainPoint.X + 11;
SubPoints[1].Y:= MainPoint.Y + 14;
SubPoints[1].Color:= GetColor(SubPoints[1].X, SubPoints[1].Y);
SubPoints[2].AreaShape:= 0;
SubPoints[2].AreaSize:= 0;
SubPoints[2].Tolerance:= 10;
SubPoints[2].X:= MainPoint.X + 8;
SubPoints[2].Y:= MainPoint.Y + 22;
SubPoints[2].Color:= GetColor(SubPoints[2].X, SubPoints[2].Y);
SubPoints[3].AreaShape:= 0;
SubPoints[3].AreaSize:= 0;
SubPoints[3].Tolerance:= 10;
SubPoints[3].X:= MainPoint.X + 11;
SubPoints[3].Y:= MainPoint.Y + 13;
SubPoints[3].Color:= GetColor(SubPoints[3].X, SubPoints[3].Y);
SubPoints[4].AreaShape:= 0;
SubPoints[4].AreaSize:= 0;
SubPoints[4].Tolerance:= 10;
SubPoints[4].X:= MainPoint.X + 7;
SubPoints[4].Y:= MainPoint.Y + 26;
SubPoints[4].Color:= GetColor(SubPoints[4].X, SubPoints[4].Y);
SubPoints[5].AreaShape:= 0;
SubPoints[5].AreaSize:= 0;
SubPoints[5].Tolerance:= 10;
SubPoints[5].X:= MainPoint.X + 15;
SubPoints[5].Y:= MainPoint.Y + 3;
SubPoints[5].Color:= GetColor(SubPoints[5].X, SubPoints[5].Y);
Result:= AddDTM(AxeDDTM);
FreeBitmap(AxeMask);
end;
end;
end;
procedure TempReport;
var XPGain, XPHour:Integer;
begin
XPGain := Players[CurrentPlayer].integers[10] - Players[CurrentPlayer].integers[5]
XPHour := Round((XPGain* 3600) / (GetTimeRunning / 1000))
WriteLn('############ Axercist Current Player Progress Report ############');
WriteLn('##### Runtime: '+TimeRunning);
WriteLn('##### Antibans done: '+InttoStr(Players[CurrentPlayer].integers[6]));
WriteLn('##### Loads gathered: '+InttoStr(Players[CurrentPlayer].integers[3]));
WriteLn('##### Logs banked: '+InttoStr(Players[CurrentPlayer].integers[7]));
WriteLn('##### Experience gained: '+InttoStr(XPGain));
WriteLn('##### Avg Experience / hour: '+InttoStr(XPHour)+' /hour');
WriteLn('#################################################################');
end;
procedure Report;
var i, Totalanti, TotalXP, TotalLogs:Integer;
begin
For i := 0 to (HowManyPlayers - 1) do
begin
Totalanti := Totalanti + Players[i].integers[6];
TotalLogs := TotalLogs + Players[i].integers[7];
TotalXP := TotalXP + (Players[i].integers[10] - Players[i].integers[5]);
end;
WriteLn('############## Axercist Final Progress Report ###################');
WriteLn('##### Runtime: '+TimeRunning);
WriteLn('##### Antibans done: '+InttoStr(Totalanti));
if (SleepTimes > 0) then
WriteLn('##### Slept: '+InttoStr(SleepTimes)+' time(s)');
if (AxesReplaced > 0) then
WriteLn('##### Axes Replaced: '+InttoStr(AxesReplaced));
WriteLn('##### Total Experience gained: '+InttoStr(TotalXP));
WriteLn('##### Total XP per hour: '+InttoStr(Round((TotalXP * 3600) / (GetTimeRunning / 1000)))+'/hour')
WriteLn('##### Total Logs chopped: '+InttoStr(TotalLogs));
For i := 0 to (HowManyPlayers - 1) do
begin
WriteLn('##### ------------------- '+Players[i].Name+' ------------------- ');
WriteLn('##### Logs banked: '+InttoStr(Players[i].integers[7]));
WriteLn('##### Experience gained: '+InttoStr(Players[i].integers[10] - Players[i].integers[5]));
if (Players[CurrentPlayer].integers[4] < Players[i].integers[9]) then
WriteLn('##### Levels gained: '+InttoStr(Players[i].integers[9] - Players[i].integers[4])+' Current level: '+InttoStr(Players[i].integers[9]));
end;
WriteLn('#################################################################');
ReportVars[0] := TotalLogs;
ReportVars[1] := TotalXP;
ReportVars[2] := AxesReplaced;
SRLRandomsReport;
end;
procedure WalkToBank;
var
x, y, Failure: integer;
begin
if not (Loggedin) then
Exit;
AntiRandoms;
AntiBan;
Status('Walking to bank..');
MakeCompass(IntToStr(RandomRange(-5, 5)));
Failure:= 0
repeat
if (RadialWalk(FindRoadColor,350,10,72,1,1)) then
begin
Flag;
Wait(1000);
if DTMRotated(DTMBank, x, y, MMX1, MMY1, MMX2, MMY2) then
begin
WriteLn('Found Bank DTM');
Wait(1000);
Mouse(x, y, 5, 5, true);
FFlag(0);
end;
Exit;
end
else Inc(Failure);
until (Failure >= 10)
if (Failure >= 10) then
begin
WriteLn('Failed to find road color');
Status('Failed walking to bank');
logout;
end;
end;
procedure WalkToTrees;
var
Failure: integer;
begin
if not(Loggedin) then
Exit;
Status('Walking to trees..');
AntiRandoms;
AntiBan;
MakeCompass(IntToStr(RandomRange(-5, 5)));
Failure:= 0
repeat
if (RadialWalk(FindWaterColor,randomrange(215,224),randomrange(226,235),randomrange(55,65),1,-1)) then
begin
Flag;
WriteLn('Walked to trees');
Status('At Trees');
Exit;
end
else Inc(Failure);
until (Failure >= 5)
if (Failure >= 5) then
begin
Status('Failed to walk to trees');
WriteLn('Failed to walk to trees');
logout;
end;
end;
procedure ReplaceAxe;
var
x, y: Integer;
FindTP, WithdrawTP: TPoint;
begin
if not(Loggedin) then
Exit;
AntiRandoms;
AntiBan;
walkToBank;
Status('Opening bank..');
OpenBank('db',false,false);
Wait(1000);
InPin(Players[CurrentPlayer].Pin);
if(BankScreen) then
begin
Status('Depositing..');
DepositAll;
Status('Searching for axe..');
SearchBank('axe');
if FindDTM(DTMAxe,x,y,MSX1,MSY1,MSX2,MSY2) then
begin
FindTP:= Point(x,y);
WithdrawTP:= MSTPointToBankPoint(FindTP);
Withdraw(WithdrawTP.Y,WithdrawTP.X,1);
WriteLn('Axe Replaced');
Status('Withdrew Axe');
CloseBank;
WalkToTrees;
end
else
begin
Status('Failed to find axe');
WriteLn('Failed to Find Axe! Logging out');
Logout;
Exit;
end;
if not (FindAxe) then
begin
Status('Failed to withdraw axe');
WriteLn('Failed to Withdraw Axe! Logging out');
Logout;
Exit;
end;
if (FindAxe) then
Inc(AxesReplaced);
end;
end;
procedure TreeCut;
var
uptextvar: String;
x, y, i, tempx, tempy, Clogs, T, LLogs: Integer;
TreeColor: array [0..3] of integer;
begin
TreeColor[0] := 2504497;
TreeColor[1] := 7309951;
TreeColor[2] := 2702134;
TreeColor[3] := 2242606;
AntiRandoms;
repeat
if not(Loggedin) or (InvFull) then
Exit;
for i:=0 to 3 do
begin
if not FindEnt(x,y,true) then
begin
Status('Looking for tree..');
if FindObj(x, y, 'hop', TreeColor[i], 30) then
begin
MMouse(x,y,3,3);
uptextvar:= GetUpText;
tempx:= x;
tempy:= y;
if not FindEnt(x,y,true) then
begin
Status('Chopping tree..');
case random(2) of
0: begin
Mouse(x, y, 3, 3, False);
Wait(300+random(100))
ChooseOption('hop');
end;
1: begin
Mouse(x, y, 3, 3, True);
Wait(300+random(100))
end;
end;
end;
CLogs:= CountItems(DTMLog, 'dtm', []);
MarkTime(T);
Wait(randomrange(800,1200));
repeat
if not(Loggedin) then
Exit;
AntiRandoms;
AntiBan;
if(IsChatBoxTextAnyLine('do not have an axe', 0)) then
begin
Status('Found broken axe!');
WriteLn('Found Message about missing Axe.. Replacing!');
ReplaceAxe;
end;
if (InvFull) then
Exit;
LLogs:= CLogs;
CLogs:= CountItems(DTMLog, 'dtm', []);
if(CLogs > LLogs) then
MarkTime(T);
Wait(1000);
if(TimeFromMark(T) > (RandomRange(8000,11000))) then
begin
MMouse(tempx,tempy,0,0);
Wait(100);
if not(Copy(uptextvar,1,9) = Copy(GetUpText,1,9)) then
Break;
end;
until(TimeFromMark(T) > (RandomRange(18000,21000)));
end;
end;
end;
until (InvFull)
end;
function AxeinInv: Boolean;
begin
Result:= CountItems(DTMAxe, 'dtm', []) > 0;
end;
//Tootoot222 created most of BankLogs
procedure BankLogs;
var
WillowTPA: TPointArray;
CurrentTP: TPoint;
B: TBox;
L: Integer;
begin
Status('Depositing logs..');
WillowTPA:= ItemCoordinates('inv', 'dtm', DTMLog, []);
L:= High(WillowTPA);
CurrentTP:= WillowTPA[Random(L)];
B:= InvBox(CoordsToItem(CurrentTP.X, CurrentTP.Y));
MouseBox(B.X1, B.Y1, B.X2, B.Y2, 2);
Wait(RandomRange(300, 500));
ChooseOptionMulti([IntToStr(L), 'All']);
Wait(1000);
if(not(AxeInInv)) then
DepositAll
else
Deposit(2, 28, True);
WriteLn('All done banking!');
Wait(1000);
end;
procedure BankTheWood;
begin
AntiRandoms;
AntiBan;
Status('Opening bank..');
OpenBank('db',false,false);
Wait(1000);
InPin(Players[CurrentPlayer].Pin);
if(BankScreen) then
begin
IncEx(Players[CurrentPlayer].integers[7],CountItems(DTMLog,'dtm',[]));
BankLogs;
Wait(randomrange(1000,1500));
if(BankScreen) then
CloseBank;
end;
end;
procedure Login;
begin
Status('Logging in..');
LoginPlayer;
Wait(200);
Status('Setting up player..');
AntiRandoms;
MakeCompass(IntToStr(RandomRange(-5, 5)));
SetAngle(true);
GameTab(4);
if not (FindAxe) then
begin
Status('Failed to find axe!');
WriteLn('Axe not found, logging player out again')
Logout;
Exit;
end;
Players[CurrentPlayer].integers[4] := GetSkillInfo('Woodcutting',false);
Players[CurrentPlayer].integers[5] := GetXP('Woodcutting');
Players[CurrentPlayer].integers[9] := Players[CurrentPlayer].integers[4]
Players[CurrentPlayer].integers[10] := Players[CurrentPlayer].integers[5]
SetRun(True);
end;
procedure SetupScript;
begin
ClearDebug;
WriteLn(' __ _ _ ____ ____ ___ ____ ___ ____ ');
WriteLn(' /__\ ( \/ )( ___)( _ \ / __)(_ _)/ __)(_ _)');
WriteLn(' /(__)\ ) ( )__) ) /( (__ _)(_ \__ \ )( ');
WriteLn('(__)(__)(_/\_)(____)(_)\_) \___)(____)(___/ (__) ');
WriteLn('Version 1.0 By His Royal Highness (HRH)');
setupsrl;
ScriptID := '1159';
SRLID := SRLStatsID;
SRLPassword := SRLStatsPass;
SmartSetupEx(SmartWorld, Members, True, false);
SetTargetDC(SmartGetDC);
DTMs;
Wait(500);
end;
procedure ScriptTerminate;
begin
Report;
Status('Thanks for using The Axercist');
FreeDTM(DTMLog);
FreeDTM(DTMBank);
end;
begin
setupScript;
DeclarePlayers;
Login;
WalkToTrees;
repeat
if (Players[CurrentPlayer].integers[8] < 1) then
MarkTime(Players[CurrentPlayer].integers[8]);
TreeCut;
if InvFull then
begin
WalkToBank;
BankTheWood;
Inc(Players[CurrentPlayer].integers[3])
Players[CurrentPlayer].integers[9] := GetSkillInfo('Woodcutting',false);
Players[CurrentPlayer].integers[10] := GetXP('Woodcutting');
TempReport
WalkToTrees;
end;
if (TimeFromMark(Players[CurrentPlayer].integers[8]) > (Players[CurrentPlayer].integers[0] * 60 * 1000)) then
begin
Logout;
Wait(Players[CurrentPlayer].integers[1] * 60 * 1000 + random(300000));
MarkTime(Players[CurrentPlayer].integers[8])
Inc(SleepTimes);
Login;
end;
if not (Loggedin) or (Players[CurrentPlayer].integers[3] >= Players[CurrentPlayer].integers[2]) then
begin
if (Loggedin) then
logout;
NextPlayer(false);
Login;
WalkToTrees;
end;
if (AllPlayersInactive) then
Break;
until (false)
end.——————————————————
<!– END TEMPLATE: formanswers –>
