SCAR Code:
program DNASmilther;
{}{ ___ _ _ }{}
{}{ |.--\ | \ || /\ }{}
{}{ || \\ ||\\ || //\\ }{}
{}{ || || || \\ || //__\\ }{}
{}{ ||__// || \\|| //----\\ }{}
{}{ |___/ || \_| // \\ }{}
{}{ _______ }{}
{}{/.-----.\ || || __||__ || }{}
{}{\\______ || --..-- ||___ _-_ /\ }{}
{}{ `-----.\ /\ /\ || || || |.--.\ || \\ //\\ }{}
{}{ _______\\ //\\//\\ || || || || || ||_// || }{}
{}{/-------./ // \/ \\ || || || || || \\___ || }{}
{Thanks to WT-Fakawi, LordGreggreg1, Boreas, and Rs-Monkey, and to
anyone else that helped, remind me(i've been working on this too long to
remember everyone) }
{}{ INSTRUCTIONS }{}
{}{ 1. Start in West Fally Bank. }{}
{}{\_/`\_/`\_/`\_/`\_/`\_/`\_/`\_/`\_/`\_/`\_/`\_/`\_/`\_/`\_/`\}{}
{}{ wow that was easy }{}
{}{|^_^|^_^|^_^|^_^|^_^|^_^|^_^|^_^|^_^|^_^|^_^|^_^|^_^|^_^|^_^|}{}
{.include srl/srl.scar}
{.Include SRL/SRL/Extended/xAutoTalk.SCAR}
{.Include SRL/SRL/Extended/xAntiban.SCAR}
var
Anvil,Bars,Xamine,Exitit:integer;
RockColor,Cuser,Smithed,Smelted:integer;
DidRandomHappen: Boolean;
var AllBars:integer;
var SubPoints: array[0..2] of TDTMPointDef;
var MainPoint : TDTMPointDef;
var MasterTDTM,RoadTDTM: TDTM;
var TheDTM,RoadDTM:Integer;
CGx, CGy,DirtRoadColor,BridgeColor: Integer;
WhichAngle: Extended;
MyTBox : tbox;
var
MyTPA : TPointArray;
TempTPA : TPoint;
Memitems1, Memitems2 : TBox;
i : integer;
var
DNASmilther : TForm;
Label1 : TLabel;
Active : TLabel;
lblusern : TLabel;
Label2 : TLabel;
lblnick : TLabel;
lblloads : TLabel;
lblactive : TLabel;
lblbar : TLabel;
lbluser : TLabel;
GroupBox1 : TGroupBox;
btnstart : TButton;
cbBar : TComboBox;
ednick : TEdit;
edpass : TEdit;
eduser : TEdit;
Cbactive : TComboBox;
edloads : TEdit;
Add : TButton;
btndelete : TButton;
btnback : TButton;
btnfwd : TButton;
ProgressBar1 : TProgressBar;
type
TOre = record //as in T-Ore
orenames : Array of string;
orecolors : Array of integer;
oreamounts : Array of integer;
end;
procedure AddUser;
begin
SetArrayLength(Players, GetArrayLength(Players) + 1);
Players[GetArrayLength(Players) - 1].Name := 'New Name';
Players[GetArrayLength(Players) - 1].Pass := 'New Pass';
Players[GetArrayLength(Players) - 1].Nick := 'New Nick';
Players[GetArrayLength(Players) - 1].Active := True;
Players[GetArrayLength(Players) - 1].Integer1 := 0;
Players[GetArrayLength(Players) - 1].String1 := 'New Bar';
end;
procedure Inititate(Sender: TObject);
begin
lblUser.Caption := IntToStr(cUser);
Players[cUser].Nick := ednick.Text;
Players[cUser].Name := eduser.Text;
Players[cUser].Pass := edpass.Text;
Players[cUser].integer1 := (strtoint(edloads.Text));
Players[cUser].String1 := Cbbar.text;
if (cbactive.Text = 'True') then
Players[cUser].Active := True
else;
if (cbactive.Text = 'False') then
begin
Players[cUser].Active := False;
end;
cUser := GetArrayLength(Players) - 1;
end;
procedure CreateUser(Sender: TObject);
begin
Players[cUser].Nick := ednick.text;
Players[cUser].Name := eduser.Text;
Players[cUser].Pass := edpass.Text;
Players[cUser].integer1 := (strtoint(edloads.Text));
Players[cUser].String1 := Cbbar.text;
if (cbactive.Text = 'True') then
Players[cUser].Active := True
else;
if (cbactive.Text = 'False') then
begin
Players[cUser].Active := False;
end;
AddUser;
cUser := GetArrayLength(Players) - 1;
lblUser.Caption := IntToStr(cUser);
edloads.Text := inttostr(Players[cUser].integer1);
ednick.text := Players[cUser].Nick;
eduser.Text := Players[cUser].Name;
edpass.Text := Players[cUser].Pass;
cbbar.text := Players[cUser].String1;
if (Players[cUser].Active) then
cbactive.Text := 'True'
else;
if (Players[cUser].Active= false) then
cbactive.Text := 'False';
end;
procedure ForwardUser(Sender: TObject);
begin
Players[cUser].Nick := ednick.Text;
Players[cUser].Name := eduser.Text;
Players[cUser].Pass := edpass.Text;
Players[cUser].integer1 := strtoint(edloads.Text);
Players[cUser].String1 := Cbbar.text;
if (cbactive.Text = 'True') then
Players[cUser].Active := True
else;
if (cbactive.Text = 'False') then
begin
Players[cUser].Active := False;
end;
if (cUser + 1 > GetArrayLength(Players) - 1) then
cUser := 0
else
cUser := cUser + 1;
lblUser.Caption := IntToStr(cUser);
edloads.Text := inttostr(Players[cUser].integer1);
ednick.Text := Players[cUser].Nick;
eduser.Text := Players[cUser].Name;
edpass.Text := Players[cUser].Pass;
cbbar.text :=Players[cUser].String1;
if (Players[cUser].Active) then
cbactive.Text := 'True'
else;
if (Players[cUser].Active= false) then
cbactive.Text := 'False';
end;
procedure BackUser(Sender: TObject);
begin
Players[cUser].Nick := ednick.Text;
Players[cUser].Name := eduser.Text;
Players[cUser].Pass := edpass.Text;
Players[cUser].integer1 := strtoint(edloads.Text);
Players[cUser].String1 := Cbbar.text;
if (cbactive.Text = 'True') then
Players[cUser].Active := True
else;
if (cbactive.Text = 'False') then
begin
Players[cUser].Active := False;
end;
if (cUser - 1 < 0) then
cUser := GetArrayLength(Players) - 1
else
cUser := cUser - 1;
lblUser.Caption := IntToStr(cUser);
edloads.Text := inttostr(Players[cUser].integer1);
ednick.Text := Players[cUser].Nick;
eduser.Text := Players[cUser].Name;
edpass.Text := Players[cUser].Pass;
cbbar.text := Players[cUser].String1;
if (Players[cUser].Active) then
cbactive.Text := 'True'
else
cbactive.Text := 'False';
end;
procedure DeleteUser(Sender: TObject);
var
int, na, ni, str: string;
ac: Boolean;
begin
int := inttostr(Players[GetArrayLength(Players) - 1].integer1);
na := Players[GetArrayLength(Players) - 1].Name;
ni := Players[GetArrayLength(Players) - 1].Nick;
ac := Players[GetArrayLength(Players) - 1].Active;
str := Players[GetArrayLength(Players) - 1].string1;
Players[cUser].integer1 := strtoint(int);
Players[cUser].Name := na;
Players[cUser].Nick := ni;
Players[cUser].Active := ac;
Players[cuser].String1 := str;
SetArrayLength(Players, GetArrayLength(Players) - 1);
if (cUser + 1 > GetArrayLength(Players) - 1) then
cUser := 0
else
cUser := cUser + 1;
lblUser.Caption := IntToStr(cUser);
edloads.Text := inttostr(Players[cUser].integer1);
ednick.Text := Players[cUser].Nick;
eduser.Text := Players[cUser].Name;
edpass.Text := Players[cUser].Pass;
cbbar.text := Players[GetArrayLength(Players) - 1].string1;
if (Players[cUser].Active) then
cbactive.Text := 'True'
else
cbactive.Text := 'False';
end;
procedure Start(Sender: TObject);
begin
lblUser.Caption := IntToStr(cUser);
edloads.Text := inttostr(Players[cUser].integer1);
ednick.Text := Players[cUser].Nick;
eduser.Text := Players[cUser].Name;
edpass.Text := Players[cUser].Pass;
cbbar.text := Players[cuser].string1;
if (Players[cUser].Active) then
cbactive.Text := 'True'
else
cbactive.Text := 'False';
end;
procedure initform;
begin
DNASmilther := CreateForm;
DNASmilther.Left := 243;
DNASmilther.Top := 11;
DNASmilther.BorderStyle := bsSingle;
DNASmilther.Caption := 'DNASmilther';
DNASmilther.ClientHeight := 400;
DNASmilther.ClientWidth := 700;
DNASmilther.Color := clBlack;
DNASmilther.Font.Color := clWindowText;
DNASmilther.Font.Height := -11;
DNASmilther.Font.Name := '@SimHei';
DNASmilther.Font.Style := [];
DNASmilther.Visible := False;
DNASmilther.PixelsPerInch := 96;
Label1 := TLabel.Create(DNASmilther);
Label1.Parent := DNASmilther;
Label1.Left := 251;
Label1.Top := 203;
Label1.Width := 106;
Label1.Height := 15;
Label1.Caption := 'Type Of Bar To Make';
Active := TLabel.Create(DNASmilther);
Active.Parent := DNASmilther;
Active.Left := 300;
Active.Top := 78;
Active.Width := 30;
Active.Height := 15;
Active.Caption := 'Active';
lblusern := TLabel.Create(DNASmilther);
lblusern.Parent := DNASmilther;
lblusern.Left := 430;
lblusern.Top := 30;
lblusern.Width := 50;
lblusern.Height := 15;
lblusern.Caption := 'Username';
lblusern.Font.Color := clSkyBlue;
lblusern.Font.Height := -11;
lblusern.Font.Name := '@SimHei';
lblusern.Font.Style := [];
lblusern.ParentFont := False;
Label2 := TLabel.Create(DNASmilther);
Label2.Parent := DNASmilther;
Label2.Left := 430;
Label2.Top := 110;
Label2.Width := 49;
Label2.Height := 15;
Label2.Caption := 'Password';
Label2.Font.Color := clSkyBlue;
Label2.Font.Height := -11;
Label2.Font.Name := '@SimHei';
Label2.Font.Style := [];
Label2.ParentFont := False;
lblnick := TLabel.Create(DNASmilther);
lblnick.Parent := DNASmilther;
lblnick.Left := 430;
lblnick.Top := 190;
lblnick.Width := 22;
lblnick.Height := 15;
lblnick.Caption := 'Nick';
lblnick.Font.Color := clSkyBlue;
lblnick.Font.Height := -11;
lblnick.Font.Name := '@SimHei';
lblnick.Font.Style := [];
lblnick.ParentFont := False;
lblloads := TLabel.Create(DNASmilther);
lblloads.Parent := DNASmilther;
lblloads.Left := 430;
lblloads.Top := 270;
lblloads.Width := 30;
lblloads.Height := 15;
lblloads.Caption := 'Loads';
lblloads.Font.Color := clSkyBlue;
lblloads.Font.Height := -11;
lblloads.Font.Name := '@SimHei';
lblloads.Font.Style := [];
lblloads.ParentFont := False;
lblactive := TLabel.Create(DNASmilther);
lblactive.Parent := DNASmilther;
lblactive.Left := 50;
lblactive.Top := 30;
lblactive.Width := 36;
lblactive.Height := 15;
lblactive.Caption := 'Active?';
lblactive.Font.Color := clSkyBlue;
lblactive.Font.Height := -11;
lblactive.Font.Name := '@SimHei';
lblactive.Font.Style := [];
lblactive.ParentFont := False;
lblbar := TLabel.Create(DNASmilther);
lblbar.Parent := DNASmilther;
lblbar.Left := 50;
lblbar.Top := 100;
lblbar.Width := 17;
lblbar.Height := 15;
lblbar.Caption := 'Bar';
lblbar.Font.Color := clSkyBlue;
lblbar.Font.Height := -11;
lblbar.Font.Name := '@SimHei';
lblbar.Font.Style := [];
lblbar.ParentFont := False;
lbluser := TLabel.Create(DNASmilther);
lbluser.Parent := DNASmilther;
lbluser.Left := 640;
lbluser.Top := 15;
lbluser.Width := 32;
lbluser.Height := 15;
lbluser.Caption := inttostr(cuser);
lbluser.Font.Color := clSkyBlue;
lbluser.Font.Height := -11;
lbluser.Font.Name := '@SimHei';
lbluser.Font.Style := [];
lbluser.ParentFont := False;
GroupBox1 := TGroupBox.Create(DNASmilther);
GroupBox1.Parent := DNASmilther;
GroupBox1.Left := 22;
GroupBox1.Top := 172;
GroupBox1.Width := 322;
GroupBox1.Height := 115;
GroupBox1.Caption := 'Player Controls';
GroupBox1.Color := clNavy;
GroupBox1.Ctl3D := True;
GroupBox1.ParentColor := False;
GroupBox1.ParentCtl3D := False;
GroupBox1.TabOrder := 19;
btnstart := TButton.Create(DNASmilther);
btnstart.Parent := DNASmilther;
btnstart.Left := 300;
btnstart.Top := 330;
btnstart.Width := 102;
btnstart.Height := 34;
btnstart.Caption := 'Start';
btnstart.ModalResult := 1;
btnstart.TabOrder := 8;
cbBar := TComboBox.Create(DNASmilther);
cbBar.Parent := DNASmilther;
cbBar.Left := 49;
cbBar.Top := 120;
cbBar.Width := 197;
cbBar.Height := 23;
cbBar.Color := clSkyBlue;
cbBar.ItemHeight := 15;
cbBar.TabOrder := 9;
cbBar.Text := 'Bronze';
cbBar.Items.Add('Bronze');
cbBar.Items.Add('Iron');
cbBar.Items.Add('Silver');
cbBar.Items.Add('Steel');
cbBar.Items.Add('Gold');
cbBar.Items.Add('Mith');
cbBar.Items.Add('Addy');
cbBar.Items.Add('Rune');
ednick := TEdit.Create(DNASmilther);
ednick.Parent := DNASmilther;
ednick.Left := 430;
ednick.Top := 210;
ednick.Width := 165;
ednick.Height := 23;
ednick.Color := clSkyBlue;
ednick.TabOrder := 10;
ednick.Text := 'Nick';
edpass := TEdit.Create(DNASmilther);
edpass.Parent := DNASmilther;
edpass.Left := 430;
edpass.Top := 130;
edpass.Width := 165;
edpass.Height := 23;
edpass.Color := clSkyBlue;
edpass.TabOrder := 11;
edpass.Text := 'Pass';
eduser := TEdit.Create(DNASmilther);
eduser.Parent := DNASmilther;
eduser.Left := 430;
eduser.Top := 50;
eduser.Width := 165;
eduser.Height := 23;
eduser.Color := clSkyBlue;
eduser.TabOrder := 12;
eduser.Text := 'Username';
Cbactive := TComboBox.Create(DNASmilther);
Cbactive.Parent := DNASmilther;
Cbactive.Left := 50;
Cbactive.Top := 50;
Cbactive.Width := 197;
Cbactive.Height := 23;
Cbactive.Color := clSkyBlue;
Cbactive.ItemHeight := 15;
Cbactive.TabOrder := 13;
Cbactive.Text := 'True';
Cbactive.Items.Add('True');
Cbactive.Items.Add('False');
edloads := TEdit.Create(DNASmilther);
edloads.Parent := DNASmilther;
edloads.Left := 430;
edloads.Top := 290;
edloads.Width := 165;
edloads.Height := 23;
edloads.Color := clSkyBlue;
edloads.TabOrder := 14;
edloads.Text := '0';
Add := TButton.Create(DNASmilther);
add.onclick := @createuser;
Add.Parent := DNASmilther;
Add.Left := 81;
Add.Top := 222;
Add.Width := 102;
Add.Height := 34;
Add.Caption := 'Add';
Add.TabOrder := 15;
btndelete := TButton.Create(DNASmilther);
btndelete.onclick := @Deleteuser;
btndelete.Parent := DNASmilther;
btndelete.Left := 181;
btndelete.Top := 222;
btndelete.Width := 102;
btndelete.Height := 34;
btndelete.Caption := 'Delete';
btndelete.TabOrder := 16;
btnback := TButton.Create(DNASmilther);
btnback.onclick := @backuser;
btnback.Parent := DNASmilther;
btnback.Left := 34;
btnback.Top := 222;
btnback.Width := 49;
btnback.Height := 34;
btnback.Caption := '<<';
btnback.TabOrder := 17;
btnfwd := TButton.Create(DNASmilther);
btnfwd.onclick := @forwarduser;
btnfwd.Parent := DNASmilther;
btnfwd.Left := 279;
btnfwd.Top := 222;
btnfwd.Width := 49;
btnfwd.Height := 34;
btnfwd.Caption := '>>';
btnfwd.TabOrder := 18;
ProgressBar1 := TProgressBar.Create(DNASmilther);
ProgressBar1.Parent := DNASmilther;
ProgressBar1.Left := 17;
ProgressBar1.Top := 333;
ProgressBar1.Width := 205;
ProgressBar1.Height := 23;
ProgressBar1.TabOrder := 20;
end;
procedure SafeInitForm;
var
c: TVariantArray;
begin
setarraylength(c, 0);
ThreadSafeCall('InitForm', c);
end;
procedure ShowFormModal;
begin
DNASmilther.ShowModal;
end;
procedure SafeShowFormModal;
var
c: TVariantArray;
begin
setarraylength(c, 0);
ThreadSafeCall('ShowFormModal', c);
end;
procedure setupform;
begin
Safeinitform;
SafeShowFormModal;
end;
procedure Signature;
begin
ClearDebug;
writeln(' DNA Smilther - By:Dan Cardin ');
writeln(' ______ __ __ ');
writeln('| ___ \ / \ / / /\ ');
writeln('| | \ \ / /\ \ / / / \ ');
writeln('| | \ \ / / \ \ / / / /\ \ ');
writeln('| | / / / / \ \/ / / /__\ \ ');
writeln('| |___/ / / / \ / / /----\ \ ');
writeln('|______/ /_/ \/ /_/ \_\');
wait(3000 + random(750));
end;
procedure LoadBmps;
begin
Xamine := BitmapFromString(13, 13, 'z78DA33301889C00D091023' +
'4EAA999498432DF7D0CE6DD4328D16B1300A8801007921C979');
Anvil := BitmapFromString(1, 23, '433418433E3E433E3E4844444' +
'641414C47474844444C47474C47474F4A48544E4E5953535C5656' +
'665F5E665F5E665F5E4844444844444844444F4A48524B4B524B4' +
'B4B3C1B');
end;
Procedure Login;
begin
ClearDebug;
ActivateClient;
Wait(3000 +random(3000));
if(not(LoggedIn))then
LoginPlayer;
Writeln('You have successfully logged in.');
wait(3000+random(1000));
CheckUserNicks;
end;
procedure Compass;
begin
SetRun(true);
Writeln('Run is turned on.');
Wait (200+random(50));
HighestAngle;
Writeln('Angle is hightened.');
MakeCompass('N');
Writeln('Compass is set to north.');
Wait (1000+random(200));
SetChat('Off', 1);
Wait(1000+random(500));
SetChat('Off', 2);
Wait(1000+random(500));
SetChat('On', 3);
Wait(1000+random(500));
end;
procedure GetOre(ore : string);
var
Bars : TOre; //the variable that holds what we should get
i : integer;
begin
case ore of
'bronze' : begin
Bars.orenames := ['in', 'opper']; //tin, copper.
Bars.orecolors := [7960962, 4032748];
Bars.oreamounts := [14, 14];
end;
'iron' : begin
Bars.orenames := ['ron']; //iron
Bars.orecolors := [1646131];
Bars.oreamounts := [28];
end;
'steel' : begin
Bars.orenames := ['ron', 'oal']; //iron, coal
Bars.orecolors := [2240332, 1585453];
Bars.oreamounts := [9, 18];
end;
'mithril': begin
Bars.orenames := ['ith', 'oal']; //mith, coal
Bars.orecolors := [5715253, 1585453];
Bars.oreamounts := [5, 20];
end;
'adamant': begin
Bars.orenames := ['ddy', 'oal']; //addy, coal
Bars.orecolors := [5267534, 1585453];
Bars.oreamounts := [4, 24];
end;
'runite' : begin
Bars.orenames := ['une', 'oal']; //rune, coal
Bars.orecolors := [8482648, 1585453];
Bars.oreamounts := [3, 24];
end;
'silver' : begin
Bars.orenames := ['ilver']; //silver
Bars.orecolors := [12169134];
Bars.oreamounts := [28];
end;
'gold' : begin
Bars.orenames := ['old']; //gold
Bars.orecolors := [1816029];
Bars.oreamounts := [28];
end;
end;
OpenBankQuiet('feb');
if PinScreen then NextPlayer(false);
if not(PinScreen)then begin FixBank; DepositAll; end;
for i := 0 to GetArrayLength(Bars.orenames) - 1 do
begin
if FindObj(x,y,Bars.orenames[i],Bars.orecolors[i],5)then
begin
Mouse(x, y, 2, 2, False);
ChooseOption(x, y, 'draw X');
Wait(3000 + Random(300));
TypeSend(inttostr(Bars.oreamounts[i]));
end;
Wait(1000 + random(1000));
end;
CloseBank;
end;
procedure WalkToSmelter;
var Step,tries:integer;
begin
Step := DTMFromString('78DA63EC60606008614001E9F622609A11CA6' +
'76C25524D3801355D44AA0921424D10116A0208A8E924424D3B11' +
'6A5A89541344845D61F8D50000A8A91310');
repeat
If not FindDTM(Step,x,y,849, 207,798, 245) then
begin
tries:=tries+1
if tries >=5 then NextPlayer(true);
end;
until FindDTM(Step,x,y,849, 207,798, 245)
begin
Mouse(x,y,3,3,true);
FFlag(3);
if(FindSymbol(x,y,'funace')) or FindDTM(Step,x,y,798, 254,851, 203)then
begin
Mouse(x,y,2,2,true);
FFlag(3);
end;
end;
end;
function Smelt:Boolean;
begin
MakeCompass('E');
if(FindObj(x,y,'urnace',1451652,5))then
begin
result:=true
Wait(1000+random(500));
ChooseOption(x,y,'x');
Wait(1000+random(500));
HitKeys(true);
MarkTime(Mark)
repeat
if InChat('ou retrieve a bar of')then
Smelted:=Smelted+1
until TimeFromMark(Mark)>=60000
exitit:=1
end;
end;
procedure WalkToBank;
var Step1,Bank1,Bank2,tries:integer;
begin
Step1 := DTMFromString('78DA63EC60606008614001E9F622609A11CA6' +
'76C25524D3801355D44AA0921424D10116A0208A8E924424D3B11' +
'6A5A89541344845D61F8D50000A8A91310');
Bank1 := DTMFromString('78DA6314606060106500035608C5F0E70F130' +
'317906604E2FF40C0C88BA9E6ED5B06B81A106094C06F0E588D18' +
'A69A3367B0982386AAE6EE5D34359240420455CDD7AF686A406E1' +
'64655F3EF1F1FAA1A41C26A004D4414E1');
Bank2 := DTMFromString('78DA6314646060106600035608C570F72E030' +
'317906604E2FF40C0C8076408A2AAF9FA15A1060418B931D5209B' +
'0356C389A9E6CF1F2654359244D82504240450D5FCFBC787AA460' +
'C53CD9E4DD351D400005C1B12B0');
repeat
If not FindDTM(Step1,x,y,736, 244,710, 197) then
begin
tries:=tries+1
if tries >=5 then NextPlayer(true);
end;
until FindDTM(Step1,x,y,736, 244,710, 197)
begin
Mouse(x,y,3,3,true);
FFlag(3);
end
if FindSymbol(x,y,'bank') or
FindDTM(Bank1,x,y,MMX1, MMY1, MMX2, MMY2)or
FindDTM(Bank2,x,y,MMX1, MMY1, MMX2, MMY2)then
begin
Mouse(x,y+5,2,2,true);
FFlag(3);
end;
end;
procedure WalkToSmithy;
var LadderThing,tries:integer;
begin
LadderThing := DTMFromString('78DA6394626060106200035608C510A401A11' +
'981F83F10304A001902B8D580695922D58812A14682801A90BC38' +
'116A08D905F2BB180135F2986A6000AE06242F42400DC81C49026' +
'A2430FD8EA1461A48481150A380DF3D3C400C00B9B30ADF');
repeat
If not FindDTM(LadderThing,x,y,MMX1, MMY1, MMX2, MMY2) then
begin
tries:=tries+1
if tries >=5 then NextPlayer(true);
end;
until FindDTM(LadderThing,x,y,MMX1, MMY1, MMX2, MMY2)
begin
Mouse(x-30,y,2,2,true);
FFlag(3);
end;
end;
procedure WalkToVarrok;
var EndOfWall,WierdLadder,tries:integer;
begin
if(not(LoggedIn))then
Exit;
WierdLadder := DTMFromString('78DA630C676060B0624001AEF2109A11CA670' +
'C0512B604D48401090B026A4288546346404D38116A2281842901' +
'355144F81DA4C686809A0822D44411F63B007E6D0A95');
EndOfWall := DTMFromString('78DA631463606010654001EB1776836946289' +
'F51044808A2AA79F2E10BAA1A4922D44803096122D48812502301' +
'24C408A81125420DC82E21026AC488F09714A6BFD0C310004C311' +
'BBD');
repeat
If not FindDTM(WierdLadder,x,y,MMX1, MMY1, MMX2, MMY2) or FindSymbol(x,y,'water')then
begin
tries:=tries+1
if tries >=5 then NextPlayer(true);
end;
until FindDTM(WierdLadder,x,y,MMX1, MMY1, MMX2, MMY2) or FindSymbol(x,y,'water')
begin
Mouse(x+50,y,2,2,true);
FFlag(3);
end;
tries:=0
repeat
If not FindDTM(EndOfWall,x,y,MSX1,MSY1,MSX2,MSY2) then
begin
tries:=tries+1
if tries >=5 then NextPlayer(true);
end;
until FindDTM(EndOfWall,x,y,MSX1,MSY1,MSX2,MSY2)
begin
Mouse(x,y,2,2,true);
FFlag(3);
if FindColorSpiralTolerance(x,y,5855584,MSX1,MSY1,MSX2,MSY2,5) then
begin
Mouse(x,y,2,2,true);
FFlag(3);
end;
if FindColorTolerance(x,y,8161159,MSX1,MSY1,MSX2,MSY2,5)then
Mouse(x,y,2,2,false);
if FindBitmap(Xamine,x,y)then
begin
Mouse(x,y,2,2,true);
Mouse(x,y,2,2,true);
end;
RadialRoadWalk(FindDirtRoadColor, 402, 420, 70, 0, 0);
Flag;
RadialRoadWalk(FindDirtRoadColor, 382, 411, 73, 0, 0);
Flag;
RadialRoadWalk(FindDirtRoadColor, 93, 111, 68, 0, 0);
Flag;
RadialRoadWalk(FindDirtRoadColor, 108, 141, 72, 0, 0);
Flag;
RadialRoadWalk(FindDirtRoadColor, 102, 132, 69, 0, 0);
Flag;
RadialRoadWalk(FindDirtRoadColor, 121, 155, 62, 0, 0);
Flag;
RadialRoadWalk(FindDirtRoadColor, 88, 121, 69, 0, 0);
Flag;
RadialRoadWalk(FindDirtRoadColor, 49, 105, 73, 0, 0);
Flag;
Mouse(715, 83,20,20,true);
end;
end;
procedure AssembleDTM;
begin
MainPoint .x:=821;
MainPoint .y:=242;
MainPoint .areasize:=0;
MainPoint .areashape:=0;
MainPoint .color:=DirtRoadColor;
MainPoint .tolerance:=0;
SubPoints[0].x:=823;
SubPoints[0].y:=256;
SubPoints[0].areasize:=1;
SubPoints[0].areashape:=0;
SubPoints[0].color:=WaterColor;
SubPoints[0].tolerance:=0;
SubPoints[1].x:=823;
SubPoints[1].y:=230;
SubPoints[1].areasize:=1;
SubPoints[1].areashape:=0;
SubPoints[1].color:=WaterColor;
SubPoints[1].tolerance:=0;
SubPoints[2].x:=801;
SubPoints[2].y:=239;
SubPoints[2].areasize:=1;
SubPoints[2].areashape:=0;
SubPoints[2].color:=DirtRoadColor;
SubPoints[2].tolerance:=0;
SubPoints[3].x:=843;
SubPoints[3].y:=241;
SubPoints[3].areasize:=1;
SubPoints[3].areashape:=0;
SubPoints[3].color:=DirtRoadColor;
SubPoints[3].tolerance:=0;
MasterTDTM.MainPoint := MainPoint;
MasterTDTM.SubPoints := SubPoints;
TheDTM:= AddDTM(MasterTDTM);
end;
procedure ResumeVarrokWalk;
begin
MainPoint.x:=152;
MainPoint.y:=108;
MainPoint.areasize:=0;
MainPoint.areashape:=0;
MainPoint.color:=RoadColor;
MainPoint.tolerance:=0;
SubPoints[0].x:=103;
SubPoints[0].y:=90;
SubPoints[0].areasize:=0;
SubPoints[0].areashape:=0;
SubPoints[0].color:=DirtRoadColor;
SubPoints[0].tolerance:=0;
SubPoints[1].x:=130;
SubPoints[1].y:=93;
SubPoints[1].areasize:=0;
SubPoints[1].areashape:=0;
SubPoints[1].color:=RoadColor;
SubPoints[1].tolerance:=0;
SubPoints[2].x:=126;
SubPoints[2].y:=101;
SubPoints[2].areasize:=0;
SubPoints[2].areashape:=0;
SubPoints[2].color:=RockColor;
SubPoints[2].tolerance:=0;
RoadTDTM.MainPoint := MainPoint;
RoadTDTM.SubPoints := SubPoints;
RoadDTM := AddDTM(RoadTDTM);
end;
procedure ResumeAgain;
var VarrokBank:integer;
begin
if(not(LoggedIn))then
Exit;
VarrokBank := DTMFromString('78DA63FCC2C8C0F09F010E803C86B76F116C2' +
'610FD0BC89267C4A9064CFF04B2C409A8F90A64B133E2B78B08F7' +
'0000221A106B');
RoadColor:=FindRoadColor;
RadialRoadWalk(RoadColor, 77, 113, 71, 0, 0);
Flag;
RadialRoadWalk(RoadColor, 59, 107, 74, 0, 0);
Flag;
RadialRoadWalk(RoadColor, 382, 432, 72, 0, 0);
Flag;
begin
MyTBox.x1 := 776;
MyTBox.y1 := 152;
MyTBox.x2 := 858;
MyTBox.y2 := 252;
if FindColorTolerance(x,y,3956588,MyTBox.x1,MyTBox.y1,MyTBox.x2,MyTBox.y2,5) then
Mouse(x,y,2,2,true);
end;
if FindDtmRotated(VarrokBank, x, y, MMX1, MMY1, MMX2, MMY2, -PI*2, PI*2, 0.2,WhichAngle) then
begin
Mouse(x,y,2,2,true);
end;
end;
procedure OpenBankForHammer;
var Hammer:integer;
begin
Hammer := DTMFromString('78DA6314676060906140014E3A0C0C46409A1' +
'188FF0301A33090A1C0801530C2687E20A141408D1090D026A046' +
'0C48A81150230524E409A89105125204D428020909026A5481841' +
'801354A4498A30C248409A811C58C0BACE12349408D0C11E680CC' +
'50C4AF0600E56207F7');
if(not(LoggedIn))then
Exit;
OpenBankQuiet('vwb');
if PinScreen then NextPlayer(false);
if not(PinScreen)then
begin
FixBank;
DepositAll;
end;
if(FindDtm(Hammer,x,y,MSX1,MSY1,MSX2,MSY2))then
Mouse(x,y,2,2,true);
end;
Procedure GetBars;
var BronzeBar,IronBar,SteelBar,MithBar,AddyBar:integer;
RuneBar,SilverBar,GoldBar,a:integer;
begin
BronzeBar := DTMFromString('78DA63146560601064400141B9950C46409A1' +
'188FF0301A32490C1C58006189148202D0F247808A851C0B40B43' +
'8D0C901025A006E41E09026A4066C81050C30B24A409A86103129' +
'204D4B0020911026A40E1C78F5F0D004ED10738');
IronBar := DTMFromString('78DA63946060601065400129B1310C46409A1' +
'188FF030123279021CE8006189148200D52234D400D2F909025A0' +
'461848C813500372B3020135D244D805B24792801A2520214684B' +
'F8409A801B9978F801A6520C14F408D0A61BB006B4207D6');
SteelBar := DTMFromString('78DA8D914B0A80300C44D3AD8288A2D662FD5' +
'52FE025BBF6C43AEED42E2681BE74F1C804627A1171F2A9334639' +
'D00DDE8532053E9DFCCABC889EA773122703BC62CE4C9C1258885' +
'3012B711A2010C7021B7106C53E4E91350123719E9C813841718B' +
'1DB00AA75564D5C4F1FCA637EBD109C7');
MithBar := DTMFromString('78DA6394666060106240013E3E850C46409A1' +
'188FF0301231F9021C8800618914820CD05244489502349400DC8' +
'1E19026A4066C8115003728B2C0135BC40428A801A5922D428020' +
'931026A548084300135AA448433480D1F11EEE1C1AF0600460807' +
'E7');
AddyBar := DTMFromString('78DA8DCFCB0D80201045D16165347E3144143' +
'5C612AC8426ECBF047DECD4856F26E1C2E22480F122D2C86BE219' +
'E5C06EB02E8C2971A8E533E651EC39D2119321BDC20CC4A4F78CC' +
'4A43F4DC4582410E3909918AFB82B28FEB5208E980DB1C4EC48AB' +
'3015312B52FC9B1B0C4907F3');
RuneBar := DTMFromString('78DA63146660601062400141B9950C46409A1' +
'188FF0301231790C1CF800618914820CD8E690E861A5620214284' +
'1A09026A388184140135BC40429A801A907B6509A81123C21C492' +
'2DC0C32438C801A5922C24701480810A18697801A1920C18D5F0D' +
'00435B07E2');
SilverBar := DTMFromString('78DA63146160601067400173E6AC603002D28' +
'C40FC1F081839800C510634C08844026956202141841A19026AB8' +
'81841C013502404281801A90BF1409A801B95796801A907B2509A' +
'85120227C406A0409A8910612FCF8D500005DCF0840');
GoldBar := DTMFromString('78DA631467606010644001E7660B301801694' +
'620FE0F048C3C986A181898E06A4080911348883060000C351268' +
'0A18D1D4F003092902760903091974352CA86A40F6C8A299C2C88' +
'AAA0664862401BB1489F09732901042F316139A7B5480041F01BF' +
'CB03096EFC6A005C300A0D');
if(not(LoggedIn))then
Exit;
OpenBankQuiet('vwb');
if PinScreen then NextPlayer(false);
if not(PinScreen)then
begin
FixBank;
DepositAll;
end;
begin
case Players[CurrentPlayer].string1 of
'bronze' : begin
a:=BronzeBar;
end;
'iron' : begin
a:=IronBar
end;
'steel' : begin
a:=SteelBar
end;
'mithril': begin
a:=MithBar
end;
'adamant': begin
a:=AddyBar
end;
'runite' : begin
a:=RuneBar
end;
'silver' : begin
a:=SilverBar
end;
'gold' : begin
a:=GoldBar
end;
end;
if(FindDtm(a,x,y,MSX1,MSY1,MSX2,MSY2))then
begin
Mouse(x, y, 2, 2, False);
ChooseOption(x, y, 'draw X');
Wait(3000 + Random(300));
HitKeys(true);
end;
end;
CloseBank;
HighestAngle;
MakeCompass('n');
end;
function Smith:Boolean;
var xAnvil, yAnvil:integer;
begin
AllBars := DTMFromString('78DA8D914B0A80300C44D3AD8288A2D662FD5' +
'5CFDAB527AEE34EED6212E84B178F4C20661411279FBA6294846E' +
'F012CA54F80CF22BF3227A99CFC99C02F08A392B716A60234E03E' +
'CC4E980401C0B1CC49914FB3845D602CCC4797226E204C52D4EC0' +
'2A9C5E91D512C7F39BDEDF9F0A94');
If FindDTM(AllBars,x,y,MIX1, MIY1, MIX2, MIY2)then
begin
Mouse(x,y,2,2,true);
if FindDeformed(xAnvil, yAnvil, Anvil, MSX1+30, MSY1, MSX2, MSY2)then
begin
result:=true
Mouse(x,y,2,2,true);
end;
end else
Exit;
Exitit:=1
end;
function CustomAntiBan:boolean;
begin
case random(10) of
1:RandomRClick;
2:HitKeys(true);
3:PickUpMouse;
4:AlmostLogout;
5:DontBanMe(1);
6:ArrangeInv;
end;
result:=true
end;
procedure WalkToBankFromSmithy;
var LadderThing,tries:integer;
begin
LadderThing := DTMFromString('78DA6394626060106200035608C510A401A11' +
'981F83F10304A001902B8D580695922D58812A14682801A90BC38' +
'116A08D905F2BB180135F2986A6000AE06242F42400DC81C49026' +
'A2430FD8EA1461A48481150A380DF3D3C400C00B9B30ADF');
repeat
If not FindDTM(LadderThing,x,y,MMX1, MMY1, MMX2, MMY2) then
begin
tries:=tries+1
if tries >=5 then NextPlayer(true);
end;
until FindDTM(LadderThing,x,y,MMX1, MMY1, MMX2, MMY2)
begin
Mouse(x-30,y,2,2,true);
FFlag(3);
end;
if FindSymbol(x,y,'bank')then
begin
Mouse(x,y,2,2,true);
MakeCompass('w');
LowestAngle;
end;
end;
{/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
----------> Random Finding <----------
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/}
function FindFastRandoms: Boolean; //By WT-Fakawi.
var
i: Integer;
begin
for i := 1 to 8 do
begin
case I of
1: if FindDead then
Result := True;
2: if FindMod then
Result := True;
3: if FindMime then
Result := True;
4: if FindMaze then
Result := True;
5: if FindQuiz then
Result := True;
6: if FindDemon then
Result := True;
7: begin
if NoGameTab then
begin
Result := True;
Players[CurrentPlayer].loc := 'No GameTab';
Logout;
Exit;
end;
end;
7: begin
if InBlack then
begin
Result := True;
Players[CurrentPlayer].loc := 'InBlack';
Logout;
Exit;
end;
end;
8: RC;
end;
wait(1);
end;
if (Result = true) then
DidRandomHappen := true;
end;
///////////////////////////////////////////////////////////////////////////
procedure FindRandoms;
begin
FindFastRandoms;
FindNormalRandoms;
if (FindNormalRandoms) then
DidRandomHappen := true;
end;
procedure Proggy;
Var I:Integer;
begin
For I := 0 to HowManyPlayers - 1 Do
begin
ClearDebug;
Writeln('|| Worked For : ' + ScriptTime2(2));
Writeln('|| Smelted' + IntToStr(Smelted) + Players[CurrentPlayer].string1+ 'bars in all ');
Writeln('|| Smithed' +IntToStr(Smithed) + 'bars into items');
SRLRandomsReport;
Login;
end;
end;
BEGIN
Signature;
SetupSRL;
NewLine:=Newline
loadus;
Cuser:=0;
if (GetArrayLength(Players) = 0) then
AddUser;
Setupform;
Saveus;
ActivateClient;
Bars:=Players[CurrentPlayer].integer1
LoadBmps;
Login;
Compass;
repeat
GetOre(Players[CurrentPlayer].string1)
if not FindColorTolerance(x,y,4942983,MIX1, MIY1, MIX2, MIY2,10)then
Break;
WalkToSmelter;
exitit:=0
while Smelt do
begin
repeat
FindRandoms;
CustomAntiBan;
until exitit=1
end;
WalkToBank;
until (Smelted>=Bars);
WalkToVarrok;
WaterColor:=FindWaterColor;
BridgeColor:=FindBridgeColor;
DirtRoadColor:=FindDirtRoadColor;
AssembleDTM;
if FindDtmRotated(TheDTM, CGx, CGy, MMX1, MMY1, MMX2, MMY2, -PI*2, PI*2, 0.2,WhichAngle) then
begin
Mouse(x,y,2,2,true);
ResumeVarrokWalk;
if FindDtmRotated(RoadDTM, CGx, CGy, MMX1, MMY1, MMX2, MMY2, -PI*2, PI*2, 0.2,WhichAngle) then
begin
Mouse(x,y,2,2,true);
ResumeAgain;
end;
end
else NextPlayer(true);
OpenBankForHammer;
repeat
GetBars;
WalkToSmithy;
exitit:=0
repeat
while Smith do
begin
repeat
FindRandoms;
CustomAntiBan;
until exitit=1
Wait(1000+random(750));
Memitems1 := Inttobox(333, 39, 460, 317);
Memitems2 := Inttobox(256, 281, 314, 322);
FindColorsTolerance(MyTPA, 16777215, 6, 49, 513, 322, 0);
if GetArrayLength(MyTPA) = 0 then Writeln('couldn''t find color');
for i := 0 to GetArrayLength(MyTPA) - 1 do
begin
if ((not(IntInBox(MyTPA[i].x, MyTPA[i].y, Memitems1))) and (not(IntInBox(MyTPA[i].x, MyTPA[i].y, Memitems2)))) then
begin
if Distance(MyTPA[i].x, MyTPA[i].y, 513, 322) < Distance(TempTPA.x, TempTPA.y, 513, 322) then
begin
TempTPA.x := MyTPA[i].x;
TempTPA.y := MyTPA[i].y;
end;
end;
end;
Mouse(TempTPA.x, TempTPA.y-10, 0, 0, True);
Wait(3000);
if InChat('ou hammer the')then
Smithed:=Smithed+1
end;
until not FindDTM(AllBars,x,y,MIX1, MIY1, MIX2, MIY2)
WalkToBankFromSmithy;
until (Smithed>=Bars);
NextPlayer(true);
end.