It would be great if someone could make a script to use the "Superheat" magic spell to smelt ores into bars.
I have already tried looking around the forums, but the only one I came across is highly outdated.
Thanks in advance!
It would be great if someone could make a script to use the "Superheat" magic spell to smelt ores into bars.
I have already tried looking around the forums, but the only one I came across is highly outdated.
Thanks in advance!
If u are not looking for magic xp then this 'munk's shmelta' works fine, its flawless........ and if for magic xp then high alch is always faster option. :-)
here is the script i made a loooong time ago, looking through it i was pretty noob and i would do a few things in a different way, there is even stuff in there that i dont even know why did some procedures like i did eg counting spells but if somone wants to update it then
they are welcome
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 = 'ID'; // Must be a string!
MySRLPassword = 'Pass'; // 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 := 'name'; //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,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;
procedure WithdrawNats;
begin
if (not (Loggedin)) then
exit;
if (not (bankscreen)) then
exit;
nat := DTMFromString('78DA638C61606028634001825DA20C5C409A1' +
'188FF0301631A9091C18006189148209D83690E869A4420D14840' +
'4D1890A827A026004894105013042472F0AB01004CF40A86');
if FindDTM(nat, x, y, MSX1, MSY1, MSX2, MSY2) then
else
begin
writeln('no nats') nextplayer(false);
end;
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');
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, 2);
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');
DepositAll;
WithdrawNats
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.
There are currently 1 users browsing this thread. (0 members and 1 guests)