Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.rsbot.script.Script;
- import org.rsbot.script.ScriptManifest;
- import org.rsbot.script.wrappers.RSArea;
- import org.rsbot.script.wrappers.RSTile;
- import org.rsbot.script.wrappers.RSItem;
- import org.rsbot.script.wrappers.RSNPC;
- import org.rsbot.script.wrappers.RSObject;
- import org.rsbot.script.wrappers.RSPlayer;
- import org.rsbot.script.wrappers.RSInterface;
- import org.rsbot.script.wrappers.RSComponent;
- import org.rsbot.event.listeners.PaintListener;
- import org.rsbot.event.listeners.MessageListener;
- import org.rsbot.event.events.MessageEvent;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.util.Formatter;
- @ScriptManifest (
- name = "RCRunner",
- version = 1.8,
- description = "Runecrafting runner",
- keywords = { "runecrafting", "rune", "host", "multi" },
- authors = { "airevent" },
- website = ""
- )
- public class RCRunner extends Script implements MessageListener, PaintListener {
- private String hostPlayerName = "ENTER YOUR HOST CHARACTER NAME HERE"; // master crafter
- private int transoported = 0;
- private double startTime;
- private int runeEssenceID = 1436;
- private int runeEssenceCertID = 1437;
- private int airTiaraID = 5527;
- private int airAltarExitID = 2465; // or 7389
- private int airAltarEnterID = 2452;
- private int musicianID = 8699;
- private RSArea a_wildy = new RSArea(3040, 3500, 3117, 3520);
- private RSArea a_bank = new RSArea(3182, 3432, 3186, 3438);
- private RSArea a_music = new RSArea(3151, 3420, 3155, 3424);
- private RSArea a_altar = new RSArea(3124, 3402, 3131, 3408);
- private RSArea airAltarInners = new RSArea(2837, 4826, 2850, 4841);
- private RSArea airAltarRCZone = new RSArea(2842, 4832, 2846, 4836);
- private OsakaRoute route = null;
- private boolean mustRest = false;
- private boolean mustTrade = false;
- private final int POS_UNKNOWN = 0;
- private final int POS_BANK = 1;
- private final int POS_MUSIC = 2;
- private final int POS_ALTAR = 3;
- private final int POS_RCZONE = 4;
- private final int POS_INNERS = 5;
- private final int POS_WILDY = 6; // stucking near wilderness
- private String dateFormat( int seconds ) {
- Formatter f = new Formatter();
- return f.format("%02d:%02d:%02d",
- (int)(seconds/60/60),
- (int)(seconds/60%60),
- (int)(seconds%60)
- ).toString();
- }
- // changes player position
- private class OsakaRoute {
- public int type; // external type of the route
- private RSTile from; // go from here
- private RSTile to; // go to here
- private RSTile next; // next nearest to destination
- private RSTile checkmove; // if dest is unreachable, this will help
- public OsakaRoute( RSTile to, int type ) {
- this.type = type;
- this.from = getMyPlayer().getLocation();
- this.to = to;
- this.next = null;
- this.checkmove = null;
- }
- private boolean eqTiles( RSTile t1, RSTile t2 ) {
- return ( t1.getX() == t2.getX() && t1.getY() == t2.getY() );
- }
- private boolean dvTiles( RSTile t1, RSTile t2, int deviation ) {
- int diffX = Math.abs(t1.getX() - t2.getX());
- int diffY = Math.abs(t1.getY() - t2.getY());
- return ( diffX < deviation && diffY < deviation );
- }
- public boolean step() {
- RSTile pos = getMyPlayer().getLocation();
- boolean moves = getMyPlayer().isMoving();
- // came
- if ( this.eqTiles(pos, this.to) ) {
- return true;
- }
- // check if unreachable
- if ( this.checkmove != null ) {
- if ( this.eqTiles(pos, this.checkmove) ) {
- return true;
- } else {
- this.checkmove = null;
- }
- }
- // just start move
- if ( this.next == null ) {
- this.next = walking.getClosestTileOnMap(this.to);
- walking.walkTileMM(this.next);
- return false;
- }
- // already in progress
- if ( moves ) {
- if ( this.dvTiles(pos, this.next, 7) ) {
- if ( this.eqTiles(this.next, this.to) ) {
- return true;
- }
- this.next = walking.getClosestTileOnMap(this.to);
- walking.walkTileMM(this.next);
- }
- camera.moveRandomly(random(500,700));
- sleep(400,700);
- } else {
- this.next = walking.getClosestTileOnMap(this.to);
- walking.walkTileMM(this.next);
- this.checkmove = pos;
- sleep(1900, 2100);
- }
- return false;
- }
- }
- private boolean fail( String msg ) {
- log.severe("Fatal error: " + msg);
- stopScript();
- return false;
- }
- private int pos() {
- RSTile player = getMyPlayer().getLocation();
- if ( this.a_wildy.contains(player) ) {
- return POS_WILDY;
- } else if ( this.a_bank.contains(player) ) {
- return POS_BANK;
- } else if ( this.a_music.contains(player) ) {
- return POS_MUSIC;
- } else if ( this.a_altar.contains(player) ) {
- return POS_ALTAR;
- } else if ( this.airAltarRCZone.contains(player) ) {
- return POS_RCZONE;
- } else if ( this.airAltarInners.contains(player) ) {
- return POS_INNERS;
- } else {
- return POS_UNKNOWN;
- }
- }
- private String progress() {
- int time = (int)((System.currentTimeMillis() - this.startTime) / 1000);
- if ( time == 0 ) return "initialising ... ";
- return "RUNNER" +
- "; time: " + this.dateFormat(time) +
- "; transoported: " + this.transoported;
- }
- private boolean isTrading() {
- return ( interfaces.get(334).isValid() || interfaces.get(335).isValid() );
- }
- private boolean isCollectBox() {
- return ( interfaces.get(109).isValid() );
- }
- public void onRepaint( Graphics g1 ) {
- Graphics2D g = (Graphics2D)g1;
- g.drawString(this.progress(), 10, 330);
- }
- public void messageReceived( MessageEvent e ) {
- String who = e.getSender();
- String msg = e.getMessage();
- if ( msg.equals(getMyPlayer().getName()) ) {
- walking.walkTileMM(getMyPlayer().getLocation().randomize(1,1));
- return;
- }
- if ( msg.contains("other player is busy") ||
- msg.contains("assistance request") ) {
- this.mustTrade = true;
- return;
- }
- if ( msg.contains("energy left to run!") ) {
- this.mustRest = true;
- return;
- }
- }
- public void onFinish() {
- log(this.progress());
- }
- public boolean onStart() {
- /*if ( this.pos() == POS_UNKNOWN ) {
- log.severe("unknown player position; go to Varrock west bank");
- return false;
- }
- if ( !equipment.containsAll(this.airTiaraID) ) {
- log.severe("no air tiara equipped");
- return false;
- }*/
- this.startTime = System.currentTimeMillis();
- camera.setPitch(90);
- return true;
- }
- private void trade() {
- if ( !trade.getTradingWith().equals(this.hostPlayerName) ) {
- trade.declineTrade();
- return;
- }
- if ( trade.inTradeMain() ) {
- int ess = inventory.getCount(false, this.runeEssenceID);
- if ( ess > 26 ) ess = 26;
- if ( ess > 0 ) {
- trade.offer(this.runeEssenceID, ess);
- }
- if ( trade.getNumberOfItemsOffered() > 0 ) {
- trade.acceptTrade();
- }
- } else if ( trade.inTradeSecond() ) {
- this.transoported += 26;
- trade.acceptTrade();
- sleep(900,1100);
- }
- }
- private boolean resting() {
- if ( walking.getEnergy() < 30 ) {
- RSNPC musician = npcs.getNearest(this.musicianID);
- if ( musician != null ) {
- musician.interact("Listen-to");
- }
- walking.rest(90);
- return true;
- } else {
- return false;
- }
- }
- private void newRun( RSArea where, int type ) {
- if ( this.route == null || this.route.type != type ) {
- RSTile dest = where.getCentralTile().randomize(1,1);
- this.route = new OsakaRoute(dest, type);
- }
- this.route.step();
- }
- private void goBank() {
- switch ( this.pos() ) {
- case POS_WILDY:
- this.route = null;
- this.newRun(this.a_altar, POS_ALTAR);
- break;
- case POS_UNKNOWN:
- if ( this.route != null ) {
- this.route.step();
- } else {
- this.newRun(this.a_bank, POS_BANK);
- }
- break;
- case POS_BANK:
- if ( !bank.open() ) {
- sleep(900,1100);
- } else {
- if ( inventory.getCount() > 0 ) {
- bank.depositAll();
- sleep(900,1100);
- return;
- }
- /*if ( bank.getCount(this.runeEssenceID) == 0 &&
- !inventory.contains(this.runeEssenceID) ) {
- this.fail("no rune essence in bank");
- return;
- }*/
- if ( !inventory.contains(this.runeEssenceID) ) {
- bank.withdraw(this.runeEssenceID, 26);
- sleep(400,600);
- return;
- }
- }
- break;
- case POS_MUSIC:
- if ( this.resting() ) return;
- this.newRun(this.a_bank, POS_BANK);
- break;
- case POS_ALTAR:
- this.newRun(this.a_music, POS_MUSIC);
- break;
- case POS_INNERS:
- this.newRun(this.airAltarRCZone, POS_RCZONE);
- break;
- case POS_RCZONE:
- RSObject exit = objects.getNearest(this.airAltarExitID);
- if ( exit != null ) {
- camera.setPitch(0);
- camera.moveRandomly(random(500,700));
- camera.turnTo(exit);
- exit.doClick();
- sleep(900,1100);
- }
- break;
- }
- }
- private void goAltar() {
- switch ( this.pos() ) {
- case POS_WILDY:
- this.route = null;
- this.newRun(this.a_altar, POS_ALTAR);
- break;
- case POS_UNKNOWN:
- if ( this.route != null ) {
- this.route.step();
- } else {
- this.newRun(this.a_altar, POS_ALTAR);
- }
- break;
- case POS_BANK:
- this.newRun(this.a_music, POS_MUSIC);
- break;
- case POS_MUSIC:
- if ( this.resting() ) return;
- this.newRun(this.a_altar, POS_ALTAR);
- break;
- case POS_ALTAR:
- RSObject enter = objects.getNearest(this.airAltarEnterID);
- if ( enter != null ) {
- camera.moveRandomly(random(500,700));
- camera.turnTo(enter);
- enter.doClick();
- sleep(900,1100);
- }
- break;
- case POS_INNERS:
- this.newRun(this.airAltarRCZone, POS_RCZONE);
- break;
- case POS_RCZONE:
- camera.setPitch(90);
- RSPlayer host = players.getNearest(this.hostPlayerName);
- if ( host != null ) {
- if ( !host.isOnScreen() ) {
- camera.moveRandomly(random(500,700));
- camera.turnTo(host);
- }
- trade.tradePlayer(this.hostPlayerName, 2100);
- }
- break;
- }
- }
- public int loop() {
- int ess = inventory.getCount(false, this.runeEssenceID);
- int cert = inventory.getCount(true, this.runeEssenceCertID);
- if ( interfaces.canContinue() ) {
- camera.moveRandomly(random(500,700));
- interfaces.clickContinue();
- return random(50,90);
- }
- if ( this.mustRest ) {
- this.mustRest = false;
- this.resting();
- return random(2300, 2500);
- }
- if ( this.mustTrade ) {
- this.mustTrade = false;
- trade.tradePlayer(this.hostPlayerName, 2100);
- return 0;
- }
- if ( this.isCollectBox() ) {
- walking.walkTileMM(this.a_bank.getCentralTile().randomize(1,1));
- return random(500,900);
- }
- if ( !walking.isRunEnabled() ) {
- walking.setRun(true);
- }
- if ( this.isTrading() ) {
- try { this.trade(); } catch ( Exception e ) {}
- return random(50,90);
- }
- if ( ess != 26 ) {
- this.goBank();
- } else {
- this.goAltar();
- }
- return random(50,90);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement