Guest User

Untitled

a guest
Feb 23rd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. import org.rspeer.runetek.adapter.component.Item;
  2. import org.rspeer.runetek.adapter.scene.Npc;
  3. import org.rspeer.runetek.api.Definitions;
  4. import org.rspeer.runetek.api.Game;
  5. import org.rspeer.runetek.api.commons.Time;
  6. import org.rspeer.runetek.api.component.tab.Inventory;
  7. import org.rspeer.runetek.api.component.tab.Skill;
  8. import org.rspeer.runetek.api.component.tab.Skills;
  9. import org.rspeer.runetek.api.movement.Movement;
  10. import org.rspeer.runetek.api.movement.path.PathEdge;
  11. import org.rspeer.runetek.api.movement.position.WorldPosition;
  12. import org.rspeer.runetek.api.scene.Npcs;
  13. import org.rspeer.runetek.api.scene.Players;
  14. import org.rspeer.script.GameAccount;
  15. import org.rspeer.script.Script;
  16. import org.rspeer.script.ScriptMeta;
  17.  
  18. import java.util.Optional;
  19. import java.util.function.Predicate;
  20.  
  21. @ScriptMeta(developer = "Eru", desc = "Kills goblins", name = "GoblinKiller")
  22. public class GoblinKiller extends Script {
  23.  
  24. private static final int MAX_LEVEL_DIFFERENCE = 5;
  25. private static final WorldPosition GOBLIN_LOCATION = new WorldPosition(3259, 3233, 0);
  26. private static final Predicate<Npc> GOBLIN_FILTER = (goblin) -> goblin != null
  27. && "Goblin".equals(goblin.getName()) && goblin.getTargetIndex() == -1;
  28.  
  29. @Override
  30. public void onStart() {
  31. if (!Game.isLoggedIn()) {
  32. Definitions.populate();
  33. }
  34. Game.getEventDispatcher().clear();
  35. super.onStart();
  36. }
  37.  
  38. @Override
  39. public int loop() {
  40. if (wearBronzeSword() || switchAttackStyle())
  41. return 500;
  42.  
  43. if (playerHasTarget())
  44. return 2000;
  45.  
  46. if (attackGoblin() || walkToGoblins())
  47. return 1200;
  48.  
  49. return 50;
  50. }
  51.  
  52. private boolean walkToGoblins() {
  53. PathEdge[] pathEdges = Movement.findPath(Players.getLocal(), GOBLIN_LOCATION);
  54. while (!attackGoblin()) {
  55. Movement.walk(pathEdges);
  56. Time.sleep(1200);
  57. }
  58. return playerHasTarget();
  59. }
  60.  
  61. private boolean playerHasTarget() {
  62. return Players.getLocal().getTargetIndex() != -1;
  63. }
  64.  
  65. private boolean attackGoblin() {
  66. Optional<Npc> goblin = Optional.ofNullable(Npcs.getNearest(GOBLIN_FILTER));
  67. return !playerHasTarget() && goblin.isPresent() && goblin.get().interact("Attack");
  68. }
  69.  
  70. private boolean wearBronzeSword() {
  71. if (!Inventory.contains("Bronze sword"))
  72. return false;
  73.  
  74. Item bronzeSword = Inventory.getFirst("Bronze sword");
  75. return bronzeSword != null && bronzeSword.interact("Wield");
  76. }
  77.  
  78. private boolean switchAttackStyle() {
  79. int attack = Skills.getCurrentLevel(Skill.ATTACK) / MAX_LEVEL_DIFFERENCE;
  80. int defence = Skills.getCurrentLevel(Skill.DEFENCE) / MAX_LEVEL_DIFFERENCE;
  81. int strength = Skills.getCurrentLevel(Skill.STRENGTH) / MAX_LEVEL_DIFFERENCE;
  82.  
  83. if (attack < strength)
  84. return !AttackStyle.ATTACK.isSelected() && AttackStyle.ATTACK.select();
  85.  
  86. if (strength < defence || strength < attack)
  87. return !AttackStyle.STRENGTH.isSelected() && AttackStyle.STRENGTH.select();
  88.  
  89. if (defence < strength)
  90. return !AttackStyle.DEFENCE.isSelected() && AttackStyle.DEFENCE.select();
  91.  
  92. return !AttackStyle.ATTACK.isSelected() && AttackStyle.ATTACK.select();
  93. }
  94.  
  95. }
Add Comment
Please, Sign In to add comment