Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.12 KB | None | 0 0
  1. import javax.swing.*;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import java.io.*;
  6. import java.net.*;
  7. import java.util.*;
  8. import java.util.List;
  9.  
  10. import org.rsbot.event.events.*;
  11. import org.rsbot.event.listeners.*;
  12. import org.rsbot.event.listeners.PaintListener;
  13. import org.rsbot.bot.*;
  14. import org.rsbot.script.wrappers.*;
  15. import org.rsbot.script.*;
  16. import org.rsbot.event.listeners.ServerMessageListener;
  17. import org.rsbot.event.events.ServerMessageEvent;
  18.  
  19. @ScriptManifest(authors = {"Tel"}, name = "Chopper Catherby", version = 3.0, description = "<html><body><b>Tel's Yew CaTherby The Perfect!!</b></body></html>")
  20. public class TelsCatherbyYews extends Script implements PaintListener, ServerMessageListener
  21. {
  22. final double cVer = getClass().getAnnotation(ScriptManifest.class).version();
  23. final String cName = getClass().getAnnotation(ScriptManifest.class).name();
  24.  
  25. int trainStat;
  26. int style = 0;
  27. int startStatLvl;
  28. int startXp;
  29. int logs = 0;
  30.  
  31. String status = "Starting up";
  32.  
  33. long startTime = System.currentTimeMillis();
  34.  
  35. int yewTreeIDs[] = {1309};
  36. int yewTreeStumpID = 7402;
  37.  
  38. RSTile bankTile = new RSTile(2807, 3441);
  39. RSTile yewTiles[] = {new RSTile(2757, 3431), new RSTile(2760, 3432), new RSTile(2758, 3433), new RSTile(2755, 3434)};
  40. RSTile waitTiles[] = {new RSTile(2758, 3431), new RSTile(2759, 3432), new RSTile(3222, 3501), new RSTile(2758, 3432)};
  41.  
  42. RSTile yewTile = yewTiles[0];
  43.  
  44.  
  45. int hatchetID[] = {1351,1349,1361,1355,1357,1359,1353,6739};
  46.  
  47. int currentTree;
  48. boolean noHatchet = false;
  49. boolean kill = false;
  50.  
  51. boolean treeSwitch = false;
  52.  
  53. long treeTimer[] = new long[yewTiles.length];
  54.  
  55. enum treeStatus
  56. {
  57. GREEN, BROWN, RED
  58. }
  59.  
  60. treeStatus yewPositions[] = new treeStatus[yewTiles.length];
  61.  
  62. public boolean onStart()
  63. {
  64. log("Starting yew");
  65. trainStat = skills.getIndex("woodcutting");
  66.  
  67. startStatLvl = skills.getCurrentLevel(trainStat);
  68. startXp = skills.getCurrentExp(trainStat);
  69.  
  70. for (int i = 0; i < yewTiles.length; i++)
  71. {
  72. yewPositions[i] = treeStatus.GREEN;
  73. }
  74.  
  75. return true;
  76. }
  77.  
  78. public void onRepaint(Graphics g)
  79. {
  80. if (game.isLoggedIn())
  81. {
  82. double millis = System.currentTimeMillis() - startTime;
  83.  
  84. int levelChange = skills.getCurrentLevel(trainStat) - startStatLvl;
  85.  
  86. int xpChange = skills.getCurrentExp(trainStat) - startXp;
  87.  
  88. int clvl = skills.getCurrentLevel(trainStat);
  89.  
  90. int xpPerHour = (int)((xpChange / millis) * (1000 * 3600));
  91.  
  92. int lpH = (int)((logs / millis) * (1000 * 3600));
  93.  
  94. String time = formatTime((int)(millis/1000));
  95. String tTL = (xpChange != 0 && millis != 0) ? formatTime((int)((skills.getExpToNextLevel(trainStat) / (xpChange /millis)) / 1000)) : formatTime(0);
  96. String pTL = "" + skills.getPercentToNextLevel(trainStat);
  97.  
  98. //paint
  99. g.setColor(Color.BLACK);
  100. g.setFont(new Font("Futura Hv", Font.BOLD, 17));
  101. g.drawString(cName + " v" + cVer + " ", 334, 33);
  102.  
  103. g.setFont(new Font("Futura Hv", Font.BOLD, 14));
  104. //draw green trees
  105. for (int i = 0;i < yewTiles.length;i++)
  106. {
  107. if (yewPositions[i] == treeStatus.GREEN)
  108. {
  109. g.setColor(new Color(80,225,100));
  110. g.fillOval(334 + i*20, 44, 16,16);
  111. }
  112. else if (yewPositions[i] == treeStatus.BROWN)
  113. {
  114. g.setColor(new Color(255,255,255));
  115. g.fillOval(334 + i*20, 44, 16,16);
  116.  
  117. g.setColor(Color.BLACK);
  118. int temp = (int)((System.currentTimeMillis() - treeTimer[i])/1000);
  119. drawCenteredString(temp + "", 334 + i*20 + 9, 56,g);
  120. }
  121. else if (yewPositions[i] == treeStatus.RED)
  122. {
  123. g.setColor(Color.RED);
  124. g.fillOval(334 + i*20, 44, 16,16);
  125. }
  126.  
  127. if (i == currentTree)
  128. {
  129. if (treeSwitch && yewPositions[i] != treeStatus.BROWN)
  130. {
  131. g.setColor(Color.CYAN);
  132. }
  133. else
  134. {
  135. g.setColor(Color.BLACK);
  136. }
  137.  
  138. g.drawOval(334 + i*20, 44, 16,16);
  139. }
  140. }
  141.  
  142. g.setFont(new Font("Futura Hv", Font.BOLD, 14));
  143.  
  144. g.setColor(new Color(255,255,255,255));
  145. g.drawString("Status: " + status, 334, 78);
  146. g.setFont(new Font("Futura Hv", Font.BOLD, 12));
  147. g.setColor(Color.CYAN);
  148.  
  149. g.drawString("clvl: " + clvl + " lvl+: " + levelChange, 334, 89);
  150. g.drawString("xp+: " + xpChange + " xp/h: " + xpPerHour, 334, 100);
  151. g.drawString("ttL: " + tTL + " %tL: " + pTL + "%", 334, 111);
  152. g.drawString("logs: " + logs + " logs/h: " + lpH, 334,122);
  153. g.setColor(Color.BLACK);
  154.  
  155. g.setFont(new Font("Futura Hv", Font.BOLD, 12));
  156. g.drawString("Runtime: " + time, 334, 144);
  157.  
  158. }
  159. }
  160.  
  161. String formatTime(int seconds)
  162. {
  163. return (((int)seconds / 3600 < 10 ? "0" : "") + (int)seconds / 3600 + ":" + ((int)seconds / 60 % 60 < 10 ? "0" : "") +(int)seconds / 60 % 60 + ":" + ((int)seconds % 60 < 10 ? "0" : "") + (int)seconds % 60);
  164. }
  165.  
  166. public void drawCenteredString(String s, int x, int y, Graphics g)
  167. {
  168. FontMetrics fm = g.getFontMetrics();
  169. int xN = x - fm.stringWidth(s) / 2;
  170. g.drawString(s, xN, y);
  171. }
  172.  
  173. int runControl()
  174. {
  175. if (!walking.isRunEnabled() && (walking.getEnergy() > random(20, 30)))
  176. {
  177. walking.setRun(true);
  178. return 500;
  179. }
  180. return 10;
  181. }
  182.  
  183. public void onFinish()
  184. {
  185. log("Exiting...");
  186. }
  187.  
  188. public int walkTileMMDirect(RSTile tt)
  189. {
  190. final int x1 = getMyPlayer().getLocation().getX();
  191. final int y1 = getMyPlayer().getLocation().getY();
  192. final int x = tt.getX() - x1;
  193. final int y = tt.getY() - y1;
  194. double angle = Math.atan2(y, x);
  195.  
  196. int d = Math.min(calc.distanceTo(tt), random(9,20));
  197.  
  198. RSTile tile = new RSTile(getMyPlayer().getLocation().getX() + (int)(d * Math.cos(angle)), getMyPlayer().getLocation().getY() + (int)(d * Math.sin(angle)));
  199. walking.walkTileMM(tile);
  200. return 200;
  201. }
  202.  
  203. public int useBank()
  204. {
  205. try
  206. {
  207. if (bank.isOpen())
  208. {
  209. status = "Depositing";
  210. if (inventory.containsOneOf(hatchetID))
  211. {
  212. bank.depositAllExcept(hatchetID);
  213. }
  214. else
  215. {
  216. bank.depositAll();
  217. }
  218. }
  219. else
  220. {
  221. status = "Opening bank";
  222. //bank.open(); //damn thing sucks
  223. RSNPC banker = npcs.getNearest(494);
  224.  
  225. if (banker != null)
  226. {
  227. banker.doAction("bank bank");
  228. }
  229. }
  230. }
  231. catch (Exception e)
  232. {
  233. log("useBank() error");
  234. e.printStackTrace();
  235. }
  236. return 1200;
  237. }
  238.  
  239. public int goyews()
  240. {
  241. //(2793,3435)
  242. if (getMyPlayer().getLocation().getX() < 3186)
  243. {
  244. walkTileMMDirect(new RSTile(2757, 3431));
  245. }
  246. else
  247. {
  248. walkTileMMDirect(yewTiles[0]);
  249. }
  250.  
  251. return 200;
  252. }
  253.  
  254. public boolean atyews()
  255. {
  256. for (treeStatus tr : yewPositions)
  257. {
  258. if (tr == treeStatus.RED)
  259. {
  260. return false;
  261. }
  262. }
  263. return true;
  264. }
  265.  
  266. public boolean atBank()
  267. {
  268. return calc.distanceTo(bankTile) < 3;
  269. }
  270.  
  271. public int goBank()
  272. {
  273. walkTileMMDirect(bankTile);
  274. return 300;
  275. }
  276.  
  277. public int chopyews()
  278. {
  279. try
  280. {
  281. if (calc.tileOnScreen(yewTiles[currentTree]) && calc.distanceTo(yewTiles[currentTree]) < 5)
  282. {
  283. if (yewPositions[currentTree] == treeStatus.GREEN)
  284. {
  285. if (getMyPlayer().getAnimation() == -1 || treeSwitch == true)
  286. {
  287. antiban();
  288. status = "Clicking tree";
  289. tiles.doAction(yewTiles[currentTree],"chop");
  290. treeSwitch = false;
  291. antiban();
  292. return 400;
  293. }
  294. else
  295. {
  296. antiban();
  297. status = "Chopping";
  298. return runControl();
  299. }
  300. }
  301. else
  302. {
  303. //wait
  304. status = "Waiting for spawn";
  305. return 100;
  306. }
  307. }
  308. else
  309. {
  310. status = "Moving to tree";
  311. antiban();
  312. walkTileMMDirect(waitTiles[currentTree]);
  313. antiban();
  314. return 400;
  315. }
  316.  
  317. }
  318. catch (final Exception e)
  319. {
  320. log("chopyews() error, caught.");
  321. e.printStackTrace();
  322. }
  323. return random(600,600);
  324. }
  325.  
  326.  
  327.  
  328. public int loop()
  329. {
  330.  
  331. if (noHatchet)
  332. {
  333. log("No usable hatchet equiped or in inventory");
  334. return -1;
  335. }
  336.  
  337. if (kill)
  338. {
  339. log("Shutdown message recieved");
  340. return -1;
  341. }
  342.  
  343. getTreeStatus();
  344. int newTree = getCurrentTree();
  345.  
  346. if (currentTree != newTree)
  347. {
  348. treeSwitch = true;
  349. currentTree = newTree;
  350. }
  351.  
  352. if(atBank())
  353. {
  354. if(!inventory.isFull())
  355. {
  356. antiban();
  357. status = "Walking to yews";
  358. return goyews();
  359. }
  360. else
  361. {
  362. antiban();
  363. status = "Using bank";
  364. antiban();
  365. return useBank();
  366. }
  367. }
  368. else
  369. {
  370. if(!inventory.isFull())
  371. {
  372. if (!atyews())
  373. {
  374. return goyews();
  375. }
  376. return chopyews();
  377. }
  378. else
  379. {
  380. status = "Moving to bank";
  381. return goBank();
  382. }
  383. }
  384. }
  385.  
  386.  
  387.  
  388.  
  389.  
  390. public void antiban() {
  391. int randomNum = random(1, 40);
  392. int r = random(1, 45);
  393. if (randomNum == 6) {
  394. if (r == 2) {
  395. status = "Using AntiBan|Open Random Tab";
  396. game.openTab(random(1, 14));
  397. }
  398. if (r == 3) {
  399. status = "Using AntiBan|Move Mouse";
  400. mouse.moveRandomly(50, 300);
  401. }
  402. if (r == 4) {
  403. status = "Using AntiBan|Move Mouse";
  404. mouse.moveRandomly(70, 380);
  405. }
  406. if (r == 5) {
  407. status = "Using AntiBan|Move Off Screen";
  408. mouse.moveOffScreen();
  409. }
  410. if (r == 6) {
  411. status = "Using AntiBan|Move Off Screen";
  412. mouse.moveOffScreen();
  413. }
  414. if (r == 7) {
  415. status = "Using AntiBan|Rotate Camera";
  416. camera.setAngle(random(100, 120));
  417. }
  418. if (r == 8) {
  419. status = "Using AntiBan|Rotate Camera";
  420. camera.setAngle(random(190, 230));
  421. }
  422. if (r == 9) {
  423. status = "Using AntiBan|Rotate Camera";
  424. camera.setAngle(random(150, 180));
  425. }
  426. if (r == 10) {
  427. status = "Using AntiBan|Rotate Camera";
  428. camera.setAngle(random(250, 260));
  429. }
  430. if (r == 11) {
  431. status = "Using AntiBan|Open Skill Tab";
  432. if (game.getCurrentTab() != 4) {
  433. game.openTab(4);
  434. } else return;
  435. }
  436. if (r == 35) {
  437. status = "Using AntiBan|Move Mouse To Woodutting Skill";
  438. if (game.getCurrentTab() != 1) {
  439. game.openTab(1);
  440. sleep(random(3072, 8209));
  441. mouse.move(random(680, 730), random(355, 370));
  442. sleep(random(3072, 75));
  443. }
  444. }
  445. }
  446. }
  447.  
  448. boolean checkIfTreeID(int id)
  449. {
  450. for (int i : yewTreeIDs)
  451. {
  452. if (id == i)
  453. {
  454. return true;
  455. }
  456. }
  457. return false;
  458. }
  459.  
  460. void getTreeStatus()
  461. {
  462. for (int i = 0;i < yewTiles.length;i++)
  463. {
  464.  
  465. if (calc.distanceTo(yewTiles[i]) < 24)
  466. {
  467. RSObject obj = objects.getTopAt(yewTiles[i]);
  468. if (obj != null)
  469. {
  470. if (checkIfTreeID(obj.getID()))
  471. {
  472. yewPositions[i] = treeStatus.GREEN;
  473. }
  474. else if(obj.getID() == yewTreeStumpID)
  475. {
  476. if (yewPositions[i] == treeStatus.GREEN)
  477. {
  478. treeTimer[i] = System.currentTimeMillis();
  479. }
  480. yewPositions[i] = treeStatus.BROWN;
  481.  
  482. }
  483. }
  484. else
  485. {
  486. yewPositions[i] = treeStatus.RED;
  487. }
  488. }
  489. else
  490. {
  491. yewPositions[i] = treeStatus.RED;
  492. }
  493. }
  494. }
  495.  
  496. int getCurrentTree()
  497. {
  498. //don't change if current tree is fine
  499. if (yewPositions[currentTree] == treeStatus.GREEN)
  500. {
  501. return currentTree;
  502. }
  503.  
  504. //find a green tree first
  505. int lowestDist = -1;
  506. for (int i = 0;i < yewTiles.length; i++)
  507. {
  508. if (yewPositions[i] == treeStatus.GREEN)
  509. {
  510. lowestDist = i;
  511. }
  512. }
  513.  
  514. if (lowestDist != -1)
  515. {
  516. //use GREEN ones first
  517. for (int i = 0;i < yewTiles.length; i++)
  518. {
  519. if (yewPositions[i] == treeStatus.GREEN)
  520. {
  521. if (calc.distanceTo(yewTiles[i]) < calc.distanceTo(yewTiles[lowestDist]))
  522. {
  523. lowestDist = i;
  524. }
  525. }
  526. }
  527.  
  528. return lowestDist;
  529. }
  530.  
  531. //then check for highest timer.NO GREEN TREES SHOULD BE LEFT
  532. int highestTimer = 0;
  533. for (int i = 0;i < yewTiles.length; i++)
  534. {
  535. long time = System.currentTimeMillis() - treeTimer[i];
  536. long htime = System.currentTimeMillis() - treeTimer[highestTimer];
  537. if (time > htime)
  538. {
  539. highestTimer = i;
  540. }
  541. }
  542.  
  543. return highestTimer;
  544. }
  545.  
  546. public void serverMessageRecieved(ServerMessageEvent e)
  547. {
  548. String message = e.getMessage();
  549. if (message.contains("do not have a hatchet"))
  550. {
  551. noHatchet = true;
  552. }
  553.  
  554. if (message.contains("some yew logs"))
  555. {
  556. logs++;
  557. }
  558.  
  559. if (message.contains("too full"))
  560. {
  561. if (inventory.getCount() == 0 && inventory.isFull() == false)
  562. {
  563. log("Rsbot is miscounting inventory, exiting");
  564. kill = true;
  565. }
  566. }
  567. }
  568. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement