Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package scripts;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.awt.Toolkit;
- import java.lang.reflect.Array;
- import org.tribot.api.DynamicClicking;
- import org.tribot.api.General;
- import org.tribot.api.Timing;
- import org.tribot.api.input.Mouse;
- import org.tribot.api2007.Banking;
- import org.tribot.api2007.Camera;
- import org.tribot.api2007.ChooseOption;
- import org.tribot.api2007.Game;
- import org.tribot.api2007.Inventory;
- import org.tribot.api2007.NPCs;
- import org.tribot.api2007.Objects;
- import org.tribot.api2007.Player;
- import org.tribot.api2007.Skills;
- import org.tribot.api2007.Skills.SKILLS;
- import org.tribot.api2007.WebWalking;
- import org.tribot.api2007.types.RSNPC;
- 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;
- @SuppressWarnings("unused")
- @ScriptManifest(authors = { "JewishBotter" }, category = "Fishing", name = "TFLCatherbyFisher")
- public class TFLCatherbyFisher extends Script implements Painting{
- //Instance Variables
- //STATS
- private final long startTime = System.currentTimeMillis();
- private final int startXP = Skills.getXP(SKILLS.FISHING);
- private int currentXP = startXP;
- private int startLvl = Skills.getActualLevel(SKILLS.FISHING);
- private int currentLvl= startLvl;
- //Tiles & fishing spots:
- private RSTile START_TILE;
- private RSTile BANK_TILE = new RSTile(2809, 3441);
- private RSTile FISHING_TILE = new RSTile(2842, 3432);
- private RSTile SECONDARY_FISHING_TILE = new RSTile(2840, 3432);
- private RSTile CURRENT_TILE = new RSTile(0,0);
- private RSNPC[] fishingSpot;
- private RSNPC[] specifiedFishingSpots;
- private final String fishLocation = "Fishing spot";
- private final int FISHING_ID = 1043;
- //Items
- private final String nonDepositableMaterials[] = {
- "Small fishing net",
- "Lobster pot",
- "Barb-tail harpoon",
- "Harpoon"
- };
- //GUI:
- public boolean GUI_COMPLETE = false;
- private boolean bank = false;
- private boolean pFishing = false;
- public String fishType = "";
- /*
- * Possible fishTypes:
- * Lobsters (Default)
- Shark
- Tuna/Swordfish
- Shrimp
- Trout
- */
- private void startScript(){
- Mouse.setSpeed(170);
- Camera.setCameraAngle(96);
- Camera.setCameraRotation(181);
- START_TILE = Player.getPosition();
- }
- private void walkToBank(){
- WebWalking.walkToBank();
- sleep(275, 200);
- }
- private void walkToFishingSpot(){
- WebWalking.walkTo(FISHING_TILE);
- sleep(300,200);
- }
- private void bank(){
- if (Banking.openBank()){
- Banking.depositAllExcept(nonDepositableMaterials);
- Banking.close();
- }
- }
- //returns the index into the array that has the ability to do the desired task - (either cage or harpoon)
- private int canFishLobsters(String desiredFish){
- fishingSpot = NPCs.findNearest("Fishing spot");
- int locationInArray = 0;
- for (RSNPC npc : fishingSpot){
- locationInArray++;
- for (String s : npc.getActions()){
- //System.out.println(s);
- if (s.equals(desiredFish)){
- System.out.println(fishingSpot);
- System.out.println(locationInArray);
- return locationInArray;
- }
- }
- }
- sleep(2000);
- return 1;
- }
- private void fish(String desiredFish){
- if (Player.getPosition().distanceTo(FISHING_TILE) < 20){
- if (Player.getAnimation() != 619 && Player.getAnimation() != 622 && Player.getAnimation() != 623){
- fishingSpot = NPCs.findNearest("Fishing spot");
- if (fishingSpot.length > 0 && fishingSpot[0] != null){
- if (fishingSpot[canFishLobsters(desiredFish)-1].isOnScreen()){
- CURRENT_TILE = fishingSpot[0].getPosition();
- //if (fishingSpot[0].getActions() == desiredFish){
- //make fishing spot an array list, if the acitons of the npc are not equal to the desired fish
- // "cage" or "harpoon", then remove it from the list.
- //}
- //clickObject(20, fishLocation, desiredFish);
- //change to Dynamic Clicking, look for the click RSNPC in API
- //System.out.println("successful");
- DynamicClicking.clickRSNPC(fishingSpot[canFishLobsters(desiredFish)-1], desiredFish);
- //System.out.println("Now Fishing Lobsters");
- } else {
- if (Player.getPosition().distanceTo(fishingSpot[canFishLobsters(desiredFish)-1].getPosition()) >= 1 && fishingSpot[canFishLobsters(desiredFish)-1] != null){
- WebWalking.walkTo(fishingSpot[canFishLobsters(desiredFish)-1].getPosition());
- Camera.turnToTile(fishingSpot[canFishLobsters(desiredFish)-1].getPosition());
- } else {
- sleep(500);
- Camera.turnToTile(fishingSpot[canFishLobsters(desiredFish)-1].getPosition());
- }
- }
- } else {
- sleep(2000);
- //System.out.println("second fishing spot");
- //WebWalking.walkTo(SECONDARY_FISHING_TILE);
- }
- } else {
- sleep(1000);
- }
- } else {
- walkToFishingSpot();
- }
- }
- public void dropInventory(){
- Inventory.dropAllExcept(nonDepositableMaterials);
- sleep(300,200);
- }
- //CREDITS: Thank you to mhdjml for this great clicking method
- private boolean checkActions(RSObject object, String action) {
- if (object != null) {
- for (String s : object.getDefinition().getActions())
- return s.contains(action);
- }
- return false;
- }
- public void clickObject(int distance, String objects, String option) {
- RSObject[] object = Objects.findNearest(100, objects);
- if (object != null) {
- int x = (int) object[0].getModel().getEnclosedArea().getBounds()
- .getCenterX();
- int y = (int) object[0].getModel().getEnclosedArea().getBounds()
- .getCenterY();
- Point p = new Point(x + General.random(0, 16), y
- + General.random(0, 4));
- if (object[0].getPosition().isOnScreen()) {
- Mouse.move(p);
- if (Game.getUptext().contains(option)
- && (checkActions(object[0], option))) {
- Mouse.click(1);
- }
- if (!Game.getUptext().contains(option)) {
- Mouse.click(3);
- if (ChooseOption.isOpen()
- && ChooseOption.isOptionValid(option))
- ChooseOption.select(option);
- if (ChooseOption.isOpen()
- && !ChooseOption.isOptionValid(option))
- Camera.turnToTile(object[0].getPosition());
- }
- } else {
- if (Player.getPosition().distanceTo(object[0].getPosition()) > 4)
- WebWalking.walkTo(object[0].getPosition());
- if (!object[0].getPosition().isOnScreen())
- Camera.turnToTile(object[0].getPosition());
- while (Player.isMoving()) {
- sleep(50, 80);
- }
- }
- }
- }
- @Override
- public void run() {
- GUI GUI = new GUI();
- Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
- int screenW = (screensize.width) / 2;
- int screenH = (screensize.height) / 2;
- Dimension dim = GUI.getSize();
- GUI.setVisible(true);
- GUI.setLocation((screenW / 2), (screenH / 2));
- while (!GUI_COMPLETE) {
- sleep(300);
- }
- GUI.setVisible(false);
- System.out.println("We are currently fishing for: " + fishType);
- System.out.println("Start in Catherby bank and please have proper fishing supplies"
- + "equipt: (net, or fishing rod + fishing bait, or fly fishing rod + feathers, or lobster pot, or harpoon");
- System.out.println("Have fun with the script and be sure to post your results on the thread!");
- startScript();
- while (true){
- sleep(100,200);
- currentXP = Skills.getXP(SKILLS.FISHING);
- currentLvl = Skills.getActualLevel(SKILLS.FISHING);
- if (bank == true){
- if (fishType == "Lobsters (Default)"){
- //fish for lobsters and bank
- //bank
- if (Inventory.isFull()){
- walkToBank();
- bank();
- } else {
- if (Player.getPosition().distanceTo(FISHING_TILE) < 20){
- fish("Cage");
- } else {
- WebWalking.walkTo(FISHING_TILE);
- }
- }
- } else {
- //fish for tuna and swordfish - use harpoon
- //bank
- if (Inventory.isFull()){
- walkToBank();
- bank();
- } else {
- if (Player.getPosition().distanceTo(FISHING_TILE) < 5){
- fish("Harpoon");
- } else {
- WebWalking.walkTo(FISHING_TILE);
- }
- }
- }
- } else { //drop the fish after full inventory
- if (fishType == "Lobsters (Default)"){
- //fish for lobsters and drop the fish
- //if inventory is full, drop fish
- if (Inventory.isFull()){
- dropInventory();
- } else {
- if (Player.getPosition().distanceTo(FISHING_TILE) < 5){
- fish("Cage");
- } else {
- WebWalking.walkTo(FISHING_TILE);
- }
- }
- } else {
- //fish for tuna and swordfish - use harpoon
- //if inventory is full, drop fish
- if (Inventory.isFull()){
- dropInventory();
- } else {
- if (Player.getPosition().distanceTo(FISHING_TILE) < 5){
- fish("Harpoon");
- } else {
- WebWalking.walkTo(FISHING_TILE);
- }
- }
- }
- }
- }
- }
- @Override
- public void onPaint(Graphics g) {
- // TODO Auto-generated method stub
- //STATISTICS
- long timeRan = System.currentTimeMillis() - startTime;
- int xpGained = currentXP - startXP;
- int xpPerHour = (int) (xpGained / (timeRan / 3600000D));
- int lvlsGained = currentLvl-startLvl;
- g.setColor(Color.WHITE);
- g.drawString("TFLCatherbyFishing", 10, 50);
- g.drawString("Running for: " + Timing.msToString(timeRan), 10, 70);
- g.drawString("Gained " + xpGained + " xp (" + xpPerHour + " xp/h)", 10, 110);
- g.drawString("Fishing level: " + currentLvl + " (+" + lvlsGained + ")", 10, 130);
- }
- /**
- *
- * @author eklein
- */
- public class GUI extends javax.swing.JFrame {
- /**
- * Creates new form GUI
- */
- public GUI() {
- initComponents();
- }
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // <editor-fold defaultstate="collapsed" desc="Generated Code">
- private void initComponents() {
- buttonGroup1 = new javax.swing.ButtonGroup();
- label1 = new java.awt.Label();
- banking = new javax.swing.JRadioButton();
- powerFishing = new javax.swing.JRadioButton();
- start = new javax.swing.JButton();
- typeOfFish = new javax.swing.JComboBox();
- label = new javax.swing.JLabel();
- label1.setFont(new java.awt.Font("Savoye LET", 0, 36)); // NOI18N
- label1.setText("TFLCatherbyFisher");
- buttonGroup1.add(banking);
- banking.setSelected(true);
- banking.setText("Banking");
- banking.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- bankingActionPerformed(evt);
- }
- });
- buttonGroup1.add(powerFishing);
- powerFishing.setText("PowerFishing (Drop fishing)");
- powerFishing.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- powerFishingActionPerformed(evt);
- }
- });
- start.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N
- start.setText("Start!");
- start.setToolTipText("");
- start.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- startActionPerformed(evt);
- }
- });
- typeOfFish.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Lobsters (Default)", "Tuna/Swordfish", " ", " " }));
- label.setText("Type of Fish:");
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGap(111, 111, 111)
- .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(layout.createSequentialGroup()
- .addGap(168, 168, 168)
- .addComponent(start))
- .addGroup(layout.createSequentialGroup()
- .addGap(14, 14, 14)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(powerFishing, javax.swing.GroupLayout.PREFERRED_SIZE, 216, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
- .addComponent(typeOfFish, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 6, Short.MAX_VALUE))
- .addGroup(layout.createSequentialGroup()
- .addComponent(banking)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(label, javax.swing.GroupLayout.PREFERRED_SIZE, 108, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(15, 15, 15)))))
- .addGap(34, 34, 34))
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(banking)
- .addComponent(label, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(typeOfFish, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(powerFishing))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, Short.MAX_VALUE)
- .addComponent(start)
- .addGap(40, 40, 40))
- );
- pack();
- }// </editor-fold>
- private void bankingActionPerformed(java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- }
- private void powerFishingActionPerformed(java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- }
- private void startActionPerformed(java.awt.event.ActionEvent evt) {
- if (powerFishing.isSelected()){
- pFishing = true;
- } else {
- bank = true;
- }
- fishType = typeOfFish.getSelectedItem().toString();
- GUI_COMPLETE = true;
- }
- }
- /**
- * @param args the command line arguments
- */
- // Variables declaration - do not modify
- private javax.swing.JRadioButton banking;
- private javax.swing.ButtonGroup buttonGroup1;
- private javax.swing.JLabel label;
- private java.awt.Label label1;
- private javax.swing.JRadioButton powerFishing;
- private javax.swing.JButton start;
- private javax.swing.JComboBox typeOfFish;
- // End of variables declaration
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement