SRL Archive - OSR Help

1/6 done smither


mmmvvvbbb

2013-03-06 01:40:31

Bare bones planned out script. I have yet to do most of the scripting. I would like feed back/suggestions for getting too and from the anvil. here is the code so far. I will update as I work on it. Just spent like 30 minutes planning everything.

bud_wis_er_420

2013-03-07 12:39:35

SPS walking is fairly acurate. And I would use ODTM as a failsafe.

Also here is my smelter script I'm building. And I haven't even opened a rs screen yet. Almost finish with the skeleton script. Then I will go in and fill in all the correct info(dtm's, colors, sps walk pts, etc) Then I will test and fix bugs and add failsafes as necessary. Maybe you can get some ideas from it
program new;
{$DEFINE SMART}
{$I SRL/SRL.Simba}
{$I SPS/SPS.simba}
{$i ObjectDTM\ObjDTMInclude.simba}

type
Item = record
Color, Tol, Bmp, Dtm, Amount, BankLoc: Integer;
Hue, Sat: Extended;
UpText: TStringArray;
end;

type
Bank = record
color, Tol, Bmp, Dtm: Integer;
Hue, Sat: Extended;
UpText: TStringArray;
BankPoints: TPointArray;
end;

type
Furnace = record
color, Tol, Bmp, Dtm: Integer;
Hue, Sat: Extended;
UpText: TStringArray;
FurnacePoints: TPointArray;
end;



var
// Item Type Vars
CopperOre, TinOre, IronOre, SilverOre, CoalOre, GoldOre, MithrilOre,
AdamantOre, RuneOre, SilverBar, SteelBar, GoldBar, CutSapphire, CutEmerald,
CutRuby, CutDiamond, CutOnyx, RingMould, NecklaceMould, BraceletMould,
AmuletMould, HolyMould, UnholyMould, SickleMould, TiaraMould: Item;

// Bank Type Vars
EdgevilleBank, AlKharidBank, FaladorBank, LumbridgeBank, ArdougneBank,
NeitiznotBank: Bank;

// Furnace Type Vars
EdgevilleFurnace, AlKharidFurnace, FaladorFurnace, LumbridgeFurnace,
ArdougneFurnace, NeitiznotFurnace: Furnace;

//Global vars
var
SpinT: Integer;
ItemsNeed: TStringArray;
Restart, Bug: Boolean;
BankPoints, FurnacePoints: TPointArray;



Const
{ -Location List-
Edgeville, AlKharid, Falador, Lumbridge, Ardougne, Neitiznot}

{ -Smelting List-
BronzeBar, IronBar, SilverBar, GoldBar, MithrilBar,
AdamantBar, RuneBar, CannonBallLong, CannonBallShort, SapphireRing,
EmeraldRing, RubyRing, DimondRing, DragonStoneRing, OnyxRing,
SapphireNecklace, EmeraldNecklace, RubyNecklace, DimondNecklace,
DragonStoneNecklace, OnyxNecklace, SapphireBracelet, EmeraldBracelet,
RubyBracelet, DimondBracelet, DragonStoneBracelet, OnyxBracelet,
SapphireAmulet, EmeraldAmulet, RubyAmulet, DimondAmulet, DragonStoneAmulet,
OnyxAmulet, HolySymbol, UnholySymbol, Sickle, Tiara}

Location = 'Faldor';
SmeltingWhat = 'GoldBar';


Debug = True;

Procedure DeclarePlayers;
begin
{*}{*}{*}{*}{*}{*}{*}{*}{*}{ USER SETUP }{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}
{*} //SRLStats_Username := ''; {*}
{*} //SRLStats_Password := ''; {*}
{*} {*}
{*} HowManyPlayers := 1; {*}
{*} CurrentPlayer := 0; {*}
{*} SetLength(Players, HowManyPlayers); {*}
{*} {*}
{*} Players[0].Name := ''; {*}
{*} Players[0].Pass := ''; {*}
{*} Players[0].Nick := ''; {*}
{*} Players[0].Pin := ''; {*}
{*} Players[0].Member := False; {*}
{*} Players[0].Active := True; {*}
{*} {*}
{*} {*}
{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}
{*}{*}{*}{*}{*}{*}{*}{*}{*}{ END SCRIPT SETUP }{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}
{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}
end;

Function rs_TakeScreen(s: string): Integer;
var
tpa: TPointArray;
TIA, TIA2, TIA3: TIntegerArray;
w, h: Integer;
atpa: T2DPointArray;
begin
Result := BitmapFromClient(MSX1, MSY1, MSX2, MSY2);
setBitmapSize(Result, 673, 350);
setLength(atpa, 3);

TPAFromBoxWrap(mmBox, atpa[0]);
FilterPointsDist(atpa[0], 0, 76, MMCX, MMCY);
TPAFromBoxWrap(IntToBox(MSCX - 13, MSCY - 20, MSCX + 13, MSCY + 20), ATPA[1]);
TPAFromTextWrap(s, statchars, w, h, atpa[2]);

GetColorsWrap(atpa[0], TIA);
TIA2 := ColorsFromTPA(ATPA[1], clRed);
TIA3 := ColorsFromTPA(ATPA[2], clRed);
OffsetTPA(atpa[0], Point(-35, -6));
OffsetTPA(atpa[2], Point(2, +336))
MergeATPAWrap(ATPA, TPA);

try
fastSetPixels(Result, TPA, TIA+TIA2+TIA3);
except
writeln('rs_TakeScreen: Failed to set pixels, prehaps shutdown reason is too long!');
end;
end;
// By Ollybest
Procedure rs_SaveScreenshot(reason, savePath: string);
var
bmp, x: Integer;
begin
if (not(loggedIn)) then
Exit;

bmp := rs_TakeScreen(reason);
if FileExists(savePath + ' [' + ToStr(x) +']' + '.png') then
while FileExists(savePath + ' [' + ToStr(x) + ']' + '.png') do
Inc(x);

try
SaveBitmap(bmp, savePath + ' [' + ToStr(x) + ']' + '.png');
except
writeln('rs_TakeScreenshot: Failed saving screenshot');
finally
FreeBitmap(bmp);
end;
end;

// By Ollybest
Procedure shutdown(s: string);
var
path, name: string;
begin
path := AppPath + 'Scripts\BudsGuildFisherBugImgs';
name := 'Shutdown - '+ TheDate(Date_Day)+ ' ';
if not DirectoryExists(Path) then
CreateDirectory(Path);
rs_SaveScreenshot(s, Path + Name);
end;

procedure SwitchWorlds;
begin
WaitFunc(@ExitToLobby, RandomRange(1000, 1200), RandomRange(8000, 10000));
ChangeWorld(RandomWorld(True,False));
WaitFunc(@loggedin, RandomRange(1000, 1200), RandomRange(1000, 30000));

while not ExitSquealOfFortune do
begin
wait(100);
end;
end;


Procedure PaintCross(x,y,col: Integer);
var
CTPA ,HighTPA, i, c: Integer;
TP: Tpoint;
TPA, NewTPA: TPointArray;
begin
SetLength(TPA, 104);
SetLength(NewTPA, Length(TPA));
//Draw right
TP := Point(x, y);
for CTPA:= 0 to 9 do
begin
TPA[CTPA] := TP;
TP := point(TP.x + 1, TP.y);
end;
TP := Point(x, y - 1);
for CTPA := 10 to 17 do
begin
TPA[CTPA] := TP;
TP := point(TP.x + 1, TP.y);
end;
TP := Point(x,y+1);
for CTPA:= 18 to 25 do
begin
TPA[CTPA] := TP;
TP := point(TP.x + 1, TP.y);
end;
//Draw down
TP := Point(x, y);
for CTPA := 26 to 35 do
begin
TPA[CTPA] := TP;
TP := point(TP.x, TP.y + 1);
end;
TP := Point(x + 1, y);
for CTPA := 36 to 43 do
begin
TPA[CTPA] := TP;
TP := point(TP.x, TP.y + 1);
end;
TP := Point(x - 1, y);
for CTPA := 44 to 51 do
begin
TPA[CTPA] := TP;
TP := point(TP.x, TP.y + 1);
end;
//Draw left
TP := Point(x, y);
for CTPA := 52 to 61 do
begin
TPA[CTPA] := TP;
TP := point(TP.x - 1, TP.y);
end;
TP := Point(x, y + 1);
for CTPA := 62 to 69 do
begin
TPA[CTPA] := TP;
TP := point(TP.x - 1, TP.y);
end;
TP := Point(x, y - 1);
for CTPA := 70 to 77 do
begin
TPA[CTPA] := TP;
TP := point(TP.x - 1, TP.y);
end;
//Draw up
TP := Point(x, y);
for CTPA:= 78 to 87 do
begin
TPA[CTPA] := TP;
TP := point(TP.x, TP.y - 1);
end;
TP := Point(x + 1, y);
for CTPA := 88 to 95 do
begin
TPA[CTPA] := TP;
TP := point(TP.x, TP.y - 1);
end;
TP := Point(x - 1, y);
for CTPA:= 96 to 103 do
begin
TPA[CTPA] := TP;
TP := point(TP.x, TP.y - 1);
end;
c := 0;
HighTPA := High(TPA)
for i := 0 to HighTPA do
begin
if not (TPA[i].x < MSX1 + 1) and
not (TPA[i].x > MSX2 - 1) and
not (TPA[i].y < MSY1 + 1) and
not (TPA[i].y > MSY2 - 1) then
begin
NewTPA[c] := TPA[i];
inc(c);
end;
end;

SetLength(NewTPA, c)
SMART_DrawDotsEx(False, NewTPA, col);
end;

Procedure WriteDebug(txt: string);
begin
if (Debug = True) then
WriteLn(txt);
end;

Function CheckLogin: Boolean;
begin
Result := False;
if not loggedin then
begin
if not loginplayer then
begin
Restart := True;
Result := True;
end;

SetAngle(SRL_ANGLE_HIGH);
end;

while not ExitSquealOfFortune do
begin
wait(100);
end;



end;

Function CheckPin: Boolean;
begin
Result := False;
if CheckLogin then Exit;
if(PinScreen)then
begin
if(Players[CurrentPlayer].Pin = '')then
begin
Writeln('We are at the pin screen and you didn''t enter a pin');
shutdown('bug');
if (Debug = False) then Logout;
Bug := True;
Exit;
end;
WriteDebug('Found Pin Screen');
InPin(Players[CurrentPlayer].Pin);
WriteDebug('Pin successfully entered');
if WaitFunc(@BankScreen, RandomRange(200, 220), RandomRange(1000, 1200)) then
begin
Result := True;
end;
end;
end;


(*
Looks uptext using 4 different methods. Returns True if found

*)
Function IsUpTextAdv(Text: TStringArray): Boolean;
var
TP : TPoint;
begin
Result := FindTextEx(TP.x,TP.y,Text,['UpChars'],MSX1,MSY1,MSX1+300,MSY1+30) or
FindTextEx(TP.x,TP.y,Text,['UpChars_s'],MSX1,MSY1,MSX1+300,MSY1+30) or
FindTextEx(TP.x,TP.y,Text,['UpCharsEx'],MSX1,MSY1,MSX1+300,MSY1+30) or
IsUpTextMultiCustom(Text);
end;


(*
Looks for both uptext and mouseover text. Returns True if found

*)
Function FindTextAdv(Text: TStringArray): Boolean;
var
x, y: Integer;
begin
if CheckLogin then Exit;
Result := False;
//Looks for uptext
if IsUpTextAdv(Text) then
begin
Result := True;
end else
begin
//Looks for Mouseover text
if FindTextEx(x, y, Text, ['UpCharsEx'], MSX1, MSY1, MIX2, MIY2) then
begin
Result := True;
end else
begin
WriteDebug('Did not Find ' + Text[0] + ' UpText');
end;
end;
end;

Procedure AntiBan;
var
i: Integer;
begin
if CheckLogin then Exit;
i := random(1000)
//CheckForText(CheckTextType, HopForChat);
case i of
111: begin
HoverMovingObject;
end;
222: begin
HoverSkill ('Fishing', False);
GameTab(tab_Inv);
end;
333:
begin
PickUpMouse;
end;
444:
begin
RandomRClick;
end;
555:
begin
ExamineInv;
end;
666:
begin
MMouseOffClient('random');
Wait(RandomRange(1000, 4000));
end;
777:
begin
RandomFKeys(True);
end;
888:
begin
MMouseOffClient('random');
Wait(RandomRange(5000, 8000));
end;
999:
begin
SmallRandomMouse;
end;
end;
end;

Procedure FindSpinTicketACA;
var
x, y, i, ct, tmpCTS: Integer;
box: TBox;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.11, 0.42);

{if (TurnOnUrns = True) then
ct := 3
else} ct := 1;

for i := ct to 28 do
begin
box := InvBox(i);
if ExistsItem(i) or FindColorTolerance(x, y, 4088717, box.x1, box.y1, box.x2, box.y2, 2) then
begin
if FindColorTolerance(x, y, 4088717, box.x1, box.y1, box.x2, box.y2, 2) then
begin
InvMouse(i, 2);
if IsUpTextAdv(['Clai','im sp','spin']) then
begin
WriteDebug('TicketUpText was found with UpText');
ClickMouse2(1);
inc(SpinT);
end else
begin
WriteDebug('Did not find TicketUpText with UpText, trying Mouseover Text');
if FindTextEx(x, y, ['Clai','im sp','spin'], ['UpCharsEx'], MSX1, MSY1, MIX2, MIY2) then
begin
WriteDebug('TicketUpText was found with Mouseover Text');
ClickMouse2(1);
inc(SpinT);
end else
begin
WriteDebug('Did not Find TicketUpText');
end;
end;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

Procedure CheckForSpinTicket;
var
x, y: Integer;
begin
if CheckLogin then Exit;
if FindSpinTicketObj(x, y) then
begin
MMouse(x -5, y- 3, 10, 6);
if IsUpTextAdv(['Clai','im sp','spin']) then
begin
WriteDebug('TicketUpText was found with UpText');
ClickMouse2(1);
inc(SpinT);
end else
begin
WriteDebug('Did not find TicketUpText with UpText, trying Mouseover Text');
if FindTextEx(x, y, ['Clai','im sp','spin'], ['UpCharsEx'], MSX1, MSY1, MIX2, MIY2) then
begin
WriteDebug('TicketUpText was found with Mouseover Text');
ClickMouse2(1);
inc(SpinT);
end else
begin
WriteDebug('Did not Find TicketUpText');
end;
end;
end else
begin
WriteDebug('SRL Function didn''t find a ticket, trying my way');
FindSpinTicketACA;
end;
end;

//by LeJingle!!!
Procedure ConvertTime64(timeMS:int64; var YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND:Integer);
var
x: int64;
begin
x := timeMS;
(* Better to do the calculations in my opinion (especially for year) now,
* trying at run time usually Results in breaking/miscalculation.
* Hence, commented out [equilavent] expressions
*)
YEAR := x div (31536000000); // 1000 * 60 * 60 * 24 * 365 (1 year or 365 days)
x := x mod (31536000000);
MONTH := x div (2592000000); // 1000 * 60 * 60 * 24 * 30 (1 month or 30 days)
x := x mod (2592000000);
WEEK := x div (604800000); // 1000 * 60 * 60 * 24 * 7 (1 week or 7 days)
x := x mod (604800000);
DAY := x div (86400000); // 1000 * 60 * 60 * 24 (1 day or 24 hours)
x := x mod (86400000);
HOUR := x div (3600000); // 1000 * 60 * 60 (1 hour or 60 minutes)
x := x mod (3600000);
MINUTE := x div (60000); // 1000 * 60 (1 minute or 60 seconds)
x := x mod (60000);
SECOND := x div (1000); // 1000 (1 second, is in MS format now)
x := x mod (1000);
end;

Function MsToTime64(MS: int64): string;
var
STA: TVariantArray;
Time: array [0..6] of Integer;
i: Integer;
begin
Result := '';
STA := [' Years, ', ' Months, ', ' Weeks, ', ' Days, ', ' Hours, ',
' Minutes and ', ' Seconds', 0];
ConvertTime64(MS, Time[0], Time[1], Time[2], Time[3], Time[4], Time[5], Time[6]);
for i := 0 to 6 do
if (Time[i] > 0) or (STA[7]) or (i = 6) then
Result := Result + PadZ(IntToStr(Time[i]), STA[7]) + STA[i];
end;

Function GetMyLocation: string;
var
MyPos: TPoint;
BankBox, FurnaceBox: TBox;
begin
if CheckLogin then Exit;
Result := 'Failed';
MyPos := SPS_GetMyPos();

//Bank
case Lowercase(Location) of
'edgeville' : BankBox := IntToBox(0, 0, 0, 0);
'alkharid' : BankBox := IntToBox(0, 0, 0, 0);
'falador' : BankBox := IntToBox(0, 0, 0, 0);
'lumbridge' : BankBox := IntToBox(0, 0, 0, 0);
'ardougne' : BankBox := IntToBox(0, 0, 0, 0);
'neitiznot' :BankBox := IntToBox(0, 0, 0, 0);
end;

//Bank
case Lowercase(Location) of
'edgeville' : FurnaceBox := IntToBox(0, 0, 0, 0);
'alkharid' : FurnaceBox := IntToBox(0, 0, 0, 0);
'falador' : FurnaceBox := IntToBox(0, 0, 0, 0);
'lumbridge' : FurnaceBox := IntToBox(0, 0, 0, 0);
'ardougne' : FurnaceBox := IntToBox(0, 0, 0, 0);
'neitiznot' :FurnaceBox := IntToBox(0, 0, 0, 0);
end;

// Furnace
if (MyPos.x > FurnaceBox.x1) and (MyPos.x < FurnaceBox.x2) and
(MyPos.y > FurnaceBox.y1) and (MyPos.y < FurnaceBox.y2) then
begin
Result := 'Furnace';
Exit;
end;
// Bank
if (MyPos.x > BankBox.x1) and (MyPos.x < BankBox.x2) and
(MyPos.y > BankBox.x2) and (MyPos.y < BankBox.y2) then
begin
Result := 'Bank';
Exit;
end;
end;

Function WaitOptionExist(S: TStringArray; Time: Integer): Boolean;
var
T: Integer;
begin
Result := False;
T := GetSystemTime + Time;
while (GetSystemTime < T) do
begin
if (OptionsExist( S, False)) then
begin
Result := True;
Exit;
end;
Wait(20 + Random(10));
end;
end;

//Uses 3 dif methods to find Bank Item
function FindBankItem(var ItemLoc: Integer; Item: string; FindType: string): Boolean;
var
x, y, i, TPAL, ItemColor, ItemTol, ItemDtm, ItemBmp, tmpCTS: Integer;
TPA: TPointArray;
Box: TBox;
TVA: TVariantArray;
ItemHue, ItemSat: Extended;
ItemUpText: TStringArray;
FoundItem: Boolean;
begin
Result := False;
if CheckLogin then Exit;
case Item of
'CopperOre' : begin
ItemColor := CopperOre.Color
ItemTol := CopperOre.Tol;
ItemHue := CopperOre.Hue;
ItemSat := CopperOre.Sat;
ItemDtm := CopperOre.Dtm;
ItemBmp := CopperOre.Bmp;
ItemUpText := CopperOre.UpText;
end;
'TinOre' : begin
ItemColor := TinOre.Color
ItemTol := TinOre.Tol;
ItemHue := TinOre.Hue;
ItemSat := TinOre.Sat;
ItemDtm := TinOre.Dtm;
ItemBmp := TinOre.Bmp;
ItemUpText := TinOre.UpText;
end;
'IronOre' : begin
ItemColor := IronOre.Color
ItemTol := IronOre.Tol;
ItemHue := IronOre.Hue;
ItemSat := IronOre.Sat;
ItemDtm := IronOre.Dtm;
ItemBmp := IronOre.Bmp;
ItemUpText := IronOre.UpText;
end;
'SilverOre' : begin
ItemColor := SilverOre.Color
ItemTol := SilverOre.Tol;
ItemHue := SilverOre.Hue;
ItemSat := SilverOre.Sat;
ItemDtm := SilverOre.Dtm;
ItemBmp := SilverOre.Bmp;
ItemUpText := SilverOre.UpText;
end;
'CoalOre' : begin
ItemColor := CoalOre.Color
ItemTol := CoalOre.Tol;
ItemHue := CoalOre.Hue;
ItemSat := CoalOre.Sat;
ItemDtm := CoalOre.Dtm;
ItemBmp := CoalOre.Bmp;
ItemUpText := CoalOre.UpText;
end;
'GoldOre' : begin
ItemColor := GoldOre.Color
ItemTol := GoldOre.Tol;
ItemHue := GoldOre.Hue;
ItemSat := GoldOre.Sat;
ItemDtm := GoldOre.Dtm;
ItemBmp := GoldOre.Bmp;
ItemUpText := GoldOre.UpText;
end;
'MithrilOre' : begin
ItemColor := MithrilOre.Color
ItemTol := MithrilOre.Tol;
ItemHue := MithrilOre.Hue;
ItemSat := MithrilOre.Sat;
ItemDtm := MithrilOre.Dtm;
ItemBmp := MithrilOre.Bmp;
ItemUpText := MithrilOre.UpText;
end;
'AdamantOre' : begin
ItemColor := AdamantOre.Color
ItemTol := AdamantOre.Tol;
ItemHue := AdamantOre.Hue;
ItemSat := AdamantOre.Sat;
ItemDtm := AdamantOre.Dtm;
ItemBmp := AdamantOre.Bmp;
ItemUpText := AdamantOre.UpText;
end;
'RuneOre' : begin
ItemColor := RuneOre.Color
ItemTol := RuneOre.Tol;
ItemHue := RuneOre.Hue;
ItemSat := RuneOre.Sat;
ItemDtm := RuneOre.Dtm;
ItemBmp := RuneOre.Bmp;
ItemUpText := RuneOre.UpText;
end;
'SteelBar' : begin
ItemColor := SteelBar.Color
ItemTol := SteelBar.Tol;
ItemHue := SteelBar.Hue;
ItemSat := SteelBar.Sat;
ItemDtm := SteelBar.Dtm;
ItemBmp := SteelBar.Bmp;
ItemUpText := SteelBar.UpText;
end;
'SilverBar' : begin
ItemColor := SilverBar.Color
ItemTol := SilverBar.Tol;
ItemHue := SilverBar.Hue;
ItemSat := SilverBar.Sat;
ItemDtm := SilverBar.Dtm;
ItemBmp := SilverBar.Bmp;
ItemUpText := SilverBar.UpText;
end;
'GoldBar' : begin
ItemColor := GoldBar.Color
ItemTol := GoldBar.Tol;
ItemHue := GoldBar.Hue;
ItemSat := GoldBar.Sat;
ItemDtm := GoldBar.Dtm;
ItemBmp := GoldBar.Bmp;
ItemUpText := GoldBar.UpText;
end;
'RingMould' : begin
ItemColor := RingMould.Color
ItemTol := RingMould.Tol;
ItemHue := RingMould.Hue;
ItemSat := RingMould.Sat;
ItemDtm := RingMould.Dtm;
ItemBmp := RingMould.Bmp;
ItemUpText := RingMould.UpText;
end;
'NecklaceMould' : begin
ItemColor := NecklaceMould.Color
ItemTol := NecklaceMould.Tol;
ItemHue := NecklaceMould.Hue;
ItemSat := NecklaceMould.Sat;
ItemDtm := NecklaceMould.Dtm;
ItemBmp := NecklaceMould.Bmp;
ItemUpText := NecklaceMould.UpText;
end;
'BraceletMould' : begin
ItemColor := BraceletMould.Color
ItemTol := BraceletMould.Tol;
ItemHue := BraceletMould.Hue;
ItemSat := BraceletMould.Sat;
ItemDtm := BraceletMould.Dtm;
ItemBmp := BraceletMould.Bmp;
ItemUpText := BraceletMould.UpText;
end;
'AmuletMould' : begin
ItemColor := AmuletMould.Color
ItemTol := AmuletMould.Tol;
ItemHue := AmuletMould.Hue;
ItemSat := AmuletMould.Sat;
ItemDtm := AmuletMould.Dtm;
ItemBmp := AmuletMould.Bmp;
ItemUpText := AmuletMould.UpText;
end;
'HolyMould' : begin
ItemColor := HolyMould.Color
ItemTol := HolyMould.Tol;
ItemHue := HolyMould.Hue;
ItemSat := HolyMould.Sat;
ItemDtm := HolyMould.Dtm;
ItemBmp := HolyMould.Bmp;
ItemUpText := HolyMould.UpText;
end;
'UnholyMould' : begin
ItemColor := UnholyMould.Color
ItemTol := UnholyMould.Tol;
ItemHue := UnholyMould.Hue;
ItemSat := UnholyMould.Sat;
ItemDtm := UnholyMould.Dtm;
ItemBmp := UnholyMould.Bmp;
ItemUpText := UnholyMould.UpText;
end;
'SickleMould' : begin
ItemColor := SickleMould.Color
ItemTol := SickleMould.Tol;
ItemHue := SickleMould.Hue;
ItemSat := SickleMould.Sat;
ItemDtm := SickleMould.Dtm;
ItemBmp := SickleMould.Bmp;
ItemUpText := SickleMould.UpText;
end;
'TiaraMould' : begin
ItemColor := TiaraMould.Color
ItemTol := TiaraMould.Tol;
ItemHue := TiaraMould.Hue;
ItemSat := TiaraMould.Sat;
ItemDtm := TiaraMould.Dtm;
ItemBmp := TiaraMould.Bmp;
ItemUpText := TiaraMould.UpText;
end;
'CutSapphire' : begin
ItemColor := CutSapphire.Color
ItemTol := CutSapphire.Tol;
ItemHue := CutSapphire.Hue;
ItemSat := CutSapphire.Sat;
ItemDtm := CutSapphire.Dtm;
ItemBmp := CutSapphire.Bmp;
ItemUpText := CutSapphire.UpText;
end;
'CutEmerald' : begin
ItemColor := CutEmerald.Color
ItemTol := CutEmerald.Tol;
ItemHue := CutEmerald.Hue;
ItemSat := CutEmerald.Sat;
ItemDtm := CutEmerald.Dtm;
ItemBmp := CutEmerald.Bmp;
ItemUpText := CutEmerald.UpText;
end;
'CutRuby' : begin
ItemColor := CutRuby.Color
ItemTol := CutRuby.Tol;
ItemHue := CutRuby.Hue;
ItemSat := CutRuby.Sat;
ItemDtm := CutRuby.Dtm;
ItemBmp := CutRuby.Bmp;
ItemUpText := CutRuby.UpText;
end;
'CutDiamond' : begin
ItemColor := CutDiamond.Color
ItemTol := CutDiamond.Tol;
ItemHue := CutDiamond.Hue;
ItemSat := CutDiamond.Sat;
ItemDtm := CutDiamond.Dtm;
ItemBmp := CutDiamond.Bmp;
ItemUpText := CutDiamond.UpText;
end;
'CutOnyx' : begin
ItemColor := CutOnyx.Color
ItemTol := CutOnyx.Tol;
ItemHue := CutOnyx.Hue;
ItemSat := CutOnyx.Sat;
ItemDtm := CutOnyx.Dtm;
ItemBmp := CutOnyx.Bmp;
ItemUpText := CutOnyx.UpText;
end;
end;

Box := IntToBox(MBX1, MBY1, MBX2, MBY2);
TVA := [ItemUpText];
if (Debug = True) then SMART_DrawBox(Box);

