Sorry Dude but I decided to stop making your code more efficient, because I saw I should've to rewrite it. A lot of variables can be declared local, you free your dtm's wrong etc it'd be just a bit to much work ad besides i'm not the author of the script:)
Here is what I've got so far, it wont compile, but you may learn from it? First half of script is done;)
{
_ __
| | _ ___ \/ ___
_| | | '___| / __|
/ _ | | | \__ \
\_ _ | |_| |___/
~SMELTER!!! }
{ Al Kharid Bar Smelter
By: Dude Richard
Version: 1.0
Latest Release: 16/7/2008
Descripton: Smelts any bar (except blurite) at Al Khaird furace
Instructions
1.) Setup your players banks with the first ore (copper, mith, iron
etc) in the first bank slot, and second ore (coal, tin) in second
bank slot.
2.) Fill in lines 69 and 70 if you are using smart, otherwise leave.
3.) Press run.
4.) Fill in the information in the forms properly.
5.) You should be fine to run!
Valid Arguements for bars
Copper, iron, steel, silver, gold, mith, addy, rune
And nothing else will work, so don't try anything else! }
{
Version History
v1.0 (16/7/2008) - First release, not much yet put in, more will
be added in future. }
program AlKharidBarSmelter;
{.include srl/srl.scar}
{.include srl/srl/misc/users.scar}
{.include SRL/SRL/skill/Fighting.scar}
var
Bar, message3: string;
x, y, Loads, t, AntiBanned, w,
L, S, Bars, NextLvl,
RespondedTimes, Ore :Integer;
Checked, BoxFound: Boolean;
//form variables
frmDesign : TForm;
GroupBox1 : TGroupBox;
Label1, Label2, Label3, Label4 : TLabel;
Edit1, Edit2, Edit3, Edit4 : TEdit;
CheckBox1, CheckBox2 : TCheckBox;
Button1 : TButton;
const
Version = 1; //No touchy please
Version2 = 0; //^^as above^^
procedure TellMeSt00f; forward; //For later
procedure MyProgress; forward; //^^as above^^
procedure StartClick(sender: TObject); //Closes the form when you click button
begin
frmDesign.ModalResult:= mrOk;
MouseSpeed := (StrToInt(Edit2.text));
SymbolAccuracy := 0.5;
end;
procedure StartForm; //Simple little start things
begin
with frmDesign do
begin
frmDesign := CreateForm;
frmDesign.Left := 309;
frmDesign.Top := 129;
frmDesign.Width := 220;
frmDesign.Height := 330;
frmDesign.Caption := 'Al Kharid Bar Smelter';
frmDesign.Color := clMaroon;
frmDesign.Font.Color := clBlack;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
end;
with GroupBox1 do
begin
GroupBox1 := TGroupBox.Create(frmDesign);
GroupBox1.Parent := frmDesign;
GroupBox1.Left := 16;
GroupBox1.Top := 16;
GroupBox1.Width := 177;
GroupBox1.Height := 257;
GroupBox1.Caption := 'Start Setup';
GroupBox1.TabOrder := 0;
end;
with Label1 do
begin
Label1 := TLabel.Create(GroupBox1);
Label1.Parent := GroupBox1;
Label1.Left := 8;
Label1.Top := 24;
Label1.Width := 51;
Label1.Height := 13;
Label1.Caption := 'Lamp Skill:';
end;
with Label2 do
begin
Label2 := TLabel.Create(GroupBox1);
Label2.Parent := GroupBox1;
Label2.Left := 8;
Label2.Top := 56;
Label2.Width := 69;
Label2.Height := 13;
Label2.Caption := 'Mouse Speed:';
end;
with Label3 do
begin
Label3 := TLabel.Create(GroupBox1);
Label3.Parent := GroupBox1;
Label3.Left := 8;
Label3.Top := 88;
Label3.Width := 38;
Label3.Height := 13;
Label3.Caption := 'SRL ID:';
end;
with Label4 do
begin
Label4 := TLabel.Create(GroupBox1);
Label4.Parent := GroupBox1;
Label4.Left := 8;
Label4.Top := 120;
Label4.Width := 50;
Label4.Height := 13;
Label4.Caption := 'SRL Pass:';
end;
with Edit1 do
begin
Edit1 := TEdit.Create(GroupBox1);
Edit1.Parent := GroupBox1;
Edit1.Left := 88;
Edit1.Top := 24;
Edit1.Width := 73;
Edit1.Height := 21;
Edit1.TabOrder := 0;
Edit1.Text := 'Smithing';
end;
with Edit2 do
begin
Edit2 := TEdit.Create(GroupBox1);
Edit2.Parent := GroupBox1;
Edit2.Left := 88;
Edit2.Top := 56;
Edit2.Width := 73;
Edit2.Height := 21;
Edit2.TabOrder := 1;
Edit2.Text := '15';
end;
with CheckBox1 do
begin
CheckBox1 := TCheckBox.Create(GroupBox1);
CheckBox1.Parent := GroupBox1;
CheckBox1.Left := 32;
CheckBox1.Top := 152;
CheckBox1.Width := 129;
CheckBox1.Height := 17;
CheckBox1.Caption := 'Use Auto-respond';
CheckBox1.TabOrder := 2;
end;
with Button1 do
begin
Button1 := TButton.Create(GroupBox1);
Button1.Parent := GroupBox1;
Button1.Left := 32;
Button1.Top := 208;
Button1.Width := 105;
Button1.Height := 33;
Button1.Caption := 'Start the script';
Button1.TabOrder := 3;
Button1.OnClick := @StartClick;
end;
with Edit3 do
begin
Edit3 := TEdit.Create(GroupBox1);
Edit3.Parent := GroupBox1;
Edit3.Left := 88;
Edit3.Top := 88;
Edit3.Width := 73;
Edit3.Height := 21;
Edit3.TabOrder := 4;
end;
with Edit4 do
begin
Edit4 := TEdit.Create(GroupBox1);
Edit4.Parent := GroupBox1;
Edit4.Left := 88;
Edit4.Top := 120;
Edit4.Width := 73;
Edit4.Height := 21;
Edit4.TabOrder := 5;
end;
with CheckBox2 do
begin
CheckBox2 := TCheckBox.Create(GroupBox1);
CheckBox2.Parent := GroupBox1;
CheckBox2.Left := 8;
CheckBox2.Top := 176;
CheckBox2.Width := 161;
CheckBox2.Height := 17;
CheckBox2.Caption := 'Use Debug? (designed for me)';
CheckBox2.TabOrder := 6;
end;
end;
procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('StartForm', v);
end;
procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
procedure DRDebug(s: string); //Really designed for me, but you can use :)
begin
if CheckBox2.Checked then WriteLn(s)
end;
procedure DeclarePlayers;
begin
SRLPlayerForm(True, ['Use Sleep?'], ['Loads'], ['Bar Type',
'Run Direction', 'Bank PIN'], []);
end;
function GetDTM(dtm: string): integer;
begin
case lowercase(dtm) of
'ore' : Result := DTMFromString('78DA637464626078C20006CC108A61418C26C37F20CD08C4FF8180D10953CDB64C7DB81A106074C65473BAD414550DC8AE07A86A2ADDE451D59863AA0975354455630D54F318554D69BC33A69AA7A86A9AB3BD51D57800D5BC405593662D85A9E615AA9ADE20154C35AF51D52C8ED3C254F30655CD9E5C547F0100DF592814');
'bank' : Result := DTMFromString('78DA630C636260906500036608C5F0E70F1383572A86ACE9C415303B24B01550D4816454D2C508D12AA9ADAC620143500AF91102A');
'level' : Result := DTMFromString('78DA6314666060E0670003660618F8CF20072419412C206094C5AF060418558084280135AA40421855CD95C38B50D52863AA41370700CCEE0BD6');
'rock' : Result := DTMFromString('78DA636C656260B06000036608C5D01867C82007A41981F83F1030B661AAC90DD686AB0101C6764C35F1D18AA86A9A806A8C51D57839C9A3AA6904AA31415513E38AAA06009F000C9B');
'barsbox' : result := DTMFromString('78DA63D4646060A866640001660608E89E3C93410E488344FF0301A332A61A99497D703520C02881A966F78638543532986A8C6CEC50D580EC2A4355931A218CA20600354C0DEE');
end;
end;
procedure GetTheAmmounts(var msg1, msg2: integer; var msg3: string); //Used for later on typing in values
begin
case LowerCase(Players[CurrentPlayer].Strings[0]) of
'bronze' : begin
msg1 := 14;
msg2 := 14;
msg3 := '14';
end;
'iron' : begin
msg1 := 28;
msg2 := 0;
msg3 := '28';
end;
'steel' : begin
msg1 := 9;
msg2 := 18;
msg3 := '9';
end;
'silver' : begin
msg1 := 28;
msg2 := 0;
msg3 := '28';
end;
'gold' : begin
msg1 := 28;
msg2 := 0;
msg3 := '28';
end;
'mith' : begin
msg1 := 5;
msg2 := 20;
msg3 := '5';
end;
'addy' : begin
msg1 := 4;
msg2:= 24;
msg3 := '4';
end;
'rune' : begin
msg1 := 3;
msg2 := 24;
msg3 := '3';
end;
end;
end;
procedure ClickBar; //Use for when making the bars
var
Cx, Cy: integer;
begin
case LowerCase(Players[CurrentPlayer].Strings[0]) of
'bronze' : MouseBox(37, 392, 72, 431, 2);
'iron' : MouseBox(138, 392, 172, 431, 2);
'steel' : MouseBox(242, 392, 275, 431, 2);
'silver' : MouseBox(187, 392, 272, 431, 2);
'gold' : MouseBox(294, 392, 325, 431, 2);
'mith' : MouseBox(349, 392, 400, 431, 2);
'addy' : MouseBox(399, 392, 428, 431, 2);
'rune' : MouseBox(451, 392, 481, 431, 2);
end;
GetMousePos(Cx, Cy);
DRDebug('Clicked bar box '+IntToStr(Cx)+', '+IntToStr(Cy)+'.')
end;
function GetVarAmmounts: integer; //Make my stats look 1337 :D
begin
case Lowercase(Players[CurrentPlayer].Strings[0]) of
'bronze' : Result := 14;//BarVar
'iron' : Result := 14;
'silver' : Result := 28;
'steel' : Result := 9;
'gold' : Result := 28;
'mith' : Result := 5;
'addy' : Result := 4;
'rune' : Result := 3;
end;
DRDebug('The bar var is '+IntToStr(Result)+'.');
end;
function GetWaitTime: integer;
begin
case Lowercase(Players[CurrentPlayer].Strings[0]) of
'bronze' : Result := 45000;
'iron' : Result := 90000;
'silver' : Result := 90000;
'steel' : Result := 30000;
'gold' : Result := 90000;
'mith' : Result := 180000;
'addy' : Result := 150000;
'rune' : Result := 110000;
end;
end;
procedure RunMyPlayer;
var
colorsign: string;
g: integer;
begin
g := GetMMLevels('run', colorsign);
if (g >= 25) then SetRun(True);
end;
function OopsWeGainedALvl: boolean;
var
TheDTM, Tx, Ty: integer;
begin
result := false;
TheDTM := GetDTM('level');
try
if FindDTM(TheDTM, Tx, Ty, 191, 446, 342, 463) then
begin
result := true;
Mouse(Tx, Ty, 2, 2, true);
Disguise('Gained a lvl!');
DRDebug('We gained a lvl in smithing!');
Wait(1000+random(1000));
Mouse(Tx, Ty, 2, 2, true);
end;
finally
FreeDTM(TheDTM);
end;
end;
{*******************************************************************************
function RespondAll: Boolean;
By: Timothegreat
Description: Autoresponder package by Timothegreat
*******************************************************************************}
var
thechat,talkername,ZeText:string;
GoodBye,YourName,Greetings,Woodcut,Macroes,Totals,Highest:Array [0..8] of string;
Funnies,Questions: Array [0..8] of String;
{*******************************************************************************
function DetermineHighest: String;
By: Timothegreat
Description: Determines your character's highest skill
*******************************************************************************}
function DetermineHighest: string;
var
h,i,skill: integer;
begin
if (Checkbox1.Checked) then
begin
for h:= 1 to 99 do
begin
for i:= 1 to 21 do
begin
if (Players[CurrentPlayer].level[i] >= h) then
begin
skill:= i;
end;
end;
end;
case skill of
1 : result := 'attack';
2 : result := 'strength';
3 : result := 'defence';
4 : result := 'range';
5 : result := 'prayer';
6 : result := 'magic';
7 : result := 'runecrafting';
8 : result := 'hitpoints';
9 : result := 'agility';
10 : result := 'herblore';
11 : result := 'thieving';
12 : result := 'crafting';
13 : result := 'fletching';
14 : result := 'slayer';
15 : result := 'mining';
16 : result := 'smithing';
17 : result := 'fishing';
18 : result := 'cooking';
19 : result := 'firemaking';
20 : result := 'woodcutting';
21 : result := 'farming';
end;
end;
end;
{*******************************************************************************
function DetermineTotal: String;
By: Timothegreat
Description: Determines your character's total lvl
*******************************************************************************}
function DetermineTotal: string;
var
i,total: integer;
begin
if (Checkbox1.Checked) then
begin
for i:= 1 to 21 do
begin
Total:= Total + Players[CurrentPlayer].Level[i];
end;
result:= inttostr(Total+3);
end;
end;
{*******************************************************************************
procedure SetupArrays;
By: Timothegreat
Description: Sets up the autoresponder
0-4 are responses
5-8 are things it responds to
*******************************************************************************}
procedure SetupArrays;
begin
if (Checkbox1.Checked) then
begin
Greetings[0]:= 'Hi';
Greetings[1]:= 'Hello';
Greetings[2]:= 'Sup';
Greetings[3]:= 'yo';
Greetings[4]:= 'good day';
Greetings[5]:= 'ello';
Greetings[6]:= 'Sup';
Greetings[7]:= 'Hi';
Greetings[8]:= 'Hey';
Questions[0]:= 'ok i guess...you?';
Questions[1]:= 'great';
Questions[2]:= 'good';
Questions[3]:= 'ok, u';
Questions[4]:= 'fine';
Questions[5]:= 'How are you';
Questions[6]:= 'ow are u';
Questions[7]:= 'ow r u';
Questions[8]:= 'ow are you doing';
Macroes[0]:= 'what the hell?';
Macroes[1]:= 'omfg im not an autoer';
Macroes[2]:= 'whatcha talkin bout willis';
Macroes[3]:= 'bots are gone';
Macroes[4]:= 'there arent bots anymore';
Macroes[5]:= 'utoer';
Macroes[6]:= 'bot';
Macroes[7]:= 'acroer';
Macroes[8]:= 'utoing';
Funnies[0]:= 'lol';
Funnies[1]:= 'rofl';
Funnies[2]:= 'roflcopter';
Funnies[3]:= 'lmao';
Funnies[4]:= 'lmfao';
Funnies[5]:= 'lol';
Funnies[6]:= 'rofl';
Funnies[7]:= 'lmao';
Funnies[8]:= 'haha';
YourName[0]:= 'ya?';
YourName[1]:= 'what?';
YourName[2]:= 'what you want?';
YourName[3]:= 'yep?';
YourName[4]:= '......?';
YourName[5]:= Players[CurrentPlayer].Name;
YourName[6]:= Players[CurrentPlayer].Nick;
YourName[7]:= Players[CurrentPlayer].Name;
YourName[8]:= Players[CurrentPlayer].Nick;
GoodBye[0]:= 'later';
GoodBye[1]:= 'bye';
GoodBye[2]:= 'cya later';
GoodBye[3]:= 'cya';
GoodBye[4]:= 'k later';
GoodBye[5]:= 'gtg';
GoodBye[6]:= 'bye';
GoodBye[7]:= 'brb';
GoodBye[8]:= 'cya';
Woodcut[0]:= 'mine is '+inttostr(Players[CurrentPlayer].level[16]);
Woodcut[1]:= inttostr(Players[CurrentPlayer].level[16])+' you';
Woodcut[2]:= inttostr(Players[CurrentPlayer].level[16]);
Woodcut[3]:= 'almost '+inttostr(Players[CurrentPlayer].level[16]+1);
Woodcut[4]:= 'im almost'+inttostr(Players[CurrentPlayer].level[16]+1);
Highest[0]:= 'mine is '+DetermineHighest;
Highest[1]:= DetermineHighest+' you';
Highest[2]:= DetermineHighest;
Highest[3]:= DetermineHighest+' i guess';
Highest[4]:= 'mines '+DetermineHighest;
Highest[5]:= 'high lvl';
Highest[6]:= 'biggest lvl'
Highest[7]:= 'highest lvl';
Highest[8]:= 'highest lev';
Totals[0]:= 'mine is '+DetermineTotal;
Totals[1]:= DetermineTotal+' you';
Totals[2]:= DetermineTotal;
Totals[3]:= DetermineTotal+' i guess';
Totals[4]:= 'mines '+DetermineTotal;
Totals[5]:= 'total lvl';
Totals[6]:= 'totals lvl'
Totals[7]:= 'total lev';
Totals[8]:= 'totals lev';
end;
end;
{*******************************************************************************
function TheLastChat: Boolean;
By: Timothegreat
Description: Gets the last chat
*******************************************************************************}
function TheLastChat: Boolean;
var
i: Integer;
textP: TPoint;
begin
if (Checkbox1.Checked) then
begin
textP := TextCoords(8);
talkername := LowerCase(Trim(GetTextAtEx(textP.x - 2, textP.y - 2, 0, SmallChars, False, False, 0, 1,
0, 60, False, tr_allChars)))
i := Pos(':', talkername)
talkername:= ':'+talkername;
talkername:=Between(':',':',talkername);
if not(talkername = '') then
begin
Result := True;
end;
end;
end;
{*******************************************************************************
function TheLastChat: Boolean;
By: Timothegreat
Description: Checks if the text we respond to is in the last chat
*******************************************************************************}
function CheckLastChatText(thetext:string): Boolean;
var
x, y: Integer;
textP: TPoint;
begin
if (Checkbox1.Checked) then
begin
textP := TextCoords(8);
if findcolor(x, y, 16711680, textp.x, textp.y, textp.x + 200, textp.y + 14) then
begin
thechat := LowerCase(Trim(GetTextAtEx(x - 3, textp.y - 2, 0, SmallChars, False,
False, -1, 1, 16711680, 60, False, tr_allChars)));
if (pos(thetext,thechat) <> 0) then
Result := True;
try
if (pos(thetext,Capitalize(thechat)) <> 0) then
Result := True;
except
writeln('stupid chat');
end;
try
if (pos(Capitalize(thetext),Capitalize(thechat)) <> 0)then
Result := True;
except
writeln('stupid chat');
end;
end;
end;
end;
{*******************************************************************************
function TheLastChat: Boolean;
By: Timothegreat
Description: Responds to last chat
*******************************************************************************}
function Respondit(TheType:Array of String):boolean;
var
i,Response:integer;
begin
if (Checkbox1.Checked) then
begin
if not LoggedIn then exit;
if not TheLastchat then exit;
if (Capitalize(talkername) = Capitalize(Players[CurrentPlayer].Name))then exit;
for i:= 5 to 8 do
begin
ZeText:= TheType[i];
if CheckLastChatText(ZeText)then
begin
Response:= random(5);
TypeSend(TheType[Response]);
RespondedTimes:= RespondedTimes + 1;
ReportVars[2]:= ReportVars[2] + 1;
SendSRLReport;
SRLRandomsReport;
Result:=true;
end;
end;
end;
end;
{*******************************************************************************
function TheLastChat: Boolean;
By: Timothegreat
Description: Handles everything for the autoresponder
example: Call this in your antiban procedures
*******************************************************************************}
function RespondAll:boolean;
begin
if (Checkbox1.Checked) then
begin
if not LoggedIn then exit;
SetupArrays;
if Players[CurrentPlayer].Level[20] = 0 then
begin
GetAllLevels;
end;
result:= false;
result:= RespondIt(Greetings);
if result then
begin
wait(500+random(250));
exit;
end;
case random(10)of
0: begin
result:= RespondIt(Funnies);
if result then
begin
wait(500+random(250));
exit;
end;
end;
end;
result := RespondIt(Woodcut);
if result then
begin
wait(500+random(250));
exit;
end;
result := RespondIt(Highest);
if result then
begin
wait(500+random(250));
exit;
end;
result := RespondIt(Totals);
if result then
begin
wait(500+random(250));
exit;
end;
result := RespondIt(Questions);
if result then
begin
wait(500+random(250));
exit;
end;
result := RespondIt(YourName);
if result then
begin
wait(500+random(250));
exit;
end;
result := RespondIt(Goodbye);
if result then
begin
wait(500+random(250));
exit;
end;
result := RespondIt(Macroes);
if result then
begin
wait(500+random(250));
exit;
end;
end;
end;
{------------ END OF TIMOTHEGREAT'S AUTORESPONDER PACKAGE :(---------------------}
procedure Antiban;
var
Tx, Ty, MouseSpeed1: integer;
begin
if not LoggedIn then Exit;
case random(55) of
1: begin
KeyDown(VK_Down);
Wait(random(1000));
KeyUp(VK_Down);
KeyDown(VK_Up);
Wait(500 + random(1000));
KeyUp(VK_Up);
MakeCompass('n');
GameTab(4);
MakeCompass('w');
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1; // The antiban var
end;
2: begin
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Left);
KeyDown(VK_Right);
Wait(random(1000));
KeyUp(VK_Right);
MakeCompass('n');
GameTab(4);
MakeCompass('w');
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
3: begin
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Left);
KeyDown(VK_Right);
Wait(random(1000));
KeyUp(VK_Right);
MakeCompass('n');
GameTab(4);
MakeCompass('w');
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
4: begin
KeyDown(VK_Up);
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Up);
Wait(random(800));
KeyUp(VK_Left);
MakeCompass('n');
GameTab(4);
MakeCompass('w');
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
5: begin
PickupMouse;
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
6: begin
BoredHuman; //Are you bored?
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
7..10: begin
MMouse(116-Random(100), 285-Random(256),60,60);
PickupMouse;
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
11..14: begin
PickupMouse;
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
15..20: begin
MakeCompass(IntToStr(randomrange(1, 360)));
Wait(500+random(5000));
MakeCompass('w');
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
21..26: begin //I think theres 13 gametabs... I dunno...
Gametab(randomrange(1, 12));
GameTab(4);
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
26..31: begin
RandomRClick;
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
32..40: begin//is changing mousespeed nescesarry?
MouseSpeed1 := randomrange(17,22);
MouseSpeed := (MouseSpeed1);
DRDebug('Mouse speed changed to '+IntToStr(MouseSpeed1)+'.');
AntiBanned := AntiBanned + 1;
ReportVars[2] := ReportVars[2] + 1;
end;
end;
Writeln('Performed anti-ban action.');
end;
procedure AntiRandoms;
begin
LampSkill:= Edit1.text;
FindNormalRandoms;
if InFight then RunAway('n', True, 3, 10000);
SRLRandomsReport;
end;
procedure SleepThatPlayer; //For antiban perposes
var
SleepStart, H, M, C, SleepT, LosTimos:Integer;
begin
LosTimos := 2500000+random(300000);
if (TimeFromMark(t) >= LosTimos) then //working out milliseconds
begin //can be fun...
Logout;
Disguise('Sleeping');
WriteLn('Sleeping for antiban purposes');
DRDebug('Sleeping for '+IntToStr(H)+'hr , '+IntToStr(M)+'min, '+IntToStr(C)+'sec');
case Random(6) of
0,1: SleepT := (60000+Random(60000));
2,3: SleepT := (300000+Random(300000));
4: SleepT := (1000000+Random(500000));
5: SleepT := (1800000+Random(500000));
end;
MarkTime(SleepStart);
ConvertTime(SleepT, H, M, C);
DRDebug('Sleeping for '+IntToStr(H)+'hr , '+IntToStr(M)+'min, '+IntToStr(C)+'sec');
repeat
WriteLn('Sleeping, '+IntToStr(H)+'hr , '+IntToStr(M)+'min, '+IntToStr(C)+'sec remaining');
Wait(10000 +Random(10000));
ClearDebug;
until(TimeFromMark(SleepStart) >= SleepT);
WriteLn('That was a nice little sleep :)');
LoginPlayer;
MarkTime(t);
Disguise('Logging back in');
ReportVars[4] := ReportVars[4] + 1; //Sleeping var
end;
end;
//By Hermpie
function HIsBankOpen(MaxTime:Integer; CheckForPinScreen:Boolean):Boolean;
var
Timer :Integer;
begin
if not LoggedIn then exit;
repeat
Wait(100);
if CheckForPinScreen then Result:=PinScreen;
if Result then Break;
until (BankScreen or (TimeFromMark(Timer) > MaxTime));
Result:= TimeFromMark(Timer) < Maxtime;
if not Result then Writeln('Failed To Find The BankScreen.');
end;
//By Hermpie
function HUptext(Text:TStringArray):boolean;
var
MaxTime:Integer;
begin
if not LoggedIn then exit;
MarkTime(MaxTime);
repeat
Result:= IsUpTextMultiCustom(Text);
until (result or (TimeFromMark(MaxTime)>100));
Result:=TimefromMark(MaxTime)<100;
end;
//By Hermpie
function HOpenBank:Boolean;
var
TempTpa: TpointArray;
Temp: T2DPointArray;
H, CTS, I, MSpeed, TempX, TempY, M:Integer;
begin
M:=GetSystemTime;
MSpeed:=MouseSpeed;
MouseSpeed:=20;
if not LoggedIn then Exit;
CTS := GetColorToleranceSpeed;
if not CTS = 2 then ColorToleranceSpeed(2);
FindColorsSpiralTolerance(TempX, TempY, TempTPA, 738138, MSX1+10, MSY1+10, MSX2-10, MSY2-10, 10);//738138
Temp:= TPAtoATPAEx(TempTPA, 17, 18);
SortATPASize(Temp, True);
H:=High(Temp);
for I := 0 to H do
begin
MiddleTPAEx(Temp[i], TempX, TempY);
Writeln('Found The Bank In '+IntToStr(GetSystemTime - M)+' MiliSecs.');
MMouse(TempX, TempY, 0, 0);
Result:=HUpText(['ank']);
if Result then Break;
Wait(100);
end;
if Result then
begin
Mouse(TempX, TempY, 0, 0, False);
Wait(50+random(25));
Result:=ChooseOption('uickly');
if Result then Result:=HIsBankOpen(5000,True);
if Pinscreen then Result:= InPin(InttoStr(Players[CurrentPlayer].Integers[0]));
if Result then Result:=HIsBankOpen(5000,False);
end;
if Result then Writeln('HOpenBank Succesfully Openend The Bank. In '+IntToStr(GetSystemTime - M)+' MiliSecs.');
if not result then Writeln('HOpenBank Did Not Open The Bank. ');
ColorToleranceSpeed(CTS);
MouseSpeed:=MSpeed;
MakeCompass('N');
end;
procedure OpenUpBank;
var
TriesBank, PinTries: Integer;
begin
if not LoggedIn then Exit;
AntiRandoms;
GameTab(4);
MakeCompass('n');
SetAngle(True);
TriesBank := 0;
repeat
TriesBank := TriesBank + 1;
HOpenBank;
until (BankScreen) or (PinScreen) or (TriesBank >= 5);
if PinScreen then
begin
PinTries := 0;
repeat
InPin (Players[CurrentPlayer].PIN);
PinTries := PinTries + 1;
until (PinTries > 5) or BankScreen;
FixBank;
end;
if (PinTries > 5) then
begin
WriteLn('Sorry we couldn'#39't open the bank');
WriteLn('Make sure you entered you PIN correctly');
WriteLn('Going onto the next player');
NextPlayer(False);
end;
Wait(1000+random(1000));
end;
procedure WithdrawFromBank; //This uses SRL's withdraw, so if withdrawing
var //doesn't work, blame them, hehe
message1, message2, k, i: integer;
begin
AntiRandoms;
GetTheAmmounts(message1, message2, message3);
if BankScreen then
begin
for i := 1 to 28 do
begin
if ExistsItem(i) then
begin
wait(randomrange(100, 200));
MouseItem(i, False);
ChooseOption('ll');
Disguise('Banked Bars');
Wait(randomrange(750, 1000));
end;
end;
begin
Withdraw(1,1, (Message1));
case LowerCase(Players[CurrentPlayer].Strings[0]) of
'gold', 'silver', 'iron' : begin
CloseBank;
DRDebug('Bank closing as we are using 1 ore only');
AntiRandoms;
RunMyPlayer;
for k := 1 to 25 do
begin
if ExistsItem(k) then
begin
DRDebug('Item exists, good');
Exit;
end;
end;
end;
end;
begin
Withdraw(2,1,(Message2));
end;
end;
end;
CloseBank;
AntiRandoms;
RunMyPlayer;
for k := 1 to 25 do
begin
if ExistsItem(k) then
begin
DRDebug('Item exists, good');
ReportVars[0] := ReportVars[0] + 1;
end;
end;
end;
function InventCheck: boolean;
begin
if not(Checked) then
begin
GameTab(4);
MMouse(566, 220, 5, 5);
Wait(300+random(400));
if IsUpText('re') or (IsUpText('old')
or (IsUpText('oal') or (IsUpText('ilver')))) then
begin
Disguise('Inv Check Fine');
DRDebug('Safe, we have the right thing');
result := True;
end else
begin
Disguise('Inv Check Failed');
WriteLn('We don'#39't have ore in inventory');
WriteLn('Next Player');
MyProgress;
Logout;
NextPlayer(False);
Exit;
end;
end;
end;
{ The Walking by Iron Man }
{ }
{The next few procedures were made by Iron Man }
{and without him this script wouldn't even work}
{ So give a round of applause to Iron Man!!! }
{ Note: Everything marked with "//Iron Man" is }
{ made by Iron Man }
function WalkTo1: Integer; //Iron Man
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: array [0..6] of TDTMPointDef;
WT1: TDTM;
begin
dtmMainPoint.x := 789; dtmSubPoints[0].x := 789;
dtmMainPoint.y := 254; dtmSubPoints[0].y := 254;
dtmMainPoint.AreaSize := 1; dtmSubPoints[0].AreaSize := 1;
dtmMainPoint.AreaShape := 0; dtmSubPoints[0].AreaShape := 0;
dtmMainPoint.Color := 7119551; dtmSubPoints[0].Color := 7119551;
dtmMainPoint.Tolerance := 60; dtmSubPoints[0].Tolerance := 60;
dtmSubPoints[1].x := 800; dtmSubPoints[2].x := 773;
dtmSubPoints[1].y := 252; dtmSubPoints[2].y := 257;
dtmSubPoints[1].AreaSize := 1; dtmSubPoints[2].AreaSize := 1;
dtmSubPoints[1].AreaShape := 0; dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[1].Color := 15723253; dtmSubPoints[2].Color := 1589105;
dtmSubPoints[1].Tolerance := 60; dtmSubPoints[2].Tolerance := 60;
dtmSubPoints[3].x := 786; dtmSubPoints[4].x := 793;
dtmSubPoints[3].y := 263; dtmSubPoints[4].y := 241;
dtmSubPoints[3].AreaSize := 1; dtmSubPoints[4].AreaSize := 1;
dtmSubPoints[3].AreaShape := 0; dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[3].Color := 7119551; dtmSubPoints[4].Color := 7119551;
dtmSubPoints[3].Tolerance := 60; dtmSubPoints[4].Tolerance := 60;
dtmSubPoints[5].x := 769; dtmSubPoints[6].x := 783;
dtmSubPoints[5].y := 251; dtmSubPoints[6].y := 262;
dtmSubPoints[5].AreaSize := 1; dtmSubPoints[6].AreaSize := 1;
dtmSubPoints[5].AreaShape := 0; dtmSubPoints[6].AreaShape := 0;
dtmSubPoints[5].Color := 7119551; dtmSubPoints[6].Color := 7119551;
dtmSubPoints[5].Tolerance := 60; dtmSubPoints[6].Tolerance := 60;
WT1.MainPoint := dtmMainPoint;
WT1.SubPoints := dtmSubPoints;
Result := AddDTM(WT1);
end;
function WalkTo2: Integer;//Iron Man
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: array [0..5] of TDTMPointDef;
WT3: TDTM;
begin
dtmMainPoint.x := 730; dtmSubPoints[0].x := 730;
dtmMainPoint.y := 286; dtmSubPoints[0].y := 286;
dtmMainPoint.AreaSize := 1; dtmSubPoints[0].AreaSize := 1;
dtmMainPoint.AreaShape := 0; dtmSubPoints[0].AreaShape := 0;
dtmMainPoint.Color := 5142139; dtmSubPoints[0].Color := 5142139;
dtmMainPoint.Tolerance := 30; dtmSubPoints[0].Tolerance := 30;
dtmSubPoints[1].x := 734; dtmSubPoints[2].x := 730;
dtmSubPoints[1].y := 274; dtmSubPoints[2].y := 295;
dtmSubPoints[1].AreaSize := 1; dtmSubPoints[2].AreaSize := 1;
dtmSubPoints[1].AreaShape := 0; dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[1].Color := 15528951; dtmSubPoints[2].Color := 15528951;
dtmSubPoints[1].Tolerance := 30; dtmSubPoints[2].Tolerance := 30;
dtmSubPoints[3].x := 737; dtmSubPoints[4].x := 740;
dtmSubPoints[3].y := 288; dtmSubPoints[4].y := 282;
dtmSubPoints[3].AreaSize := 1; dtmSubPoints[4].AreaSize := 1;
dtmSubPoints[3].AreaShape := 0; dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[3].Color := 243; dtmSubPoints[4].Color := 15528951;
dtmSubPoints[3].Tolerance := 30; dtmSubPoints[4].Tolerance := 30;
dtmSubPoints[5].x := 747;
dtmSubPoints[5].y := 287;
dtmSubPoints[5].AreaSize := 1;
dtmSubPoints[5].AreaShape := 0;
dtmSubPoints[5].Color := 6532542;
dtmSubPoints[5].Tolerance := 30;
WT3.MainPoint := dtmMainPoint;
WT3.SubPoints := dtmSubPoints;
Result := AddDTM(WT3);
end;
function WalkBack1: Integer;//Iron Man
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: array [0..5] of TDTMPointDef;
WB1: TDTM;
begin
dtmMainPoint.x := 761; dtmSubPoints[0].x := 761;
dtmMainPoint.y := 351; dtmSubPoints[0].y := 351;
dtmMainPoint.AreaSize := 1; dtmSubPoints[0].AreaSize := 1;
dtmMainPoint.AreaShape := 0; dtmSubPoints[0].AreaShape := 0;
dtmMainPoint.Color := 7321028; dtmSubPoints[0].Color := 7321028;
dtmMainPoint.Tolerance := 40; dtmSubPoints[0].Tolerance := 40;
dtmSubPoints[1].x := 758; dtmSubPoints[2].x := 772;
dtmSubPoints[1].y := 343; dtmSubPoints[2].y := 354;
dtmSubPoints[1].AreaSize := 1; dtmSubPoints[2].AreaSize := 1;
dtmSubPoints[1].AreaShape := 0; dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[1].Color := 929875; dtmSubPoints[2].Color := 2053941;
dtmSubPoints[1].Tolerance := 40; dtmSubPoints[2].Tolerance := 40;
dtmSubPoints[3].x := 768; dtmSubPoints[4].x := 764;
dtmSubPoints[3].y := 339; dtmSubPoints[4].y := 362;
dtmSubPoints[3].AreaSize := 1; dtmSubPoints[4].AreaSize := 1;
dtmSubPoints[3].AreaShape := 0; dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[3].Color := 7321028; dtmSubPoints[4].Color := 7321028;
dtmSubPoints[3].Tolerance := 40; dtmSubPoints[4].Tolerance := 40;
dtmSubPoints[5].x := 755;
dtmSubPoints[5].y := 350;
dtmSubPoints[5].AreaSize := 1;
dtmSubPoints[5].AreaShape := 0;
dtmSubPoints[5].Color := 7321028;
dtmSubPoints[5].Tolerance := 40;
WB1.MainPoint := dtmMainPoint;
WB1.SubPoints := dtmSubPoints;
Result := AddDTM(WB1);
end;
function BankDDTM: Integer;//Iron Man
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: array [0..3] of TDTMPointDef;
BD: TDTM;
begin
dtmMainPoint.x := 728; dtmSubPoints[0].x := 728;
dtmMainPoint.y := 305; dtmSubPoints[0].y := 305;
dtmMainPoint.AreaSize := 1; dtmSubPoints[0].AreaSize := 1;
dtmMainPoint.AreaShape := 0; dtmSubPoints[0].AreaShape := 0;
dtmMainPoint.Color := 5931397; dtmSubPoints[0].Color := 5931397;
dtmMainPoint.Tolerance := 50; dtmSubPoints[0].Tolerance := 50;
dtmSubPoints[1].x := 716; dtmSubPoints[2].x := 712;
dtmSubPoints[1].y := 294; dtmSubPoints[2].y := 314;
dtmSubPoints[1].AreaSize := 1; dtmSubPoints[2].AreaSize := 1;
dtmSubPoints[1].AreaShape := 0; dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[1].Color := 62965; dtmSubPoints[2].Color := 195836;
dtmSubPoints[1].Tolerance := 50; dtmSubPoints[2].Tolerance := 50;
dtmSubPoints[3].x := 715;
dtmSubPoints[3].y := 298;
dtmSubPoints[3].AreaSize := 1;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := 195836;
dtmSubPoints[3].Tolerance := 50;
BD.MainPoint := dtmMainPoint;
BD.SubPoints := dtmSubPoints;
Result := AddDTM(BD);
end;
procedure WalkToFurnace;//Iron Man and modded by me
var
RockDTM, Walk1, Walk2: integer;
begin
AntiRandoms;
MakeCompass('n');
RockDTM := GetDTM('rock');
Walk1 := WalkTo1;
Walk1 := WalkTo2;
if not DTMRotated(Walk1, x, y, 630, 7, 705, 78) then
if not (FindDTM(RockDTM, x, y, MMX1, MMY1, MMX2, MMY2)) then
begin
DRDebug('Unable to use proper ways of walking so resorting to co-ord clicking');
Mouse(665, 46, 5, 5, True);
GetMousePos(x, y);
DRDebug('Click on map at '+IntToStr(x)+', '+IntToStr(y)+'.');
end;
Disguise('Walking to furnace');
Mouse(x, y, 5, 5, true);
FFlag(Random(3));
Wait(Random(500));
if not (FindSymbol(x, y, 'furnace')) then
begin
if DTMRotated(Walk2, x, y, mmx1, mmy1, mmx2, mmy2) then
begin
Mouse(x, y, 5, 5, true);
FFlag(0);
Wait(Random(500));
Exit;
end else
begin
SRLRandomsReport;
MyProgress;
WriteLn('Did not walk to the furnace right... next player');
NextPlayer(False);
FreeDDTMs;
Exit;
end;
end;
Mouse(x, y, 5, 5, true);
FFlag(0);
Wait(Random(500));
FreeDDTMs;
FreeDTM(RockThere);
AntiRandoms;
end;
procedure WaitForBar; //The next 3 procedures are by me :)
var
TheDTM, wbb: Integer;
begin
TheDTM := GetDTM('barsbox');
MarkTime(wbb);
BoxFound := False;
try
while (TimeFromMark(wbb) <= 10000) do
begin
if FindDTM(TheDTM, x, y, MCX1, MCY1, MCX2, MCY2) then
begin
BoxFound := True;
ClickBar;
break;
end else
Wait(1000+random(500));
end;
finally
FreeDTM(BarsBox);
end;
end;
function LocateFurnace:Boolean;
var
TPA: TPointArray;
Temp: T2DPointArray;
h, x, y, MouseSpeed2, z, t: Integer;
begin
if not LoggedIn then Exit;
MouseSpeed2 := MouseSpeed;
MouseSpeed := 25;
t := GetSystemTime;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(x, y, TPA, 2500137, MSX1, MSY1, MSX2, MSY2, 5);
Temp := TPAtoATPAex(TPA, 40, 40);
SortATPASize(Temp, True);
h := High(Temp);
for z := 0 to h do
begin
MiddleTPAex(Temp[z], x, y);
MMouse(x, y, 5, 5);
Result := IsUpText('melt');
if Result then
break;
Wait(100);
end;
if Result then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, True);
WriteLn('Found the furnace in '+IntToStr(((GetSystemTime) - t)- 100)+' msecs');
end;
if not Result then
WriteLn('Couldn'#39't find a furnace');
MouseSpeed := MouseSpeed2;
end;
procedure LetsMakeBars;
var
Deg2: Integer;
begin
if not LoggedIn then Exit;
AntiRandoms;
GameTab(4);
Deg2 := (97+random(6));
case Random(4) of
0: begin
SetAngle(False);
MakeCompass(IntToStr(Deg2));
end;
1: begin
SetAngle(True);
MakeCompass(IntToStr(Deg2));
end;
2: begin
MakeCompass(IntToStr(Deg2));
SetAngle(False);
end;
3: begin
MakeCompass(IntToStr(Deg2));
SetAngle(True);
end;
end;
LocateFurnace;
WaitForBar;
ChooseOption('X');
Wait(1200 + random(300));
TypeSend(Message3);
DRDebug('Typing in number of bars');
TellMeSt00f;
MarkTime(w);
AntiBan;
WaitTimes;
Lvled := False;
repeat
Wait(1000+random(2000));
OopsWeGainedALvl;
if (Lvled) then
begin
SetRun(False);
Loads := Loads + 1;
Bars := Bars + BarVar;
ReportVars[1] := ReportVars[1] + BarVar;
Exit;
end;
AntiRandoms;
RespondAll;
until(TimeFromMark(w) >= (ww)) or
(not(FindDTM(Ore, x, y, MIX1, MIY1, MIX2, MIY2)));
SetRun(False);
Lvled := False;
Loads := Loads + 1;
Bars := Bars + BarVar;
ReportVars[1] := ReportVars[1] + BarVar;
end;
procedure WalkBackToBank;//Iron Man and modded by me
var
RockBack: integer;
begin
AntiRandoms;
RockBack := DTMFromString('78DA636C656260B06000036608C5D01867C82' +
'007A41981F83F1030B661AAC90DD686AB0101C6764C35F1D18AA8' +
'6A9A806A8C51D57839C9A3AA6904AA31415513E38AAA06009F000' +
'C9B');
end;
if not (FindDTM(RockBack,x, y, 527, 5, 588, 104)) then
if not DTMRotated(WalkTo1, x, y, 527, 5, 628, 104) then
if not DTMRotated(WalkBack1, x, y, 527, 5, 628, 104) then
begin
DRDebug('Unable to use proper ways of walking so resorting to co-ord clicking');
Mouse(566, 82, 6, 6, True);
GetMousePos(x, y);
DRDebug('Click on map at '+IntToStr(x)+', '+IntToStr(y)+'.');
end;
Disguise('Walking back to bank');
Mouse(x+5, y+5, 5, 5, true);
FFlag(Random(3));
Wait(Random(500));
if FindSymbol(x, y, 'bank') then
begin
Mouse(x, y, 5, 5, true);
FFlag(0);
Wait(Random(1000));
Exit;
end;
if not FindSymbol(x, y, 'bank') then
begin
if not (FindDTM(BankDTM, x, y, MMX1, MMY1, MMX2, MMY2)) then
if not DTMRotated(BankDDTM, x, y, 535, 4, 634, 96) then
begin
WriteLn('Didn'#39't find the bank, next player');
NextPlayer(False);
SRLRandomsReport;
MyProgress;
FreeDDTMs
Exit;
end;
Mouse(x+5, y+5, 5, 5, true);
FFlag(0);
Wait(Random(500));
end;
FreeDDTMs;
FreeDTM(RockBack);
AntiRandoms;
end;
{-------------------End of Iron Man's 1337ness :'(--------------------}
procedure Siggy;
begin
ClearDebug;
WriteLn(' _ __ ');
Wait(200);
WriteLn(' | | _ ___ \/ ___ ');
Wait(200);
WriteLn(' _| | | '#39'___| / __| ');
Wait(200);
WriteLn('/ _ | | | \__ \ ');
Wait(200);
WriteLn('\_ _ | |_| |___/ ');
Wait(200);
WriteLn(' ');
Wait(200);
WriteLn(' SMELTER!!! ');
end;
procedure MyProgress;
var
D: Integer;
begin
S := GetSkillInfo('Smithing', False);
D := S - L;
NextLvl := XPTillNextLevel('smithing');
WriteLn('<<<<<<<<<<<<<<DR'#39's Al Kharid Smelter>>>>>>>>>>>>>>');
WriteLn('<<<<<<<<<<<<<<<<<<<Version '+IntToStr(Version)+'.'+IntToStr(Version2)+'>>>>>>>>>>>>>>>>>>>>');
WriteLn(Padr('< '+TimeRunning+'!', 48)+' >');
WriteLn(Padr('< ',48)+' >');
WriteLn(Padr('< '+(Players[CurrentPlayer].Nick)+'''s Progress:',48)+' >');
WriteLn(Padr('< ',48)+' >');
WriteLn(Padr('< Using '+(Players[CurrentPlayer].Strings[0])+' bars, we'#39've...',48)+' >');
WriteLn(Padr('< Gained '+IntToStr(D)+' levels.',48)+' >');
WriteLn(Padr('< So we are now '+IntToStr(S)+' smithing!',48)+' >');
WriteLn(Padr('< Done '+IntToStr(Loads)+' loads.',48)+' >');
WriteLn(Padr('< Made '+IntToStr(Bars)+' bars.',48)+' >');
WriteLn(Padr('< We are '+IntToStr(NextLvl)+' XP from the next level.',48)+' >');
WriteLn(Padr('< And we'#39've performed '+IntToStr(AntiBanned)+' antibans',48)+' >');
WriteLn(Padr('< ',48)+' >');
WriteLn(Padr('< Thanks for using!',48)+' >');
WriteLn(Padr('< Post up all proggies!',48)+' >');
WriteLn('<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>');
end;
procedure TellMeSt00f;
var
Left: Integer;
begin
Left := ((Players[CurrentPlayer].Integers[0])-(Loads));
case Random(4) of
0: Disguise('Al Kharid Bar Smelter');
1: Disguise('Done '+IntToStr(Loads)+' Loads');
2: Disguise(TimeRunning);
3: Disguise(+IntToStr(Left)+' Left');
end;
end;
begin
{Siggy;
Wait(2500);
SetupSRL;
SafeInitForm;
SafeShowFormModal;
ScriptID := '767';
SRLID := Edit3.text; //Enter it in the form or DIE!
SRLPassword := Edit4.text; //^^ well... not die as such
DeclarePlayers;
LoadBankDTM;
ActivateClient;
repeat
Loads := 0;
Bars := 0;
Checked := False;
DTMs;
GetVarAmmounts;
Disguise('Al Kharid Bar Smelter');
Wait(1000+random(500));
LoginPlayer;
WriteLn(+(Players[CurrentPlayer].Name)+' is logging in');
ReportVars[3] := ReportVars[3] + 1; //I wonder what that one is...
MarkTime(t);
L := GetSkillInfo('Smithing', False);
repeat;
OpenUpBank;
WithdrawFromBank;
InventCheck;
WalkToFurnace;
LetsMakeBars;
WalkBackToBank;
SleepThatPlayer;
MyProgress;
TellMeSt00f;
SendSRLReport;
AntiRandoms;
until (Loads >= Players[CurrentPlayer].Integers[0]);
Logout;
Wait(60000+random(360000));
FreeDTMs;
NextPlayer(False);
SRLRandomsReport;
WriteLn(+(Players[CurrentPlayer].Name)+' is logging in');
until(False);}
end.
-Tsn.
EDIT: Don't feel attacked, there are
a lot of SRL Members who make those mistakes:p