SHOW:
|
|
- or go back to the newest paste.
1 | import java.awt.Color; | |
2 | import java.awt.Font; | |
3 | import java.awt.Graphics; | |
4 | import java.awt.Graphics2D; | |
5 | import java.awt.Image; | |
6 | import java.awt.Point; | |
7 | import java.io.IOException; | |
8 | import java.net.URL; | |
9 | import java.util.ArrayList; | |
10 | ||
11 | import javax.imageio.ImageIO; | |
12 | ||
13 | import com.rarebot.event.listeners.PaintListener; | |
14 | import com.rarebot.script.Script; | |
15 | import com.rarebot.script.ScriptManifest; | |
16 | import com.rarebot.script.methods.Skills; | |
17 | import com.rarebot.script.util.Timer; | |
18 | import com.rarebot.script.wrappers.RSArea; | |
19 | import com.rarebot.script.wrappers.RSGroundItem; | |
20 | import com.rarebot.script.wrappers.RSNPC; | |
21 | import com.rarebot.script.wrappers.RSTile; | |
22 | ||
23 | @ScriptManifest(authors = { "Swipe" }, name = "ExtremeHunter") | |
24 | public class ExtremeHunter extends Script implements PaintListener { | |
25 | // START: Code generated using Enfilade's Easel | |
26 | private Image getImage(String url) { | |
27 | try { | |
28 | return ImageIO.read(new URL(url)); | |
29 | } catch (IOException e) { | |
30 | return null; | |
31 | } | |
32 | } | |
33 | ||
34 | private final int GREY_CHIN = 5079; | |
35 | private final int trapItem = 10008; | |
36 | private final int trapFailed = 19192; | |
37 | private final int trapCaught = 19190; | |
38 | private final int trapSetup = 19187; | |
39 | public final RSArea maBANK = new RSArea(new RSTile[] { | |
40 | new RSTile(2399, 2845), new RSTile(2399, 2838), | |
41 | new RSTile(2405, 2838), new RSTile(2405, 2844) }); | |
42 | public final RSArea C_SWIFT = new RSArea(new RSTile[] { | |
43 | new RSTile(2606, 2933), new RSTile(2602, 2914), | |
44 | new RSTile(2606, 2910), new RSTile(2616, 2918), | |
45 | new RSTile(2622, 2927), new RSTile(2615, 2935) }); | |
46 | public final RSArea T_WAGTAIL = new RSArea(new RSTile[] { | |
47 | new RSTile(2518, 2901), new RSTile(2520, 2917), | |
48 | new RSTile(2507, 2917), new RSTile(2507, 2904) }); | |
49 | public final RSArea G_CHIN = new RSArea(new RSTile[] { | |
50 | new RSTile(2345, 3540), new RSTile(2345, 3540), | |
51 | new RSTile(2345, 3526), new RSTile(2357, 3526), | |
52 | new RSTile(2353, 3533), new RSTile(2358, 3540) }); | |
53 | public final RSArea R_CHIN = new RSArea(new RSTile[] { | |
54 | new RSTile(2517, 2905), new RSTile(2516, 2886), | |
55 | new RSTile(2542, 2886), new RSTile(2539, 2902) }); | |
56 | private final Image img1 = getImage("http://i.imgur.com/JlOte.png"); | |
57 | // private final Image troll = | |
58 | // getImage("http://revolushii.ro/forum/Smileys/smileys/trollface.png"); | |
59 | private String status = "Hunting"; | |
60 | private int expGain = 0; | |
61 | private final int raw_meat = 9978; | |
62 | private final int BIRD_SNARE = 10006; | |
63 | private final int SET_SNARE = 19175; | |
64 | private final int[] DONE_SNARE = { 19180, 19178 }; | |
65 | private final int C_SWIFT_ID = 5073; | |
66 | private final int T_WAG_ID = 5072; | |
67 | private final int trapID = 10008; | |
68 | ||
69 | int startLevel; | |
70 | private int fail = 300; | |
71 | ||
72 | private boolean banking; | |
73 | private ArrayList<RSTile> mySnares = new ArrayList<RSTile>(); | |
74 | private long startTime; | |
75 | RSTile mainTrap; | |
76 | int startExp; | |
77 | public Job[] jobs = getJobs(); | |
78 | final int butterflyJar = 10012; | |
79 | final int[] dropIDs = { 9978, 10115, 10125, 10127 }, buryIDs = { 526 }, | |
80 | releaseIDs = { 10149, 10146, 10147, 10148, 10092 }, trapIDs = { | |
81 | 10006, 10008, 303, 954, 19965 }, layedTraps = { 19187, | |
82 | 19175, 19678, 19650, 19662 }, failedTraps = { 19192, 19174, | |
83 | 56813 }, layTrapHere = { 19679, 19652, 19663 }, | |
84 | collapsedTraps = { 19190, 19180, 19178, 19182, 19189, 19675, 19186, | |
85 | 19654, 19659, 19184, 56819, 19191, 56821 }, | |
86 | catchedButterflies = { 10014, 10016, 10018, 10020 }, | |
87 | falconTargets = { 5098, 5099, 5100 }, falconSuccessful = { 5094, | |
88 | 5095, 5096 }; | |
89 | RSTile startLoc, clickedFalcon; | |
90 | Image Background, Background2, Show, turnOffImage, startImg; | |
91 | boolean[] huntTrap = { false, false, false, false, true, false, false, | |
92 | false, false }; | |
93 | RSTile[] traps = { null, null, null, null, null }, notMyFalcons = { null, | |
94 | null, null, null, null }; | |
95 | int[] objAt = { 0, 0, 0, 0, 0 }, trapsX = { 0, 0, 0, 0, 0 }, trapsY = { 0, | |
96 | 0, 0, 0, 0 }, butterflyIDs = { 5082, 5084, 5085 }, | |
97 | butterflyIDs2 = { 5082, 5083, 5084, 5085 }; | |
98 | int[] jujuPot = { 20026, 20025, 20024, 20023 }; | |
99 | /* Defining areas */ | |
100 | final int[] bankArea = { 3507, 3475, 3513, 3483 }, swampLizardArea = { | |
101 | 3533, 3432, 3581, 3454 }, orangeSalamanderArea = { 3398, 3072, | |
102 | 3422, 3151 }, redSalamanderArea = { 2440, 3210, 2482, 3261 }, | |
103 | falconryArea = { 2364, 3573, 2392, 3619 }; | |
104 | final int[][] swampLizard = { { 3546, 3437, 3555, 3443 }, | |
105 | { 3547, 3448, 3558, 3454 }, { 3535, 3450, 3539, 3452 } }, | |
106 | orangeSalamander = { { 3410, 3072, 3417, 3079 }, | |
107 | { 3408, 3080, 3413, 3083 }, { 3402, 3086, 3412, 3094 }, | |
108 | { 3400, 3099, 3406, 3102 }, { 3401, 3131, 3410, 3136 } }, | |
109 | redSalamander = { { 2466, 3234, 2480, 3246 }, | |
110 | { 2445, 3220, 2452, 3228 }, { 2450, 3216, 2456, 3222 } }, | |
111 | butterflyAreas = { { 2537, 2898, 2570, 2917 }, | |
112 | { 2306, 3506, 2361, 3621 }, { 2690, 3758, 2747, 3802 }, | |
113 | { 2702, 3803, 2740, 3838 } }, | |
114 | butterflyStartingLocations = { { 2558, 2910 }, { 2322, 3600 }, | |
115 | { 2714, 3792 }, { 2711, 3822 } }; | |
116 | ||
117 | private void drawTile(Graphics render, RSTile tile, Color color) { | |
118 | Point southwest = calc.tileToScreen(tile, 0, 0, 0); | |
119 | Point southeast = calc.tileToScreen( | |
120 | new RSTile(tile.getX() + 1, tile.getY()), 0, 0, 0); | |
121 | Point northwest = calc.tileToScreen(new RSTile(tile.getX(), | |
122 | tile.getY() + 1), 0, 0, 0); | |
123 | Point northeast = calc.tileToScreen( | |
124 | new RSTile(tile.getX() + 1, tile.getY() + 1), 0, 0, 0); | |
125 | ||
126 | if (calc.pointOnScreen(southwest) && calc.pointOnScreen(southeast) | |
127 | && calc.pointOnScreen(northwest) | |
128 | && calc.pointOnScreen(northeast)) { | |
129 | render.setColor(Color.BLACK); | |
130 | render.drawPolygon(new int[] { (int) northwest.getX(), | |
131 | (int) northeast.getX(), (int) southeast.getX(), | |
132 | (int) southwest.getX() }, | |
133 | new int[] { (int) northwest.getY(), (int) northeast.getY(), | |
134 | (int) southeast.getY(), (int) southwest.getY() }, 4); | |
135 | render.setColor(color); | |
136 | render.fillPolygon(new int[] { (int) northwest.getX(), | |
137 | (int) northeast.getX(), (int) southeast.getX(), | |
138 | (int) southwest.getX() }, | |
139 | new int[] { (int) northwest.getY(), (int) northeast.getY(), | |
140 | (int) southeast.getY(), (int) southwest.getY() }, 4); | |
141 | } | |
142 | } | |
143 | ||
144 | public void onRepaint(Graphics g1) { | |
145 | Graphics2D g = (Graphics2D) g1; | |
146 | g.drawImage(img1, 0, 336, null); | |
147 | g.setColor(Color.black); | |
148 | g.setFont(new Font("Arial", 0, 12)); | |
149 | g.drawString(status, 108, 395); | |
150 | expGain = skills.getCurrentExp(Skills.HUNTER) - startExp; | |
151 | g.drawString(expGain + " (+" | |
152 | + (skills.getRealLevel(Skills.HUNTER) - startLevel) + ") ", | |
153 | 148, 418); | |
154 | if (ChinTraps != null) { | |
155 | if (getCurrentJob().reqLevel() == 53) { | |
156 | g.drawString( | |
157 | (skills.getCurrentExp(Skills.HUNTER) - startExp) | |
158 | / 198 | |
159 | + " Chins = " | |
160 | + ((skills.getCurrentExp(Skills.HUNTER) - startExp) / 198) | |
161 | * 655 + " gp", 250, 410); | |
162 | } else { | |
163 | g.drawString( | |
164 | (skills.getCurrentExp(Skills.HUNTER) - startExp) | |
165 | / 255 | |
166 | + " Chins = " | |
167 | + ((skills.getCurrentExp(Skills.HUNTER) - startExp) / 255) | |
168 | * 905 + " gp", 250, 410); | |
169 | } | |
170 | } | |
171 | g.drawString( | |
172 | "" | |
173 | + (int) (((expGain)) * 3600000D / (System | |
174 | .currentTimeMillis() - startTime)) + " (+" | |
175 | + (skills.getRealLevel(Skills.HUNTER) - startLevel) | |
176 | * 3600000D / (System.currentTimeMillis() - startTime) | |
177 | + ") ", 112, 435); | |
178 | g.drawString( | |
179 | Timer.format(skills.getTimeTillNextLevel(Skills.HUNTER, | |
180 | (int) ((skills.getRealLevel(Skills.HUNTER) - startLevel) * 3600000D / (System | |
181 | .currentTimeMillis() - startTime)), System.currentTimeMillis() - startTime)) | |
182 | + " || Total Time: " | |
183 | + Timer.format(System.currentTimeMillis() - startTime), | |
184 | 180, 454); | |
185 | g.setColor(new Color(250, 20, 20, 180)); | |
186 | g.fillRoundRect(245, 385, 196, 12, 16, 16); | |
187 | g.setColor(new Color(20, 220, 20, 180)); | |
188 | g.fillRoundRect( | |
189 | 245, | |
190 | 385, | |
191 | (int) ((int) skills.getPercentToNextLevel(Skills.HUNTER) * 1.96), | |
192 | 12, 16, 16); | |
193 | g.setColor(Color.BLACK); | |
194 | g.drawString( | |
195 | skills.getPercentToNextLevel(Skills.HUNTER) + "% to Level " | |
196 | + (skills.getCurrentLevel(Skills.HUNTER) + 1) | |
197 | + " Hunter - (" | |
198 | + skills.getExpToNextLevel(Skills.HUNTER) + ")", 250, | |
199 | 395); | |
200 | Point mLoc = mouse.getLocation(); | |
201 | g.setColor(new Color(20, 230, 40, 180)); | |
202 | g.drawLine(mLoc.x, 0, mLoc.x, 502); | |
203 | g.drawLine(0, mLoc.y, 764, mLoc.y); | |
204 | for (RSTile t : mySnares) { | |
205 | drawTile(g, t, new Color(200, 200, 200, 100)); | |
206 | g.fillRect(calc.tileToMinimap(t).x, calc.tileToMinimap(t).y, 4, 4); | |
207 | g.setColor(new Color(30, 220, 80, 120)); | |
208 | // objects.getTopAt(t).getModel().drawWireFrame(g); | |
209 | } | |
210 | RSNPC[] bird = npcs.getAll(C_SWIFT_ID, T_WAG_ID); | |
211 | for (int i = 0; i < mySnares.size(); i++) { | |
212 | for (RSNPC npc : bird) { | |
213 | g.drawLine(calc.tileToMinimap(npc.getLocation()).x, | |
214 | calc.tileToMinimap(npc.getLocation()).y, | |
215 | calc.tileToMinimap(mySnares.get(i)).x, | |
216 | calc.tileToMinimap(mySnares.get(i)).y); | |
217 | g.setColor(Color.WHITE); | |
218 | if (npc.isOnScreen()) { | |
219 | // g.drawImage(troll, npc.getModel().getPointOnScreen().x, | |
220 | // npc | |
221 | // .getModel().getPointOnScreen().y, null); | |
222 | g.drawString( | |
223 | "Distance (Trap " | |
224 | + (i + 1) | |
225 | + ")" | |
226 | + ": " | |
227 | + calc.distanceBetween(npc.getLocation(), | |
228 | mySnares.get(i)), npc.getModel() | |
229 | .getPointOnScreen().x, npc.getModel() | |
230 | .getPointOnScreen().y + (i * 8)); | |
231 | } | |
232 | } | |
233 | } | |
234 | if (fail < 300) { | |
235 | g.drawString("FUCK! WE FAILED", 10, 10); | |
236 | fail++; | |
237 | } | |
238 | if (ChinTraps != null) { | |
239 | for (RSTile t : ChinTraps) { | |
240 | switch (objects.getTopAt(t).getID()) { | |
241 | case trapSetup: | |
242 | drawTile(g, t, Transparent(Color.YELLOW, 80)); | |
243 | break; | |
244 | case trapFailed: | |
245 | drawTile(g, t, Transparent(Color.RED, 80)); | |
246 | break; | |
247 | case 19189: | |
248 | drawTile(g, t, Transparent(Color.GREEN, 80)); | |
249 | break; | |
250 | case 19190: | |
251 | drawTile(g, t, Transparent(Color.GREEN, 80)); | |
252 | break; | |
253 | } | |
254 | } | |
255 | } | |
256 | } | |
257 | ||
258 | private Color Transparent(Color c, int trans) { | |
259 | return new Color(c.getRed(), c.getGreen(), c.getBlue(), trans); | |
260 | } | |
261 | ||
262 | private int getMaxTrapAmount() { | |
263 | int lvl = skills.getRealLevel(skills.HUNTER); | |
264 | if (lvl >= 80) { | |
265 | return 5; | |
266 | } else if (lvl >= 60) { | |
267 | return 4; | |
268 | } else if (lvl >= 40) { | |
269 | return 3; | |
270 | } else if (lvl >= 20) { | |
271 | return 2; | |
272 | } | |
273 | return 1; | |
274 | } | |
275 | ||
276 | private RSTile MainTrap; | |
277 | ||
278 | private RSTile[] getWagTraps() { | |
279 | switch (getMaxTrapAmount()) { | |
280 | case 2: | |
281 | return new RSTile[] { | |
282 | getMyPlayer().getLocation(), | |
283 | new RSTile(getMyPlayer().getLocation().getX() - 1, | |
284 | getMyPlayer().getLocation().getY() - 1) }; | |
285 | case 3: | |
286 | return new RSTile[] { | |
287 | getMyPlayer().getLocation(), | |
288 | new RSTile(getMyPlayer().getLocation().getX() - 1, | |
289 | getMyPlayer().getLocation().getY() + 1), | |
290 | new RSTile(getMyPlayer().getLocation().getX() - 1, | |
291 | getMyPlayer().getLocation().getY() - 1) }; | |
292 | } | |
293 | return null; | |
294 | } | |
295 | ||
296 | private RSTile[] getChinTraps() { | |
297 | switch (getMaxTrapAmount()) { | |
298 | case 3: | |
299 | return new RSTile[] { | |
300 | getMyPlayer().getLocation(), | |
301 | new RSTile(getMyPlayer().getLocation().getX() - 1, | |
302 | getMyPlayer().getLocation().getY() + 1), | |
303 | new RSTile(getMyPlayer().getLocation().getX() - 1, | |
304 | getMyPlayer().getLocation().getY() - 1) }; | |
305 | case 4: | |
306 | return new RSTile[] { | |
307 | getMyPlayer().getLocation(), | |
308 | new RSTile(getMyPlayer().getLocation().getX() - 1, | |
309 | getMyPlayer().getLocation().getY() + 1), | |
310 | new RSTile(getMyPlayer().getLocation().getX() - 1, | |
311 | getMyPlayer().getLocation().getY() - 1), | |
312 | new RSTile(getMyPlayer().getLocation().getX() - 2, | |
313 | getMyPlayer().getLocation().getY()) }; | |
314 | case 5: | |
315 | return new RSTile[] { | |
316 | getMyPlayer().getLocation(), | |
317 | new RSTile(getMyPlayer().getLocation().getX() - 1, | |
318 | getMyPlayer().getLocation().getY() - 1), | |
319 | new RSTile(getMyPlayer().getLocation().getX() - 1, | |
320 | getMyPlayer().getLocation().getY() + 1), | |
321 | new RSTile(getMyPlayer().getLocation().getX() + 1, | |
322 | getMyPlayer().getLocation().getY() + 1), | |
323 | new RSTile(getMyPlayer().getLocation().getX() + 1, | |
324 | getMyPlayer().getLocation().getY() - 1) }; | |
325 | } | |
326 | return null; | |
327 | } | |
328 | ||
329 | private RSTile[] WagTraps; | |
330 | private RSTile[] ChinTraps; | |
331 | ||
332 | private Job[] getJobs() { | |
333 | Action snareWalkBank = new Action() { | |
334 | private int DUEL_RING; | |
335 | ||
336 | boolean activate() { | |
337 | return inventory.getCount(BIRD_SNARE) == 0; | |
338 | } | |
339 | ||
340 | void run() { | |
341 | banking = true; | |
342 | equipment.getItem(DUEL_RING).interact("rub"); | |
343 | mouse.click( | |
344 | interfaces.getAllContaining("Mobil")[0].getLocation(), | |
345 | true); | |
346 | web.getWeb(maBANK.getCentralTile()).step(); | |
347 | } | |
348 | }; | |
349 | Action snareBank = new Action() { | |
350 | boolean activate() { | |
351 | return banking == true | |
352 | && maBANK.contains(getMyPlayer().getLocation()); | |
353 | } | |
354 | ||
355 | void run() { | |
356 | if (!bank.isOpen()) { | |
357 | bank.open(); | |
358 | } else if (bank.isOpen()) { | |
359 | // If the bone is not null, withdraw it | |
360 | if (bank.getItem(BIRD_SNARE) != null) { | |
361 | bank.withdraw(BIRD_SNARE, 24); | |
362 | bank.close(); | |
363 | } | |
364 | // If the bird snare is null, stop the script | |
365 | else { | |
366 | log("You have no snares in the bank, stopping script!"); | |
367 | env.saveScreenshot(true); | |
368 | stopScript(); | |
369 | } | |
370 | } | |
371 | } | |
372 | }; | |
373 | Action placeSnare = new Action() { | |
374 | boolean activate() { | |
375 | return mySnares.size() < getMaxTrapAmount(); | |
376 | } | |
377 | ||
378 | void run() { | |
379 | if (MainTrap == null | |
380 | || !getCurrentJob().mainArea().contains(MainTrap)) { | |
381 | MainTrap = getMyPlayer().getLocation(); | |
382 | } | |
383 | while (calc.distanceTo(MainTrap) > 0) { | |
384 | walking.walkTileOnScreen(MainTrap); | |
385 | } | |
386 | mySnares.add(MainTrap); | |
387 | inventory.getItem(BIRD_SNARE).doClick(true); | |
388 | sleep(5000); | |
389 | ||
390 | } | |
391 | }; | |
392 | Action collectSnare = new Action() { | |
393 | ||
394 | boolean activate() { | |
395 | for (RSTile t : mySnares) { | |
396 | if (objects.getTopAt(t) != null | |
397 | && objects.getTopAt(t).getID() == DONE_SNARE[0]) { | |
398 | MainTrap = t; | |
399 | return true; | |
400 | } | |
401 | } | |
402 | return false;// TODO | |
403 | } | |
404 | ||
405 | void run() { | |
406 | objects.getTopAt(MainTrap).doClick(); | |
407 | sleep(500); | |
408 | expGain += 34; | |
409 | mySnares.remove(MainTrap); | |
410 | } | |
411 | }; | |
412 | ||
413 | Action fallenSnare = new Action() { | |
414 | boolean activate() { | |
415 | RSGroundItem g = groundItems.getNearest(BIRD_SNARE); | |
416 | if (g != null) { | |
417 | for (RSTile t : mySnares) { | |
418 | if (g.getLocation().equals(t)) | |
419 | return true; | |
420 | } | |
421 | } | |
422 | return false; | |
423 | } | |
424 | ||
425 | void run() { | |
426 | RSGroundItem k = groundItems.getNearest(BIRD_SNARE); | |
427 | if (k != null) | |
428 | k.interact("Lay"); | |
429 | sleep(2000); | |
430 | } | |
431 | }; | |
432 | ||
433 | Job CRIMSON_SWIFTS = new Job() { | |
434 | int reqLevel() { | |
435 | return 1; | |
436 | } | |
437 | ||
438 | int endLevel() { | |
439 | return 20; | |
440 | } | |
441 | ||
442 | public RSArea mainArea() { | |
443 | return C_SWIFT; | |
444 | ||
445 | } | |
446 | }; | |
447 | CRIMSON_SWIFTS.Steps.add(placeSnare); | |
448 | CRIMSON_SWIFTS.Steps.add(collectSnare); | |
449 | CRIMSON_SWIFTS.Steps.add(fallenSnare); | |
450 | // ////////////////////////////////////////////////////////////////// | |
451 | Action fallenWagSnare = new Action() { | |
452 | RSTile Next; | |
453 | ||
454 | boolean activate() { | |
455 | RSGroundItem g = groundItems.getNearest(BIRD_SNARE); | |
456 | if (g != null) { | |
457 | for (RSTile t : mySnares) { | |
458 | if (g.getLocation().equals(t)) { | |
459 | if (objects.getTopAt(t) == null) { | |
460 | if (mySnares.size() == getMaxTrapAmount()) { | |
461 | Next = t; | |
462 | return true; | |
463 | } | |
464 | } | |
465 | } | |
466 | } | |
467 | } | |
468 | return false; | |
469 | } | |
470 | ||
471 | void run() { | |
472 | RSGroundItem k = groundItems.getNearest(BIRD_SNARE); | |
473 | if (k != null) | |
474 | k.interact("Lay"); | |
475 | sleep(2000); | |
476 | } | |
477 | }; | |
478 | Action placeWagSnare = new Action() { | |
479 | boolean activate() { | |
480 | return mySnares.size() < getMaxTrapAmount(); | |
481 | } | |
482 | ||
483 | void run() { | |
484 | RSTile Next = null; | |
485 | if (WagTraps == null || WagTraps.length < getMaxTrapAmount()) { | |
486 | WagTraps = getWagTraps(); | |
487 | } | |
488 | for (RSTile t : WagTraps) { | |
489 | if (objects.getTopAt(t) == null) { | |
490 | Next = t; | |
491 | break; | |
492 | } | |
493 | } | |
494 | if (Next != null) { | |
495 | while (calc.distanceTo(Next) > 0) { | |
496 | walking.walkTileOnScreen(Next); | |
497 | sleep(1000); | |
498 | } | |
499 | mySnares.add(Next); | |
500 | inventory.getItem(BIRD_SNARE).doClick(true); | |
501 | sleep(6000); | |
502 | } | |
503 | } | |
504 | }; | |
505 | Action collectWagSnare = new Action() { | |
506 | RSTile Next; | |
507 | ||
508 | boolean activate() { | |
509 | for (RSTile t : WagTraps) { | |
510 | if (objects.getTopAt(t) != null | |
511 | && objects.getTopAt(t).getID() == DONE_SNARE[1]) { | |
512 | Next = t; | |
513 | return true; | |
514 | } | |
515 | } | |
516 | return false;// TODO | |
517 | } | |
518 | ||
519 | void run() { | |
520 | objects.getTopAt(Next).doClick(); | |
521 | sleep(500); | |
522 | expGain += 96; | |
523 | sleep(500); | |
524 | mySnares.remove(Next); | |
525 | } | |
526 | }; | |
527 | Action dropJunk = new Action() { | |
528 | ||
529 | boolean activate() { | |
530 | return inventory.containsOneOf(526, raw_meat); | |
531 | } | |
532 | ||
533 | void run() { | |
534 | inventory.dropItem(526); | |
535 | inventory.dropItem(raw_meat); | |
536 | sleep(500); | |
537 | } | |
538 | }; | |
539 | Action failSafe = new Action() { | |
540 | ||
541 | boolean activate() { | |
542 | for (RSTile t : WagTraps) { | |
543 | for (RSGroundItem rg : groundItems.getAllAt(t)) { | |
544 | if (rg.getItem().getID() == BIRD_SNARE) { | |
545 | if (objects.getTopAt(t) != null) { | |
546 | rg.interact("take"); | |
547 | } | |
548 | } | |
549 | } | |
550 | } | |
551 | return false; | |
552 | } | |
553 | ||
554 | void run() { | |
555 | log("We fucking failed. Probabaly going crazy with the traps..."); | |
556 | fail = 0; | |
557 | } | |
558 | }; | |
559 | Job TROPICAL_WAGTAIL = new Job() { | |
560 | int reqLevel() { | |
561 | return 20; | |
562 | } | |
563 | ||
564 | int endLevel() { | |
565 | return 53; | |
566 | } | |
567 | ||
568 | public RSArea mainArea() { | |
569 | return T_WAGTAIL; | |
570 | ||
571 | } | |
572 | }; | |
573 | TROPICAL_WAGTAIL.Steps.add(placeWagSnare); | |
574 | TROPICAL_WAGTAIL.Steps.add(collectWagSnare); | |
575 | TROPICAL_WAGTAIL.Steps.add(fallenWagSnare); | |
576 | TROPICAL_WAGTAIL.Steps.add(dropJunk); | |
577 | TROPICAL_WAGTAIL.Steps.add(failSafe); | |
578 | CRIMSON_SWIFTS.Steps.add(dropJunk); | |
579 | Action setTrap = new Action() { | |
580 | RSTile Next = null; | |
581 | ||
582 | boolean activate() { | |
583 | if (ChinTraps == null) { | |
584 | ChinTraps = getChinTraps(); | |
585 | } | |
586 | for (RSTile t : ChinTraps) { | |
587 | if (objects.getTopAt(t) == null) { | |
588 | Next = t; | |
589 | return true; | |
590 | } | |
591 | } | |
592 | return false; | |
593 | } | |
594 | ||
595 | void run() { | |
596 | if (Next != null) { | |
597 | while (calc.distanceTo(Next) > 0) { | |
598 | walking.walkTileOnScreen(Next); | |
599 | sleep(1000); | |
600 | } | |
601 | if (groundItems.getAllAt(Next).length == 0) { | |
602 | inventory.getItem(trapItem).doClick(true); | |
603 | } else { | |
604 | groundItems.getAllAt(Next)[0].interact("Lay"); | |
605 | } | |
606 | sleep(6000); | |
607 | } | |
608 | } | |
609 | }; | |
610 | Action takeTrap = new Action() { | |
611 | RSTile Next = null; | |
612 | ||
613 | boolean activate() { | |
614 | for (RSTile t : ChinTraps) { | |
615 | if (objects.getTopAt(t) != null) { | |
616 | if (objects.getTopAt(t).getID() == 19189) { | |
617 | Next = t; | |
618 | return true; | |
619 | } | |
620 | } | |
621 | } | |
622 | return false; | |
623 | } | |
624 | ||
625 | void run() { | |
626 | if (Next != null) { | |
627 | if (objects.getTopAt(Next).getID() == 19189) { | |
628 | objects.getTopAt(Next).doClick(); | |
629 | sleep(2000); | |
630 | } | |
631 | } | |
632 | } | |
633 | }; | |
634 | Action takefailTrap = new Action() { | |
635 | RSTile Next = null; | |
636 | ||
637 | boolean activate() { | |
638 | for (RSTile t : ChinTraps) { | |
639 | if (objects.getTopAt(t) != null) { | |
640 | if (objects.getTopAt(t).getID() == trapFailed) { | |
641 | Next = t; | |
642 | return true; | |
643 | } | |
644 | } | |
645 | } | |
646 | return false; | |
647 | } | |
648 | ||
649 | void run() { | |
650 | if (Next != null) { | |
651 | if (objects.getTopAt(Next).getID() == trapFailed) { | |
652 | objects.getTopAt(Next).doClick(); | |
653 | sleep(2000); | |
654 | } | |
655 | } | |
656 | } | |
657 | }; | |
658 | // | |
659 | Action takefail = new Action() { | |
660 | RSTile Next = null; | |
661 | ||
662 | boolean activate() { | |
663 | for (RSTile t : ChinTraps) { | |
664 | if (groundItems.getAllAt(t) != null) { | |
665 | if (groundItems.getAllAt(t).length > 0) { | |
666 | if (groundItems.getAllAt(t)[0].getItem().getID() == trapSetup) { | |
667 | Next = t; | |
668 | return true; | |
669 | } | |
670 | } | |
671 | } | |
672 | } | |
673 | return false; | |
674 | } | |
675 | ||
676 | void run() { | |
677 | if (Next != null) { | |
678 | if (groundItems.getAllAt(Next) != null | |
679 | && groundItems.getAllAt(Next)[0] != null) { | |
680 | groundItems.getAllAt(Next)[0].interact("take"); | |
681 | } | |
682 | } | |
683 | ||
684 | } | |
685 | }; | |
686 | Job GREY_CHIN = new Job() { | |
687 | int reqLevel() { | |
688 | return 53; | |
689 | } | |
690 | ||
691 | int endLevel() { | |
692 | return 63;// change once red is coded | |
693 | } | |
694 | ||
695 | public RSArea mainArea() { | |
696 | return G_CHIN; | |
697 | ||
698 | } | |
699 | }; | |
700 | GREY_CHIN.Steps.add(setTrap); | |
701 | GREY_CHIN.Steps.add(takeTrap); | |
702 | GREY_CHIN.Steps.add(takefail); | |
703 | GREY_CHIN.Steps.add(takefailTrap); | |
704 | // //////////////////////////////////////// | |
705 | Action setRTrap = new Action() { | |
706 | RSTile Next = null; | |
707 | ||
708 | boolean activate() { | |
709 | if (ChinTraps == null) { | |
710 | ChinTraps = getChinTraps(); | |
711 | } | |
712 | for (RSTile t : ChinTraps) { | |
713 | if (objects.getTopAt(t) == null) { | |
714 | Next = t; | |
715 | return true; | |
716 | } | |
717 | } | |
718 | return false; | |
719 | } | |
720 | ||
721 | void run() { | |
722 | if (Next != null) { | |
723 | while (calc.distanceTo(Next) > 0) { | |
724 | walking.walkTileOnScreen(Next); | |
725 | sleep(1000); | |
726 | } | |
727 | if (groundItems.getAllAt(Next).length == 0) { | |
728 | inventory.getItem(trapItem).doClick(true); | |
729 | } else { | |
730 | groundItems.getAllAt(Next)[0].interact("Lay"); | |
731 | } | |
732 | sleep(6000); | |
733 | } | |
734 | } | |
735 | }; | |
736 | Action takeRTrap = new Action() { | |
737 | RSTile Next = null; | |
738 | ||
739 | boolean activate() { | |
740 | for (RSTile t : ChinTraps) { | |
741 | if (objects.getTopAt(t) != null) { | |
742 | if (objects.getTopAt(t).getID() == 19190) { | |
743 | Next = t; | |
744 | return true; | |
745 | } | |
746 | } | |
747 | } | |
748 | return false; | |
749 | } | |
750 | ||
751 | void run() { | |
752 | if (Next != null) { | |
753 | if (objects.getTopAt(Next).getID() == 19190) { | |
754 | objects.getTopAt(Next).doClick(); | |
755 | sleep(2000); | |
756 | } | |
757 | } | |
758 | } | |
759 | }; | |
760 | Action takeRfailTrap = new Action() { | |
761 | RSTile Next = null; | |
762 | ||
763 | boolean activate() { | |
764 | for (RSTile t : ChinTraps) { | |
765 | if (objects.getTopAt(t) != null) { | |
766 | if (objects.getTopAt(t).getID() == trapFailed) { | |
767 | Next = t; | |
768 | return true; | |
769 | } | |
770 | } | |
771 | } | |
772 | return false; | |
773 | } | |
774 | ||
775 | void run() { | |
776 | if (Next != null) { | |
777 | if (objects.getTopAt(Next).getID() == trapFailed) { | |
778 | objects.getTopAt(Next).doClick(); | |
779 | sleep(2000); | |
780 | } | |
781 | } | |
782 | } | |
783 | }; | |
784 | // | |
785 | Action takeRfail = new Action() { | |
786 | RSTile Next = null; | |
787 | ||
788 | boolean activate() { | |
789 | for (RSTile t : ChinTraps) { | |
790 | if (groundItems.getAllAt(t) != null) { | |
791 | if (groundItems.getAllAt(t).length > 0) { | |
792 | if (groundItems.getAllAt(t)[0].getItem().getID() == trapSetup) { | |
793 | Next = t; | |
794 | return true; | |
795 | } | |
796 | } | |
797 | } | |
798 | } | |
799 | return false; | |
800 | } | |
801 | ||
802 | void run() { | |
803 | if (Next != null) { | |
804 | if (groundItems.getAllAt(Next) != null | |
805 | && groundItems.getAllAt(Next)[0] != null) { | |
806 | groundItems.getAllAt(Next)[0].interact("take"); | |
807 | } | |
808 | } | |
809 | ||
810 | } | |
811 | }; | |
812 | Job RED_CHIN = new Job() { | |
813 | int reqLevel() { | |
814 | return 63; | |
815 | } | |
816 | ||
817 | int endLevel() { | |
818 | return 99;// change once red is coded | |
819 | } | |
820 | ||
821 | public RSArea mainArea() { | |
822 | return R_CHIN; | |
823 | ||
824 | } | |
825 | }; | |
826 | RED_CHIN.Steps.add(setRTrap); | |
827 | RED_CHIN.Steps.add(takeRTrap); | |
828 | RED_CHIN.Steps.add(takeRfail); | |
829 | RED_CHIN.Steps.add(takeRfailTrap); | |
830 | Job[] temp = { CRIMSON_SWIFTS, TROPICAL_WAGTAIL, GREY_CHIN, RED_CHIN }; | |
831 | return temp; | |
832 | } | |
833 | ||
834 | // END: Code generated using Enfilade's Easel | |
835 | public boolean onStart() { | |
836 | startTime = System.currentTimeMillis(); | |
837 | startLevel = skills.getRealLevel(Skills.HUNTER); | |
838 | startExp = skills.getCurrentExp(Skills.HUNTER); | |
839 | // new Scanner(); | |
840 | return true; | |
841 | } | |
842 | ||
843 | @Override | |
844 | public int loop() { | |
845 | try { | |
846 | Job cur = getCurrentJob(); | |
847 | if (cur.mainArea() != null | |
848 | && cur.mainArea().contains(getMyPlayer().getLocation())) { | |
849 | for (Action a : cur.Steps) { | |
850 | if (a.activate()) { | |
851 | a.run(); | |
852 | break; | |
853 | } | |
854 | } | |
855 | } else { | |
856 | if (!banking) | |
857 | web.getWeb(cur.mainArea().getCentralTile()).step(); | |
858 | } | |
859 | } catch (Exception e) { | |
860 | log(e.getMessage()); | |
861 | } | |
862 | return 100; | |
863 | } | |
864 | ||
865 | private Job getCurrentJob() { | |
866 | for (Job job : getJobs()) { | |
867 | if (job.reqLevel() <= skills.getRealLevel(Skills.HUNTER) | |
868 | && job.endLevel() > skills.getRealLevel(Skills.HUNTER)) { | |
869 | return job; | |
870 | } | |
871 | } | |
872 | return null; | |
873 | ||
874 | } | |
875 | ||
876 | class Action { | |
877 | boolean activate() { | |
878 | return false; | |
879 | } | |
880 | ||
881 | void run() { | |
882 | ||
883 | } | |
884 | } | |
885 | ||
886 | class Job { | |
887 | private long startTime; | |
888 | ||
889 | public RSArea mainArea() { | |
890 | return null; | |
891 | } | |
892 | ||
893 | int reqLevel() { | |
894 | return -1; | |
895 | } | |
896 | ||
897 | int endLevel() { | |
898 | return -1; | |
899 | } | |
900 | ||
901 | ArrayList<Action> Steps = new ArrayList<Action>(); | |
902 | } | |
903 | ||
904 | } |