Aeonx Posted February 29, 2016 Share Posted February 29, 2016 (edited) Hey guys, just sharing one script I've made really quick, it Mines clay in West Varrock, then banks it. After x clay, it trades mule standing in West Bank Area. Might help someone import java.awt.*; import java.lang.String; import java.text.Normalizer; import org.osbot.rs07.api.Bank; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import org.osbot.rs07.api.model.NPC; import org.osbot.rs07.api.model.Player; import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.api.ui.Tab; import javax.swing.*; @ScriptManifest(author = "YourName", info = "Miner", name = "Miner", version = 0, logo = "") public class main extends Script { // Areas private final Area WEST_VARROCK_BANK = new Area(3185, 3439, 3182, 3433); private final Area WEST_MINING_ZONE = new Area(3182, 3378, 3184, 3377); private final Area TRADING_AREA = new Area(3185, 3437, 3181, 3434); private enum State { CHECK, MINE, BANK, GRAB_LOAD, TRADE, UNLOAD } private Window window; private State state = State.GRAB_LOAD; private boolean isRunning = false; private int runs, cooldown, clayNum, world; private long elapsed; private void Check() throws InterruptedException { if(worlds.getCurrentWorld() != world) { worlds.hop(world); return; } if(inventory.isFull()) { if(tabs.getOpen() != Tab.INVENTORY) { tabs.open(Tab.INVENTORY); } if(!WEST_VARROCK_BANK.contains(myPlayer())) { RandomSleep(); MoveToZone(WEST_VARROCK_BANK); } state = State.BANK; } else { if(!WEST_MINING_ZONE.contains(myPlayer())) { RandomSleep(); MoveToZone(WEST_MINING_ZONE); } state = State.MINE; } } private void Mine() throws InterruptedException { RS2Object node = objects.closest(WEST_MINING_ZONE, 7454); if(node != null) { if(!node.isVisible()) { camera.toEntity(node); sleep(450, 850); } node.hover(); sleep(10, 25); if(node.interact("Mine")) { RandomizeMouse(); sleep(850, 1250); while(myPlayer().isAnimating() && node.exists()) sleep(50); sleep(250, 450); } } state = State.CHECK; } private void Bank() throws InterruptedException { if(!bank.isOpen()) { RS2Object bankx = objects.closest("Bank booth"); if(bankx != null) { if(!bankx.isVisible()) { camera.toEntity(bankx); sleep(650, 1250); } if(bankx.interact("Bank")) { sleep(2450, 3250); RandomizeMouse(); RandomSleep(); } } return; } else { if(!bank.depositAllExcept(1271)) return; runs++; sleep(450, 650); RandomizeMouse(); RandomSleep(); if(runs >= cooldown) { bank.enableMode(Bank.BankMode.WITHDRAW_NOTE); sleep(250, 500); RandomizeMouse(); sleep(1250, 1850); bank.withdrawAll(434); RandomSleep(); } bank.close(); sleep(1250, 1850); } if(runs >= cooldown) { runs = 0; cooldown = random(16, 32); state = State.TRADE; } else { state = State.CHECK; } } private void GrabLoad() throws InterruptedException { log("load"); } private void Trade() throws InterruptedException { if(isTrading()) { state = State.UNLOAD; } else { if(getWorlds().getCurrentWorld() != 308) { worlds.hop(308); sleep(8*1000, 14*1000); return; } if(!TRADING_AREA.contains(myPlayer())) { MoveToZone(TRADING_AREA); return; } Player player = players.closest("YourMuleName"); if(player != null) { if(!player.isVisible()) camera.toEntity(player); sleep(1850, 3450); player.hover(); sleep(100, 350); if(player.interact("Trade with")) { sleep(450, 650); RandomizeMouse(); sleep(4500, 6500); } } } } private void Unload() throws InterruptedException { if(isTrading()) { if(trade.isFirstInterfaceOpen()) { if(!trade.offer(435, inventory.getItem(435).getAmount())) return; sleep(450, 850); RandomizeMouse(); RandomSleep(); trade.acceptTrade(); sleep(150, 300); RandomizeMouse(); while(isTrading() && !trade.didOtherAcceptTrade()); } if(trade.isSecondInterfaceOpen()) { RandomSleep(); trade.acceptTrade(); sleep(150, 300); RandomizeMouse(); while(isTrading() && !trade.didOtherAcceptTrade()); } return; } state = State.CHECK; } @Override public int onLoop() throws InterruptedException { switch(state) { case CHECK: log("State: Check"); Check(); break; case MINE: log("State: Mine"); Mine(); break; case BANK: log("State: Bank"); Bank(); break; case GRAB_LOAD: log("State: Grab Load"); GrabLoad(); break; case TRADE: log("State: Trade"); Trade(); break; case UNLOAD: log("State: Unload"); Unload(); break; } return random(150, 200); } @Override public void onStart() { //String input = getClass().getResource("talk").getFile(); //File file = new File(input); isRunning = true; cooldown = random(18, 32); world = worlds.getCurrentWorld(); Thread runTimeThread = new Thread() { @Override public void run() { try { RunTime(); } catch (Exception e) { log(e.getMessage()); } } }; runTimeThread.start(); } @Override public void onExit() { isRunning = false; } @Override public void onPaint(Graphics2D g) { int x = getMouse().getPosition().x; int y = getMouse().getPosition().y; g.drawLine(0, y, 765, y); g.drawLine(x, 0, x, 503); DrawUpdate(g); } private void DrawUpdate(Graphics2D g) { g.setColor(new Color(0, 0, 0, 80)); g.fillRect(4, 280, 512, 58); g.setColor(Color.white); g.setFont(new Font("Consolas", Font.PLAIN, 12)); g.drawString("RunTime: " + GetRunTime(), 14, 300); g.drawString("Clay collected: " + clayNum, 170, 300); } private void RunTime() throws InterruptedException { long startTime = System.currentTimeMillis(); while(isRunning) { elapsed = (System.currentTimeMillis() - startTime); sleep(1000); } } private void LaunchGUI() { } private void CloseGUI() { } private void sleep(int min, int max) throws InterruptedException { sleep(random(min, max)); } private String GetRunTime() { long hours = (elapsed / (1000 * 60 * 60)) % 24; long minutes = (elapsed / (1000 * 60)) % 60; long seconds = (elapsed / 1000) % 60; return String.format("%02d:%02d:%02d", hours, minutes, seconds); } @SuppressWarnings("deprecation") private void MoveToZone(Area zone) throws InterruptedException { walking.webWalk(zone.getRandomPosition()); } private boolean isTrading() { return trade.isCurrentlyTrading(); } private boolean isInRadius(NPC npc) { Player me = myPlayer(); int x = me.getX(), y = me.getY(); return new Area(x + 1, y + 1, x - 1, y - 1).contains(npc); } private void RandomizeMouse() { switch(random(0, 5)) { case 0: mouse.moveRandomly(); break; case 1: mouse.moveOutsideScreen(); break; case 2: mouse.moveSlightly(); break; } } private void RandomSleep() throws InterruptedException { switch(random(0, 5)) { case 0: sleep(650, 1250); break; case 1: sleep(1450, 2050); break; case 2: sleep(2250, 2850); break; case 3: sleep(3050, 3850); break; } } } Edited February 29, 2016 by Aeonx 1 Quote Link to comment Share on other sites More sharing options...
Harry Posted February 29, 2016 Share Posted February 29, 2016 Very nice, I like the whole mule idea so that you can just mass farm and try to keep it all hidden and let the accounts just get banned. Good job! Quote Link to comment Share on other sites More sharing options...
Aeonx Posted February 29, 2016 Author Share Posted February 29, 2016 (edited) Very nice, I like the whole mule idea so that you can just mass farm and try to keep it all hidden and let the accounts just get banned. Good job! Thanks man! Yeah it's great, just make an army of accounts that way and bans have no much meaning, profit Edited February 29, 2016 by Aeonx Quote Link to comment Share on other sites More sharing options...
Patyfatycake Posted March 1, 2016 Share Posted March 1, 2016 Dropping requires interaction between two accounts so it seems like it would be easier to trace a direct correlation rather than another account picking them up. Quote Link to comment Share on other sites More sharing options...
Aeonx Posted April 5, 2016 Author Share Posted April 5, 2016 Dropping requires interaction between two accounts so it seems like it would be easier to trace a direct correlation rather than another account picking them up. Hi, it doesn't drop nothing. It trades the mule. Quote Link to comment Share on other sites More sharing options...