rendered paste body/*
Credits goes to Apples from KBot.
Redistribution is not permitted without consent from author.
Enjoy the script and post any issues you get while running the script.
*/
package com.scripts;
import com.kbot2.handlers.eventSystem.eventListeners.PaintListener;
import com.kbot2.handlers.eventSystem.eventListeners.ServerMessageListener;
import com.kbot2.scriptable.Script;
import com.kbot2.scriptable.methods.data.Skills;
import com.kbot2.scriptable.methods.data.GameScreen;
import com.kbot2.scriptable.methods.wrappers.Interface;
import com.kbot2.scriptable.methods.wrappers.Tile;
import com.kbot2.scriptable.methods.wrappers.Obj;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AlKharidSmelter extends Script implements PaintListener, ServerMessageListener {
String[] strings = { "AlKharid Smelter", "Apples", "Smithing", "Loading...", "Bronze", "Blurite", "Iron", "Silver", "Steel", "Gold", "Mithril", "Adamantite", "Runite", "Smith", "AlKharid", "Start inside AlKharid bank and choose the bar\nyour smelting.", "Copper", "Tin", "Coal" };
String[][] Strings;
boolean[] booleans = { true, false, false, false, false };
int[] ints = { -1, 0, -1, -1, 0, 35647, 0, 11666 };
int[][] Ints;
long[] longs = { 0L, 0L };
Tile[] TO_BANK = new Tile[]{ new Tile(3274, 3186), new Tile(3276, 3185), new Tile(3279, 3185), new Tile(3279, 3183), new Tile(3279, 3180), new Tile(3279, 3175), new Tile(3277, 3173), new Tile(3276, 3171), new Tile(3273, 3167), new Tile(3269, 3167) };
Tile[] TO_SMELT = walking.reversePath(TO_BANK);
public boolean active() {
return booleans[0];
}
public String getName() {
return strings[0];
}
public String getAuthor() {
return strings[1];
}
public String getCatergory() {
return strings[2];
}
public double getVersion() {
return 2.001;
}
public String getDescription() {
return strings[15];
}
public String[] getTags() {
return new String[] { strings[1], strings[13], strings[14] };
}
public boolean onStart() {
final JFrame j = new JFrame("AlKharid Smelt Options");
j.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.anchor = GridBagConstraints.ABOVE_BASELINE_LEADING;
c.gridx = 1;
c.gridy = 1;
c.gridheight = 1;
c.gridwidth = 1;
final JComboBox barType = new JComboBox(new String[]{ strings[4], strings[5], strings[6], strings[7], strings[8], strings[9], strings[10], strings[11], strings[12] });
Strings = new String[][]{ { strings[16], strings[17] }, { strings[5] }, { strings[6] }, { strings[7] }, { strings[6], strings[18] }, { strings[9] }, { strings[10], strings[18] }, { strings[11], strings[18] }, { strings[12], strings[18] } };
Ints = new int[][]{ { 436, 438, 14, 14, 10, 10, 2349, 16, 35, 99 }, { -99, -1, 99, -1, 999, -1, -1, 20, 86, 99 }, { 440, -1, 99, -1, 999, -1, 2351, 24, 137, 99 }, { 442, -1, 99, -1, 999, -1, 2355, 28, 188, 99 }, { 440, 453, 10, 18, 5, 10, 2353, 32, 239, 10 }, { 444, -1, 99, -1, 999, -1, 2357, 36, 290, 99 }, { 447, 453, 5, 20, 10, 10, 2359, 40, 342, 5 }, { 449, 453, 5, 24, 10, 10, 2361, 44, 395, 5 }, { 451, 453, 5, 24, 10, 10, 2363, 48, 448, 5 } };
j.add(barType, c);
c.gridy = 2;
JButton startButton = new JButton("Start Smelting");
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < 2; i++)
longs[i] = System.currentTimeMillis();
ints[0] = 0;
ints[2] = skills.getExperience(Skills.SKILL_SMITHING);
ints[3] = skills.getLevel(Skills.SKILL_SMITHING);
ints[4] = barType.getSelectedIndex();
j.setAlwaysOnTop(false);
j.setVisible(false);
}
});
j.add(startButton, c);
j.pack();
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
Point p = new Point((int) d.getWidth()/2 - 200, (int) d.getHeight()/2 - 200);
j.setResizable(false);
j.setLocation(p);
j.setVisible(true);
j.setAlwaysOnTop(true);
return true;
}
public void onStop() {
gameScreen.takeScreenshot("AlKharidSmelter", true);
}
public void isCollectionOpen() {
Interface geInterface = interfaces.getInterface(109, 13);
while(geInterface != null && geInterface.isValid()) {
geInterface.doClick();
sleep(415, 732);
}
}
public boolean isInArea(int x1, int x2, int y1, int y2) {
return ((getMyPlayer().getLocation().getY() >= y1) && (getMyPlayer().getLocation().getY() <= y2) && (getMyPlayer().getLocation().getX() <= x1) && (getMyPlayer().getLocation().getX() >= x2));
}
public int antiBan() {
if (System.currentTimeMillis() - longs[1] > 10000) {
longs[1] = System.currentTimeMillis();
switch(random(0, 37)) {
default:
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
if (!booleans[4] && isLoggedIn()) {
gameScreen.openTab(GameScreen.TAB_STATS);
sleep(500,700);
mouse.moveMouse(random(665, 710), random(261, 284));
sleep(2200, 2800);
gameScreen.openTab(GameScreen.TAB_INVENTORY);
booleans[4] = true;
}
break;
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
camera.setAngle(camera.getAngle() + random(-90, 90));
break;
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
mouse.moveMouse(random(41, 644), random(115, 452));
break;
case 32:
case 33:
case 34:
case 35:
case 36:
case 37:
break;
}
}
return random(221, 513);
}
public int bank() {
if (bank.isOpen() && inventory.getCount() < 4) {
if (Ints[ints[4]][1] != -1)
if (bank.contains(Ints[ints[4]][1]))
//if (random(1, 25)== 5 && Ints[ints[4]][5] != -1)
// bank.withdrawItem(436, 10);
//else
bank.withdrawItem(Ints[ints[4]][1], Ints[ints[4]][3]);
else {
log("No " + Strings[ints[4]][1]);
while (isLoggedIn()) {
setMouseSpeed((random(226135, 233456) / 1000000));
bank.close();
gameScreen.logout();
sleep(511, 711);
booleans[0] = false;
}
}
if (Ints[ints[4]][0] != -1)
if (bank.contains(Ints[ints[4]][0]))
//if (random(1, 25)== 5 && Ints[ints[4]][4] != -1)
// bank.withdrawItem(436, 10);
//else
bank.withdrawItem(Ints[ints[4]][0], Ints[ints[4]][2]);
else {
log("No " + Strings[ints[4]][0]);
while (isLoggedIn()) {
setMouseSpeed((random(226135, 233456) / 1000000));
bank.close();
gameScreen.logout();
sleep(513, 721);
booleans[0] = false;
}
}
ints[0] = 2;
booleans[4] = false;
booleans[1] = false;
return random(722, 813);
} else if (bank.isOpen() && inventory.getCount() > 3) {
if (!inventory.contains(Ints[ints[4]][6]) && inventory.contains(Ints[ints[4]][0]) && inventory.contains(Ints[ints[4]][1])) {
ints[0] = 2;
return random(722, 817);
}
strings[3] = "Depositing";
if (random(1, 10) == 4) {
mouse.moveMouse(random(568, 593), random(220, 240));
sleep(111, 223);
mouse.clickMouse(false);
menu.atMenu("Deposit-All");
} else {
mouse.moveMouse(random(383, 411), random(300, 315));
sleep(111, 223);
mouse.clickMouse(true);
}
return(random(717, 922));
} else if (isInArea(3272, 3269, 3161, 3173) && inventory.getCount() > -1) {
if (!inventory.contains(Ints[ints[4]][6]) && (inventory.contains(Ints[ints[4]][0]) || Ints[ints[4]][0] == -1) && (inventory.contains(Ints[ints[4]][1]) || Ints[ints[4]][1] == -1)) {
ints[0] = 2;
return random(722, 813);
}
strings[3] = "Banking";
Obj b = objects.getClosestObject(5, ints[5]);
if (b != null) {
b.doAction("quickly");
isCollectionOpen();
}
return random(553, 803);
}
return random(546, 807);
}
public int Walk() {
if (isInArea(3272, 3269, 3161, 3173))
if ((inventory.contains(Ints[ints[4]][0]) || Ints[ints[4]][0] == -1) && (inventory.contains(Ints[ints[4]][1]) || Ints[ints[4]][1] == -1))
//walking.WalkPath(3274, 3186);
walking.walkPath(walking.randomizePath(TO_SMELT, 1, 1));
else
ints[0] = 1;
else if (isInArea(3279, 3272, 3184, 3188))
if ((inventory.contains(Ints[ints[4]][0]) || Ints[ints[4]][0] == -1) && (inventory.contains(Ints[ints[4]][1]) || Ints[ints[4]][1] == -1))
ints[0] = 3;
else
//walking.WalkPath(3269, 3167);
walking.walkPath(walking.randomizePath(TO_BANK, 2, 2));
return random(611, 909);
}
public int Smelt() {
if ((skills.getLevel(Skills.SKILL_SMITHING) - ints[3]) > ints[6]) {
ints[6]++;
gameScreen.openTab(GameScreen.TAB_STATS);
sleep(507, 713);
mouse.moveMouse(random(665, 710), random(261, 284));
sleep(118, 213);
mouse.clickMouse(true);
sleep(3626, 5461);
mouse.moveMouse(random(440, 460), random(40, 60));
sleep(118, 213);
mouse.clickMouse(true);
sleep(118, 213);
gameScreen.openTab(GameScreen.TAB_INVENTORY);
booleans[1] = false;
return random(535, 711);
}
if ((booleans[2]) || (!inventory.contains(Ints[ints[4]][0]) && Ints[ints[4]][0] != -1) || (!inventory.contains(Ints[ints[4]][1]) && Ints[ints[4]][1] != -1)) {
ints[0] = 4;
booleans[1] = false;
booleans[2] = false;
return random(632, 914);
}
if ((random(0, 2) == 1) && booleans[1])
return antiBan();
while (!booleans[1]) {
Obj f = objects.getClosestObject(5, ints[7]);
Point p = f.getScreenPos();
mouse.clickMouse(p, 5, 5, true);
sleep(937, 1153);
Interface smelter = interfaces.getInterface(311, Ints[ints[4]][7]);
while (smelter != null && !booleans[1]) {
mouse.moveMouse(Ints[ints[4]][8] + random(1, 35), random(400, 425));
mouse.clickMouse(false);
sleep(213, 387);
if (Ints[ints[4]][9] == 5 || Ints[ints[4]][9] == 10)
if (Ints[ints[4]][9] == 5)
if (random(1, 20)== 5)
smelter.doAction("Smelt 10");
else
smelter.doAction("Smelt 5");
else
if (random(1, 20) == 5) {
smelter.doAction("Smelt 5");
return random(50, 100);
} else
smelter.doAction("Smelt 10");
else {
sleep(77, 99);
if (random(1, 20) == 3)
keyboard.sendKeys("099", true);
else if (random(1, 20) == 3)
keyboard.sendKeys("88", true);
else
keyboard.sendKeys("99", true);
}
sleep(2897, 3213);
}
}
return random(223, 533);
}
public int loop() {
setMouseSpeed((random(1903544, 2231631) / 1000000));
if (ints[0] > -1 && !getMyPlayer().isMoving()) {
if (isInArea(3264, 3258, 3160, 3174) || isInArea(3282, 3281, 3158, 3178))
walking.walkToMM(new Tile(3271, 3167));
else if (isInArea(3270, 3263, 3178, 3187))
walking.walkToMM(new Tile(3275, 3186));
switch (ints[0]) {
case 0:
if (isInArea(3272, 3269, 3161, 3173))
ints[0] = 1;
else if (isInArea(3279, 3272, 3184, 3188))
ints[0] = 3;
else {
log("Did not Recongize start area - Shutting Down");
while (isLoggedIn()) {
setMouseSpeed((random(226135, 233456) / 1000000));
gameScreen.logout();
booleans[0] = false;
}
}
camera.setAltitude(true);
return random(123, 297);
case 1:
strings[3] = "Banking";
return bank();
case 2:
strings[3] = "Walking to Furnace";
return Walk();
case 3:
strings[3] = "Smelting";
return Smelt();
case 4:
strings[3] = "Walking to Bank";
return Walk();
}
}
return random(112, 331);
}
public void onServerMessage(String s) {
if (s.contains("retrieve")) {
ints[1]++;
booleans[1] = true;
} else if (s.contains("any more") || s.contains("to make") || s.contains("to smelt"))
booleans[2] = true;
}
public void onRepaint(Graphics g) {
if (ints[0] > -1) {
long runTime = System.currentTimeMillis() - longs[0];
int secs = ((int) ((runTime / 1000) % 60));
int mins = ((int) (((runTime / 1000) / 60) % 60));
int hours = ((int) ((((runTime / 1000) / 60) / 60) % 60));
int x = 5;
int y = 191;
g.setColor(new Color(0, 0, 100, 100));
g.fill3DRect(x, y, 185, 100, true);
x += 5;
y += 15;
g.setColor(Color.WHITE);
g.setFont(new Font("Comic Sans", Font.ITALIC, 15));
g.drawString(getName() + " v" + getVersion(), x, y);
y += 18;
g.setFont(new Font("Comic Sans", Font.PLAIN, 12));
g.drawString("Status: " + strings[3], x, y);
y += 12;
g.drawString("Run time: " + (hours < 10 ? "0" : "") + hours + ":" + (mins < 10 ? "0" : "") + mins + ":" + (secs < 10 ? "0" : "") + secs, x, y);
y += 12;
g.drawString(strings[ints[4] + 4] + " Bars Smelted: " + ints[1], x, y);
y += 12;
g.drawString("Experience gained: " + (skills.getExperience(Skills.SKILL_SMITHING) - ints[2]), x, y);
y += 12;
g.drawString("Next level: " + (skills.getExperienceToNextLevel(Skills.SKILL_SMITHING)), x, y);
y += 12;
g.drawString("Levels gained: " + (skills.getLevel(Skills.SKILL_SMITHING) - ints[3]), x, y);
}
}
}