case FindType of
'Bmp' : begin
if not FindBitmapsSpiralTolerance(ItemBmp, x, y, TPA, MBX1, MBY1, MBX2, MBY2, 20) then
begin
WriteDebug('Did''t find any matching Bmp''s on whole bank screen');
if (Debug = True) then SMART_ClearCanvas;
end;
end;
'Dtm' : begin
if not FindDTMs(ItemDtm, TPA, MBX1, MBY1, MBX2, MBY2) then
begin
WriteDebug('Did''t find any matching Bmp''s on whole bank screen');
if (Debug = True) then SMART_ClearCanvas;
end;
end;
'ACA' : begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(ItemHue, ItemSat);

if not FindColorsTolerance(TPA, ItemColor, MBX1, MBY1, MBX2, MBY2, ItemTol) then
begin
WriteDebug('Did''t find any matching Bmp''s on whole bank screen');
if (Debug = True) then SMART_ClearCanvas;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
end;

TPAL := High(TPA);
if (Debug = True) then
begin
for i := 0 to TPAL do
begin
PaintCross(TPA[i].x, TPA[i].y, clRed);
end;
end;

for i := 0 to TPAL do
begin
MMouse(TPA[i].x, TPA[i].y, 0, 0);
if WaitFuncEx('FindTextAdv', TVA, RandomRange(100,150),RandomRange(900,1000)) then
begin
WriteDebug('Item found with Bmp on whole screen');
ItemLoc := BankPointToBankIndex(TPA[i]);
Result := True;
if (Debug = True) then SMART_ClearCanvas;
Exit;
end;
end;
WriteDebug('Did''t find Bmp on whole bank screen, trying single slot checker');


FoundItem := False;
for i := 1 to 40 do
begin
Box := BankIndexToMSBox(i);
if (Debug = True) then SMART_ClearCanvas;
if (Debug = True) then SMART_DrawBox(Box);
case FindType of
'Bmp' : begin
if FindBitmapToleranceIn(ItemBmp, x, y, Box.x1, Box.y1, Box.x2, Box.y2, 50) then
begin
WriteDebug('Found matching Bmp in slot' + IntToStr(i));
FoundItem := True;
if (Debug = True) then SMART_ClearCanvas;
end;
end;
'Dtm' : begin
if FindDTM(ItemDtm, x, y, Box.x1, Box.y1, Box.x2, Box.y2) then
begin
WriteDebug('Found matching Dtm in slot' + IntToStr(i));
FoundItem := True;
if (Debug = True) then SMART_ClearCanvas;
end;
end;
'ACA' : begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(ItemHue, ItemSat);

if FindColorTolerance(x, y, ItemColor, Box.x1, Box.y1, Box.x2, Box.y2, ItemTol) then
begin
WriteDebug('Found matching Color in slot' + IntToStr(i));
FoundItem := True;
if (Debug = True) then SMART_ClearCanvas;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
end;

if (FoundItem = True) then
begin
MouseBankSlot(i, 2);
if WaitFuncEx('FindTextAdv', TVA, RandomRange(100,150),RandomRange(900,1000)) then
begin
WriteDebug('Item found using single slot checker');
ItemLoc := BankPointToBankIndex(TPA[i]);
Result := True;
if (Debug = True) then SMART_ClearCanvas;
Exit;
end;
end;
end;
WriteDebug('Did''t find Item using single slot checker');
if (Debug = True) then SMART_ClearCanvas;
end;



function FindItemInBank(Item: string; var ItemLoc: Integer): Boolean;
var
x, y, ItemColor, ItemTol, ItemDtm, ItemBmp: Integer;
ItemHue, ItemSat: Extended;
ItemUpText: TStringArray;
begin
if CheckLogin then Exit;
//Tries to find Item with Bmp
if FindBankItem(ItemLoc, Item, 'Bmp') then
begin
WriteDebug('Found ' + Item + ' with Bmp');
Result := True;
Exit;
end else WriteDebug('Did''t find ' + Item + ' with Bmp');
//Tries to find Item with DTM
if FindBankItem(ItemLoc, Item, 'Dtm') then
begin
WriteDebug('Found ' + Item + ' with Dtm');
Result := True;
Exit;
end else WriteDebug('Did''t find ' + Item + ' with Dtm');
//Tries to find Item with Color Tol 2
if FindBankItem(ItemLoc, Item, 'ACA') then
begin
WriteDebug('Found ' + Item + ' with ACA');
Result := True;
Exit;
end else WriteDebug('Did''t find ' + Item + ' with ACA');
end;

function StoreBankItem(Item: string): Integer;
var
ItemLoc: Integer;
begin
if CheckLogin then Exit;
case Item of
'CopperOre' : ItemLoc := CopperOre.BankLoc;
'TinOre' : ItemLoc := TinOre.BankLoc;
'IronOre' : ItemLoc := IronOre.BankLoc ;
'SilverOre' : ItemLoc := SilverOre.BankLoc;
'CoalOre' : ItemLoc := CoalOre.BankLoc;
'GoldOre' : ItemLoc := GoldOre.BankLoc;
'MithrilOre' : ItemLoc := MithrilOre.BankLoc;
'AdamantOre' : ItemLoc := AdamantOre.BankLoc;
'RuneOre' : ItemLoc := RuneOre.BankLoc;
'SteelBar' : ItemLoc := SteelBar.BankLoc ;
'SilverBar' : ItemLoc := SilverBar.BankLoc;
'GoldBar' : ItemLoc := GoldBar.BankLoc;
'RingMould' : ItemLoc := RingMould.BankLoc;
'NecklaceMould' : ItemLoc := NecklaceMould.BankLoc;
'BraceletMould' : ItemLoc := BraceletMould.BankLoc;
'AmuletMould' : ItemLoc := AmuletMould.BankLoc;
'HolyMould' : ItemLoc := HolyMould.BankLoc;
'UnholyMould' : ItemLoc := UnholyMould.BankLoc;
'SickleMould' : ItemLoc := SickleMould.BankLoc;
'TiaraMould' : ItemLoc := TiaraMould.BankLoc;
'CutSapphire' : ItemLoc := CutSapphire.BankLoc;
'CutEmerald' : ItemLoc := CutEmerald.BankLoc;
'CutRuby' : ItemLoc := CutRuby.BankLoc;
'CutDiamond' : ItemLoc := CutDiamond.BankLoc;
'CutOnyx' : ItemLoc := CutOnyx.BankLoc;
end;

