SCAR Code:
program SuperHeat;
{.include SRL/SRL.scar}
{.include SRL/SRL/skill/magic.scar}
{
==========================================================================
This script superheats any Ore to Bars
==========================================================================
Created for scar 3.12 and SRL 4 Rev 14
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 bank with nothing in your inventory
6. Make sure your Players has ores and nature runes
Credits to Rasta Magican and Cutem2it for all the help that
they both gave me with casting superheat
Version 1- Original release
==========================================================================
}
var
l, loads, x, y, c, 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);;
CurrentPlayer := StartPlayer;
Players[0].Name := ''; //username
Players[0].Pass := ''; //password
Players[0].Nick := ''; //3-4 consecutive letters of your user name(NOT First letter)
Players[0].Strings[0] := 'steel'; //type of bar bronze,iron,steel,mithril,adamantite,runite,gold,silver,
Players[0].integers[0] := 100; //how many times to cast superheat
Players[0].Active := True; //are you going to use this player
end;
procedure AntiRandoms;
begin
if not LoggedIn then
Exit;
FindNormalRandoms;
if FindFight then
RunTo('N', True);
case Random(100) of
0: RandomRClick;
1: PickupMouse;
2: randommovement;
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');
Logout;
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');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
Wait(1000 + 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');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
Wait(1000 + Random(100));
typesend('13');
end;
closebank;
end;
end;
'iron':
begin
if findOre('iron', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find iron');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
chooseOption('All');
end;
closebank;
end;
'silver':
begin
if findOre('silver', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find silver');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
chooseOption('All');
end;
closebank;
end;
'steel':
begin
if findOre('iron', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find iron');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
Wait(1000 + Random(100));
typesend('9');
end;
end;
wait(500 + random(500));
if findOre('coal', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find coal');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
Wait(1000 + Random(100));
typesend('18');
end;
closebank;
end;
end;
'gold':
begin
if findOre('gold', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find gold');
Logout;
end;
begin
Mouse(x, y, 3, 3, false);
wait(100 + random(100));
chooseOption('All');
end;
closebank;
end;
'mithril':
begin
if findOre('mithril', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find mirhril');
Logout;
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');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
Wait(1000 + Random(100));
typesend('20');
end;
closebank;
end;
end;
'adamantite':
begin
if findOre('adamantite', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find adamantite');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
Wait(1000 + Random(100));
if chooseOption('X') then
begin
Wait(1000 + 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');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
Wait(1000 + Random(100));
typesend('18');
end;
closebank;
end;
end;
'runite':
begin
if findOre('runite', x, y, msx1, msy1, msx2, msy2) then
else
begin
writeln('Can not find runite');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
Wait(1000 + 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');
Logout;
end;
begin
mouse(x, y, 3, 3, false);
wait(100 + random(100));
if chooseOption('X') then
begin
Wait(1000 + Random(100));
typesend('24');
end;
closebank;
end;
end;
end;
end;
procedure CastSuperheats;
var
i, randomClick: integer;
begin
c := 0;
if (not (Loggedin)) then
exit;
if players[currentplayer].Strings[0] = 'bronze' then
c := 27;
if players[currentplayer].Strings[0] = 'iron' then
c := 27;
if players[currentplayer].Strings[0] = 'steel' then
c := 9;
if players[currentplayer].Strings[0] = 'mithril' then
c := 5;
if players[currentplayer].Strings[0] = 'adamantite' then
c := 3;
if players[currentplayer].Strings[0] = 'runite' then
c := 3;
if players[currentplayer].Strings[0] = 'gold' then
c := 27;
if players[currentplayer].Strings[0] = 'silver' then
c := 27;
Gametab(7);
repeat
wait(200) if not CastSpell(26) then
break;
Wait(450 + random(150));
if players[currentplayer].Strings[0] = 'bronze' then
if not findOre('copper', x, y, MIX1, MIY1, MIX2, MiY2) then
begin
writeln('didnt find copper');
break;
end;
if players[currentplayer].Strings[0] = 'iron' then
if not findOre('iron', x, y, MIX1, MIY1, MIX2, MiY2) then
begin
writeln('didnt find iron');
break;
end;
if players[currentplayer].Strings[0] = 'steel' then
if not findOre('iron', x, y, MIX1, MIY1, MIX2, MiY2) then
begin
writeln('didnt find steel');
break;
end;
if players[currentplayer].Strings[0] = 'mithril' then
if not findOre('mithril', x, y, MIX1, MIY1, MIX2, MiY2) then
begin
writeln('didnt find mith');
break;
end;
if players[currentplayer].Strings[0] = 'adamantite' then
if not findOre('adamantite', x, y, MIX1, MIY1, MIX2, MiY2) then
begin
writeln('didnt find addy');
break;
end;
if players[currentplayer].Strings[0] = 'runite' then
if not findOre('runite', x, y, MIX1, MIY1, MIX2, MiY2) then
begin
writeln('didnt find rune');
break;
end;
if players[currentplayer].Strings[0] = 'gold' then
if not findOre('gold', x, y, MIX1, MIY1, MIX2, MiY2) then
begin
writeln('didnt find gold');
break;
end;
if players[currentplayer].Strings[0] = 'silver' then
if not findOre('silver', x, y, MIX1, MIY1, MIX2, MiY2) then
begin
writeln('didnt find silver');
break;
end;
begin
MMouse(x, y, 2, 2);
wait(250 + random(150));
if IsUpText('ore') then
begin
Mouse(x, y, 5, 5, True);
Wait(450 + random(150));
AntiRandoms;
c := c + 1;
end
else
begin
writeln('Can not find ore');
break;
WithdrawOres;
c := c + 1;
MarkTime(randomClick);
repeat
i := Random(27) + 1;
if (not (ExistsItem(i))) then
begin
MouseItem(i, True);
Break;
end;
until (TimeFromMark(randomClick) >= 10000)
end;
end;
until (false)
end;
procedure BankBars;
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 exit;
begin
IsUpText('Bar') Deposit(2, 3, 9);
CloseBank;
loads := l + 1;
AntiRandoms;
ReportVars[0] := ReportVars[0] + 1;
SRLRandomsReport;
end;
FreeDTM(Bar);
end;
procedure ProgressReport;
begin
ClearDebug;
Writeln('<|----------------------------------------------|>');
Writeln(' SuperHeater version 1 by Bonfield ');
Writeln(' ');
Writeln(' Worked for ' + TimeRunning);
Writeln(' ');
Writeln(' Cast Superheat ' + inttostr(c) + ' times');
Writeln('<|----------------------------------------------|>');
end;
procedure Setup;
begin;
SetupSRL;
ScriptID := '692';
SRLID := MySRLID;
SRLPassword := MySRLPassword; ActivateClient;
Mousespeed := Mspeed;
DeclarePlayers;
LoginPlayer;
SetAngle(true);
OpenBankQuiet('feb');18
AntiRandoms;
end;
begin
setup;
repeat
OpenBankQuiet('feb');
WithdrawOres;
CastSuperheats;
AntiRandoms;
BankBars;
ProgressReport;
until (c = Players[currentplayer].integers[0]);
if (LoggedIn) then
LogOut;
if (PlayersActive = 0) then
LogOut;
end.
Could you give me any tip or things that need doing so you wont get banned
are the mouse movements out dated they should be MMouse?