• Log in or sign up for an account here: https://www.sythe.org/login

Tribot - Flax Spinner Script

MindTricks

Newcomer
Joined
Mar 29, 2013
Sythe Gold
0
Messages
2
I know the website is down, but I still have my bot open. Does anyone have this script for me?
 
St. Patrick's Day 2013
Christmas 2015
Discord Verified
Easter 2013
Halloween 2013
Halloween 2014
Heidy
Lawrence
Unless you search tricot and see a thread with the source /direct download you're just going to have to be patient and wait.
 
Cant run a new script without starting the client anyways.
So it would be quite useless!
 
JJ made a rather good flax spinner in his tutorial. I don't remember if he put it up for downloadlike he said, but if he didn't you can take an hour and copy everything he does assuming you are willing to go and download Eclipse
 
Potamus
I got a few clients loaded up now, will now increase stability. But here is the source of v1:

Code:
package scripts;

import java.awt.Color;
import java.awt.Graphics;

import org.tribot.api.DynamicClicking;
import org.tribot.api.General;
import org.tribot.api.Timing;
import org.tribot.api.input.Keyboard;
import org.tribot.api.input.Mouse;
import org.tribot.api.types.colour.Tolerance;
import org.tribot.api2007.Banking;
import org.tribot.api2007.Interfaces;
import org.tribot.api2007.Inventory;
import org.tribot.api2007.Objects;
import org.tribot.api2007.Player;
import org.tribot.api2007.Screen;
import org.tribot.api2007.Skills;
import org.tribot.api2007.Walking;
import org.tribot.api2007.types.RSInterfaceChild;
import org.tribot.api2007.types.RSItem;
import org.tribot.api2007.types.RSObject;
import org.tribot.api2007.types.RSTile;
import org.tribot.script.Script;
import org.tribot.script.ScriptManifest;
import org.tribot.script.interfaces.Painting;

@ScriptManifest(authors = { "J J" }, category = "Money making", name = "JJ's Flax 07")
public class JJsFlax07 extends Script implements Painting {

	private final RSTile BANK_TILE = new RSTile(3208, 3220, 2),
					     STAIRS_BANK_TILE = new RSTile(3205, 3209, 2),
					     STAIRS_SPIN_WHEEL_TILE = new RSTile(3205, 3209, 1),
					     SPIN_TILE = new RSTile(3209, 3213, 1),
					     DOOR_TILE = new RSTile(3207, 3214, 1);
	private final int FLAX_ID = 1779,
					  CLOSED_DOOR_ID = 1536,
					  SPINNING_WHEEL_ID = 2644,
					  STAIRS_COOK_ID = 1738,
					  STAIRS_WHEEL_ID = 1739,
					  STAIRS_BANK_ID = 1740,
					  CRAFTING_ANIMATION_ID = 894,
					  BOW_STRING_ID = 1777,
					  START_XP = Skills.getXP("Crafting");
	private final int[] STAIRS_IDS = {STAIRS_COOK_ID, STAIRS_WHEEL_ID};
	private final long START_TIME = System.currentTimeMillis();
	
	private State SCRIPT_STATE = getState();
	private int CURRENT_XP = START_XP;
	
	@Override
	public void onPaint(Graphics g) {
		long timeRan = System.currentTimeMillis()-START_TIME;
		int xpGained = CURRENT_XP-START_XP;
		double multiplier = timeRan / 3600000D;
		int xpPerHour = (int) (xpGained / multiplier);
		int bsMade = xpGained / 15;
		int bsPerHour = (int) (bsMade / multiplier);

		g.setColor(new Color(60, 60, 60));
		g.fillRect(5, 55, 190, 185);
	
		g.setColor(Color.WHITE);
		g.drawString("JJ's Flax 2007", 10, 70);
		g.drawString("Running for: " + Timing.msToString(timeRan), 10, 90);
		g.drawString("State: " + SCRIPT_STATE, 10, 110);
		
		g.drawString("Xp gained: " + xpGained + " (" + xpPerHour + "/h)", 10, 140);
		g.drawString("Bowstring made: " + bsMade + " (" + bsPerHour + "/h)", 10, 160);
	
		g.drawString("Flax interface: " + haveFlaxInterface(), 10, 190);
		g.drawString("Type interface: " + haveAmountInterface(), 10, 210);
		g.drawString("Is door closed? " + isDoorClosed(), 10, 230);
	}
	
	
	public enum State {
		SELECT_FLAX, TYPE_AMOUNT, CRAFTING, WHEEL_TO_STAIRS,
		CLIMB_STAIRS, STAIRS_TO_BANK, OPEN_BANK, 
		DEPOSIT_BOW_STRING, WITHDRAW_FLAX, BANK_TO_STAIRS, 
		STAIRS_TO_WHEEL, OPEN_DOOR, USE_SPIN_WHEEL,
		WALK_TO_DOOR, DEPOSIT_JUNK;
	}
	
	private State getState(){
		if(haveFlax()){
			if(atBank()){
				return State.BANK_TO_STAIRS;
			}else{
				if(atSpinWheel()){
					if(haveFlaxInterface()){
						return State.SELECT_FLAX;
					}else{
						if(haveAmountInterface()){
							return State.TYPE_AMOUNT;
						}else{
							if(areCrafting()){
								return State.CRAFTING;
							}else{
								return State.USE_SPIN_WHEEL;
							}
						}
					}
				}else{
					if(Player.getPosition().getPlane() != 1){
						if(atStairs()){
							return State.CLIMB_STAIRS;
						}else{
							return State.BANK_TO_STAIRS;
						}
					}else{
						if(isDoorClosed()){
							if(atDoor()){
								return State.OPEN_DOOR;
							}else{
								return State.WALK_TO_DOOR;
							}
						}else{
							return State.STAIRS_TO_WHEEL;
						}
					}
				}
			}
		}else{
			if(Player.getPosition().getPlane() != 2){
				if(atStairs()){
					return State.CLIMB_STAIRS;
				}else{
					if(isDoorClosed()){
						if(atDoor()){
							return State.OPEN_DOOR;
						}else{
							return State.WALK_TO_DOOR;
						}
					}else{
						return State.WHEEL_TO_STAIRS;
					}
				}
			}else{
				if(Banking.isBankScreenOpen()){
					if(haveBowstring()){
						return State.DEPOSIT_BOW_STRING;
					}else{
						if(Inventory.getAll().length == 0){
							return State.WITHDRAW_FLAX;
						}else{
							return State.DEPOSIT_JUNK;
						}
					}
				}else{
					if(atBank()){
						return State.OPEN_BANK;
					}else{
						return State.STAIRS_TO_BANK;
					}
				}
			}
		}
	}
	
	private boolean withdrawFlax(){
		if(Banking.isBankScreenOpen()){
			RSItem[] flax = Banking.find(FLAX_ID);
			if(flax != null && flax.length > 0 && flax[0].click("Withdraw All")){
				sleep(400, 800);
				long t = System.currentTimeMillis();
				while(Timing.timeFromMark(t) < General.random(2000, 3000)){
					if(haveFlax()){
						return true;
					}
					sleep(50, 150);
				}
			}
		}
		return false;
	}
	
	private boolean depositBowstring(){
		if(Banking.isBankScreenOpen()){
			RSItem[] string = Inventory.find(BOW_STRING_ID);
			if(string != null && string.length > 0 && string[0].click("Store All")){
				sleep(400, 800);
				long t = System.currentTimeMillis();
				while(Timing.timeFromMark(t) < General.random(2000, 3000)){
					if(!haveBowstring()){
						return true;
					}
					sleep(50, 150);
				}
			}
		}
		return false;
	}
	
	private boolean depositJunk(){
		if(Banking.isBankScreenOpen()){
			RSItem[] all = Inventory.getAll();
			if(all != null && all.length > 0 && all[0].click("Store All")){
				long t = System.currentTimeMillis();
				while(Timing.timeFromMark(t) < General.random(2000, 3000)){
					if(Inventory.getAll().length < all.length){
						return true;
					}
					sleep(50, 150);
				}
			}
		}
		return false;
	}
	
	private void waitUntilIdle(RSTile tile){
		long t = System.currentTimeMillis();
		
		while(Timing.timeFromMark(t) < General.random(400, 800)){
			sleep(40, 80);
			
			if(Player.isMoving() || Player.getAnimation() != -1){
				t = System.currentTimeMillis();
				continue;
			}
			
			sleep(40, 80);
			
			if(Player.getPosition().distanceTo(tile) == 0){
				break;
			}
		}
	}
	
	private boolean atStairs(){
		RSTile myPos = Player.getPosition();
		return myPos.distanceTo(STAIRS_BANK_TILE) < 3;
	}
	
	private boolean walkToTile(RSTile tile){
		if(Walking.walkTo(tile)){
			waitUntilIdle(tile);
			return true;
		}
		return false;
	}
	
	private boolean walkToStairs(){
		int plane = Player.getPosition().getPlane();
		if(plane == 1){
			// At spinning wheel
			return walkToTile(STAIRS_SPIN_WHEEL_TILE);
		}else if(plane == 2){
			// At bank
			return walkToTile(STAIRS_BANK_TILE);
		}
		return false;
	}
	
	private boolean walkToBank(){
		return walkToTile(BANK_TILE);
	}
	
	private boolean walkToDoor(){
		return walkToTile(DOOR_TILE);
	}
	
	private boolean walkToWheel(){
		return walkToTile(SPIN_TILE);
	}
	
	private boolean climbStairs(){
		int plane = Player.getPosition().getPlane();
		if(plane == 2){
			// Down
			RSObject[] stairs = Objects.findNearest(10, STAIRS_BANK_ID);
			if(stairs != null && stairs.length > 0 && DynamicClicking.clickRSObject(stairs[0], "down")){
				waitUntilIdle(stairs[0].getPosition());
				return true;
			}
		}else{
			// Up
			RSObject[] stairs = Objects.findNearest(10, STAIRS_IDS);
			if(stairs != null && stairs.length > 0 && DynamicClicking.clickRSObject(stairs[0], "up")){
				waitUntilIdle(stairs[0].getPosition());
				return true;
			}
		}
		return false;
	}
	
