-
Posts
201 -
Joined
-
Last visited
-
Days Won
1 -
Feedback
0%
Lol_marcus last won the day on August 7
Lol_marcus had the most liked content!
Profile Information
-
Gender
Male
Recent Profile Visitors
2141 profile views
Lol_marcus's Achievements
Steel Poster (4/10)
63
Reputation
-
Hi I made this to train RCing in F2P; in short, you have 1 account that's the "master" account that sits at the air altar and waits for trades to come in, and the "slave" accounts run back and forth between the altar and the bank and trade pure essence to the master account. You choose this when you start the script (master or slave). It prompts you to put a username in, so it'll know to always trade the master account. I don't have it set up to trade accounts with a space in the name (it's fairly simple to do, I just never have usernames with spaces xD) so you'll have to change that yourself if you want to. Other than that, just start with the air tiara equipped and the script'll do the rest for you. It's a work in progress, but works fine at the moment!
-
Depends what your end goal is. If you want an account to last ages and maybe even max, I would probably start with a few quests, get those annoying level 1-30 stats out of the way fairly quick.
-
Lost a few accounts yesterday, but also have 2 accounts that have been going strong for nearly 5 months, over 50m xp gained between them. I start them after 7 pm UK time and run them for 6 hours until it's auto logged. Have been doing that daily for these last 5 months.
-
Hi! In Alfred Grimhands Barcrawl, when he's looking for Zembo, I think the script is set to look for an NPC called "zAmbo" however the NPC is called "zEmbo". Other than that, worked flawlessly. (;
-
Thank you, I appreciate that! Likely never, my motivation to play tends to come and go
-
Hi! Today I remembered void armour was a thing, so I made this; it works well and as intended - around 350 points gained so far between testing and actually running. In a nutshell: it will cross the nearest gangplank (that way you can use it on any of the boat levels) it will wait until the game starts when the game starts, it will click between 14-18 tiles south (because the PC map's coords change constantly) it will stay around the void knight and kill any enemies within a specified radius it will constantly 1 tick prayer flick (so you never take too much damage and you always get boosts) rinse and repeat Feel free to use as-is, copyfor your own projects, or suggest improvements! @ScriptManifest(info = "", logo = "", name = "Pest Control", author = "Marcus", version = 1.0) public class pestControl extends Script { private InvokeHelper invokeHelper; private Position ATTACK_ZONE_POSITION; private boolean gameStarted = false; public void onStart() throws InterruptedException { super.onStart(); invokeHelper = new InvokeHelper(this); log("Bot Started!"); } @Override public int onLoop() { if (!isInGame()) { gameStarted = false; if (!isInBoat()) { crossGangplank(); } } else { if (!gameStarted) { setAttackZonePosition(); gameStarted = true; } if (shouldGoToAttackZone()) { goToAttackZone(); } else { attackNearbyNPC(); } } return random(200, 300); } @Override public void onGameTick() { super.onGameTick(); RS2Widget quickPrayerWidget = getQuickPrayerWidget(); if (quickPrayerWidget == null) { return; } if (getPrayer().isQuickPrayerActive()) { invokeHelper.invoke(quickPrayerWidget, 0); invokeHelper.invoke(quickPrayerWidget, 0); } else { invokeHelper.invoke(quickPrayerWidget, 0); } } private RS2Widget getQuickPrayerWidget() { return getWidgets().get(160, 19); } private boolean isInGame() { RS2Widget gameWidget = getWidgets().get(408, 5); return gameWidget != null && gameWidget.isVisible(); } private boolean isInBoat() { RS2Widget boatWidget = getWidgets().get(407, 4); return boatWidget != null && boatWidget.isVisible(); } private void crossGangplank() { RS2Object gangplank = getObjects().closest("Gangplank"); if (gangplank != null && gangplank.interact("Cross")) { Sleep.until(() -> isInBoat(), 5000); if (isInBoat()) { log("Waiting for the game to start..."); Sleep.until(() -> isInGame(), 5000); } } } private void setAttackZonePosition() { Position playerStartPosition = myPosition(); if (playerStartPosition != null) { ATTACK_ZONE_POSITION = new Position(playerStartPosition.getX(), playerStartPosition.getY() - (random(14,18)), 0); log("Attack zone position set to: " + ATTACK_ZONE_POSITION); } } private boolean shouldGoToAttackZone() { return ATTACK_ZONE_POSITION != null && myPlayer().getPosition().distance(ATTACK_ZONE_POSITION) > 7; } private void goToAttackZone() { if (!myPlayer().isAnimating() && !myPlayer().isMoving()) { log("Running to the attack zone at position: " + ATTACK_ZONE_POSITION); getWalking().walk(ATTACK_ZONE_POSITION); Sleep.until(() -> myPlayer().getPosition().distance(ATTACK_ZONE_POSITION) <= 7, 10000); } else { log("Player is moving..."); } } private void attackNearbyNPC() { NPC target = getNpcs().closest(npc -> npc != null && npc.exists() && npc.hasAction("Attack") && getMap().canReach(npc) && isNearAttackZone(npc) ); if (target != null) { log("Attacking NPC: " + target.getName()); if (invokeHelper.invoke(target, "Attack")) { Sleep.until(() -> myPlayer().isAnimating() || myPlayer().isUnderAttack(), 1000); } } else { log("No suitable NPC found."); } } private boolean isNearAttackZone(NPC npc) { return npc != null && ATTACK_ZONE_POSITION != null && ATTACK_ZONE_POSITION.distance(npc.getPosition()) < 7; } @Override public void onExit() { log("Bot Stopped!"); } }
-
Lol_marcus started following Camaro
-
Hi, This script will mainly uses invokes and scatters vile ashes in f2p for upwards of 70k prayer XP/h. Enjoy!
-
Hi, I've been meaning to write this for a while now and have always gotten carried away with other projects. To set up, just select your quick prayers, and the script will do the rest. It activates your quick prayers, then identifies the game's tick, and then double clicks in a loop every time the tick changes (I've left a random wait in the middle, feel free to remove or adjust if you'd like). Hope you enjoy!
- 1 reply
-
- 2
-
No one can give me a PC on this?
-
What would that go for? Consider all other stats irrelevant, just 99 smithing and 94 fishing. Thanks
-
Feel free to modify as you wish. It fishes for sardines and herrings, if you want to make it fish shrimps just change the "Bait" part to "Net", and edit the string to "Fishing net". package osrs; import org.osbot.rs07.api.Bank; import org.osbot.rs07.api.Inventory; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.map.constants.Banks; import org.osbot.rs07.api.model.NPC; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(name = "Draynor Village Fisher & Banker", author = "Marcus", version = 1.0, info = "Fishes and banks at Draynor", logo = "") public class Main extends Script { private final String[] TOOLS = {"Fishing rod", "Fishing bait"}; private Area fishArea = new Area(3084, 3234, 3088, 3224); @Override public void onStart() { log("Starting script..."); } @Override public int onLoop() throws InterruptedException { if (getInventory().isFull()) { walkToBank(); depositInventory(); } else { walkToSpot(); fish(); } return random(200, 300); } private void walkToBank() throws InterruptedException { log("Walking to bank..."); getWalking().webWalk(Banks.DRAYNOR); } private void depositInventory() throws InterruptedException { Bank bank = getBank(); Inventory inventory = getInventory(); log("Depositing inventory..."); if (Banks.DRAYNOR.contains(myPosition())) { bank.open(); Sleep.sleepUntil(() -> bank.isOpen(), random(500, 1000)); if (!inventory.contains(TOOLS) && !bank.contains(TOOLS)) { log("Tools not found in the bank. Stopping script..."); stop(false); } bank.depositAllExcept(TOOLS); Sleep.sleepUntil(() -> inventory.isEmptyExcept(TOOLS), random(500, 1000)); if (bank.contains(TOOLS) && !inventory.contains(TOOLS)) { bank.withdraw("Fishing rod", 1); bank.withdrawAll("Fishing bait"); Sleep.sleepUntil(() -> getInventory().contains(TOOLS), random(500, 1000)); } bank.close(); Sleep.sleepUntil(() -> !bank.isOpen(), random(500, 1000)); } } private void walkToSpot() throws InterruptedException { log("Walking to fishing spot..."); getWalking().webWalk(fishArea); } private void fish() throws InterruptedException { log("Fishing..."); NPC fishingSpot = getNpcs().closest("Fishing spot"); if (fishingSpot != null && fishingSpot.exists()) { fishingSpot.interact("Bait"); sleep(random(1500,2000)); getMouse().moveOutsideScreen(); Sleep.sleepUntil(() -> !myPlayer().isAnimating() || inventory.isFull(), random(90000, 120000)); } } }
-
Lol_marcus started following 2-Tick Cooker [Open Source][F2P Friendly]
-
Hi all, I've missed writing osrs scripts, so I sat down today and came up with this little guy. In short, it will ask you to input whatever fish you want to cook through a simple GUI, and then it'll use the lumbridge cooking range (burns less fish) to drop all the fish, picking them up 1 by 1 to cook them at a 2-tick cycle. The only requirement is cooks assistant to be completed, and to have the level to cook whichever fish you input. I've pasted the full script, feel free to use it/leech it/customize it! I've left a lot of // commentary to help me remember what I was doing. I've been running it for about 2 hours now and it's run flawlessly, I've even added failsafes for when it picks up 2 fish by mistake, or a few other things that can go wrong. package osrs; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.map.constants.Banks; import org.osbot.rs07.api.model.GroundItem; import org.osbot.rs07.api.ui.Skill; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import javax.swing.*; import java.awt.*; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; @ScriptManifest(name = "Efficient 2-tick Cooker", author = "Marcus", version = 1.0, info = "A script that drops fish in order to 2-tick cook them", logo = "") public class Main extends Script { private String itemName; // Item to cook private Area dropArea = new Area(3211, 3215, 3211, 3215); // Area of itemName on the ground private long startTime; private int startingXP; private int currentXP; private int xpGained; long amountLeft; private final NumberFormat numberFormat = NumberFormat.getInstance(Locale.US); private final DecimalFormat decimalFormat = new DecimalFormat("#,###"); @Override public void onStart() { // Prompt user to input item name through a simple GUI itemName = JOptionPane.showInputDialog("Enter the item name to cook:"); startTime = System.currentTimeMillis(); startingXP = getSkills().getExperience(Skill.COOKING); xpGained = 0; getExperienceTracker().start(Skill.COOKING); } @Override public int onLoop() throws InterruptedException { GroundItem groundItem = getGroundItems().closest(itemName); if (getInventory().contains(itemName) && getInventory().getAmount(itemName) >= 2) { // If inventory is full, drop all items at the collection area if (dropArea.contains(myPosition())) { getInventory().dropAll(itemName); // Conditional sleep Sleep.sleepUntil(() -> getInventory().getAmount(itemName) == 1, random(500, 1000)); } else { getWalking().webWalk(dropArea); sleep(random(500, 1000)); // Sleep between 0.5-1 seconds } } else if (!getInventory().contains(itemName) && groundItem != null) { // If inventory is empty and item found on the ground, take 1 item groundItem.interact("Take"); // Conditional sleep Sleep.sleepUntil(() -> getInventory().contains(itemName), random(500, 1000)); } else if (getInventory().contains(itemName) && getInventory().getAmount(itemName) == 1) { getObjects().closest("Cooking range").interact("Cook"); // Conditional sleep Sleep.sleepUntil(() -> !getInventory().contains(itemName), random(500, 1000)); } else { // If no item on the ground and inventory is not full, walk to the collection area if (Banks.LUMBRIDGE_UPPER.contains(myPosition())) { getBank().open(); // Conditional sleep Sleep.sleepUntil(() -> getBank().isOpen(), random(500, 1000)); if (!getBank().contains(itemName)) { log("Item not found in the bank. Stopping script..."); stop(false); } getBank().depositAll(); // Conditional sleep Sleep.sleepUntil(() -> getInventory().isEmpty(), random(500, 1000)); if (getBank().contains(itemName)) { getBank().withdraw(itemName, 28); amountLeft = getBank().getAmount(itemName); // Conditional sleep Sleep.sleepUntil(() -> getInventory().contains(itemName) && getInventory().getAmount(itemName) == 28, random(500, 1000)); } getBank().close(); // Conditional sleep Sleep.sleepUntil(() -> !getBank().isOpen(), random(500, 1000)); } else { getWalking().webWalk(Banks.LUMBRIDGE_UPPER); sleep(random(500, 1000)); // Sleep between 0.5-1 seconds } } return 0; // Return 0 } @Override public void onExit() { log("Thank you for using Efficient 2-tick Cooker!"); } @Override public void onPaint(Graphics2D g) { currentXP = getSkills().getExperience(Skill.COOKING); xpGained = currentXP - startingXP; int xpHour = getExperienceTracker().getGainedXPPerHour(Skill.COOKING); Point mP = getMouse().getPosition(); g.drawLine(mP.x, 501, mP.x, 0); g.drawLine(0, mP.y, 764, mP.y); g.setColor(Color.white); // Paint background g.setColor(Color.BLACK); g.fillRect(5, 5, 200, 110); // Paint border g.setColor(Color.WHITE); g.drawRect(5, 5, 200, 110); // Paint text g.setColor(Color.WHITE); g.drawString("Efficient 2-tick Cooker", 15, 25); g.drawString("Time Running: " + formatTime(System.currentTimeMillis() - startTime), 15, 45); g.drawString("Total XP Gained: " + decimalFormat.format(xpGained), 15, 65); g.drawString("Total XP Per hour: " + decimalFormat.format(xpHour), 15, 85); g.drawString(itemName + " in Bank: " + numberFormat.format(amountLeft), 15, 105); } private String formatTime(long ms) { long seconds = ms / 1000; long minutes = seconds / 60; long hours = minutes / 60; minutes %= 60; seconds %= 60; return String.format("%02d:%02d:%02d", hours, minutes, seconds); } }
- 1 reply
-
- 5
-
Anyone ever try making a 1 tick prayer flick script for "infinite" prayer? If so, how did you guys go about making it?
-
I'm plannig a 99 hp pure.. all 1 combats apart from HP wish me luck
-
Nvm, just bought the script.