Jump to content

MailCurseCaster - Curse that monk!


mailinator

Recommended Posts

MailCurseCaster v0.9.1

Yay! My third published script!

Using curse on the Monk of Zamorak in Varrock is a very easy way to get your magic lvl up. So I made this script. Also I finally added some paint, will update my other scripts. If there will be demand, I can publish a Aubury's rune shop script, that I used to buy my runes.

What my script does:

  • casts Curse
  • checks if you still have body runes, if not it logs out
  • both compiled jar and source code published

Enjoy!

Notes:

  • I just noticed there is another curse caster available, but I've already made this script, so here you go

Updates:

  • v1 - initial release

Download (v1)

 

Precompiled JAR: http://tmp.martincernac.cz/mailcursecaster/MailCurseCaster.jar?v1
Source (if you don't trust me): http://tmp.martincernac.cz/mailcursecaster/MailCurseCaster.java?v1
 

Screenshot

screen.png?v1

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

I made a couple mods to the script. Added CURSE_AREA so if the player is not the in the area it will log out. Not sure how that will do with randoms that run from combat, but it does prevent death standing and standing on the wrong side of the door. Also added current mage level and mages levels gained.

package botScript;

import java.awt.*;

import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.api.ui.Spell;
import org.osbot.rs07.api.ui.Tab;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.Area;

@ScriptManifest(author = "Mailinator/Fay", info = "Casts Curse on Monk of Zamorak", name = "MailCurseCaster/w Fay", version = 0.911, logo = "")
public class Something extends Script
{

	private long startTime;
	private int magicStartXP;
	private int magicStartLvl;
	final Area CURSE_AREA = new Area(3214,3473,3218,3476);

	@Override
	public void onStart()
	{
		startTime = System.currentTimeMillis();
		antiBan.initializeModule();
		magicStartXP = skills.getExperience(Skill.MAGIC);
		magicStartLvl = skills.getStatic(Skill.MAGIC);
		
	}

	@Override
	public int onLoop() throws InterruptedException
	{
		tabs.open(Tab.MAGIC);
		if(CURSE_AREA.contains(myPlayer()) && inventory.contains("Body rune")){
			magic.castSpellOnEntity(Spell.CURSE, npcs.closest("Monk of Zamorak"));
		}else{
                        //Realized that running from combat randoms would term a step before we entered into the CURSE_AREA so I threw in a sleep/recheck for it to have just enough time to walk into the zone.
			sleep(random(300,550));
			if(!CURSE_AREA.contains(myPlayer()) || !inventory.contains("Body rune")){
			stop(true);
			}
		}

		return random(1000, 1500);
	}

	@Override
	public void onPaint(Graphics2D g)
	{
		long elapsed = System.currentTimeMillis() - startTime;
		int magicCurrentLvl = skills.getStatic(Skill.MAGIC);
		g.setColor(new Color(0, 0, 0, .7f));
		g.fillRect(7, 345, 220, 65);
		g.setColor(Color.WHITE);
		g.drawString((new StringBuilder("Time: ")).append(format(elapsed)).toString(), 15, 357);
		g.drawString((new StringBuilder("Magic level: ")).append(magicCurrentLvl).append(" (").append(magicCurrentLvl - magicStartLvl).append(")").toString(), 120, 357);
		g.setColor(Color.BLACK);
		g.fillRect(15, 366, 202, 15);

		double delta = skills.getExperienceForLevel(skills.getStatic(Skill.MAGIC) + 1) - skills.getExperienceForLevel(skills.getStatic(Skill.MAGIC));
		double percentage = (100 - skills.experienceToLevel(Skill.MAGIC) / (delta / 100));

		g.setColor(new Color(79, 192, 24));
		g.fillRect(16, 367, (int) (200 * (percentage / 100)), 13);

		if (percentage < 55)
		{
			g.setColor(Color.WHITE);
		}
		else
		{
			g.setColor(Color.BLACK);
		}

		g.drawString(((int) percentage) + "%", 105, 378);

		g.setColor(Color.WHITE);
		g.drawString("XP and casts TNL: " + skills.experienceToLevel(Skill.MAGIC) + "XP (" + (int) (skills.experienceToLevel(Skill.MAGIC) / 29) + ")", 15, 398);

	}

	public String format(long time)
	{
		StringBuilder string = new StringBuilder();
		long totalSeconds = time / 1000L;
		long totalMinutes = totalSeconds / 60L;
		long totalHours = totalMinutes / 60L;
		int seconds = (int) totalSeconds % 60;
		int minutes = (int) totalMinutes % 60;
		int hours = (int) totalHours % 24;
		if (hours > 0)
		{
			string.append((new StringBuilder(String.valueOf(hours))).append("h ").toString());
		}
		if (minutes > 0)
		{
			string.append((new StringBuilder(String.valueOf(minutes))).append("m ").toString());
		}
		string.append((new StringBuilder(String.valueOf(seconds))).append("s").toString());
		return string.toString();
	}
}
Edited by Fay
Link to comment
Share on other sites

  • 5 months later...
  • 2 weeks later...
  • 3 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

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