SRL Archive - RS3 Outdated / Broken Scripts

Al Kharid Bar Smelter


Richard

2008-07-16 14:29:31

Right, so I haven't scripted in… well… quite a while. I thought I'd come back to SRL, see whathas happened and all that, then I remembered myscript I'd been working on for a while. As I haven't touched it in ages, all I know is that it runs, I have no idea whether it likes the revs and stuff, so just hope :).


So, what it does:

-Smelts in Al Kharid, don't know how quickly, it just does :).
-Uses some very advanced functions from friends of mine, you'll see in script (thanks all :))
-Uses 3… or maybe 4 different methods of walking, lets look… right DTMs, DDTMs, last resort co-ords, symbols. So yes 4 :D
-Smelts bars! (wow you'd never guess that), all except blurite (didn't think anyone would mass produce it to get use of this enough).
-Can run for more than an hour (don't know how long, I got bored watching to check for bugs, so I stopped it.
-SRL Player Form (love that form).
-My own little form (copy brackets from above, hehe).
-Antirandoms.
-Antiban.
-Sleeping.
-And all the other stuff you'd expect.

Note: The withdrawing is SRL's, and, no offence SRL, sometimes doesn't work properly, the script still runs, just has to walk back sometimes…


Does it work?

Wow! It does! Or at least for some period of time…


Stats?

Yes, it uses SRL stats, feel free to enter yours, I don't care if you can't be bothered, its ony stats after all.


Instructions:

In the script, sorry, can't be bothered to write them twice… well I could copy and paste, but this way it persuades people to download the script ;)

Note: You must take notice of the valid entries for bars, otherwise my script gets angry and green :o , not really, but it doesn't work, which isn't so great…



So, well, enjoy! :) (I missed alot of stuff on this post haven't I?).

EDIT: Attachng the script would probably help…

the scar noob

2008-07-16 18:11:37

Nice:D
I've been cleaning up your code for 30 mins now, still not done. I'm going to make your coding more efficient and post itthen back here..if I don't forget:p

-Tsn.

kenyu29

2008-07-17 12:13:56

It is a good script, but it doesn't find the bank… help?

jakeyboy29

2008-07-17 12:16:16

very nice one mate,

jakeyboy29

2008-07-17 14:02:33

gonna add smart?

Richard

2008-07-18 10:40:05

From: the scar noob
Nice:D
I've been cleaning up your code for 30 mins now, still not done. I'm going to make your coding more efficient and post itthen back here..if I don't forget:p

-Tsn.


Thanks, I know its not great, it wasn't completely finished when I released, I just hadn't touched it for so long, I did't want to screw it all up.

Thanks in advance :)

From: kenyu29
It is a good script, but it doesn't find the bank… help?


What problem does it have finding the bank, I messed with the DDTMs and I think it might have made it to hard to find the bank.

From: jakeyboy29
very nice one mate,


Thanks, hope to see a proggy in future ;)

From: jakeyboy29
gonna add smart?


I was gonna to post the smart one, but aparently smart was messed up so I didn't bother. I might add the smart later.


Thanks for all the replies :)

jakeyboy29

2008-07-18 12:13:29

ok its working now. but its very good as it is

!bezo!

2008-07-18 13:14:02

heres my little proggy, it sometimes miss clicks or over shoots the furnace. i think thats why it stopped. Ill send in another later


~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~ Iroki Smelter v1.09 ~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~ Time Running : 10 Minutes and 52 Seconds
~~ Bars smelted : 20

** Warning in FindFurnaceTPA: Couldn't find **
** Warning in FindFurnaceTPA: Couldn't find **
** Warning in FindFurnaceTPA: Couldn't find **
** Warning in FindFurnace: Couldn't find **

iroki_

2008-07-18 14:33:06

From: !bezo!
heres my little proggy, it sometimes miss clicks or over shoots the furnace. i think thats why it stopped. Ill send in another later


~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~ Iroki Smelter v1.09 ~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~ Time Running : 10 Minutes and 52 Seconds
~~ Bars smelted : 20

** Warning in FindFurnaceTPA: Couldn't find **
** Warning in FindFurnaceTPA: Couldn't find **
** Warning in FindFurnaceTPA: Couldn't find **
** Warning in FindFurnace: Couldn't find **


Hah i think that it's from my smither:)

Richard

2008-07-22 13:02:54

Ok, it currently won't work because Al Kharid has been updated, I'll work on it now, I might have to put SRLs bank finding in as right now it doesn't fine.

Also, are the furnaces still the same?

MylesMadness

2008-07-22 13:07:13

You released it. I'll try it later. I got some cannon balls to make.

Edit:It doesn't do cannon balls? Add that please
EditEdit:Sorry didn't see its outdated

the scar noob

2008-07-22 14:27:39

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

ShowerThoughts

2008-07-22 14:32:12

Dude Richard need a new bankopener? :p?

the scar noob

2008-07-22 16:55:48

From: Hermpie
Dude Richard need a new bankopener? :p?


Yes, I don't know who wrote that piece of shitty bank opener inside of his script:p (lol)

-Tsn.

SunDagger

2008-07-22 17:41:00

hey it finds the bank but doesnt open it, and then logs me out. help??

Richard

2008-07-23 09:13:29

From: SunDagger
hey it finds the bank but doesnt open it, and then logs me out. help??


Yeah, I didn't realise about the whole new Al Kharid stuff, it needs alot of editing, I may just get rid of this, even though hours has been spent on it, and try something else.

Thanks everyone who has helped, but it just seems too much to edit for something that only worked for a couple of hours.