if not(ItemLoc = 0) then
begin
WriteDebug('Found stored ' + Item + ' in slot ' + IntToStr(ItemLoc));
Result := ItemLoc;
end else
begin
if FindItemInBank(Item, ItemLoc) then
begin
case Item of
'CopperOre' : CopperOre.BankLoc := ItemLoc;
'TinOre' : TinOre.BankLoc := ItemLoc;
'IronOre' : IronOre.BankLoc := ItemLoc;
'SilverOre' : SilverOre.BankLoc := ItemLoc;
'CoalOre' : CoalOre.BankLoc := ItemLoc;
'GoldOre' : GoldOre.BankLoc := ItemLoc;
'MithrilOre' : MithrilOre.BankLoc := ItemLoc;
'AdamantOre' : AdamantOre.BankLoc := ItemLoc;
'RuneOre' : RuneOre.BankLoc := ItemLoc;
'SteelBar' : SteelBar.BankLoc := ItemLoc ;
'SilverBar' : SilverBar.BankLoc := ItemLoc;
'GoldBar' : GoldBar.BankLoc := ItemLoc;
'RingMould' : RingMould.BankLoc := ItemLoc;
'NecklaceMould' : NecklaceMould.BankLoc := ItemLoc;
'BraceletMould' : BraceletMould.BankLoc := ItemLoc;
'AmuletMould' : AmuletMould.BankLoc := ItemLoc;
'HolyMould' : HolyMould.BankLoc := ItemLoc;
'UnholyMould' : UnholyMould.BankLoc := ItemLoc;
'SickleMould' : SickleMould.BankLoc := ItemLoc;
'TiaraMould' : TiaraMould.BankLoc := ItemLoc;
'CutSapphire' : CutSapphire.BankLoc := ItemLoc;
'CutEmerald' : CutEmerald.BankLoc := ItemLoc;
'CutRuby' : CutRuby.BankLoc := ItemLoc;
'CutDiamond' : CutDiamond.BankLoc := ItemLoc;
'CutOnyx' : CutOnyx.BankLoc := ItemLoc;
end;
WriteDebug(Item + ' stored in bank slot ' + IntToStr(ItemLoc));
Result := ItemLoc;
end else
begin
WriteDebug(Item + ' not found in bank');
WriteDebug('Item storage failed');
shutdown('Report bug');
if (Debug = False) then Logout;
Bug := True;
Exit;
end;
end;
end;

function WithdrawFromBank(ItemLoc, Amount: Integer): Boolean;
var
amtS: string;
x, y, c, amtI: Integer;
begin
Result := False;
if CheckLogin then Exit;
if not BankScreen then
begin
WriteDebug('Not at bankScreen');
Exit;
end;

// Check we have more than withdraw amount in bank.
amtI := GetBankIndexItemAmount(ItemLoc);
if (Amount < amtI) then
begin
WriteDebug('You only have ' + IntToStr(amtI) + ' items in bank slot ' + IntToStr(ItemLoc) + ' and you need ' + IntToStr(amtI));
Bug := True;
Exit;
end;

//Rightclick Bankslot
MouseBankSlot(ItemLoc, 0);
// Loop: wait till find uptext or repeated `0 times
while FindTextEx(x, y, ['ithdr', 'Withd', 'thdra'], ['UpCharsEx'], MSCX, MSCY, MIX2, MIY2) or (c > 10) do
begin
wait(RandomRange(200, 220));
inc(c);
end;



// Looks for amount numbers in the option menu
amtS := IntToStr(Amount)
if FindTextEx(x, y, [amtS], ['UpCharsEx'], MSCX, MSCY, MIX2, MIY2) then
begin
WriteDebug('Withdrawing ' + amtS);
if ChooseOption(amtS) then
begin
WriteDebug('Withdrawing ');
Result := True;
end;
end else
begin
//Didn't find numbers, now will look for X option
WriteDebug('Withdrawing ' + amtS);
if ChooseOption('X') then
begin
wait(RandomRange(1000, 1500));
SendKeys(amtS,5,5);
wait(RandomRange(500, 1000));
Result := True;
end;
end;
end;

function GetBankItem(Item: string; Amount: Integer): Boolean;
var
x, y, ItemLoc: Integer;
begin
if CheckLogin then Exit;
Result := False;
ItemLoc := StoreBankItem(Item); //Gets Item location
if WithdrawFromBank(ItemLoc, Amount) then // withdraws item
Result := True;

end;

function DepositInv: Boolean;
begin

end;

function DoBanking: Boolean;
var
ItemL, i, amt: Integer;
begin
if CheckLogin then Exit;
Result := False;
if not DepositInv then
begin
WriteDebug('Failed at depositing inv');
Exit;
end;

//Gets the amount number for next item needed
ItemL := High(ItemsNeed);
for i := 0 to ItemL do
begin
case ItemsNeed[i] of
'CopperOre' : amt := CopperOre.Amount;
'TinOre' : amt := TinOre.Amount;
'IronOre' : amt := IronOre.Amount ;
'SilverOre' : amt := SilverOre.Amount;
'CoalOre' : amt := CoalOre.Amount;
'GoldOre' : amt := GoldOre.Amount;
'MithrilOre' : amt := MithrilOre.Amount;
'AdamantOre' : amt := AdamantOre.Amount;
'RuneOre' : amt := RuneOre.Amount;
'SteelBar' : amt := SteelBar.Amount ;
'SilverBar' : amt := SilverBar.Amount;
'GoldBar' : amt := GoldBar.Amount;
'RingMould' : amt := RingMould.Amount;
'NecklaceMould' : amt := NecklaceMould.Amount;
'BraceletMould' : amt := BraceletMould.Amount;
'AmuletMould' : amt := AmuletMould.Amount;
'HolyMould' : amt := HolyMould.Amount;
'UnholyMould' : amt := UnholyMould.Amount;
'SickleMould' : amt := SickleMould.Amount;
'TiaraMould' : amt := TiaraMould.Amount;
'CutSapphire' : amt := CutSapphire.Amount;
'CutEmerald' : amt := CutEmerald.Amount;
'CutRuby' : amt := CutRuby.Amount;
'CutDiamond' : amt := CutDiamond.Amount;
'CutOnyx' : amt := CutOnyx.Amount;
end;

if not GetBankItem(ItemsNeed[i], amt) then // Gets bank Item
begin
WriteDebug('Failed at getting item from bank');
Exit;
end;
end;
Result := True;
end;

function FindTheBank: Boolean;
begin
if CheckLogin then Exit;
end;


function OpenTheBank: Boolean;
begin
if CheckLogin then Exit;
WriteDebug('Seaching for bank');

end;


function GoToBank: Boolean;
var
x, y, HPtsL: Integer;
SPSTP: TPoint;
begin
if CheckLogin then Exit;
Result := False;

if BankScreen then
begin
WriteDebug('Already inside bank');
Result := True;
Exit;
end;

if (GetMyLocation = 'Bank') then
begin
if OpenTheBank then
begin
Result := True;
Exit;
end;
end else WriteDebug('Not at bank, walking to it');

HPtsL := High(BankPoints);
if SPS_WalkPath(BankPoints) then
begin
if (GetMyLocation = 'Bank') then
begin
if OpenTheBank then
begin
Result := True;
Exit;
end;
end;
end else WriteDebug('SPS walkpath failed, seeing how close we are to bank');

