Simba Code:
program Superheater;
//{$DEFINE SMART}
{$i SRL/SRL.simba}
{$i SRL/SRL/SKILL/Magic.simba}
//{$IFDEF SMART}
// {$i srl/srl/mis/paintsmart.simba}
//{$ENDIF}
//MIX1, MIY1, MIX2, MIY2 - main inventory coords
//MSX1, MSY1, MSX2, MSY2 - main screen coords
//MSCX, MSCY - main screen center coords
var
XPPerHour, LevelsGained, SuperheatsPerHour, SuperheatsDone, AntiBansDone, InvOre, InvBars :Integer;
//~~~~~~~~~~~~~~~~~~~~~~~~~~
//~ ---=< Setup >=---
//~~~~~~~~~~~~~~~~~~~~~~~~~~
const
VERSION = '0.3';
SUPERHEATSTODO = 500;
SRLStats_User = '';
SRLStats_Password = '';
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; //Account Name
Players[0].Pass := ''; //Account Password
Players[0].Nick := ''; //Account Nickname
Players[0].Active:= True;
Players[0].Pin := ''; //Blank if no pin
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~
//~ ---=< Setup End >=---
//~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure OnStart;
begin
ClearDebug;
Writeln('~~~~~~~~~~~~~~~~~');
Writeln(' Superheater');
Writeln(' Version: '+ version);
Writeln(' Author: Wreck');
Writeln('~~~~~~~~~~~~~~~~~');
Writeln('');
MakeCompass('W');
SetAngle(SRL_ANGLE_HIGH);
end;
procedure OnFinish;
var
MagicXP :Integer;
begin
MagicXP := SuperheatsDone * 53;
XPPerHour := Round((MagicXP * 3600) / (GetTimeRunning / 1000));
SuperheatsPerHour := Round((SuperheatsDone * 3600) / (GetTimeRunning / 1000));
Writeln('');
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Writeln(' Thank you for using Superheater');
Writeln(' Version '+ version);
Writeln(' Author: Wreck');
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Writeln('Time Running: ' + TimeRunning);
Writeln('AntiBans Done: ' + IntToStr(Antibansdone));
Writeln('');
Writeln('Levels Gained: ' + IntToStr(LevelsGained));
Writeln('Superheats Done: ' + IntToStr(SuperheatsDone));
Writeln('Superheats/Hour: ' + IntToStr(SuperheatsPerHour));
Writeln('Magic XP Gained: ' + IntToStr(MagicXP));
Writeln('Magic XP/Hour: ' + IntToStr(XPPerHour));
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Logout;
end;
procedure AntiBan;
begin
case random(400) of
1: Begin HoverSkill('magic', False); AntiBansDone := AntiBansDone + 1; End;
2: Begin HoverSkill('random', False); AntiBansDone := AntiBansDone + 1; End;
3: Begin Boredhuman; AntiBansDone := AntiBansDone + 1; End;
4: Begin Wait(2500 + random(4500)); AntiBansDone := AntiBansDone + 1; End;
5: Begin HoverSkill('smithing', False); AntiBansDone := AntiBansDone + 1; End;
6: Begin PickUpMouse; AntiBansDone := AntiBansDone + 1; End;
7: Begin RandomMovement; AntiBansDone := AntiBansDone + 1; End;
8: Begin RandomRClick; AntiBansDone := AntiBansDone + 1; End;
end;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~
//~ ---=< Nitty Gritty >=---
//~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure Count;
var
IronOreDTM, IronBarDTM:Integer;
begin
IronOreDTM := DTMFromString('mKgEAAHicncxJCoAwEETRjkoIiEZdOOB4CO9/Nn+wNi5Nwds0Vd2aWURACYdatw4LVsyy4cKuTdTOY8KIAT0a/QpS2Zv7TM3it8Py4jJ98wAHJwJd');
IronBarDTM := DTMFromString('m1gAAAHic42JgYOADYnYgZmSAAEkgFgBiLiAWAWJZIJYCYlYgZoKq54RiISAWhIqxQPU72dtDVeLHcgzEAUYiMQIAACAQAfU=');
InvOre := CountItems('dtm', IronOreDTM, []);
InvBars := CountItems('dtm', IronBarDTM, []);
//writeln('There are ' + IntToStr(InvOre) + ' ores left to smelt!');
//writeln('There are ' + IntToStr(InvBars) + ' bars in your inventory!');
FreeDTM(IronOreDTM);
FreeDTM(IronBarDTM);
end;
function HasNatures: Boolean;
var
x, y, NatureRuneDTM :Integer;
begin
writeln('hasnatures');
NatureRuneDTM := DTMFromString('mrAAAAHic42BgYOBlQAA2IBYEYkkglgFiaSBmBmJGIOYEYiEgFgFifiBmh+oRqgKJMOHEcgz4ASMBDAMAui4Bmg==');
if (not (GameTab(tab_inv))) then
GameTab(tab_inv);
if FindDTM(NatureRuneDtm, x, y, MIX1, MIY1,MIX2,MIY2) then
begin
writeln('Nature Runes Found!');
Result := True;
end
else
Result := False;
FreeDTM(NatureRuneDtm);
end;
procedure BankDeposit;
var
x, y, IronBarDTM :Integer;
begin
IronBarDTM := DTMFromString('m1gAAAHic42JgYOADYnYgZmSAAEkgFgBiLiAWAWJZIJYCYlYgZoKq54RiISAWhIqxQPU72dtDVeLHcgzEAUYiMQIAACAQAfU=');
if FindDTM(IronBarDtm, x, y, MIX1, MIY1,MIX2,MIY2) then
begin
Mouse(x, y, 10, 10, mouse_Right);
WaitOption('All', 500);
wait(750+RandomRange(50,250));
writeln('deposit count');
Count;
end;
FreeDTM(IronBarDTM);
end;
procedure BankWithdraw;
var
x, y, IronOreDTM :Integer;
begin
IronOreDTM := DTMFromString('mKgEAAHicncxJCoAwEETRjkoIiEZdOOB4CO9/Nn+wNi5Nwds0Vd2aWURACYdatw4LVsyy4cKuTdTOY8KIAT0a/QpS2Zv7TM3it8Py4jJ98wAHJwJd');
if FindDTM(IronOreDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
MMouse(x, y, 5, 5);
if IsUpText('ron or') then
begin
Mouse(x, y, 0, 0, False);
WaitOption('All', 500);
wait(750+RandomRange(50,250));
Count;
end else
writeln('Withdrawing Failed');
end else
writeln('FindDTM unable to find IronOreDtm');
FreeDTM(IronOreDTM);
end;
procedure Bank;
begin
if (not (BankScreen)) then
begin
OpenBankChest(SRL_BANK_SW);
wait(500+RandomRange(50,250));
end else
if (PinScreen) then
InPin(Players[0].Pin) else
if (InvBars >= 1) then
BankDeposit else
if (InvOre = 0) then
BankWithdraw;
end;
procedure Superheat;
var
x, y, SuperheatItemDTM, IronOreDTM :Integer;
begin
SuperheatItemDTM := DTMFromString('mlwAAAHicY2dgYOAAYnYgZgZiQSAWYIAARiDmg7LZgJgTKscPxDxA/O71BgY9RmasWI4BN2DEg6EAAISYBF4=');
IronOreDTM := DTMFromString('mKgEAAHicncxJCoAwEETRjkoIiEZdOOB4CO9/Nn+wNi5Nwds0Vd2aWURACYdatw4LVsyy4cKuTdTOY8KIAT0a/QpS2Zv7TM3it8Py4jJ98wAHJwJd');
if FindDTM(SuperheatItemDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 7, 7, mouse_Left);
FindNormalRandoms;
if FindDTM(IronOreDtm, x, y, MIX1, MIY1,MIX2,MIY2) then
begin
MMouse(x, y, 10, 10);
if IsUpText('ast Sup') then
begin
Count;
GetMousePos(x, y);
Mouse(x, y, 0, 0, mouse_Left);
SuperheatsDone := SuperheatsDone + 1;
InvOre := InvOre - 1;
InvBars := InvBars + 1;
WaitFindDTM(x, y, SuperHeatItemDTM, 1000+RandomRange(150,200));
end;
end
else
writeln('FindDTM unable to find IronOreDtm');
end else
begin
writeln('Unable to find spell - Selecting Spellbook');
if (not (GameTab(tab_magic))) then
GameTab(tab_magic);
end;
FreeDTM(SuperheatItemDTM);
FreeDTM(IronOreDTM);
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~
//~ ---=< Main Loop >=---
//~~~~~~~~~~~~~~~~~~~~~~~~~~
begin
{$IFDEF SMART}
Smart_Server := 0;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
{$ENDIF}
SetUpSRL;
ActivateClient;
DeclarePlayers;
if not(LoggedIn) then
LoginPlayer;
OnStart;
FindNormalRandoms;
if HasNatures then
begin
Count;
SetSpellMode(False, False, False, True);
SortBook(BOOKSORT_COMBAT);
repeat
if LevelUp then
LevelsGained := LevelsGained + 1;
if (InvOre = 0) then
Bank else
if ((InvOre >= 1) and BankScreen) then
CloseBank else
Superheat;
Antiban;
until (SuperheatsDone = SUPERHEATSTODO)
end
else
writeln('Unable to find nature runes - Ending Script');
OnFinish;
end.