Jump to content

Prayer API


TheScrub

Recommended Posts


package prayer;

import java.util.ArrayList;
import java.util.List;

import org.osbot.script.Script;
import org.osbot.script.rs2.skill.Skill;
import org.osbot.script.rs2.ui.RS2InterfaceChild;

public class Prayers {
    private Script script;

    public Prayers(Script script) {
        this.script = script;
    }

    enum Prayer {
        THICK_SKIN(1, 1, 1, "Thick Skin"), BURST_OF_STRENGTH(4, 2, 2,
                "Burst of Strength"), CLARITY_OF_THOUGHT(7, 4, 3,
                "Clarity of Thought"), SHARP_EYE(8, 262144, 4, "Sharp Eye"), MYSTIC_WILL(
                9, 524288, 5, "Mystic Will"), ROCK_SKIN(10, 8, 6, "Rock Skin"), SUPERHUMAN_STRENGTH(
                13, 16, 7, "Superhuman Strength"), IMPROVED_REFLEXES(16, 32, 8,
                "Improved Reflexes"), RAPID_RESTORE(19, 64, 9, "Rapid Restore"), RAPID_HEAL(
                22, 128, 10, "Rapid Heal"), PROTECT_ITEM(25, 256, 11,
                "Protect Item"), HAWK_EYE(26, 1048576, 12, "Hawk Eye"), MYSTIC_LORE(
                27, 2097152, 13, "Mystic Lore"), STEEL_SKIN(28, 512, 14,
                "Steel Skin"), ULTIMATE_STRENGTH(31, 1024, 15,
                "Ultimate Strength"), INCREDIBLE_REFLEXES(34, 2048, 16,
                "Incredible Reflexes"), PROTECT_FROM_MAGIC(37, 4096, 17,
                "Protect from Magic"), PROTECT_FROM_MISSILES(40, 8192, 18,
                "Protect from Missiles"), PROTECT_FROM_MELEE(43, 16384, 19,
                "Protect from Melee");

        private int requiredPrayerLevel;
        private int configValue;
        private int slot;
        private String prayerName;

        Prayer(final int requiredPrayerLevel, final int configValue,
                final int slot, final String prayerName) {
            this.requiredPrayerLevel = requiredPrayerLevel;
            this.configValue = configValue;
            this.slot = slot;
            this.prayerName = prayerName;
        }

        public int getRequiredPrayerLevel() {
            return requiredPrayerLevel;
        }

        public int getConfigValue() {
            return configValue;
        }

        public int getSlot() {
            return slot-1;
        }

        public String getName() {
            return prayerName;
        }

    }

    public boolean hasRequiredPrayerLevel(Prayer p) {
        return script.client.getSkills().getLevel(Skill.PRAYER) >= p
                .getRequiredPrayerLevel();
    }

    public boolean isSet(Prayer p) {
        return p != null && getSelectedPrayers().contains(p);
    }

    public List<Prayer> getSelectedPrayers() {
        List<Prayer> selectedPrayers = new ArrayList<Prayer>();
        for (Prayer p : Prayer.values()) {
            if ((script.client.getConfig(83) & (1 << getReversedPower(2,
                    p.getConfigValue()))) != 0) {
                selectedPrayers.add(p);
            }
        }
        return selectedPrayers;
    }

    public List<Prayer> getSelectedQuickPrayers() {
        List<Prayer> selectedPrayers = new ArrayList<Prayer>();
        for (Prayer p : Prayer.values()) {
            if ((script.client.getConfig(84) & (1 << getReversedPower(2,
                    p.getConfigValue()))) != 0) {
                selectedPrayers.add(p);
            }
        }
        return selectedPrayers;
    }

    public boolean isSetQuickPrayer(Prayer p){
        return p != null && getSelectedQuickPrayers().contains(p);
    }
    
    public boolean isQuickPrayerMenuOpen(){
        return getChild(77,4) !=null;
    }

    private RS2InterfaceChild getChild(int parent, int child) {
        if (script.client.getInterface(parent) != null) {
            RS2InterfaceChild c = script.client.getInterface(parent).getChild(child);
            if (c != null && c.isVisible()) {
                return c;
            }
        }
        return null;
    }
    

    
    /*
     * Used to figure out how many shifts are needed..
     */
    private int getReversedPower(int powerOfNumber, int endNumber) {
        for (int i = 1; i < 31; i++) {
            if (Math.pow(powerOfNumber, i) == endNumber) {
                return i;
            }
        }
        return 0;
    }

}


the slot class to return the slots like such..

 

7s7zF.png

package prayer;

import java.awt.Point;
import java.awt.Rectangle;

import org.osbot.script.Script;
import org.osbot.script.mouse.RectangleDestination;
import org.osbot.script.rs2.ui.RS2InterfaceChild;
import org.osbot.script.rs2.ui.Tab;

import prayer.Prayers.Prayer;

public class PrayerSlot {
    private Script script;
    private Prayers prayers;

    public PrayerSlot(Script script) {
        this.script = script;
        prayers = new Prayers(script);
    }

    private final int START_WIDTH = 553;
    private final int START_HEIGHT = 218;
    private final int WIDTH = 37;
    private final int HEIGHT = 37;

    private Point getPoint(int slot) {
        int column = slot / 5;
        int row = slot % 5;
        int x = (int) (START_WIDTH + (row * WIDTH));
        int y = (int) START_HEIGHT + (column * HEIGHT);
        return new Point(x, y);
    }

    public Rectangle getRectangle(int slot) {
        Point p = getPoint(slot);
        return new Rectangle(p.x, p.y, 30, 27);
    }

    public void togglePrayerOn(Prayer p) throws InterruptedException {
        if (p != null && !prayers.isSet(p)) {
            Rectangle interactionSlot = getRectangle(p.getSlot());
            if (script.currentTab() != null && interactionSlot != null) {
                if (!script.currentTab().equals(Tab.PRAYER)) {
                    script.openTab(Tab.PRAYER);
                }
                if (script.currentTab().equals(Tab.PRAYER)) {
                    interact(interactionSlot, "Activate");
                }
            }
        }
    }

    public void togglePrayerOff(Prayer p) throws InterruptedException {
        if (p != null && prayers.isSet(p)) {
            Rectangle interactionSlot = getRectangle(p.getSlot());
            if (script.currentTab() != null && interactionSlot != null) {
                if (!script.currentTab().equals(Tab.PRAYER)) {
                    script.openTab(Tab.PRAYER);
                }
                if (script.currentTab().equals(Tab.PRAYER)) {
                    interact(interactionSlot, "Deactivate");
                }
            }
        }
    }

    public void toogleQuickPrayerOn(Prayer p) throws InterruptedException {
        if (p != null && !prayers.isSetQuickPrayer(p)) {
            Rectangle interactionSlot = getRectangle(p.getSlot());
            if (script.currentTab() != null && interactionSlot != null) {
                if (!script.currentTab().equals(Tab.PRAYER)) {
                    script.openTab(Tab.PRAYER);
                }
                if (script.currentTab().equals(Tab.PRAYER)) {
                    interact(interactionSlot, "Toggle");
                }
            }
        }
    }
    
    public void toogleQuickPrayerOff(Prayer p) throws InterruptedException {
        if (p != null && prayers.isSetQuickPrayer(p)) {
            Rectangle interactionSlot = getRectangle(p.getSlot());
            if (script.currentTab() != null && interactionSlot != null) {
                if (!script.currentTab().equals(Tab.PRAYER)) {
                    script.openTab(Tab.PRAYER);
                }
                if (script.currentTab().equals(Tab.PRAYER)) {
                    interact(interactionSlot, "Toggle");
                }
            }
        }
    }

    public void confirmQuickPrayers() throws InterruptedException {
        if (script.currentTab() != null && prayers.isQuickPrayerMenuOpen()) {
            if (!script.currentTab().equals(Tab.PRAYER)) {
                script.openTab(Tab.PRAYER);
            }
            if (script.currentTab().equals(Tab.PRAYER)) {
                interact(getChild(77,4).getRectangle(),"Done");
            }
        }
    }

    
    public void openQuickPrayerMenu() throws InterruptedException{
        //548,85
        if (getChild(548,85) !=null){
            interact(getChild(548,85).getRectangle(),"Setup");
        }
    }
    

    
    public void activateQuickPrayers() throws InterruptedException{
        if (getChild(548,85) !=null){
            getChild(548,85).interact("Activate");
        }
    }
    
    private RS2InterfaceChild getChild(int parent, int child) {
        if (script.client.getInterface(parent) != null) {
            RS2InterfaceChild c = script.client.getInterface(parent).getChild(child);
            if (c != null && c.isVisible()) {
                return c;
            }
        }
        return null;
    }
    
    private boolean interact(Rectangle rec, String action)
            throws InterruptedException {
        return script.selectOption(null, new RectangleDestination(rec), action);
    }
}



updated it again a little

Edited by TheScrub
  • Like 1
Link to comment
Share on other sites

  • 1 month later...
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...