Renzanity
2015-05-05 06:05:58
How Long have You Played Runescape?
10 Year(s)
Are you affilated in anyway with Jagex LTD?
No, I am not.
Were you Referred to SRL?
No, I was not.
What is your general programming knowledge?
I'm afraid I don't have any programming knowledge.
Are you a member of any other communities?
No, I am not.
Tell us about yourself…
Please show us one (or multiple) of your scripts.
10 Year(s)
Are you affilated in anyway with Jagex LTD?
No, I am not.
Were you Referred to SRL?
No, I was not.
What is your general programming knowledge?
I'm afraid I don't have any programming knowledge.
Are you a member of any other communities?
No, I am not.
Tell us about yourself…
From: Renzanity
Hello,
You can all call me, Renz. That's my real name if that didn't clear things up.:p I'm from the Philippines, a south-east Asian country.
So the MMO's that I play are most likely unheard from most of the people in this community, but I'll still state a couple: Ragnarok and Dragon Nest. As for other types of games, I'd say I've only been interested in PC games, console never got my attention as much as PC did. I asked my friends how can they even snipe in CoD using a console controller…I think, people that can snipe using a console controller are BAWS.
Anyway, one of the games that I enjoy playing on PC are games that has zombies in them. Yes, zombie games, preferably FPS. Dying Light is BY FAR, the best I've played(recommendation). The other games that I played were the MMO's stated above and any FPS game.
Virtual world aside, I like mostly anything to do with alcohol(will wait for your funny and clever comments about this later:p), getting fat and doing sports that I know of(Basketball, Volleyball etc.) .
I actually didn't expect I'd end up in the SRL community. This may sound a little too normal to you guys, but it's not for me, because I didn't expect I'd be able to get the knowledge I have now if it wasn't for me ending in the right place.
Anyway, I was browsing about Runescape guides (Skill training, money making etc.) and found myself laughing at the money making guides because of the comments about bots ruining the method being talked about. And so then I started searching about Runescape bots. I was surprised that there were a lot of sites that popped up. So I browsed a little further and saw a website with the villavu website on it as well as other bot sites available on the internet in a detailed post(forgot the website I got it from). I checked all of them, if I can remember correctly. All of them were the same, selling bots to people, but not on villavu. I finally got SIMBA to run and then tried to run a script, but it won't run because I was dumb enough to grab a script from the outdated section xD, I browsed the forum a bit more and I ended upin the RS3 help and tutorials section of the forum. There I saw the RS3 Help tab, but then after I scrolled down before clicking the RS3 Help button, I saw 'RS3 Beginner Scripting Tutorials', I was shocked because 'this forum actually teaches anyone how to make the scripts that are posted in the forum' I got excited so I forgot about trying to run the outdated script I was trying to run and got myself into browsing the beginner's tutorial section. There, I saw The Mayor's 'All-In-One RS3 and SRL6 Scripting Tutorial!' and 'Simplistic Beginners Guide To RS3 Scripting'. After that, I finally was able to notice that the script I had was from the outdated section of the forum…After slamming my head countless times on the desk, I ran a bunch of scripts and saw how they worked which fascinated me because I botted on the Ragnarok before, but I never saw what the bot sees and the mouse movement that it makes while it's running. After that, I started to write my first script one step at a time. (I hope that didn't bore anyone to death:p)
In case you're all wondering on what statement to leave below, I'd rather you leave constructive criticisms rather than say that it's good enough but if you really think that the script is good, I thank you in advance. If you check out the scripts I have published in the public, they don't get too much feedback/suggestion other than people posting bugs, and most of the bugs were their fault for not following instructions or RAM problems.:p So please, do tell me what I did wrong or leave any suggestions.
Quick mentions:
The Mayor - For his easy to understand tutorials for beginners.
Janilabo - For the encouragement.
Taric - For more encouragement.
The SRL Community - For simply existing.
Have a good one everybody!
-Renz
Please show us one (or multiple) of your scripts.
program RenzanitySafeCracker;
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
{$I SPS/lib/SPS-RS3.simba}
{$i srl-6/lib/misc/srlplayerform.simba}
////////////////////////////////////////////////////////////////////////////////
///////////////////******************************************///////////////////
//******************Special thanks to The Mayor's Tutorials!******************//
//*And ofcourse to all of the people who've been scripting waaaaay before me!*//
//***********Thank you everyone for providing such helpful scripts!***********//
////////////********************************************************////////////
////////////////////////////////////////////////////////////////////////////////
var
startXp, sapphireDTM, emeraldDTM, rubyDTM, sCount, eCount, rCount, BreaksTaken: integer;
craftXP: double;
BreakTimer, ReloadTimer, ScriptTimer: TTimeMarker;
device, toCut, heal: boolean;
path: array [0..4] of TPointArray;
procedure initPlayerForm();
begin
with playerForm do
begin
name := 'Renzanity Safe Cracker';
scriptHelpThread := 'https://villavu.com/forum/showthread.php?t=112952';
editBoxLabels := ['World'];
editBoxDefaults := ['-1'];
editBoxHints := ['Enter any world you want to go, -1 to just make it press play, 0 for random worlds'];
checkBoxLabels := ['Display Debug', 'Use stethoscope', 'Cut Gems', 'Heal with food'];
checkBoxDefaults := ['False', 'False', 'False', 'False'];
checkBoxHints := ['', '', '', 'Check this box if you want to heal using food, leave it unchecked if you want to heal in the Taverley bank.'];
end;
end;
procedure declarePlayers();
var
i: integer;
begin
players.setup(playerForm.players); //Loads the SPF players from Rafiki's SRL Player Manager
currentPlayer := 0; // Player to use first
//Sets player attributes based on the settings from the form
for i := 0 to high(players) do
with players[i] do
begin
integers[0] := strToInt(playerForm.players[i].settings[0]);
booleans[0] := strToBool(playerForm.players[i].settings[1]);
booleans[1] := strToBool(playerForm.players[i].settings[2]);
booleans[2] := strToBool(playerForm.players[i].settings[3]);
booleans[3] := strToBool(playerForm.players[i].settings[4]);
world := integers[0];
if not booleans[0] then
disableSRLDebug := true;
if booleans[1] then
device := true;
if booleans[2] then
toCut := true;
if booleans[3] then
heal := true;
end;
end;
{*Antiban*}
procedure antiBan();
begin
case random(120) of
0..30: begin
writeLn('Initiating Antiban #1..');
pickUpMouse();
wait(randomRange(300, 450));
smallRandomMouse(5 + random(50));
end;
31..60: begin
writeLn('Initiating Antiban #2..');
pickUpMouse();
wait(randomRange(200, 300));
sleepAndMoveMouse(randomRange(1000, 1500));
end;
61..90: begin
writeLn('Initiating Antiban #3..');
sleepAndMoveMouse(randomRange(1000, 1500));
smallRandomMouse(5 + random(50));
wait(randomRange(1000, 2000));
end;
91..120: begin
writeLn('Initiating Antiban #4..');
pickUpMouse();
wait(randomRange(200, 300));
mouseOffClient(OFF_CLIENT_RANDOM);
wait(randomRange(1000, 1700));
end;
end;
end;
{*Procedure: findNormalRandoms()*
*Description: Handles spin tickets, ad windows, and click to continue buttons.*
*Credits: The Mayor: "I modified Coh3ns procedure." - The Mayor's GAO*}
procedure findNormalRandoms();
var
x, y, xButton: integer;
p: TPoint;
begin
xButton := DTMFromString('mlwAAAHicY2dgYAhgZWAIgWIfKPZnhYjvAcrvAOIDUAxibwPiQ0D8Z4spw99LSQw/+jjAGMQuF+Ji8GFmZABqxYkZ8WAoAACvTBHu');
exitTreasure();
claimTicket();
if findDTM(xButton, x, y, mainscreen.getBounds()) then
mouse(point(x, y).rand(3), MOUSE_LEFT);
conversationBox.continue(true, true);
freeDTM(xButton);
end;
{*Simple Custom Object Finder Function*}
function renzanityFindObj(hue, sat: extended; W, H, colour, tolerance, clickType: integer; mouseOverText, chooseOptions: array of string): boolean;
var
i, x, y: integer;
TPA: TPointArray;
ATPA: T2DPointArray;
begin
if not isLoggedIn() then
exit(false);
findColorsSpiralTolerance(x, y, TPA, colour, mainScreen.getBounds(), tolerance, colorSetting(2, hue, sat));
if (length(TPA) < 1) then
exit();
ATPA := TPA.cluster(W, H);
ATPA.filterBetween(0, 5);
ATPA.sortFromSize(25, true);
ATPA.sortFromMidPoint(mainscreen.playerPoint);
smartImage.debugATPA(ATPA);
for i := 0 to high(ATPA) do
begin
case random(5) of
0..3: missMouse(middleTPA(ATPA[i]), true)
else
mouse(middleTPA(ATPA[i]), MOUSE_MOVE);
end;
if isMouseOverText(mouseOverText, 500) then
begin
fastClick(clickType);
if clickType = MOUSE_LEFT then
exit(true);
if chooseOption.select(chooseOptions) then
exit(true)
else
mouse(mainscreen.getBounds().getGaussPoint(), MOUSE_MOVE);
end;
end;
end;
{*Function to detect if the player is still cracking the safe*
*Credits: The Mayor - VEB Miner*}
function isPlayerAnimating(minShift: integer): boolean;
var
shift: integer;
begin
shift := getPixelShiftAverage(mainscreen.playerBox, 150, 70);
result := shift > minShift;
end;
{*SPS Compilation*}
procedure loadResources();
begin
path[0] := [Point(238, 528), Point(237, 570), Point(216, 589)]; {*Path to the Safes*}
path[1] := [Point(215, 586), Point(162, 597)]; {*Path to the Banker in Den*}
path[2] := [Point(158, 599), Point(217, 587)]; {*Path back to the Safes from Den Banker*}
path[3] := [Point(130, 170), Point(151, 207), Point(141, 250), Point(118, 280)]; {*Path to the Bank to Heal*}
path[4] := [Point(117, 285), Point(141, 251), Point(151, 212), Point(196, 171)]; {*Path back to the trapdoor*}
sapphireDTM := DTMFromString('mggAAAHicY2NgYIhlYmDwB+IIIE4E4mQgTgLiKEYGhmggToLiSCAOAWIeviigLiYMLMeAHTDiwBAAAPdBBQs=');
emeraldDTM := DTMFromString('mggAAAHicY2NgYGhjYmCoBOIGJgi7F4qjGSE4CYoTgDgMiHmi+IG6mDCwHAN2wIgDQwAAakIGCw==');
rubyDTM := DTMFromString('mggAAAHicY2NgYIhhYmDwB+JQIE4A4mQoXsLIwLAIiFcC8SogXgjEc4E4gJ8bqIsJA8sxYAeMODAEAACOlwau');
SPS.setup('safeCracker', RUNESCAPE_OTHER); {*Used Ancrath's SPS Map*}
end;
{*Free DTMs*}
procedure freeTheDTMs();
begin
freeDTMs([sapphireDTM, emeraldDTM, rubyDTM]);
end;
{*Gem counter*}
procedure gemCount();
begin
sCount := (sCount + tabBackPack.countDTM(sapphireDTM));
eCount := (eCount + tabBackpack.countDTM(emeraldDTM));
rCount := (rCount + tabBackpack.countDTM(rubyDTM));
end;
{*To log you in*}
procedure logIn();
begin
if not isLoggedIn() then
begin
players[currentPlayer].login();
loadResources();
wait(randomRange(3000, 5000)); //To wait for the lag to subside
minimap.clickCompass(); //So you're always facing north
mainScreen.setAngle(MS_ANGLE_HIGH); //Sets your angle to the highest possible angle
mainScreen.setZoom(true); //Fixes your zoom..probably pointless because of the clickCompass.
findNormalRandoms(); //Closes all screen interferences
if (not gameTabs.isTabActive(TAB_BACKPACK)) then
gameTabs.openTab(TAB_BACKPACK);
end;
end;
{*To take a break for 1-3mins after 1-2hrs*}
procedure miniBreak();
begin
writeLn('Taking a break..');
case random(50) of
0..35: begin
players[currentPlayer].exitToLobby();
scriptTimer.pause();
wait(randomRange(62000, 160500)); //Edit this part if you want to change how long the break should be
inc(BreaksTaken);
loadResources(); //Default = 1min to 3min range
BreakTimer.reset();
logIn();
ScriptTimer.start();
BreakTimer.start();
end;
36..50: begin
players[currentPlayer].logout();
scriptTimer.pause();
wait(randomRange(160500, 310500)); //Edit this part if you want to change how long the break should be
inc(BreaksTaken); //Default = 3min to 5min range
BreakTimer.reset();
logIn();
ScriptTimer.start();
BreakTimer.start();
end;
end;
end;
{*To reload the client after 6hrs*}
procedure reloadSmart();
begin
writeLn('Reached 6hrs of runtime..restarting SMART..');
wait(randomRange(500, 800));
writeLn('Waiting for 5 mins to reload..');
scriptTimer.pause();
smartReloadClient(284231);
inc(BreaksTaken);
ReloadTimer.reset();
logIn();
ScriptTimer.start();
ReloadTimer.start();
end;
{*******************************************************************************
******************** CODE FOR THE SCRIPT STARTS HERE ********************
*******************************************************************************}
{*Taverley lodestone*}
procedure lodeTav();
begin
if (not isLoggedIn()) or (tabBackPack.isFull()) then
exit;
findNormalRandoms();
writeLn('Using Taverley lodestone..');
lodestoneScreen.teleportTo(LOCATION_TAVERLEY);
wait(randomRange(16800, 18000)); //To wait for the screen to load..
end;
{*Progress Report*}
procedure pRep();
var
time, currentXp, xpPH, craftXpPH, sPH, ePH, rPH: integer;
sC, sCPH: double;
begin
time := ScriptTimer.getTime();
currentXp := (chatBox.getXpBar() - startXp);
xpPH := round((currentXp * 60) / (time / 60000));
sC := (currentXp / 70);
sCPH := round((sC * 60) / (time / 60000));
sPH := round((sCount * 60) / (time / 60000));
ePH := round((eCount * 60) / (time / 60000));
rPH := round((rCount * 60) / (time / 60000));
craftXpPH := round((craftXP * 60) / (time / 60000));
clearDebug();
writeLn('v1.4'); //Progress report in the debug
writeLn('/=======================================\');
writeLn('|========Renzanity Safe Cracker=========|');
writeLn(PadR('| Time Ran: ' + msToTime(time, TIME_SHORT), 40) + '|');
writeLn(PadR('| No. of breaks taken: ' + intToStr(breaksTaken), 40) + '|');
writeLn(PadR('| No. of safes cracked: ' + floatToStr(sC), 40) + '|');
writeLn(PadR('| Safes cracked/hr: ' + floatToStr(sCPH), 40) + '|');
writeLn(PadR('| Thieving xp: ' + intToStr(currentXp) + ' xp', 40) + '|');
writeLn(PadR('| Thieving xp/hr: ' + intToStr(xpPH) + ' xp', 40) + '|');
if toCut then
begin
writeLn(PadR('| Crafting xp: ' + floatToStr(craftXP) + ' xp', 40) + '|');
writeLn(PadR('| Crafting xp/hr: ' + intToStr(craftXpPH) + ' xp', 40) + '|');
end;
writeLn(PadR('| Sapphire Count: ' + intToStr(sCount) + ' pcs' + ' ~ S/hr: ' + intToStr(sPH) + ' pcs', 40) + '|');
writeLn(PadR('| Emerald Count: ' + intToStr(eCount) + ' pcs' + ' ~ E/hr: ' + intToStr(ePH) + ' pcs', 40) + '|');
writeLn(PadR('| Ruby Count: ' + intToStr(rCount) + ' pcs' + ' ~ R/hr: ' + intToStr(rPH) + ' pcs', 40) + '|');
writeLn('\=======================================/');
end;
{*To cut the gems*}
procedure cutGems();
begin
if (not isLoggedIn()) or (tabBackPack.count() < 1) then
exit;
findNormalRandoms();
wait(randomRange(800, 1000));
writeLn('Going to cut gems now..');
begin
typeByte(VK_1); //Place any gem on the actionbar tab1
if productionScreen.isOpen(2000) then
begin
productionScreen.clickStart(true);
if progressScreen.isOpen(2000) then
repeat
antiBan();
wait(randomRange(500, 1000));
until not progressScreen.isOpen();
end;
end;
wait(randomRange(300, 500));
begin
typeByte(VK_2); //Place any gem on the actionbar tab2
if productionScreen.isOpen(2000) then
begin
productionScreen.clickStart(true);
if progressScreen.isOpen(2000) then
repeat
antiBan();
wait(randomRange(500, 1000));
until not progressScreen.isOpen();
end;
end;
wait(randomRange(300, 500));
begin
typeByte(VK_3); //Place any gem on the actionbar tab3
if productionScreen.isOpen(2000) then
begin
productionScreen.clickStart(true);
if progressScreen.isOpen(2000) then
repeat
antiBan();
wait(randomRange(500, 1000));
until not progressScreen.isOpen();
end;
end;
wait(randomRange(300, 500));
{*Crafting xp counter*}
craftXP := ((sCount * 50) + (eCount * 67.5) + (rCount * 85));
end;
{*To heal with food from Den banker*}
procedure healFood();
begin
if (not isLoggedIn()) or (actionBar.getHPPercent() >= 90) then
exit;
findNormalRandoms();
pRep();
wait(randomRange(500, 800));
SPS.walkPath(path[1]);
case random(10) of
0..7: begin
writeLn('Looking for the Emerald Banker');
repeat
if renzanityFindObj(0.26, 0.59, 4, 10, 3496520, 23, MOUSE_LEFT, ['ank'], ['']) then
begin
smallRandomMouse(5 + random(50));
if bankScreen.isOpen(3000) then
begin
writeLn('Withdrawing food..');
bankScreen.clickButton(BANK_BUTTON_PRESET_2);
repeat
writeLn('Eating..');
typeByteWait(VK_4, 50 + random(70));
wait(randomRange(100, 400));
until (actionBar.getHPPercent() = 100);
if not tabBackPack.isEmpty() then
repeat
if renzanityFindObj(0.26, 0.59, 4, 10, 3496520, 23, MOUSE_LEFT, ['ank'], ['']) then
begin
smallRandomMouse(5 + random(50));
smartImage.clearArea(mainScreen.getBounds());
if bankScreen.isOpen(3000) then
if device then
begin
bankScreen.clickButton(BANK_BUTTON_PRESET_1);
pickUpMouse();
end else
begin
repeat
wait(randomRange(500, 800));
bankScreen.quickDeposit(QUICK_DEPOSIT_INVENTORY);
until bankScreen.isPackEmpty();
pickUpMouse();
bankScreen.close();
end;
wait(randomRange(300, 500));
SPS.walkPath(path[2]);
end;
until bankScreen.isOpen(5000);
end;
end;
until bankScreen.isOpen(5000);
end;
8..10: begin
writeLn('Looking for the Emerald Banker');
repeat
if renzanityFindObj(0.26, 0.59, 4, 10, 3496520, 23, MOUSE_RIGHT, ['ank'], ['ank']) then
begin
smallRandomMouse(5 + random(50));
smartImage.clearArea(mainScreen.getBounds());
if bankScreen.isOpen(3000) then
begin
writeLn('Withdrawing food..');
bankScreen.clickButton(BANK_BUTTON_PRESET_2);
repeat
writeLn('Eating..');
typeByteWait(VK_4, 50 + random(70));
wait(randomRange(100, 400));
until (actionBar.getHPPercent() = 100);
if not tabBackPack.isEmpty() then
repeat
if renzanityFindObj(0.26, 0.59, 4, 10, 3496520, 23, MOUSE_RIGHT, ['ank'], ['ank']) then
begin
smallRandomMouse(10 + random(50));
if bankScreen.isOpen(3000) then
if device then
begin
bankScreen.clickButton(BANK_BUTTON_PRESET_1);
pickUpMouse();
end else
begin
repeat
wait(randomRange(500, 800));
bankScreen.quickDeposit(QUICK_DEPOSIT_INVENTORY);
until bankScreen.isPackEmpty();
pickUpMouse();
bankScreen.close();
end;
wait(randomRange(300, 500));
SPS.walkPath(path[2]);
end;
until bankScreen.isOpen(3000);
end;
end;
until bankScreen.isOpen(3000);
end;
end;
end;
{*To heal in Taverley Bank*
*Part of the code came from Ancrath's Safe Cracker script*}
procedure healBank();
var
x, y: integer;
tDoor: TBox;
begin
if (not isLoggedIn()) or (actionBar.getHPPercent() >= 90) then
exit;
lodeTav();
findNormalRandoms();
SPS.walkPath(path[3]);
repeat
antiBan();
findNormalRandoms();
until (actionBar.getHPPercent() = 100);
SPS.walkPath(path[4]);
writeLn('Finding the Den Entrance..');
renzanityFindObj(0.06, 0.65, 8, 8, 3094656, 5, MOUSE_NONE, [''], ['']);
smartImage.clearArea(mainScreen.getBounds());
wait(randomRange(200, 500));
getMousePos(x, y);
tDoor := [x-23, y-28, x-17, y-22];
mouseBox(tDoor);
wait(randomRange(500, 800));
if isMouseOverText(['rapdoor']) then
case random(10) of
0..5: begin
mouseBox(tDoor, MOUSE_LEFT);
smallRandomMouse(5 + random(50));
end;
6..10: begin
mouseBox(tDoor, MOUSE_RIGHT);
if chooseOption.isOpen() then
begin
chooseOption.select(['pen']);
smallRandomMouse(5 + random(50));
end;
end;
end;
wait(randomRange(5000, 7500));
SPS.walkPath(path[0]);
end;
{*To find banker and bank*}
procedure bank();
begin
if (not isLoggedIn()) or (tabBackPack.isEmpty()) then
exit;
findNormalRandoms();
pRep();
SPS.walkPath(path[1]);
case random(10) of
0..7: begin
writeLn('Looking for the Emerald Banker');
repeat
if renzanityFindObj(0.26, 0.59, 4, 10, 3496520, 23, MOUSE_LEFT, ['ank'], ['']) then
begin
smallRandomMouse(5 + random(50));
smartImage.clearArea(mainScreen.getBounds());
end;
until bankScreen.isOpen(3000);
if device then
begin
if bankScreen.isOpen(10000) then
begin
writeLn('Depositting loot..');
bankScreen.clickButton(BANK_BUTTON_PRESET_1);
end;
pickUpMouse();
SPS.walkPath(path[2]);
end else
begin
if bankScreen.isOpen(10000) then
begin
writeLn('Depositting loot..');
repeat
wait(randomRange(1000, 1500));
bankScreen.quickDeposit(QUICK_DEPOSIT_INVENTORY);
until bankScreen.isPackEmpty();
pickUpMouse();
bankScreen.close();
SPS.walkPath(path[2]);
end;
end;
end;
8..10: begin
writeLn('Looking for the Emerald Banker');
repeat
if renzanityFindObj(0.26, 0.59, 4, 10, 3496520, 23, MOUSE_RIGHT, ['ank'], ['ank']) then
begin
smallRandomMouse(5 + random(50));
smartImage.clearArea(mainScreen.getBounds());
end;
until bankScreen.isOpen(3000);
if device then
begin
if bankScreen.isOpen(10000) then
begin
writeLn('Depositting loot..');
bankScreen.clickButton(BANK_BUTTON_PRESET_1);
end;
pickUpMouse();
SPS.walkPath(path[2]);
end else
begin
if bankScreen.isOpen(10000) then
begin
writeLn('Depositting loot..');
repeat
wait(randomRange(1000, 1500));
bankScreen.quickDeposit(QUICK_DEPOSIT_INVENTORY);
until bankScreen.isPackEmpty();
pickUpMouse();
bankScreen.close();
SPS.walkPath(path[2]);
end;
end;
end;
end;
end;
{*To crack the safe*}
procedure crack();
begin
if not isLoggedIn() then
exit;
findNormalRandoms();
if tabBackPack.isFull() then
begin
gemCount();
wait(randomRange(300, 500));
pRep();
if toCut then
begin
cutGems();
wait(randomRange(500, 800));
bank();
end else bank();
end;
if (actionBar.getHPPercent() <= 25) then
if heal then
begin
if toCut then
begin
cutGems();
bank();
healFood();
end else
begin
bank();
healFood();
end;
end else
begin
if toCut then
begin
cutGems();
bank();
healBank();
end else
begin
bank();
healBank();
end;
end;
if not isPlayerAnimating(140) then
case random(50) of
0..47: begin
writeLn('Finding safes..');
if renzanityFindObj(0.08, 0.14, 10, 10, 4083556, 7, MOUSE_LEFT, ['afe'], ['']) then
begin
case random(10) of
0..7: smallRandomMouse(5 + random(50));
8..10: begin
fastClick(MOUSE_LEFT);
smallRandomMouse(5 + random(50));
end;
end;
writeLn('Cracking the safe now..');
pRep();
smartImage.clearArea(mainScreen.getBounds());
end else SPS.walkPath(path[2]);
end;
48..50: begin
writeLn('Finding safes..');
if renzanityFindObj(0.08, 0.14, 10, 10, 4083556, 7, MOUSE_RIGHT, ['afe'], ['rack']) then
begin
smallRandomMouse(5 + random(50));
writeLn('Cracking the safe now..');
pRep();
smartImage.clearArea(mainScreen.getBounds());
end else SPS.walkPath(path[2]);
end;
end;
end;
{*Setup*}
begin
clearDebug(); //To clear the debug box
smartEnableDrawing := true; //To enable us to have that cool proggy
smartShowConsole := false; //To get rid of that pesky DoS window
initPlayerForm();
runPlayerForm();
if (not playerForm.isScriptReady) then
exit;
ScriptTimer.start();
declarePlayers();
addOnTerminate('freeTheDTMs');
disableIPScreenshots := true;
disableSRLLog := true;
setupSRL();
mouseSpeed := random(30, 50); //Randomized mouse speed for a more human-like action
loadResources();
logIn(); //Logs you in when you're logged out
startXp := chatbox.getXpBar(); //Gets your xp while running the script
BreakTimer.start();
ReloadTimer.start();
{*Mainloop*}
repeat
crack();
//Edit this part if you want to change how long before you take a break
if breakTimer.getTime() >= (randomRange(3655000, 7203500)) then
miniBreak(); //Edit this part if you want to change how long before you reset your SMART
if reloadTimer.getTime() >= (randomRange(21600000, 23400000)) then
reloadSmart();
until not isLoggedIn();
end.