Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.rspeer.runetek.adapter.component.Item;
- import org.rspeer.runetek.adapter.scene.Npc;
- import org.rspeer.runetek.api.Definitions;
- import org.rspeer.runetek.api.Game;
- import org.rspeer.runetek.api.commons.Time;
- import org.rspeer.runetek.api.component.tab.Inventory;
- import org.rspeer.runetek.api.component.tab.Skill;
- import org.rspeer.runetek.api.component.tab.Skills;
- import org.rspeer.runetek.api.movement.Movement;
- import org.rspeer.runetek.api.movement.path.PathEdge;
- import org.rspeer.runetek.api.movement.position.WorldPosition;
- import org.rspeer.runetek.api.scene.Npcs;
- import org.rspeer.runetek.api.scene.Players;
- import org.rspeer.script.GameAccount;
- import org.rspeer.script.Script;
- import org.rspeer.script.ScriptMeta;
- import java.util.Optional;
- import java.util.function.Predicate;
- @ScriptMeta(developer = "Eru", desc = "Kills goblins", name = "GoblinKiller")
- public class GoblinKiller extends Script {
- private static final int MAX_LEVEL_DIFFERENCE = 5;
- private static final WorldPosition GOBLIN_LOCATION = new WorldPosition(3259, 3233, 0);
- private static final Predicate<Npc> GOBLIN_FILTER = (goblin) -> goblin != null
- && "Goblin".equals(goblin.getName()) && goblin.getTargetIndex() == -1;
- @Override
- public void onStart() {
- if (!Game.isLoggedIn()) {
- Definitions.populate();
- }
- Game.getEventDispatcher().clear();
- super.onStart();
- }
- @Override
- public int loop() {
- if (wearBronzeSword() || switchAttackStyle())
- return 500;
- if (playerHasTarget())
- return 2000;
- if (attackGoblin() || walkToGoblins())
- return 1200;
- return 50;
- }
- private boolean walkToGoblins() {
- PathEdge[] pathEdges = Movement.findPath(Players.getLocal(), GOBLIN_LOCATION);
- while (!attackGoblin()) {
- Movement.walk(pathEdges);
- Time.sleep(1200);
- }
- return playerHasTarget();
- }
- private boolean playerHasTarget() {
- return Players.getLocal().getTargetIndex() != -1;
- }
- private boolean attackGoblin() {
- Optional<Npc> goblin = Optional.ofNullable(Npcs.getNearest(GOBLIN_FILTER));
- return !playerHasTarget() && goblin.isPresent() && goblin.get().interact("Attack");
- }
- private boolean wearBronzeSword() {
- if (!Inventory.contains("Bronze sword"))
- return false;
- Item bronzeSword = Inventory.getFirst("Bronze sword");
- return bronzeSword != null && bronzeSword.interact("Wield");
- }
- private boolean switchAttackStyle() {
- int attack = Skills.getCurrentLevel(Skill.ATTACK) / MAX_LEVEL_DIFFERENCE;
- int defence = Skills.getCurrentLevel(Skill.DEFENCE) / MAX_LEVEL_DIFFERENCE;
- int strength = Skills.getCurrentLevel(Skill.STRENGTH) / MAX_LEVEL_DIFFERENCE;
- if (attack < strength)
- return !AttackStyle.ATTACK.isSelected() && AttackStyle.ATTACK.select();
- if (strength < defence || strength < attack)
- return !AttackStyle.STRENGTH.isSelected() && AttackStyle.STRENGTH.select();
- if (defence < strength)
- return !AttackStyle.DEFENCE.isSelected() && AttackStyle.DEFENCE.select();
- return !AttackStyle.ATTACK.isSelected() && AttackStyle.ATTACK.select();
- }
- }
Add Comment
Please, Sign In to add comment