Advertisement
JewishBotter

TFLCatherbyFisher

Mar 20th, 2014
593
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.44 KB | None | 0 0
  1. package scripts;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.Graphics;
  6. import java.awt.Point;
  7. import java.awt.Toolkit;
  8. import java.lang.reflect.Array;
  9.  
  10. import org.tribot.api.DynamicClicking;
  11. import org.tribot.api.General;
  12. import org.tribot.api.Timing;
  13. import org.tribot.api.input.Mouse;
  14. import org.tribot.api2007.Banking;
  15. import org.tribot.api2007.Camera;
  16. import org.tribot.api2007.ChooseOption;
  17. import org.tribot.api2007.Game;
  18. import org.tribot.api2007.Inventory;
  19. import org.tribot.api2007.NPCs;
  20. import org.tribot.api2007.Objects;
  21. import org.tribot.api2007.Player;
  22. import org.tribot.api2007.Skills;
  23. import org.tribot.api2007.Skills.SKILLS;
  24. import org.tribot.api2007.WebWalking;
  25. import org.tribot.api2007.types.RSNPC;
  26. import org.tribot.api2007.types.RSObject;
  27. import org.tribot.api2007.types.RSTile;
  28. import org.tribot.script.Script;
  29. import org.tribot.script.ScriptManifest;
  30. import org.tribot.script.interfaces.Painting;
  31.  
  32. @SuppressWarnings("unused")
  33. @ScriptManifest(authors = { "JewishBotter" }, category = "Fishing", name = "TFLCatherbyFisher")
  34. public class TFLCatherbyFisher extends Script implements Painting{
  35.  
  36. //Instance Variables
  37. //STATS
  38.  
  39. private final long startTime = System.currentTimeMillis();
  40. private final int startXP = Skills.getXP(SKILLS.FISHING);
  41. private int currentXP = startXP;
  42. private int startLvl = Skills.getActualLevel(SKILLS.FISHING);
  43. private int currentLvl= startLvl;
  44.  
  45. //Tiles & fishing spots:
  46. private RSTile START_TILE;
  47. private RSTile BANK_TILE = new RSTile(2809, 3441);
  48. private RSTile FISHING_TILE = new RSTile(2842, 3432);
  49. private RSTile SECONDARY_FISHING_TILE = new RSTile(2840, 3432);
  50. private RSTile CURRENT_TILE = new RSTile(0,0);
  51.  
  52. private RSNPC[] fishingSpot;
  53. private RSNPC[] specifiedFishingSpots;
  54. private final String fishLocation = "Fishing spot";
  55. private final int FISHING_ID = 1043;
  56.  
  57. //Items
  58. private final String nonDepositableMaterials[] = {
  59. "Small fishing net",
  60. "Lobster pot",
  61. "Barb-tail harpoon",
  62. "Harpoon"
  63. };
  64.  
  65. //GUI:
  66. public boolean GUI_COMPLETE = false;
  67. private boolean bank = false;
  68. private boolean pFishing = false;
  69. public String fishType = "";
  70. /*
  71. * Possible fishTypes:
  72. * Lobsters (Default)
  73. Shark
  74. Tuna/Swordfish
  75. Shrimp
  76. Trout
  77. */
  78.  
  79. private void startScript(){
  80. Mouse.setSpeed(170);
  81. Camera.setCameraAngle(96);
  82. Camera.setCameraRotation(181);
  83. START_TILE = Player.getPosition();
  84. }
  85.  
  86. private void walkToBank(){
  87. WebWalking.walkToBank();
  88. sleep(275, 200);
  89. }
  90.  
  91. private void walkToFishingSpot(){
  92. WebWalking.walkTo(FISHING_TILE);
  93. sleep(300,200);
  94. }
  95.  
  96. private void bank(){
  97. if (Banking.openBank()){
  98. Banking.depositAllExcept(nonDepositableMaterials);
  99. Banking.close();
  100. }
  101. }
  102. //returns the index into the array that has the ability to do the desired task - (either cage or harpoon)
  103. private int canFishLobsters(String desiredFish){
  104. fishingSpot = NPCs.findNearest("Fishing spot");
  105. int locationInArray = 0;
  106. for (RSNPC npc : fishingSpot){
  107. locationInArray++;
  108. for (String s : npc.getActions()){
  109. //System.out.println(s);
  110. if (s.equals(desiredFish)){
  111. System.out.println(fishingSpot);
  112. System.out.println(locationInArray);
  113. return locationInArray;
  114. }
  115. }
  116. }
  117. sleep(2000);
  118. return 1;
  119. }
  120.  
  121.  
  122.  
  123. private void fish(String desiredFish){
  124. if (Player.getPosition().distanceTo(FISHING_TILE) < 20){
  125. if (Player.getAnimation() != 619 && Player.getAnimation() != 622 && Player.getAnimation() != 623){
  126. fishingSpot = NPCs.findNearest("Fishing spot");
  127. if (fishingSpot.length > 0 && fishingSpot[0] != null){
  128. if (fishingSpot[canFishLobsters(desiredFish)-1].isOnScreen()){
  129. CURRENT_TILE = fishingSpot[0].getPosition();
  130. //if (fishingSpot[0].getActions() == desiredFish){
  131. //make fishing spot an array list, if the acitons of the npc are not equal to the desired fish
  132. // "cage" or "harpoon", then remove it from the list.
  133. //}
  134. //clickObject(20, fishLocation, desiredFish);
  135. //change to Dynamic Clicking, look for the click RSNPC in API
  136. //System.out.println("successful");
  137. DynamicClicking.clickRSNPC(fishingSpot[canFishLobsters(desiredFish)-1], desiredFish);
  138.  
  139.  
  140. //System.out.println("Now Fishing Lobsters");
  141. } else {
  142. if (Player.getPosition().distanceTo(fishingSpot[canFishLobsters(desiredFish)-1].getPosition()) >= 1 && fishingSpot[canFishLobsters(desiredFish)-1] != null){
  143. WebWalking.walkTo(fishingSpot[canFishLobsters(desiredFish)-1].getPosition());
  144. Camera.turnToTile(fishingSpot[canFishLobsters(desiredFish)-1].getPosition());
  145. } else {
  146. sleep(500);
  147. Camera.turnToTile(fishingSpot[canFishLobsters(desiredFish)-1].getPosition());
  148. }
  149. }
  150. } else {
  151. sleep(2000);
  152. //System.out.println("second fishing spot");
  153. //WebWalking.walkTo(SECONDARY_FISHING_TILE);
  154. }
  155. } else {
  156. sleep(1000);
  157. }
  158. } else {
  159. walkToFishingSpot();
  160. }
  161. }
  162.  
  163. public void dropInventory(){
  164. Inventory.dropAllExcept(nonDepositableMaterials);
  165. sleep(300,200);
  166. }
  167.  
  168.  
  169. //CREDITS: Thank you to mhdjml for this great clicking method
  170.  
  171. private boolean checkActions(RSObject object, String action) {
  172. if (object != null) {
  173. for (String s : object.getDefinition().getActions())
  174. return s.contains(action);
  175. }
  176. return false;
  177. }
  178.  
  179. public void clickObject(int distance, String objects, String option) {
  180. RSObject[] object = Objects.findNearest(100, objects);
  181. if (object != null) {
  182. int x = (int) object[0].getModel().getEnclosedArea().getBounds()
  183. .getCenterX();
  184. int y = (int) object[0].getModel().getEnclosedArea().getBounds()
  185. .getCenterY();
  186. Point p = new Point(x + General.random(0, 16), y
  187. + General.random(0, 4));
  188. if (object[0].getPosition().isOnScreen()) {
  189. Mouse.move(p);
  190.  
  191. if (Game.getUptext().contains(option)
  192. && (checkActions(object[0], option))) {
  193. Mouse.click(1);
  194. }
  195. if (!Game.getUptext().contains(option)) {
  196. Mouse.click(3);
  197.  
  198. if (ChooseOption.isOpen()
  199. && ChooseOption.isOptionValid(option))
  200. ChooseOption.select(option);
  201. if (ChooseOption.isOpen()
  202. && !ChooseOption.isOptionValid(option))
  203. Camera.turnToTile(object[0].getPosition());
  204. }
  205. } else {
  206. if (Player.getPosition().distanceTo(object[0].getPosition()) > 4)
  207. WebWalking.walkTo(object[0].getPosition());
  208. if (!object[0].getPosition().isOnScreen())
  209. Camera.turnToTile(object[0].getPosition());
  210. while (Player.isMoving()) {
  211. sleep(50, 80);
  212. }
  213. }
  214. }
  215. }
  216.  
  217.  
  218. @Override
  219. public void run() {
  220. GUI GUI = new GUI();
  221.  
  222. Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
  223. int screenW = (screensize.width) / 2;
  224. int screenH = (screensize.height) / 2;
  225.  
  226. Dimension dim = GUI.getSize();
  227.  
  228. GUI.setVisible(true);
  229.  
  230. GUI.setLocation((screenW / 2), (screenH / 2));
  231.  
  232. while (!GUI_COMPLETE) {
  233.  
  234. sleep(300);
  235. }
  236.  
  237. GUI.setVisible(false);
  238.  
  239. System.out.println("We are currently fishing for: " + fishType);
  240. System.out.println("Start in Catherby bank and please have proper fishing supplies"
  241. + "equipt: (net, or fishing rod + fishing bait, or fly fishing rod + feathers, or lobster pot, or harpoon");
  242. System.out.println("Have fun with the script and be sure to post your results on the thread!");
  243. startScript();
  244. while (true){
  245. sleep(100,200);
  246. currentXP = Skills.getXP(SKILLS.FISHING);
  247. currentLvl = Skills.getActualLevel(SKILLS.FISHING);
  248. if (bank == true){
  249. if (fishType == "Lobsters (Default)"){
  250. //fish for lobsters and bank
  251. //bank
  252. if (Inventory.isFull()){
  253. walkToBank();
  254. bank();
  255. } else {
  256. if (Player.getPosition().distanceTo(FISHING_TILE) < 20){
  257. fish("Cage");
  258. } else {
  259. WebWalking.walkTo(FISHING_TILE);
  260. }
  261. }
  262. } else {
  263. //fish for tuna and swordfish - use harpoon
  264. //bank
  265. if (Inventory.isFull()){
  266. walkToBank();
  267. bank();
  268. } else {
  269. if (Player.getPosition().distanceTo(FISHING_TILE) < 5){
  270. fish("Harpoon");
  271. } else {
  272. WebWalking.walkTo(FISHING_TILE);
  273. }
  274. }
  275. }
  276. } else { //drop the fish after full inventory
  277. if (fishType == "Lobsters (Default)"){
  278. //fish for lobsters and drop the fish
  279. //if inventory is full, drop fish
  280. if (Inventory.isFull()){
  281. dropInventory();
  282. } else {
  283. if (Player.getPosition().distanceTo(FISHING_TILE) < 5){
  284. fish("Cage");
  285. } else {
  286. WebWalking.walkTo(FISHING_TILE);
  287. }
  288. }
  289. } else {
  290. //fish for tuna and swordfish - use harpoon
  291. //if inventory is full, drop fish
  292. if (Inventory.isFull()){
  293. dropInventory();
  294. } else {
  295. if (Player.getPosition().distanceTo(FISHING_TILE) < 5){
  296. fish("Harpoon");
  297. } else {
  298. WebWalking.walkTo(FISHING_TILE);
  299. }
  300. }
  301. }
  302. }
  303. }
  304.  
  305. }
  306.  
  307.  
  308. @Override
  309. public void onPaint(Graphics g) {
  310. // TODO Auto-generated method stub
  311. //STATISTICS
  312. long timeRan = System.currentTimeMillis() - startTime;
  313. int xpGained = currentXP - startXP;
  314. int xpPerHour = (int) (xpGained / (timeRan / 3600000D));
  315. int lvlsGained = currentLvl-startLvl;
  316.  
  317. g.setColor(Color.WHITE);
  318. g.drawString("TFLCatherbyFishing", 10, 50);
  319. g.drawString("Running for: " + Timing.msToString(timeRan), 10, 70);
  320. g.drawString("Gained " + xpGained + " xp (" + xpPerHour + " xp/h)", 10, 110);
  321. g.drawString("Fishing level: " + currentLvl + " (+" + lvlsGained + ")", 10, 130);
  322. }
  323.  
  324. /**
  325. *
  326. * @author eklein
  327. */
  328. public class GUI extends javax.swing.JFrame {
  329.  
  330. /**
  331. * Creates new form GUI
  332. */
  333. public GUI() {
  334. initComponents();
  335. }
  336.  
  337. /**
  338. * This method is called from within the constructor to initialize the form.
  339. * WARNING: Do NOT modify this code. The content of this method is always
  340. * regenerated by the Form Editor.
  341. */
  342. @SuppressWarnings("unchecked")
  343. // <editor-fold defaultstate="collapsed" desc="Generated Code">
  344. private void initComponents() {
  345.  
  346. buttonGroup1 = new javax.swing.ButtonGroup();
  347. label1 = new java.awt.Label();
  348. banking = new javax.swing.JRadioButton();
  349. powerFishing = new javax.swing.JRadioButton();
  350. start = new javax.swing.JButton();
  351. typeOfFish = new javax.swing.JComboBox();
  352. label = new javax.swing.JLabel();
  353.  
  354. label1.setFont(new java.awt.Font("Savoye LET", 0, 36)); // NOI18N
  355. label1.setText("TFLCatherbyFisher");
  356.  
  357. buttonGroup1.add(banking);
  358. banking.setSelected(true);
  359. banking.setText("Banking");
  360. banking.addActionListener(new java.awt.event.ActionListener() {
  361. public void actionPerformed(java.awt.event.ActionEvent evt) {
  362. bankingActionPerformed(evt);
  363. }
  364. });
  365.  
  366. buttonGroup1.add(powerFishing);
  367. powerFishing.setText("PowerFishing (Drop fishing)");
  368. powerFishing.addActionListener(new java.awt.event.ActionListener() {
  369. public void actionPerformed(java.awt.event.ActionEvent evt) {
  370. powerFishingActionPerformed(evt);
  371. }
  372. });
  373.  
  374. start.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N
  375. start.setText("Start!");
  376. start.setToolTipText("");
  377. start.addActionListener(new java.awt.event.ActionListener() {
  378. public void actionPerformed(java.awt.event.ActionEvent evt) {
  379. startActionPerformed(evt);
  380. }
  381. });
  382.  
  383. typeOfFish.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Lobsters (Default)", "Tuna/Swordfish", " ", " " }));
  384.  
  385. label.setText("Type of Fish:");
  386.  
  387. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  388. getContentPane().setLayout(layout);
  389. layout.setHorizontalGroup(
  390. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  391. .addGroup(layout.createSequentialGroup()
  392. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  393. .addGroup(layout.createSequentialGroup()
  394. .addGap(111, 111, 111)
  395. .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  396. .addGroup(layout.createSequentialGroup()
  397. .addGap(168, 168, 168)
  398. .addComponent(start))
  399. .addGroup(layout.createSequentialGroup()
  400. .addGap(14, 14, 14)
  401. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  402. .addGroup(layout.createSequentialGroup()
  403. .addComponent(powerFishing, javax.swing.GroupLayout.PREFERRED_SIZE, 216, javax.swing.GroupLayout.PREFERRED_SIZE)
  404. .addGap(18, 18, 18)
  405. .addComponent(typeOfFish, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  406. .addGap(0, 6, Short.MAX_VALUE))
  407. .addGroup(layout.createSequentialGroup()
  408. .addComponent(banking)
  409. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  410. .addComponent(label, javax.swing.GroupLayout.PREFERRED_SIZE, 108, javax.swing.GroupLayout.PREFERRED_SIZE)
  411. .addGap(15, 15, 15)))))
  412. .addGap(34, 34, 34))
  413. );
  414. layout.setVerticalGroup(
  415. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  416. .addGroup(layout.createSequentialGroup()
  417. .addContainerGap()
  418. .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  419. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  420. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  421. .addComponent(banking)
  422. .addComponent(label, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))
  423. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  424. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  425. .addComponent(typeOfFish, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  426. .addComponent(powerFishing))
  427. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, Short.MAX_VALUE)
  428. .addComponent(start)
  429. .addGap(40, 40, 40))
  430. );
  431.  
  432. pack();
  433. }// </editor-fold>
  434.  
  435. private void bankingActionPerformed(java.awt.event.ActionEvent evt) {
  436. // TODO add your handling code here:
  437. }
  438.  
  439. private void powerFishingActionPerformed(java.awt.event.ActionEvent evt) {
  440. // TODO add your handling code here:
  441. }
  442.  
  443. private void startActionPerformed(java.awt.event.ActionEvent evt) {
  444. if (powerFishing.isSelected()){
  445. pFishing = true;
  446. } else {
  447. bank = true;
  448. }
  449. fishType = typeOfFish.getSelectedItem().toString();
  450.  
  451. GUI_COMPLETE = true;
  452. }
  453. }
  454.  
  455. /**
  456. * @param args the command line arguments
  457. */
  458.  
  459.  
  460. // Variables declaration - do not modify
  461. private javax.swing.JRadioButton banking;
  462. private javax.swing.ButtonGroup buttonGroup1;
  463. private javax.swing.JLabel label;
  464. private java.awt.Label label1;
  465. private javax.swing.JRadioButton powerFishing;
  466. private javax.swing.JButton start;
  467. private javax.swing.JComboBox typeOfFish;
  468. // End of variables declaration
  469. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement