Jump to content
View in the app

A better way to browse. Learn more.

OSBot :: 2007 OSRS Botting

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

anti afk help

Featured Replies

I took the cwars script found in the minigames section and edited it bit so it stays just outside the spawn area but im having trouble trying to add a anti-afk method when its not attacking people. Also maybe i would like to change it to moving the camera instead of clicking walk here so it looks less botlike

here is the script:

import org.osbot.rs07.api.map.Area;
import org.osbot.rs07.api.map.Position;
import org.osbot.rs07.api.model.Entity;
import org.osbot.rs07.api.model.NPC;
import org.osbot.rs07.api.model.Player;
import org.osbot.rs07.api.model.RS2Object;
import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.api.util.GraphicUtilities;
import org.osbot.rs07.api.util.LocalPathFinder;
import org.osbot.rs07.event.InteractionEvent;
import org.osbot.rs07.script.MethodProvider;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;


import java.awt.*;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Optional;
import java.util.stream.Collectors;

/**
 * Created by Alek on 5/8/2016.
 */
@ScriptManifest(name = "Castle WarsTEST", author = "Alek", version = 1.0, info = "Castle Wars Script", logo = "")
public class CastleWars extends Script {

    ScriptState scriptState = ScriptState.PENDING;
    private Team myTeam = null;
    private Player enemyPlayer = null;

    private final Area ZAMORAK_SPAWN_ROOM = new Area(2368, 3127, 2376, 3135).setPlane(1);
    private final Area SARADOMIN_SPAWN_ROOM = new Area(2423, 3072, 2431, 3080).setPlane(1);
    private final Area ZAMORAK_WAITING_ROOM = new Area(2403, 9510, 2437, 9543);
    private final Area SARADOMIN_WAITING_ROOM = new Area(2363, 9478, 2394, 9502);
    private final Area SARADOMIN_SPAWN_AREA = new Area(2423, 3080, 2431, 3072).setPlane(1);
    private final Area ZAMORAK_SPAWN_AREA = new Area(2376, 3127, 2368, 3135).setPlane(1);


    private final Position ZAMORAK_BARRIER = new Position(2377, 3131, 1);
    private final Position SARADOMIN_BARRIER = new Position(2422, 3076, 1);
    private final Position ZAMORAK_AFK1 = new Position(2379, 3124, 1);
    private final Position SARADOMIN_AFK1 = new Position(2420, 3083, 1);
    private final Position ZAMORAK_AFK2 = new Position(2378, 3127, 1);
    private final Position SARADOMIN_AFK2 = new Position(2422, 3080, 1);



    
    private enum Team {
        SARADOMIN(1), ZAMORAK(2);
        int teamId;

        Team(int teamId) {
            this.teamId = teamId;
        }

        int getTeamId() {
            return teamId;
        }
    }

    private enum ScriptState {FIND_PORTAL, WAIT_FOR_GAME, GRAB_SUPPLIES, LEAVE_SPAWN, FIND_OPPONENT, FIGHT_OPPONENT, PENDING}

    @Override
    public void onPaint(Graphics2D g) {
        g.setColor(Color.WHITE);
        g.drawString(scriptState.name(), 10, 120);
    }