if FindSymbol(x, y, 'Bank') then
begin
SPSTP := SPS_PosToMM(BankPoints[HPtsL]);
Mouse(SPSTP.x,SPSTP.y,1,1,1);
if WaitFunc(@FlagPresent,RandomRange(200,220), RandomRange(1000, 1200)) then
begin
WriteDebug('Successfully click bank location on MM');
end;
end else
begin
WriteDebug('Didn''t find bank symbol, trying to correct loction');
ClickNorth(SRL_ANGLE_HIGH);
if SPS_BlindWalk(BankPoints[HPtsL]) then
begin
SPSTP := SPS_PosToMM(BankPoints[HPtsL]);
Mouse(SPSTP.x,SPSTP.y,1,1,1);
if WaitFunc(@FlagPresent,RandomRange(200,220), RandomRange(1000, 1200)) then
begin
WriteDebug('Successfully click bank location on MM');
end;
end;

end;

if (GetMyLocation = 'Bank') then
if OpenTheBank then
begin
Result := True;
Exit;
end;

WriteDebug('SPS To bank failed, trying to find ObjDTM');
WriteDebug('SPS To bank failed, Ending char run');
WriteDebug('Note to self buld ObjDTM');
end;

function Smelt: Boolean;
begin

end;

function GoToFurnace: Boolean;
var
x, y, HPtsL: Integer;
SPSTP: TPoint;
begin
if CheckLogin then Exit;
Result := False;

if (GetMyLocation = 'Furnace') then
begin
Result := True;
Exit;
end else WriteDebug('Not at Furnace, walking to it');

if SPS_WalkPath(FurnacePoints) then
if (GetMyLocation = 'Furnace') then
begin
Result := True;
Exit;
end else WriteDebug('SPS walkpath failed, seeing how close we are to Furnace');

HPtsL := High(FurnacePoints);
if FindSymbol(x, y, 'Furnace') then
begin
SPSTP := SPS_PosToMM(FurnacePoints[HPtsL]);
Mouse(SPSTP.x,SPSTP.y,1,1,1);
if WaitFunc(@FlagPresent,RandomRange(200,220), RandomRange(1000, 1200)) then
begin
WriteDebug('Successfully click Furnace location on MM');
end;
end else
begin
WriteDebug('Didn''t find Furnace symbol, trying to correct loction');
ClickNorth(SRL_ANGLE_HIGH);
if SPS_BlindWalk(FurnacePoints[HPtsL]) then
begin
SPSTP := SPS_PosToMM(FurnacePoints[HPtsL]);
Mouse(SPSTP.x,SPSTP.y,1,1,1);
if WaitFunc(@FlagPresent,RandomRange(200,220), RandomRange(1000, 1200)) then
begin
WriteDebug('Successfully click Furnace location on MM');
end;
end;
end;

if (GetMyLocation = 'Furnace') then
begin
Result := True;
Exit;
end;

WriteDebug('SPS To bank failed, trying to find ObjDTM');
WriteDebug('SPS To bank failed, Ending char run');
WriteDebug('Note to self buld ObjDTM');

end;


procedure MainLoop;
begin
if CheckLogin then Exit;
if not GoToBank then
begin
WriteDebug('Go to Bank Failed, Shutting Down');
Bug := True;
Exit;
end else
begin
if not DoBanking then
begin
WriteDebug('Banking Failed, Shutting Down');
Bug := True;
Exit;
end else
begin
if not GoToFurnace then
begin
WriteDebug('Go To Furnace Failed, Shutting Down');
Bug := True;
Exit;
end else
begin
if not Smelt then
begin
WriteDebug('Go To Furnace Failed, Shutting Down');
Bug := True;
Exit;
end;
end;
end;
end;
end;

procedure LoadItemInfo;
begin
with CopperOre do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with TinOre do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with IronOre do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with SilverOre do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with CoalOre do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with GoldOre do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with MithrilOre do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with AdamantOre do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with RuneOre do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with SteelBar do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with GoldBar do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with RingMould do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with NecklaceMould do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with BraceletMould do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with AmuletMould do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with HolyMould do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with UnholyMould do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with SickleMould do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with TiaraMould do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with CutSapphire do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with CutEmerald do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with CutRuby do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with CutDiamond do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with CutOnyx do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
end;

with EdgevilleBank do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
BankPoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with AlKharidBank do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
BankPoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with FaladorBank do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
BankPoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with LumbridgeBank do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
BankPoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with ArdougneBank do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
BankPoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with NeitiznotBank do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
BankPoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with EdgevilleFurnace do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
FurnacePoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with AlKharidFurnace do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
FurnacePoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with FaladorFurnace do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
FurnacePoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with LumbridgeFurnace do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
FurnacePoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with ArdougneFurnace do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
FurnacePoints := [Point(2183, 2947), Point(2142, 2910)];
end;

with NeitiznotFurnace do
begin
color := 979867;
Tol := 9;
Hue := 0.64;
Sat := 0.64;
UpText := ['Cage', 'Net'];
Bmp
Dtm := DTM;
FurnacePoints := [Point(2183, 2947), Point(2142, 2910)];
end;

end;

procedure ScriptSetup;
begin
{$IFDEF SMART}
{$IFDEF SIMBAMAJOR980}
Smart_Server := 10;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
{$ELSE}
SRL_SixHourFix := True;
Smart_FixSpeed := True;
{$ENDIF}
{$ENDIF}

SetUpSRL;
DeclarePlayers;

if (SRLStats_Username = '') Then
SetupSRLStats(1318, 'Guild Fisher', 'password')
else
SetupSRLStats(1318, SRLStats_Username, SRLStats_Password);

ObjDTM_Setup;
MouseSpeed := 12;

//Log In
while(not(RSReady()))do
Wait(9000);
if CheckLogin then Exit;

//Fix screen
SetAngle(SRL_ANGLE_HIGH);
ClearDebug;
SMART_ClearCanvas;
while not ExitSquealOfFortune do
begin
wait(100);
end;
GameTab(Tab_Inv);
ToggleXPBar(True);
SetChat('filter',0);
SpinT := 0;

//Load Location Info
case Lowercase(Location) of
'edgeville' :
begin
SPS_Setup(runescape_surface,['10_6']);
BankPoints := EdgevilleBank.BankPoints;
FurnacePoints := EdgevilleBank.FurnacePoints;
end;

'alkharid' :
begin
SPS_Setup(runescape_surface,['12_9']);
BankPoints := AlkharidBank.BankPoints;
FurnacePoints := AlkharidBank.FurnacePoints;;
end;

'falador' :
begin
SPS_Setup(runescape_surface,['8_7','9_7']);
BankPoints := FaladorBank.BankPoints;
FurnacePoints := FaladorBank.FurnacePoints;
end;

'lumbridge' :
begin
SPS_Setup(runescape_surface,['11_8','11_9']);
BankPoints := LumbridgeBank.BankPoints;
FurnacePoints := LumbridgeBank.FurnacePoints;
end;

'ardougne' :
begin
SPS_Setup(runescape_surface,['5_8']);
BankPoints := ArdougneBank.BankPoints;
FurnacePoints := ArdougneBank.FurnacePoints;
end;

'neitiznot' :
begin
SPS_Setup(runescape_surface,['16_6']);
BankPoints := NeitiznotBank.BankPoints;
FurnacePoints := NeitiznotBank.FurnacePoints;
end;
end;

