Simbanoobie
2014-10-07 00:17:05
NoobieBananaPicker V1.0
What this script does:
-Picks bananas at Karamja plantation
-Puts them into baskets (carry 5 per inventory slot vs 1)
-Teleports (via Ring of Dueling) to Castle Wars
-Teleports back to Karamja plantation with Amulet of Glory
What this script REQUIRES:
Within Runescape:
-Membership
-Amulets of Glory(4) [ About 3 per hour you want to run the script ]
-Rings of Dueling [ About 1.5 per hour you want to run the script ]
-Baskets [ About 275 per hour you want to run the script ]
-Start At Castle wars Bank OR (see img below)
Make sure your action bar is set up like this. If you start at bank, then it will set it up for you automatically. Again, only the slots inside the red box matter.

Your Bank slots Setup Like So [the script won't do this automatically like the actionbar]:

Outside of Runescape:
-Direct X Include
-SPS Include
-The SPS image at the bottom of the thead [Copy & Save It To Includes –> SPS –> img –> Runescape_Surface]
Not Required but Recommended:
-Start with a Fresh Glory/ROD (That way 50% of the time they line up and you switch out both at same time)
-Make the Chatbox as small as possible (For finding banana trees/bank chest more easily)
-Run on a world that has more people on it (Faster banana re-spawn times I think) I will add World Selection to the player form soon
-Don't Wear Yellow (specifically, bright yellow. e.g. yellow partyhat, bright yellow gnome robes) It will slow down the banana picking.
Potential Updates:
-Add Breaking
-Add World Selection
-Improve banana finding/picking function (it works, but it could be improved for accuracy/speed)
Things to note:
-Bananas are used for fruit bats. They are not a high volume item. This means that they may not, and probably won't sell instantly.
-Baskets of bananas sell more slowly, because many people making fruit bats don't realize that they could use baskets to make fruit bats much faster.
-I did not make this script to use personally, just for learning purposes, so sell them for whatever you want, BUT selling them lower only cuts into your profits.
-Change the basket of banana price to your liking via the playerform(when starting script) to ensure accurate profit/hr. Default is 2000 (that is what they cost when I uploaded the script).
ANY feedback is appreciated. I am just beginning to learn so anything helps.
What this script does:
-Picks bananas at Karamja plantation
-Puts them into baskets (carry 5 per inventory slot vs 1)
-Teleports (via Ring of Dueling) to Castle Wars
-Teleports back to Karamja plantation with Amulet of Glory
What this script REQUIRES:
Within Runescape:
-Membership
-Amulets of Glory(4) [ About 3 per hour you want to run the script ]
-Rings of Dueling [ About 1.5 per hour you want to run the script ]
-Baskets [ About 275 per hour you want to run the script ]
-Start At Castle wars Bank OR (see img below)
Make sure your action bar is set up like this. If you start at bank, then it will set it up for you automatically. Again, only the slots inside the red box matter.

Your Bank slots Setup Like So [the script won't do this automatically like the actionbar]:

Outside of Runescape:
-Direct X Include
-SPS Include
-The SPS image at the bottom of the thead [Copy & Save It To Includes –> SPS –> img –> Runescape_Surface]
Not Required but Recommended:
-Start with a Fresh Glory/ROD (That way 50% of the time they line up and you switch out both at same time)
-Make the Chatbox as small as possible (For finding banana trees/bank chest more easily)
-Run on a world that has more people on it (Faster banana re-spawn times I think) I will add World Selection to the player form soon
-Don't Wear Yellow (specifically, bright yellow. e.g. yellow partyhat, bright yellow gnome robes) It will slow down the banana picking.
Potential Updates:
-Add Breaking
-Add World Selection
-Improve banana finding/picking function (it works, but it could be improved for accuracy/speed)
Things to note:
-Bananas are used for fruit bats. They are not a high volume item. This means that they may not, and probably won't sell instantly.
-Baskets of bananas sell more slowly, because many people making fruit bats don't realize that they could use baskets to make fruit bats much faster.
-I did not make this script to use personally, just for learning purposes, so sell them for whatever you want, BUT selling them lower only cuts into your profits.
-Change the basket of banana price to your liking via the playerform(when starting script) to ensure accurate profit/hr. Default is 2000 (that is what they cost when I uploaded the script).
ANY feedback is appreciated. I am just beginning to learn so anything helps.
program NoobieBananaPicker;
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
{$i srl-6/lib/misc/srlplayerform.simba}
{$I SPS/lib/SPS-RS3.Simba}
var
x,y, BasketsFilled, Proggy, BasketPrice: integer;
BasketDTMINV,BasketDTMACTBAR,RODDTM,GloryDTM: integer;
NeedROD,NeedGlory: Boolean;
procedure TeleportToKaramja;
begin
if (FindDtm(GloryDTM,x,y,actionbar.getBounds)) then
begin
gameTabs.openTab(3);
if (FindDTM(GloryDTM,x,y,tabbackpack.getBounds)) then
begin
mouse(x,y,7,7,MOUSE_RIGHT);
sleep (50 + Random (25));
chooseOption._select(['Karamja', 'aramja', 'amja'],MOUSE_LEFT,false,1.00,1500);
sleep(3000 + Random(300));
end;
end;
end;
procedure DoBanking;
begin
if (bankScreen.isOpen = False) then
begin
if (tabBackpack.count < 3) then
begin
if (tabbackpack.clickDTM(RODDTM,MOUSE_LEFT,'',1000)) then
begin
writeln('No Longer Need ROD');
NeedROD := False;
end;
if (tabbackpack.clickDTM(GloryDTM,MOUSE_LEFT,'',1000)) then
begin
writeln('No Longer Need Glory');
NeedGlory := False
end;
end;
if (FindDTM(GloryDTM,x,y,actionbar.getBounds) = False) then
begin
NeedGlory := True;
writeln('Glory Needed');
end;
if (FindDTM(RODDTM,x,y,actionbar.getBounds) = False) then
begin
NeedROD := True;
writeln('ROD Needed');
end;
if (bankScreen.open(BANK_CHEST_CW) = False) then
begin
if (findColorTolerance(x, y, 6666315, mainscreen.getbounds ,10) = False) then
sps.blindWalk(Point(665,196)); // Bank Point
end;
end;
if (bankScreen.isOpen) then
begin
bankScreen.quickDeposit(QUICK_DEPOSIT_INVENTORY);
if ((NeedGlory = True) OR (NeedROD = True)) then
begin
if (NeedGlory = True) then
begin
bankscreen.withdraw(1, 1, ['of glory', 'mulet of gl', 'ulet', '(4)']);
writeln('Withdrawing New Glory');
end;
if (NeedROD = True) then
begin
bankscreen.withdraw(2, 1, ['of duel', 'ing of', 'duel']);
writeln('Withdrawing New ROD');
end;
bankScreen.close;
sleep(1000 + Random(100));
end;
if ((NeedGlory = False) AND (NeedROD = False)) then
begin
bankscreen.quickDeposit(QUICK_DEPOSIT_INVENTORY);
bankscreen.withdraw(3, 23, ['asket', 'Baske']);
bankscreen.close;
sleep (250 + Random(100));
TeleportToKaramja;
end;
end;
end;
procedure setup;
begin
BasketDTMACTBAR := DTMFromString('mlwAAAHicY2dgYLjOxMBwA4gvMEHYD4D4HBDfA+I4RgYGLyCOBeJkKB0GxAFAXJEXy5ASYsFQV5zIkJcaypAS7ctQlBHBkBBoxsAFNBcXZsSDoQAAoPYQiQ==');
BasketDTMINV := DTMFromString('mrAAAAHic42BgYLjBxMBwFYivA/FNIH4MxKeB+BwQPwTiakYI7gTiHCCugeIWIG4G4pQAXYYEX22gSUxYMTuQBGFcgJEAhgEAs5UMoA==');
RODDTM := DTMFromString('mWAAAAHicY2FgYDgHxGeB+BgQXwLiv4wMDDxMDAwcQMwKxBKrZBjWT5dkOL5GhuHVKUUGfqAaZMyIhkEAAEaQCjY=');
GloryDTM := DTMFromString('mbQAAAHicY2VgYFgGxCuBeD0QLwTiJUAswMTA8IuRgYGJCYKFgThTpJfh1YMHDBdPHGc4c/gww91b8gz8QLXomBELBgMA4K4O/w==');
AddOnTerminate('FreeAllDTMs');
BasketsFilled := 0;
end;
procedure FreeAllDTMs;
begin
FreeDTM(BasketDTMACTBAR);
FreeDTM(BasketDTMINV);
FreeDTM(RODDTM);
FreeDTM(GloryDTM);
end;
procedure progressReport();
var
profit, profitPerHour: integer;
begin
profitPerHour := round((BasketsFilled * BasketPrice) /(getTimeRunning() / 3600000));
profit := round((BasketsFilled * BasketPrice));
writeln('===========Banana Picker V1.0============');
writeln(' Baskets Filled: ' + (toStr(BasketsFilled)));
writeln(' Profit: ' + (toStr(profit)));
writeln(' Profit per Hour ' + (toStr(profitPerHour)));
writeLn('Time running: ' + timeRunning(TIME_FORMAL_LONG));
writeln('=========================================');
end;
procedure initialSetup;
begin
exitTreasure();
sleep(500 + Random (300));
minimap.clickCompass;
sleep(500 + Random (300));
mainscreen.setAngle(MS_ANGLE_HIGH);
sleep(500 + Random (300));
if (bankScreen.open(BANK_CHEST_CW)) then
begin
bankScreen.quickDeposit(QUICK_DEPOSIT_INVENTORY);
sleep(300 + Random (300));
bankscreen.withdraw(1, 1, ['of glory', 'mulet of gl', 'ulet', '(4)']);
sleep(300 + Random (300));
bankscreen.withdraw(2, 1, ['of duel', 'ing of', 'duel']);
sleep(300 + Random (300));
bankscreen.withdraw(3, 1, ['asket', 'sket', 'ask']);
sleep(300 + Random (300));
bankscreen.close;
sleep(1000 + Random (500));
end;
if (FindDTM(BasketDTMINV,x,y,tabbackpack.getBounds)) then
begin
writeln('Adding Basket To Actionbar');
mouse(x,y,9,9,MOUSE_MOVE);
sleep (75 + Random(35));
holdMouse(x, y, MOUSE_LEFT);
sleep (80 + Random(25));
mousebox(actionbar.getSlotBox(3));
sleep (40 + Random (20));
GetMousePos(x,y);
sleep (20 + Random (35));
ReleaseMouse(x,y,MOUSE_LEFT);
end;
if (FindDTM(RODDTM,x,y,tabbackpack.getBounds)) then
begin
writeln('Adding Ring of Dueling To Actionbar');
mouse(x,y,5,5,MOUSE_MOVE);
sleep (75 + Random(35));
holdMouse(x, y, MOUSE_LEFT);
sleep (80 + Random(25));
mousebox(actionbar.getSlotBox(2));
sleep (40 + Random (20));
GetMousePos(x,y);
sleep (20 + Random (35));
ReleaseMouse(x,y,MOUSE_LEFT);
end;
if (FindDTM(GloryDTM,x,y,tabbackpack.getBounds)) then
begin
writeln('Adding Glory To Actionbar');
mouse(x,y,5,5,MOUSE_MOVE);
sleep (75 + Random(35));
holdMouse(x, y, MOUSE_LEFT);
sleep (80 + Random(25));
mousebox(actionbar.getSlotBox(1));
sleep (40 + Random (20));
GetMousePos(x,y);
sleep (20 + Random (35));
ReleaseMouse(x,y,MOUSE_LEFT);
end;
end;
procedure declarePlayers();
var
i: integer;
begin
players.setup(playerForm.players);
currentPlayer := 0;
for i := 0 to high(players) do
with players[i] do
begin
integers[0] := strToInt(playerForm.players[i].settings[0]);
integers[1] := strToInt(playerForm.players[i].settings[1]);
integers[2] := strToInt(playerForm.players[i].settings[2]);
integers[3] := strToInt(playerform.players[i].settings[3]);
BasketPrice := strToInt(playerform.players[i].settings[4]);
end;
end;
procedure initPlayerForm();
begin
with playerForm do
begin
name := 'BananaPicker V1.0';
scriptHelpThread := '';
editBoxLabels := ['Not Yet Used', 'Not Yet Used', 'Not Yet Used', 'Not Yet Used','Basket Of Bananas Price'];
editBoxDefaults := ['0', '0', '0','0','2000'];
end;
end;
procedure PickBananas();
var
i: integer;
begin
if(FindDTM(BasketDTMACTBAR,x,y,actionbar.getBounds) = True) then
begin
if (tabBackPack.isFull) then
begin
case random(10) of
0..7: Typesend('3',false);
8..9: actionbar.clickSlot(3);
end
BasketsFilled := (BasketsFilled + 1);
end;
if (mainscreen.findObject(x, y, [1569018, 1702910, 1297886 ], [13, 11, 11], colorSetting(2, 0.02, 0.13), mainscreen.getCenterPoint(), 10, 10, 1, ['ick Ban'], mainscreen.getBounds(), MOUSE_NONE) = False) then
sps.blindWalk(Point(218,226)); // Middle of Banana Plantation
if (mainscreen.findObject(x, y, [1569018, 1702910, 1297886 ], [13, 11, 11], colorSetting(2, 0.02, 0.13), mainscreen.getCenterPoint(), 10, 10, 1, ['ick Ban'], mainscreen.getBounds(), MOUSE_MOVE)) then
begin
if isMouseOverText(['ick Ban', 'ick'], 500) then
begin
if (minimap.isPlayerMoving(100) = False) then
begin
Mouse(Point(x,y),MOUSE_LEFT,MOUSE_HUMAN);
tabBackPack.waitForShift(2000 + Random(250));
end;
end;
end;
end;
if(FindDTM(BasketDTMACTBAR,x,y,actionbar.getBounds) = False) then
begin
if (findColorTolerance(x, y, 6666315, mainscreen.getbounds ,10) = True) then
begin
if (FindDtm(RODDTM,x,y,actionbar.getBounds)) then
begin
gameTabs.openTab(3);
if (FindDTM(RODDTM,x,y,tabbackpack.getBounds)) then
begin
mouse(x,y,7,7,MOUSE_RIGHT);
sleep (50 + Random (25));
chooseOption._select(['astle War', 'stle Wa', 'tle Wa'],MOUSE_LEFT,false,1.00,1500)
end;
sleep(5000 + Random(300));
end;
end;
end;
end;
begin
initPlayerForm();
runPlayerForm();
declarePlayers();
if (not playerForm.isScriptReady) then
exit;
SmartEnableDrawing := True;
smartPlugins := ['OpenGL32.dll','d3d9.dll'];
setupSRL();
disableSRLDebug := True;
setup;
sps.setup('BananaPickerMap', RUNESCAPE_SURFACE, 4, 600.0, 0.40)
repeat
if (Proggy > 50) then
begin
ProgressReport;
Proggy := 0;
end;
if not isLoggedIn() then
begin
players[currentPlayer].login();
wait(randomRange(5000, 6000));
initialsetup;
end;
if isLoggedIn() then
begin
exitTreasure();
Proggy := Proggy + 1;
if (findColorTolerance(x, y, 6666315, mainscreen.getbounds ,10) = True) then
PickBananas;
if (findColorTolerance(x, y, 6666315, mainscreen.getbounds ,10) = False) then
DoBanking;
end;
until false
end. ===========Banana Picker V1.0============
Baskets Filled: 737
Profit: 1474000
Profit per Hour 550913
Time running: 2 Hours 40 Minutes 32 Seconds
=========================================