    @Override
    public int onLoop() {
        scriptState = getScriptState();
        switch (scriptState) {
            case FIND_PORTAL:
                myTeam = null;
                Optional<RS2Object> optionalPortal = getObjects().getAll().stream().filter(o -> o.getName().equals("Guthix Portal")).findFirst();
                if (optionalPortal.isPresent()) {
                    if (optionalPortal.get().interact("Enter")) {
                        new ConditionalSleep(5000, 500) {
                            @Override
                            public boolean condition() throws InterruptedException {
                                return SARADOMIN_WAITING_ROOM.contains(myPlayer()) || ZAMORAK_WAITING_ROOM.contains(myPlayer());
                            }
                        }.sleep();
                    }
                } else {
                    log("Please start the script in Castle Wars!");
                    stop(false);
                }
                break;
            case WAIT_FOR_GAME:
                if (getDialogues().isPendingOption()) {
                    getDialogues().selectOption("Yes please!");
                } else if (myPlayer().getArea(2).getRandomPosition().interact(getBot(), "Walk here")) {
                    getMouse().moveOutsideScreen();
                    new ConditionalSleep(MethodProvider.random(30000, 60000), 3000) {
                        @Override
                        public boolean condition() throws InterruptedException {
                            return getDialogues().isPendingOption() ||
                                    (SARADOMIN_SPAWN_ROOM.contains(myPosition()) || ZAMORAK_SPAWN_ROOM.contains(myPosition()));
                        }
                    }.sleep();
                }
                break;
            case GRAB_SUPPLIES:
                Optional<RS2Object> optionalTable = getObjects().getAll().stream().filter(o -> o.getName().equals("Table") &&
                        (ZAMORAK_SPAWN_ROOM.contains(o) || SARADOMIN_SPAWN_ROOM.contains(o))).findFirst();
                if (optionalTable.isPresent()) {
                    for (int i = 0; i < MethodProvider.random(1, 5); i++) {
                        if (optionalTable.get().interact("Take-5")) {
                            final int slots = getInventory().getEmptySlots();
                            new ConditionalSleep(5000, 500) {
                                @Override
                                public boolean condition() throws InterruptedException {
                                    return slots != getInventory().getEmptySlots();
                                }
                            }.sleep();
                        }
                    }
                }
                break;
            case LEAVE_SPAWN:
                boolean successfullyLeftSpawnArea = false;
                if (SARADOMIN_SPAWN_ROOM.contains(myPosition()) || ZAMORAK_SPAWN_ROOM.contains(myPosition())) {
                    Optional<RS2Object> optionalBarrier;
                    if (getMyTeam().equals(Team.ZAMORAK))
                        optionalBarrier = getObjects().getAll().stream().filter(o -> o.getPosition().equals(ZAMORAK_BARRIER)).findFirst();
                    else
                        optionalBarrier = getObjects().getAll().stream().filter(o -> o.getPosition().equals(SARADOMIN_BARRIER)).findFirst();

                    if (optionalBarrier.isPresent()) {
                        if (optionalBarrier.get().interact("Pass")) {
                        	successfullyLeftSpawnArea = true;
                            new ConditionalSleep(5000, 500) {
                                @Override
                                public boolean condition() throws InterruptedException {
                                    return !SARADOMIN_SPAWN_ROOM.contains(myPosition()) && !ZAMORAK_SPAWN_ROOM.contains(myPosition());
                                    
                                }
                                
                            }.sleep();
                        	} else {
                                    NPC barricade = getNpcs().closest("Barricade");
                                    if (barricade != null) {
                                        if (barricade.interact("Attack")) {
                                            new ConditionalSleep(5000, 500) {
                                                @Override
                                                public boolean condition() throws InterruptedException {
                                                    return !barricade.exists();
                                                }
                                            }.sleep();
                                        
                                    
                                }
                            }
                        }
                    }
                    if (successfullyLeftSpawnArea) {
                        switch (MethodProvider.random(0, 2)) {
                            case 1:
                                if (getMyTeam().equals(Team.ZAMORAK))
                                    getWalking().webWalk(ZAMORAK_AFK1);
                                else
                                    getWalking().webWalk(SARADOMIN_AFK1);
                                break;
                            case 2:
                                if (getMyTeam().equals(Team.ZAMORAK))
                                    getWalking().webWalk(ZAMORAK_AFK2);
                                else
                                    getWalking().webWalk(SARADOMIN_AFK2);
                                break;
                        }
                    }
                }
                break;
            case FIND_OPPONENT:
                Collection<Player> enemies = getPlayers().getAll().stream().filter(p -> p.getTeam() != getMyTeam().getTeamId()).collect(Collectors.toList());
                if (!enemies.isEmpty()) {
                    for (Player enemy : enemies) {
                        Rectangle enemyBounds = GraphicUtilities.getModelBoundingBox(getBot(), enemy.getGridX(), enemy.getGridY(), enemy.getZ(), enemy.getModel());
                        if (getMap().canReach(enemy)) {
                            if (enemyBounds.intersects(GraphicUtilities.MAIN_SCREEN_CLIP)) {
                                InteractionEvent event = new InteractionEvent(enemy, "Attack").setWalkTo(false);
                                execute(event);
                                if (event.hasFinished()) {
                                    enemyPlayer = enemy;
                                    break;
                                }
                            } else if (MethodProvider.random(0, 1) == 1) {
                                getWalking().walk(enemy);
                                break;
                            }
                        }
                    }
                }
case FIGHT_OPPONENT:
                if (enemyPlayer.exists()) {
                    if (myPlayer().isInteracting(enemyPlayer)) {
                        if (getInventory().contains("Bandages") && (getSkills().getStatic(Skill.HITPOINTS) - getSkills().getDynamic(Skill.HITPOINTS) > 10))
                            getInventory().getItem("Bandages").interact("Heal");
                        new ConditionalSleep(MethodProvider.random(2000, 5000), 500) {
                            @Override
                            public boolean condition() throws InterruptedException {
                                return enemyPlayer.exists();
                            }
                        }.sleep();
                    } else if (getMap().canReach(enemyPlayer)) {
                        enemyPlayer.interact("Attack");
                    } else {
                        enemyPlayer = null;
                    }
                } else {
                    enemyPlayer = null;
                }
                break;
        }
        return 1000;
    }

