SCAR Code:
program SuperHeat;
{.include SRL/SRL.scar}
{.include SRL/SRL/skill/magic.scar}
{
==========================================================================
This script superheats any Ores
==========================================================================
Created for scar 3.12 and SRL 4
1. USE Runescape with Low Detail, Very Bright.
2. Set your Screen to 32 bit TRUE color.
3. Set Playernames and Passwords in DeclarePlayers.
4. Set NumberOfPlayers.
5. Position Players at Falador East Bank with fire staff equiped
and Nature runes in inventory
6. Make sure your Players have WithdrawOress and nature runes
Version 1- Original release
==========================================================================
}
var
l, loads, x, y, nat: integer;
const
StartPlayer = 0; // Determines who will play first
MSpeed = 10; //speed of the mouse...higher number slower speed, lower number higher speed
// MySRLID = ''; // Must be a string!
// MySRLPassword = ''; // Must be a string!
VersionNumber = 1; // No need to change
procedure DeclarePlayers;
begin
HowManyPlayers := 1; // Set Number of Players here.
NumberOfPlayers(HowManyPlayers); // Sets the Players Array Length;
CurrentPlayer := StartPlayer; // CurrentPlayer = Array Index
Players[0].Name := 'user'; //username
Players[0].Pass := 'pass'; //password
Players[0].Nick := 'nick'; //3-4 consecutive letters of your user name(NOT First letter)
Players[0].Strings[0] := 'steel'; //type of bar bronze,iron,steel,mith,adamantite,runite,gold,silver,
Players[0].integers[0] := 10; //how many times to cast superheat
Players[0].Active := True; //are you going to use this player
end;
procedure WithdrawNats;
begin
if (not (Loggedin)) then exit;
if (not (bankscreen)) then exit;
nat := DTMFromString('78DA633CC5C0C090C980023A1BEAC1342394C' +
'F781D4824A3AAD9BF7D1BAA9AF340A204554D656101AA9A7D4022' +
'17558DA78309AA9A639876CD99381155CD4D209187AA66C5DC39A' +
'86A8E008962543591C1C1286A00FD5E12FA');
if FindDTM(nat, x, y, MSX1, MSY1, MSX2, MSY2) then
begin;
Mouse(x, y, 3, 3, false)
wait(100 + random(50))
begin
ChooseOption('Withdraw X');
Wait(1000 + Random(100));
TypeSend(IntToStr(players[currentplayer].Integers[0]) + Chr(13));
FreeDTM(nat);
end;
end;
end;
function FindOre(oreType: string; var rx, ry: integer; x1, y1, x2, y2: integer):
boolean;
var
ore, oreColor: integer;
oreMP: TDTMPointDef;
oreSP: array of TDTMPointDef;
oreSkel: TDTM;
begin
case lowercase(oreType) of
'copper': oreColor := 3834079;
'tin': oreColor := 8553356;
'iron': oreColor := 2305869;
'silver': oreColor := 11971499;
'coal': oreColor := 2702653;
'gold': oreColor := 1815515;
'mithril': oreColor := 7425357;
'adamantite': oreColor := 5268302;
'runite': oreColor := 7958098;
else
begin
writeln('ore type not found');
exit;
end;
end;
setarraylength(oreSP, 4);
oreMP.x := 580;
oreMP.y := 229;
oreMP.areasize := 1;
oreMP.areashape := 0;
oreMP.color := oreColor;
oreMP.tolerance := 15;
oreSP[0].x := 576;
oreSP[0].y := 227;
oreSP[0].areasize := 0;
oreSP[0].areashape := 0;
oreSP[0].color := 65536;
oreSP[0].tolerance := 0;
oreSP[1].x := 574;
oreSP[1].y := 229;
oreSP[1].areasize := 0;
oreSP[1].areashape := 0;
oreSP[1].color := 65536;
oreSP[1].tolerance := 0;
oreSP[2].x := 563;
oreSP[2].y := 230;
oreSP[2].areasize := 0;
oreSP[2].areashape := 0;
oreSP[2].color := 65536;
oreSP[2].tolerance := 0;
oreSP[3].x := 592;
oreSP[3].y := 227;
oreSP[3].areasize := 0;
oreSP[3].areashape := 0;
oreSP[3].color := 65536;
oreSP[3].tolerance := 0;
oreSkel.MainPoint := oreMP;
oreSkel.SubPoints := oreSP;
ore := AddDTM(oreSkel);
result := findDTM(ore, rx, ry, x1, y1, x2, y2);
freeDTM(ore);
end;
procedure WithdrawOres;
begin;
l := 0
if (not (Loggedin)) then exit;
if (not (bankscreen)) then exit;
case lowercase(players[currentplayer].Strings[0]) of
'bronze':
begin
if findOre('copper', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find copper');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(250 + random(100));
if chooseOption('X') then
begin
wait(100 + random(100));
typesend('13');
end;
end;
wait(500 + random(500));
if findOre('tin', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find tin');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
wait(250 + random(100));
typesend('13');
end;
end;
end;
'iron':
begin
if findOre('iron', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find iron');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
chooseOption('All');
end;
end;
'silver':
begin
if findOre('silver', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find silver');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
chooseOption('All');
end;
end;
'steel':
begin
if findOre('iron', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find iron');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
wait(250 + random(100));
typesend('8');
end;
end;
wait(500 + random(500));
if findOre('coal', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find coal');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
wait(250 + random(100));
typesend('16');
end;
end;
end;
'gold':
begin
if findOre('gold', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find gold');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
chooseOption('All');
end;
end;
'mithril':
begin
if findOre('mithril', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find mirhril');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
chooseOption('5');
end;
wait(500 + random(500));
if findOre('coal', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find coal');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
wait(250 + random(100));
typesend('20');
end;
end;
end;
'adamantite':
begin
if findOre('adamantite', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find adamantite');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(250 + random(100));
if chooseOption('X') then
begin
wait(250 + random(100));
typesend('3');
end;
end;
wait(500 + random(500));
if findOre('coal', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find coal');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
wait(250 + random(100));
typesend('18');
end;
end;
end;
'runite':
begin
if findOre('runite', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find runite');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
wait(250 + random(100));
typesend('3');
end;
end;
wait(500 + random(500));
if findOre('coal', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find coal');
terminatescript;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
wait(250 + random(100));
typesend('24');
end;
end;
end;
end;
end;
procedure HighestBrightness;
var
x, y, SlideButton: integer;
begin
GameTab(11);
SlideButton := DTMFromString('78DA633CC6C4C0F0920105083ACE673002D28' +
'C40FC1F08180F01D5BC4155A3A0610957030260358FD1D4683BA0' +
'AA398DA9465CC516530D9A5D920A3A286A003116104C');
x := 707;
y := 228;
if (not FindDTM(SlideButton, x, y, x - 25, y - 25, x + 25, y + 25)) then
Mouse(711, 233, 2, 2, true);
FreeDTM(SlideButton);
end;
procedure CastSuperheats;
begin
if (not (Loggedin)) then exit;
Gametab(7);
Cast('Superheat Item');
Wait(450 + random(150));
if findOre(players[currentplayer].Strings[0], x, y, MIX1, MIY1, MIX2, MiY2)
then
else
begin
writeln('Can not find ore');
exit;
end;
begin
MMouse(x, y, 2, 2);
wait(50 + random(150));
if IsUpText('Ore') then
begin
Mouse(x, y, 5, 5, True);
Wait(450 + random(150));
end;
end;
end;
procedure Bank;
var
Bar, time: Integer;
begin
Bar := DTMFromString('78DA63946660601062400113DBDB19B880342' +
'310FF0702460520839B010D302291401A648E0C01353C40429880' +
'1A652021825F0D00B24D0699');
MarkTime(time);
repeat
if (not (Loggedin)) then break;
OpenBankQuiet('feb')
until (BankScreen or (TimeFromMark(time) > 120000));
if Bankscreen then
else terminatescript;
begin
IsUpText('Bar')
Deposit(2, 3, 2);
CloseBank;
loads := l + 1
end;
FreeDTM(Bar);
end;
procedure ProgressReport;
begin
ClearDebug;
Writeln('<|----------------------------------------------|>');
Writeln(' AutoFighter version 1 by Bonfield ');
Writeln(' ');
Writeln(' Worked for ' + TimeRunning);
Writeln(' ');
Writeln(' Banked ' + inttostr(Loads) + ' times');
Writeln('<|----------------------------------------------|>');
end;
procedure Setup;
begin;
SetupSRL;
ActivateClient;
Mousespeed := Mspeed;
DeclarePlayers;
LoginPlayer;
MakeCompass('n');
HighestBrightness;
SetAngle(true);
OpenBankQuiet('feb');
WithdrawNats;
end;
begin
setup;
repeat
OpenBankQuiet('feb');
WithdrawOres;
CastSuperheats;
FindNormalRandoms;
Bank;
ProgressReport;
until (Loads = Players[currentplayer].integers[0]);
if (LoggedIn) then
LogOut;
if (Players[CurrentPlayer].Active = false) then
terminatescript;
end.