You can update trigger by typing sc.
// Version 1.05
// Made by Valger. Special thanks to Hair. He gave codes for new window.
SCRIPT_NAME = "timerWindow";
SCRIPT_DESC = "Shows timers";
SCRIPT_OFF = false;
import java.util.*;
import java.util.regex.*;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.Font;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.util.List;
import java.util.Arrays;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.lang.Integer.*;
import java.lang.String.*;
import com.mythicscape.batclient.interfaces.ParsedResult;
import com.mythicscape.batclient.interfaces.Trigger;
import com.mythicscape.batclient.interfaces.TriggerManager;
import com.mythicscape.batclient.interfaces;
import com.mythicscape.batclient.interfaces.BatWindow;
BatWindow clientWin;
boolean visible=true;
JTextArea text;
//JTextPane text;
JPanel panel;
Trigger balance1;
Trigger daggerTrig;
Trigger updateTrig;
Trigger nourishTrig;
// ANSI color codes
// These are here to be able to do inline color changes without having to do stupid batclient
// syntax with no support for background colors!
// If you use this be sure to have RESET at the end, otherwise you'll suffer color bleed
String RESET = "\u001b[0m";
String BOLD = "\u001b[1m";
String BLACK = "\u001b[30m";
String RED = "\u001b[31m";
String GREEN = "\u001b[32m";
String YELLOW = "\u001b[33m";
String BLUE = "\u001b[34m";
String MAGENTA = "\u001b[35m";
String CYAN = "\u001b[36m";
String WHITE = "\u001b[37m";
String BGBLACK = "\u001b[40m";
String BGRED = "\u001b[41m";
String BGGREEN = "\u001b[42m";
String BGYELLOW = "\u001b[43m";
String BGBLUE = "\u001b[44m";
String BGMAGENTA = "\u001b[45m";
String BGCYAN = "\u001b[46m";
String BGWHITE = "\u001b[47m";
timeOnStart = System.currentTimeMillis()+1800000;
String[][] dataArray = new String [1][2];
String[][] dataArrayNew = new String [1][2];
drainCheckVar= false;
//Trigger values
drain_pool_value = 1800000;
balance_value = 1500000;
camping_value = 480000;
hibernation_value = 420000;
nourish_value = 180000;
drain_mount_value = 600000;
rain_staff_value = 900000;
dark_meditation_value = 300000;
meditation_value = 300000;
invis_ring_value = 600000;
muffin_value = 1800000;
waffles_value = 1800000;
dagger_value = 3000000;
public String[][] add_element(arr, ele) {
int n = arr.length;
String[][] newArray = Arrays.copyOf(arr, n + 1);
newArray[n] = ele;
return newArray;
}
public String millisToTime(millis) {
// milliseconds to minnutes
minutes = (millis / 1000) / 60;
// milliseconds to seconds
seconds = (millis / 1000) % 60;
return minutes + " mins and " + seconds + " secs.";
}
void bootup() {
clientWin = clientGUI.createBatWindow( "TEST", 100, 100, 600, 200 );
clientWin.removeTabAt( 0);
//clientWin.removeTabAt( "Timers", 0 );
createPanel();
clientWin.newTab( "Timers", panel);
balance1 = triggerManager.newTrigger("balanced",
"You feel balanced(.*)",
"$"+SCRIPT_NAME+".balanced",false,false,false,null,Font.PLAIN);
drainPool = triggerManager.newTrigger("drain",
"^You get (.*) sp.",
"$"+SCRIPT_NAME+".drainPool",false,false,false,null,Font.PLAIN);
updateTrig = triggerManager.newTrigger("runUpdate",
"^hp: (.*)",
"$"+SCRIPT_NAME+".runUpdate",false,false,false,null,Font.PLAIN);
triggerManager.newTrigger("daggerTrig",
"^In a quick move you slice",
"$"+SCRIPT_NAME+".dagger");
triggerManager.newTrigger("campingTrig",
"^You awaken from your short rest, and feel slightly better.",
"$"+SCRIPT_NAME+".camping");
triggerManager.newTrigger("canCampTrig1",
"^You feel a bit tired.",
"$"+SCRIPT_NAME+".canCamp");
triggerManager.newTrigger("canCampTrig2",
"^You stretch yourself and consider camping.",
"$"+SCRIPT_NAME+".canCamp");
triggerManager.newTrigger("canCampTrig3",
"^You feel like camping a little.",
"$"+SCRIPT_NAME+".canCamp");
triggerManager.newTrigger("drainCheck",
"^You trace fiery golden runes in mid-air \\'\\$ \\!\\^\\'",
"$"+SCRIPT_NAME+".drainCheck");
triggerManager.newTrigger("startingBalanceTimer",
"^You wear a pair of pure white flowing sleeves",
"$"+SCRIPT_NAME+".startingBalanceTimer");
triggerManager.newTrigger("hibeTrig",
"^As the roots subside releasing you from their embrace you feel invigorated.",
"$"+SCRIPT_NAME+".hibe");
nourishTrig = triggerManager.newTrigger("nourishTrig",
"^You raise your hand towards (.*) and faint line of ethereal energy seems to transfer from your hands towards your minion.",
"$"+SCRIPT_NAME+".nourish",false,false,false,null,Font.PLAIN);
triggerManager.newTrigger("rainStaffTrig",
"^You strike your rain staff in the ground.",
"$"+SCRIPT_NAME+".rainStaff");
triggerManager.newTrigger("darkMeditationTrig",
"^Something disturbs you and you cannot concentrate any longer.",
"$"+SCRIPT_NAME+".darkMeditation");
triggerManager.newTrigger("darkMeditationTrig",
"^The meditation is interrupted, you feel drained.",
"$"+SCRIPT_NAME+".darkMeditation");
triggerManager.newTrigger("meditationTrig",
"^You feel extra relaxed.",
"$"+SCRIPT_NAME+".meditation");
triggerManager.newTrigger("meditationInterruptTrig",
"^Something disturbs you and you cannot concentrate any longer.",
"$"+SCRIPT_NAME+".meditation");
triggerManager.newTrigger("invisRingTrig",
"^You wear Demonic Ring of Invisibility",
"$"+SCRIPT_NAME+".invisRing");
triggerManager.newTrigger("muffinTrig",
"^You eat a large blueberry muffin.",
"$"+SCRIPT_NAME+".muffin");
triggerManager.newTrigger("wafflesTrig",
"^You eat a serving of strawberry-topped waffles.",
"$"+SCRIPT_NAME+".waffles");
triggerManager.newTrigger("drainMountTrig",
"^You reach out and lay your hands on your mount. You feel power flowing through",
"$"+SCRIPT_NAME+".drainMount");
enable();
clientGUI.printText("general", "timer window ACTIVE!\n", "ff00ff");
int seconds = 3;
new CommandThread(seconds, "ignore");
}
void run(){
if (argument == null || ("".equals(argument))){
if(visible){
visible = false;
disable();
}else{
visible = true;
enable();
}
}else{
text.setText(argument);
}
try {
sleep(1000); // Sleep x ms
} catch (Exception e) {
clientGUI.printText("general", "Eeeek, exception occured in our thread\n");
}
}
enable() {
clientGUI.printText("general", YELLOW + "Enabling timer window" + RESET + "\n");
clientWin.setVisible( true );
balance1.setActive(true);
}
disable() {
clientGUI.printText("general", YELLOW + "Disabling timer window" + RESET + "\n");
clientWin.setVisible( false );
balance1.setActive(false);
}
void repliceIfExits(name) {
rowToDelete = null;
for (int i = 0; i < dataArray.length; i++) {
if(dataArray[i][0] != null) {
if(dataArray[i][0].equals(name)) {
rowToDelete=i;
break;
}
}
}
if(rowToDelete != null) {
dataArray[rowToDelete][1] = System.currentTimeMillis().toString();
} else {
if(dataArray.length == 1) {
String[] array = {name, System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
}
else {
String[] array = {name, System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
}
}
runUpdate();
}
void deleteRow(name) {
rowToDelete = null;
for (int i = 0; i < dataArray.length; i++) {
if(dataArray[i][0] != null) {
if(dataArray[i][0].equals(name)) {
rowToDelete=i;
break;
}
}
}
if(rowToDelete != null && dataArray[rowToDelete][0] != null && dataArray[rowToDelete][0].equals(name)) {
int rows = dataArray.length;
int columns = dataArray[0].length;
// Create a new array with one less row
String[][] newArray = new String[rows - 1][columns];
// Copy the rows before the deleted row
System.arraycopy(dataArray, 0, newArray, 0, rowToDelete);
// Copy the rows after the deleted row
System.arraycopy(dataArray, rowToDelete + 1, newArray, rowToDelete, rows - rowToDelete - 1);
dataArray = newArray;
}
}
void runUpdate(){
text.setText("");
secondColumn = null;
for (int i = 0; i < dataArray.length; i++) {
if(dataArray != null && i < dataArray.length && dataArray[i][0] != null){
timeStamp = dataArray[i][1];
long num = Long.parseLong(timeStamp);
long now = System.currentTimeMillis();
statusTime=10000;
if(dataArray[i][0].substring(0, 4).equals("Drai")) {
if(dataArray[i][0].equals("Drain mount")) {
statusTime=drain_mount_value;
} else {
if(dataArray[i][0].substring(0, 12).equals("Drain Pool: ")) {
statusTime=drain_pool_value;
}
}
}
if(dataArray[i][0].equals("Balance")) {
statusTime=balance_value;
}
if(dataArray[i][0].equals("Dagger")) {
statusTime=dagger_value;
daggerDiff = num+dagger_value-now;
if(daggerDiff > 2000000){
daggerDiffVal= daggerDiff-2000000;
} else if (daggerDiff < 2000000 && daggerDiff > 1000000){
daggerDiffVal= daggerDiff-1000000;
} else {
daggerDiffVal= daggerDiff;
}
secondColumn = daggerDiffVal;
}
if(dataArray[i][0].equals("Rain staff")) {
statusTime=rain_staff_value;
}
if(dataArray[i][0].equals("Hibernation")){
statusTime=hibernation_value;
}
if(dataArray[i][0].equals("Camping")) {
statusTime=camping_value;
}
if(dataArray[i][0].substring(0, 4).equals("Nour")) {
if(dataArray[i][0].substring(0, 9).equals("Nourish: ")) {
statusTime=nourish_value;
}
}
if(dataArray[i][0].equals("Dark meditation")) {
statusTime=dark_meditation_value;
}
if(dataArray[i][0].equals("Meditation")) {
statusTime=meditation_value;
}
if(dataArray[i][0].equals("Invis ring")) {
statusTime=invis_ring_value;
}
if(dataArray[i][0].equals("Muffin")) {
statusTime=muffin_value;
}
if(dataArray[i][0].equals("Waffles")) {
statusTime=waffles_value;
}
long diff = num+statusTime-now;
if(diff < 0) {
int rowToDelete = i;
int rows = dataArray.length;
int columns = dataArray[0].length;
// Create a new array with one less row
String[][] newArray = new String[rows - 1][columns];
// Copy the rows before the deleted row
System.arraycopy(dataArray, 0, newArray, 0, rowToDelete);
// Copy the rows after the deleted row
System.arraycopy(dataArray, rowToDelete + 1, newArray, rowToDelete, rows - rowToDelete - 1);
dataArrayNew = newArray;
//clientGUI.printText("general", CYAN + "newArray: "+newArray.length+"\n");
if (newArray != null) {
if(diff < 0) {
continue;
}
text.append(newArray[i][0]+", "+millisToTime(diff)+"DIFFIN\n");
}
continue;
}
if (dataArray != null && i < dataArray.length) {
if(!dataArray[i][0].equals("Dagger")) {
text.append(dataArray[i][0]+": "+millisToTime(diff)+"\n");
}else {
text.append(dataArray[i][0]+": "+millisToTime(diff)+"("+millisToTime(secondColumn)+")\n");
}
}
}
}
}
void balanced() {
repliceIfExits("Balance");
runUpdate();
}
void dagger() {
repliceIfExits("Dagger");
runUpdate();
}
void drainPool() {
if(drainCheckVar) {
String[] array = {"Drain Pool: "+vars.get(1), System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
drainCheckVar = false;
}
void camping() {
repliceIfExits("Camping");
runUpdate();
}
void canCamp() {
row = null;
for (int i = 0; i < dataArray.length; i++) {
if(dataArray[i][0] != null) {
if(dataArray[i][0].equals("Camping")) {
row=i;
break;
}
}
}
if(row != null) {
timeStamp = dataArray[row][1];
long num = Long.parseLong(timeStamp);
long now = System.currentTimeMillis();
long diff = now-num;
clientGUI.printText("general", "To be ready for camp took: "+millisToTime(diff)+"\n", "64b2c6");
deleteRow("Camping");
}
runUpdate();
}
void hibe() {
String[] array = {"Hibernation", System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
void nourish() {
String[] array = {"Nourish: "+vars.get(1), System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
void drainMount() {
String[] array = {"Drain mount", System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
void muffin() {
String[] array = {"Muffin", System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
void waffles() {
String[] array = {"Waffles", System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
void rainStaff() {
String[] array = {"Rain staff", System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
void darkMeditation() {
String[] array = {"Dark meditation", System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
void meditation() {
String[] array = {"Meditation", System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
void invisRing() {
String[] array = {"Invis ring", System.currentTimeMillis().toString()};
dataArray = add_element(dataArray, array);
runUpdate();
}
void drainCheck() {
drainCheckVar = true;
}
void startingBalanceTimer() {
balanced();
}
void createPanel(){
panel = new JPanel(new BorderLayout());
text= new JTextArea();
text.setEditable( false );
text.setForeground( Color.LIGHT_GRAY );
text.setBackground( Color.BLACK );
text.setLineWrap( true );
text.setFont(new Font( "Monospaced", Font.PLAIN, 12 ));
panel.add(text,BorderLayout.CENTER);
}
public class CommandThread extends Thread {
int seconds;
String command;
public CommandThread(int seconds, String command) {
this.seconds = seconds;
this.command = command;
start();
}
public void run() {
Timer timer = new Timer();
timer.schedule(new updateWindow(), 0, 3000);
}
}
class updateWindow extends TimerTask {
public void run() {
runUpdate();
}
}