case Lowercase(SmeltingWhat) of
'bronzebar' :
begin
ItemsNeed := ['CopperOre', 'TinOre'];
CopperOre.Amount := 14;
TinOre.Amount := 14;
end;

'ironbar' :
begin
ItemsNeed := ['IronOre'];
IronOre.Amount := 28;
end;

'silverbar' :
begin
ItemsNeed := ['SilverOre'];
SilverOre.Amount := 28;
end;

'goldbar' :
begin
ItemsNeed := ['GoldOre'];
GoldOre.Amount := 28;
end;

'steelbar' :
begin
ItemsNeed := ['IronOre', 'CoalOre'];
IronOre.Amount := 9;
CoalOre.Amount := 18;
end;

'mithrilbar' :
begin
ItemsNeed := ['MithrilOre', 'CoalOre'];
MithrilOre.Amount := 5;
CoalOre.Amount := 20;
end;

'adamantbar' :
begin
ItemsNeed := ['AdamantOre', 'CoalOre'];
AdamantOre.Amount := 4;
CoalOre.Amount := 24;
end;

'runebar' :
begin
ItemsNeed := ['RuneOre', 'CoalOre'];
RuneOre.Amount := 3;
CoalOre.Amount := 24;
end;

'cannonballlong' :
begin
ItemsNeed := ['IronOre', 'CoalOre'];
IronOre.Amount := 9;
CoalOre.Amount := 18;
end;

'cannonballshort' :
begin
ItemsNeed := ['SteelBar'];
SteelBar.Amount := 27;
end;

'goldring' :
begin
ItemsNeed := ['GoldBar'];
GoldBar.Amount := 27;
end;

'sapphirering' :
begin
ItemsNeed := ['GoldBar', 'CutSapphire'];
GoldBar.Amount := 13;
CutSapphire.Amount := 13;
end;

'emeraldring' :
begin
ItemsNeed := ['GoldBar', 'Emerald'];
GoldBar.Amount := 13;
CutEmerald.Amount := 13;
end;

'rubyring' :
begin
ItemsNeed := ['GoldBar', 'CutRuby'];
GoldBar.Amount := 13;
CutRuby.Amount := 13;
end;

'dimondring' :
begin
ItemsNeed := ['GoldBar', 'CutDimond'];
GoldBar.Amount := 13;
CutDimond.Amount := 13;
end;

'dragonstonering' :
begin
ItemsNeed := ['GoldBar', 'CutDragonStone'];
GoldBar.Amount := 13;
CutDragonStone.Amount := 13;
end;

'onyxring' :
begin
ItemsNeed := ['GoldBar', 'CutOnyx'];
GoldBar.Amount := 13;
CutOnyx.Amount := 13;
end;

'goldnecklace' :
begin
ItemsNeed := ['GoldBar'];
GoldBar.Amount := 27;
end;

'sapphirenecklace' :
begin
ItemsNeed := ['GoldBar', 'CutSapphire'];
GoldBar.Amount := 13;
CutSapphire.Amount := 13;
end;

'emeraldnecklace' :
begin
ItemsNeed := ['GoldBar', 'Emerald'];
GoldBar.Amount := 13;
CutEmerald.Amount := 13;
end;

'rubynecklace' :
begin
ItemsNeed := ['GoldBar', 'CutRuby'];
GoldBar.Amount := 13;
CutRuby.Amount := 13;
end;

'dimondnecklace' :
begin
ItemsNeed := ['GoldBar', 'CutDimond'];
GoldBar.Amount := 13;
CutDimond.Amount := 13;
end;

'dragonstonenecklace' :
begin
ItemsNeed := ['GoldBar', 'CutDragonStone'];
GoldBar.Amount := 13;
CutDragonStone.Amount := 13;
end;

'onyxnecklace' :
begin
ItemsNeed := ['GoldBar', 'CutOnyx'];
GoldBar.Amount := 13;
CutOnyx.Amount := 13;
end;

'goldbracelet' :
begin
ItemsNeed := ['GoldBar'];
GoldBar.Amount := 27;
end;

'sapphirebracelet' :
begin
ItemsNeed := ['GoldBar', 'CutSapphire'];
GoldBar.Amount := 13;
CutSapphire.Amount := 13;
end;

'emeraldbracelet' :
begin
ItemsNeed := ['GoldBar', 'Emerald'];
GoldBar.Amount := 13;
CutEmerald.Amount := 13;
end;

'rubybracelet' :
begin
ItemsNeed := ['GoldBar', 'CutRuby'];
GoldBar.Amount := 13;
CutRuby.Amount := 13;
end;

'dimondbracelet' :
begin
ItemsNeed := ['GoldBar', 'CutDimond'];
GoldBar.Amount := 13;
CutDimond.Amount := 13;
end;

'dragonstonebracelet' :
begin
ItemsNeed := ['GoldBar', 'CutDragonStone'];
GoldBar.Amount := 13;
CutDragonStone.Amount := 13;
end;

'onyxbracelet' :
begin
ItemsNeed := ['GoldBar', 'CutOnyx'];
GoldBar.Amount := 13;
CutOnyx.Amount := 13;
end;

'goldamulet' :
begin
ItemsNeed := ['GoldBar'];
GoldBar.Amount := 27;
end;

'sapphireamulet' :
begin
ItemsNeed := ['GoldBar', 'CutSapphire'];
GoldBar.Amount := 13;
CutSapphire.Amount := 13;
end;

'emeraldamulet' :
begin
ItemsNeed := ['GoldBar', 'Emerald'];
GoldBar.Amount := 13;
CutEmerald.Amount := 13;
end;

'rubyamulet' :
begin
ItemsNeed := ['GoldBar', 'CutRuby'];
GoldBar.Amount := 13;
CutRuby.Amount := 13;
end;

'dimondamulet' :
begin
ItemsNeed := ['GoldBar', 'CutDimond'];
GoldBar.Amount := 13;
CutDimond.Amount := 13;
end;

'dragonstoneamulet' :
begin
ItemsNeed := ['GoldBar', 'CutDragonStone'];
GoldBar.Amount := 13;
CutDragonStone.Amount := 13;
end;

'onyxamulet' :
begin
ItemsNeed := ['GoldBar', 'CutOnyx'];
GoldBar.Amount := 13;
CutOnyx.Amount := 13;
end;

'holysymbol' :
begin
ItemsNeed := ['SteelBar'];
SteelBar.Amount := 27;
end;

'unholysymbol' :
begin
ItemsNeed := ['SteelBar'];
SteelBar.Amount := 27;
end;

'sickle' :
begin
ItemsNeed := ['SteelBar'];
SteelBar.Amount := 27;
end;
'tiara' :
begin
ItemsNeed := ['SteelBar'];
SteelBar.Amount := 27;
end;

end;
end;

Begin
ScriptSetup;

End.

rj

2013-03-07 21:01:39

Pretty much use case's to define what the user will smith like above and use object DDTM if this is for RS07 because I heard SPS isn't reliable for RS07