	private boolean atDoor(){
		RSTile myPos = Player.getPosition();
		return myPos.distanceTo(DOOR_TILE) < 3;
	}
	
	private boolean openDoor(){
		RSObject[] door = Objects.findNearest(15, CLOSED_DOOR_ID);
		if(door != null && door.length > 0){
			if(DynamicClicking.clickRSObject(door[0], "Open")){
				waitUntilIdle(door[0].getPosition());
				return true;
			}
		}
		return false;
	}
	
	private boolean spinWheel(){
		RSObject[] wheel = Objects.findNearest(10, SPINNING_WHEEL_ID);
		if(wheel != null && wheel.length > 0){
			if(DynamicClicking.clickRSObject(wheel[0], "Spin")){
				waitUntilIdle(wheel[0].getPosition());
				return true;
			}
		}
		return false;
	}
	
	private boolean spinFlax(){
		RSInterfaceChild flax = Interfaces.get(459, 91);
		if(flax != null && !flax.isHidden() && flax.click("X")){
			println("Selected X");

			long t = System.currentTimeMillis();
			while(Timing.timeFromMark(t) < General.random(1500, 2000)){
				if(haveAmountInterface()){
					return true;
				}
				sleep(50, 150);
			}		
		}
		return false;
	}
	
	private boolean haveFlaxInterface(){
		RSInterfaceChild flax = Interfaces.get(459, 91);
		return flax != null && !flax.isHidden();
	}
	
	private boolean haveAmountInterface(){
		RSInterfaceChild amount = Interfaces.get(548, 94);
		if(amount != null && !amount.isHidden()){
			String txt = amount.getText();
			if(txt != null && txt.equals("*")){
				Color c = Screen.getColorAt(259, 428);
				Color b = new Color(0, 0, 128);
				return org.tribot.api.Screen.coloursMatch(b, c, new Tolerance(10));
			}
		}
		return false;
	}
	
	private boolean typeAmount(){
		if(haveAmountInterface()){
			Keyboard.typeSend("33");
			return true;
		}
		return false;
	}
	
	private boolean areCrafting(){
		long t = System.currentTimeMillis();
		while(Timing.timeFromMark(t) < General.random(1200, 1800)){
			if(Player.getAnimation() == CRAFTING_ANIMATION_ID){
				return true;
			}
			sleep(50, 100);
		}
		return false;
	}
	
	private boolean isDoorClosed(){
		RSObject[] doors = Objects.findNearest(15, CLOSED_DOOR_ID);
		if(doors != null && doors.length > 0)
			for(RSObject door : doors)
				if(door.getPosition().getY() < 3220)
					return true;
		return false;
	}
	
	private boolean haveFlax(){
		RSItem[] flax = Inventory.find(FLAX_ID);
		return flax != null && flax.length > 0;
	}
	
	private boolean haveBowstring(){
		RSItem[] string = Inventory.find(BOW_STRING_ID);
		return string != null && string.length > 0;
	}
	
	private boolean atBank(){
		RSTile myPos = Player.getPosition();
		return myPos.distanceTo(BANK_TILE) < 2;
	}
	
	private boolean atSpinWheel(){
		RSTile myPos = Player.getPosition();
		return myPos.distanceTo(SPIN_TILE) < 2;
	}
	
	@Override
	public void run() {
		println("Script has been started");
		Mouse.setSpeed(General.random(130, 150));
		
		while(true){
			SCRIPT_STATE = getState();
			CURRENT_XP = Skills.getXP("Crafting");
			
			switch(SCRIPT_STATE){
				case BANK_TO_STAIRS:
					walkToStairs();
					break;
					
				case CLIMB_STAIRS:
					climbStairs();
					break;
					
				case CRAFTING:
					sleep(200, 400);
					break;
					
				case DEPOSIT_BOW_STRING:
					depositBowstring();
					break;
					
				case OPEN_BANK:
					Banking.openBankBanker();
					break;
					
				case OPEN_DOOR:
					openDoor();
					break;
					
				case SELECT_FLAX:
					spinFlax();
					break;
					
				case STAIRS_TO_BANK:
					walkToBank();
					break;
					
				case STAIRS_TO_WHEEL:
					walkToWheel();
					break;
					
				case TYPE_AMOUNT:
					typeAmount();
					break;
					
				case USE_SPIN_WHEEL:
					spinWheel();
					break;
					
				case WHEEL_TO_STAIRS:
					walkToStairs();
					break;
					
				case WITHDRAW_FLAX:
					withdrawFlax();
					break;
					
				case WALK_TO_DOOR:
					walkToDoor();
					break;
				
				case DEPOSIT_JUNK:
					depositJunk();
					break;
			}
			
			sleep(40, 80);			
		}
	}
}
 
btw people you can start new scripts without re-loading a new client. I upgraded from yugochopper v6 to yugochopper v9 yesterday while the set is up. I haven't closed my clients since monday. Three running right now. Without closing my client i also upgraded the catherby fisher.
 
Runescape Gamblingrunescape gambling
Back
Top