    private ScriptState getScriptState() {
        if (getConfigs().get(1021) == 0)
            return ScriptState.FIND_PORTAL;
        if (ZAMORAK_WAITING_ROOM.contains(myPlayer()) || SARADOMIN_WAITING_ROOM.contains(myPlayer()))
            return ScriptState.WAIT_FOR_GAME;
        if (SARADOMIN_SPAWN_AREA.contains(myPlayer()) || ZAMORAK_SPAWN_AREA.contains(myPlayer()))
            if (!getInventory().contains("Bandages"))
                return ScriptState.GRAB_SUPPLIES;
            else
                return ScriptState.LEAVE_SPAWN;
        if (enemyPlayer == null)
            return ScriptState.FIND_OPPONENT;
        return ScriptState.FIGHT_OPPONENT;
    }

    private Team getMyTeam() {
        if (myTeam == null)
            myTeam = myPlayer().getTeam() == 1 ? Team.SARADOMIN : Team.ZAMORAK;
        return myTeam;
    }

    private boolean isPathBlocked(Entity entity) {
        LocalPathFinder pf = new LocalPathFinder(bot);
        LinkedList<Position> path = pf.findPath(entity);
        if (pf.foundPath()) {
            Collection<NPC> barricades = getNpcs().getAll().stream().filter(o -> o.getName().equals("Barricade")).collect(Collectors.toList());
            for (Position position : path)
                for (NPC barricade : barricades)
                    if (barricade.getPosition().equals(position))
                        return true;
            return false;
        }
        return true;
    }
}

 

Edited by samlol1234

Add this at the top of your onloop

 

if(MethodProvider.random(0,10) == 1){
	getCamera().moveYaw(getCamera().getYawAngle() + 10);
}

 

Edited by k9thebeast

  • Author
4 hours ago, k9thebeast said:

Add this at the top of your onloop

 


if(MethodProvider.random(0,10) == 1){
	getCamera().moveYaw(getCamera().getYawAngle() + 10);
}

 

that works, but it rotates the camera so much. how can i make it every now and then?

Edited by samlol1234

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.