Merge pull request #149 from Parabot/development

[MERGE] Development into master
This commit is contained in:
Jeroen Ketelaar
2017-01-15 13:35:01 +01:00
committed by GitHub
13 changed files with 376 additions and 254 deletions
+4 -2
View File
@@ -32,7 +32,7 @@ env:
- secure: UG+b1tEgc8xv9x4r//2OAIK1RrYv6n209KTTFMMwcnAa7DI8HaP8nljRa5/VhDhuKHdlVrYH/tI90v7UVBs0GDVNwK5V17Io0fMm3FUGZekSthTCqqno5wAGa9r6a6mMLtSaSmIFeIKi0+0d2ZwplRuhj/dtEYjjBBj+kK8g4nE= - secure: UG+b1tEgc8xv9x4r//2OAIK1RrYv6n209KTTFMMwcnAa7DI8HaP8nljRa5/VhDhuKHdlVrYH/tI90v7UVBs0GDVNwK5V17Io0fMm3FUGZekSthTCqqno5wAGa9r6a6mMLtSaSmIFeIKi0+0d2ZwplRuhj/dtEYjjBBj+kK8g4nE=
- secure: St/fecUDInFBCRriYqgp2F8PU9/SooorgxD9Mrs+b0EsC7AbtSsQXvdIv2Lp6xzdQ0VSXPcLIhULPOYrmBKnGQ/NjXTIZXxnroyQxxnI6xyEWIZwiHRY/bKRJDRbQTxD9NL32szKiDSwnw7pu6llF4D64UqQvziq4Gm6VohU75M= - secure: St/fecUDInFBCRriYqgp2F8PU9/SooorgxD9Mrs+b0EsC7AbtSsQXvdIv2Lp6xzdQ0VSXPcLIhULPOYrmBKnGQ/NjXTIZXxnroyQxxnI6xyEWIZwiHRY/bKRJDRbQTxD9NL32szKiDSwnw7pu6llF4D64UqQvziq4Gm6VohU75M=
- secure: bD15GVZWowiknbfLavh8CxSh0GsnF5kT4kZ6ggCuUDGyj0mzqf7dNRnchQIKkCG0WRYyTrFN4pEiygeywWsipEeAVv9Xhx3cuUZmzeQaR5KCWabSwJ8gK6jZd1YhcWmM9vrdPHobZr65MP0y/8mu/Fovgky9dY7KDf4G3SebNrM= - secure: bD15GVZWowiknbfLavh8CxSh0GsnF5kT4kZ6ggCuUDGyj0mzqf7dNRnchQIKkCG0WRYyTrFN4pEiygeywWsipEeAVv9Xhx3cuUZmzeQaR5KCWabSwJ8gK6jZd1YhcWmM9vrdPHobZr65MP0y/8mu/Fovgky9dY7KDf4G3SebNrM=
- PARABOT_VERSION=2.6.0 - PARABOT_VERSION=2.6.2
cache: cache:
directories: directories:
@@ -53,5 +53,7 @@ deploy:
acl: public_read acl: public_read
on: on:
repo: Parabot/Parabot repo: Parabot/Parabot
all_branches: true branch:
- master
- development
jdk: 'oraclejdk7' jdk: 'oraclejdk7'
+1 -1
View File
@@ -3,7 +3,7 @@
# Parabot # Parabot
Parabot V2.5. Parabot V2.6.2.
#### Website #### Website
+3 -3
View File
@@ -6,7 +6,7 @@
<groupId>org.parabot</groupId> <groupId>org.parabot</groupId>
<artifactId>client</artifactId> <artifactId>client</artifactId>
<version>2.6.0</version> <version>2.6.2</version>
<packaging>jar</packaging> <packaging>jar</packaging>
@@ -67,13 +67,13 @@
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<version>4.11</version> <version>4.12</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.parabot</groupId> <groupId>org.parabot</groupId>
<artifactId>internal-api</artifactId> <artifactId>internal-api</artifactId>
<version>1.4.41</version> <version>1.4.46</version>
</dependency> </dependency>
</dependencies> </dependencies>
+1 -1
View File
@@ -14,8 +14,8 @@ import org.parabot.core.ui.listeners.PBKeyListener;
import org.parabot.environment.api.interfaces.Paintable; import org.parabot.environment.api.interfaces.Paintable;
import org.parabot.environment.input.Keyboard; import org.parabot.environment.input.Keyboard;
import org.parabot.environment.input.Mouse; import org.parabot.environment.input.Mouse;
import org.parabot.environment.randoms.RandomHandler;
import org.parabot.environment.scripts.Script; import org.parabot.environment.scripts.Script;
import org.parabot.environment.scripts.randoms.RandomHandler;
import org.parabot.environment.servers.ServerProvider; import org.parabot.environment.servers.ServerProvider;
import java.applet.Applet; import java.applet.Applet;
+1 -2
View File
@@ -6,12 +6,11 @@ import org.parabot.core.Directories;
import org.parabot.core.ui.components.GamePanel; import org.parabot.core.ui.components.GamePanel;
import org.parabot.core.ui.components.VerboseLoader; import org.parabot.core.ui.components.VerboseLoader;
import org.parabot.core.ui.images.Images; import org.parabot.core.ui.images.Images;
import org.parabot.core.ui.listeners.PBKeyListener;
import org.parabot.core.ui.utils.SwingUtil; import org.parabot.core.ui.utils.SwingUtil;
import org.parabot.environment.OperatingSystem; import org.parabot.environment.OperatingSystem;
import org.parabot.environment.api.utils.StringUtils; import org.parabot.environment.api.utils.StringUtils;
import org.parabot.environment.randoms.Random;
import org.parabot.environment.scripts.Script; import org.parabot.environment.scripts.Script;
import org.parabot.environment.scripts.randoms.Random;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.swing.*; import javax.swing.*;
@@ -2,7 +2,7 @@ package org.parabot.core.ui;
import org.parabot.core.Context; import org.parabot.core.Context;
import org.parabot.core.Core; import org.parabot.core.Core;
import org.parabot.environment.scripts.randoms.Random; import org.parabot.environment.randoms.Random;
import javax.swing.*; import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@@ -0,0 +1,41 @@
package org.parabot.environment.randoms;
/**
* @author JKetelaar
*/
public interface Random {
/**
* Determines whether this random should activate
*
* @return <b>true</b> if this random should be activate
*/
public boolean activate();
/**
* Executes this random
*/
public void execute();
/**
* Returns the name of the random
*
* @return Name of the random
*/
public String getName();
/**
* Returns the name of the server which the random is made for
*
* @return Name of the server
*/
public String getServer();
/**
* Returns the RandomType of the random
*
* @return The RandomType of the random
*/
public RandomType getRandomType();
}
@@ -0,0 +1,139 @@
package org.parabot.environment.randoms;
import org.parabot.core.Core;
import org.parabot.core.parsers.randoms.RandomParser;
import org.parabot.core.ui.Logger;
import java.util.ArrayList;
/**
* @author JKetelaar
*/
public class RandomHandler {
private ArrayList<Random> randoms;
/**
* The randoms that will actually run
*/
private ArrayList<Random> activeRandoms;
public RandomHandler() {
this.randoms = new ArrayList<>();
this.activeRandoms = new ArrayList<>();
}
public void init() {
RandomParser.enable();
checkAndRun(RandomType.ON_SERVER_START);
}
/**
* Adds a random to the random list
*
* @param random The random that will be added to the arraylist
*/
public void addRandom(Random random) {
if (random == null) {
throw new NullPointerException("Null random");
}
for (Random r : randoms) {
if (r.getClass() == random.getClass()) {
Core.verbose("Ignored added random, duplicate.");
return;
}
}
randoms.add(random);
setActive(random);
}
/**
* @param random
* @deprecated
*/
@Deprecated
public void addRandom(org.parabot.environment.scripts.randoms.Random random) {
new IllegalArgumentException("This type of random is deprecated").printStackTrace();
}
/**
* Adds a random to the active randoms
*
* @param random
*/
public void setActive(Random random) {
this.activeRandoms.add(random);
}
/**
* Adds a random to the active randoms
*
* @param random
*/
public void setActive(String random) {
for (Random r : this.randoms) {
if (r.getName().equalsIgnoreCase(random.toLowerCase())) {
this.activeRandoms.add(r);
}
}
}
/**
* Sets the whole random arraylist to the arraylist given as argument
*
* @param randoms The new random arraylist
*/
public void setRandoms(ArrayList<Random> randoms) {
this.randoms = randoms;
}
/**
* Clears all added randoms
*/
public void clearRandoms() {
this.randoms.clear();
}
/**
* Clears all active randoms
*/
public void clearActiveRandoms() {
this.activeRandoms.clear();
}
/**
* Checks if random occurs and runs it
*
* @return returns <b>true</b> if a random has been executed, otherwise <b>false</b>
*/
public boolean checkAndRun(RandomType type) {
for (Random r : this.activeRandoms) {
if (r.getRandomType().getId() == type.getId() && r.activate()) {
Logger.addMessage("Running random '" + r.getName() + "'", true);
r.execute();
return true;
}
}
return false;
}
/**
* Checks if random occurs and runs it
*
* @return returns <b>true</b> if a random has been executed, otherwise <b>false</b>
* @see RandomHandler#checkAndRun(RandomType)
* @deprecated
*/
@Deprecated
public boolean checkAndRun() {
new IllegalArgumentException("This method is deprecated").printStackTrace();
return false;
}
public ArrayList<Random> getRandoms() {
return this.randoms;
}
public ArrayList<Random> getActiveRandoms() {
return this.activeRandoms;
}
}
@@ -0,0 +1,32 @@
package org.parabot.environment.randoms;
/**
* @author JKetelaar
*/
public enum RandomType {
SCRIPT(0, "Script"),
ON_SCRIPT_START(0, "On script start"),
ON_SERVER_START(0, "On server start"),
ON_SCRIPT_FINISH(0, "On script finish");
private int id;
private String name;
RandomType(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public static RandomType getDefault() {
return SCRIPT;
}
}
@@ -6,6 +6,7 @@ import org.parabot.core.ui.BotUI;
import org.parabot.core.ui.Logger; import org.parabot.core.ui.Logger;
import org.parabot.environment.api.utils.PBPreferences; import org.parabot.environment.api.utils.PBPreferences;
import org.parabot.environment.api.utils.Time; import org.parabot.environment.api.utils.Time;
import org.parabot.environment.randoms.RandomType;
import org.parabot.environment.scripts.framework.*; import org.parabot.environment.scripts.framework.*;
import org.parabot.environment.scripts.framework.Frameworks; import org.parabot.environment.scripts.framework.Frameworks;
import org.parabot.environment.scripts.randoms.Random; import org.parabot.environment.scripts.randoms.Random;
@@ -13,170 +14,173 @@ import org.parabot.environment.scripts.randoms.Random;
import java.util.Collection; import java.util.Collection;
/** /**
*
* Script template, scripts are 'add-ons' which executes various tasks in-game * Script template, scripts are 'add-ons' which executes various tasks in-game
* *
* @author Everel * @author Everel
*
*/ */
public class Script implements Runnable { public class Script implements Runnable {
public static final int TYPE_STRATEGY = 0; public static final int TYPE_STRATEGY = 0;
public static final int TYPE_LOOP = 1; public static final int TYPE_LOOP = 1;
public static final int TYPE_OTHER = 2; public static final int TYPE_OTHER = 2;
public static final int STATE_RUNNING = 0; public static final int STATE_RUNNING = 0;
public static final int STATE_PAUSE = 1; public static final int STATE_PAUSE = 1;
public static final int STATE_STOPPED = 2; public static final int STATE_STOPPED = 2;
private Collection<Strategy> strategies; private Collection<Strategy> strategies;
private PBPreferences preferences; private PBPreferences preferences;
private AbstractFramework frameWork; private AbstractFramework frameWork;
private int state; private int state;
private int frameWorkType; private int frameWorkType;
private int scriptID; private int scriptID;
public boolean onExecute() { public boolean onExecute() {
return true; return true;
} }
public void onFinish() { public void onFinish() {
} }
public final void provide(final Collection<Strategy> strategies) { public final void provide(final Collection<Strategy> strategies) {
this.strategies = strategies; this.strategies = strategies;
} }
public final int getFrameWorkType() { public final int getFrameWorkType() {
return frameWorkType; return frameWorkType;
} }
public final void setFrameWork(int frameWorkType) { public final void setFrameWork(int frameWorkType) {
if(frameWorkType < 0 || frameWorkType > 2) { if (frameWorkType < 0 || frameWorkType > 2) {
throw new RuntimeException("Invalid framework type"); throw new RuntimeException("Invalid framework type");
} }
this.frameWorkType = frameWorkType; this.frameWorkType = frameWorkType;
} }
public final void setAbstractFrameWork(AbstractFramework f) { public final void setAbstractFrameWork(AbstractFramework f) {
this.frameWork = f; this.frameWork = f;
} }
public final void addRandom(Random random) { public final void addRandom(Random random) {
Context.getInstance().getRandomHandler().addRandom(random); Context.getInstance().getRandomHandler().addRandom(random);
} }
@Override @Override
public final void run() { public final void run() {
Context context = Context.getInstance(); Context context = Context.getInstance();
Core.verbose("Initializing script..."); Core.verbose("Initializing script...");
context.getServerProvider().initScript(this); context.getServerProvider().initScript(this);
Core.verbose("Done."); Core.verbose("Done.");
if(!onExecute()) { if (!onExecute()) {
Core.verbose("Script#onExecute returned false, unloading and stopping script..."); Core.verbose("Script#onExecute returned false, unloading and stopping script...");
context.getServerProvider().unloadScript(this); context.getServerProvider().unloadScript(this);
this.state = STATE_STOPPED; this.state = STATE_STOPPED;
Core.verbose("Done."); Core.verbose("Done.");
return; return;
} }
Core.verbose("Detecting script framework..."); context.getRandomHandler().checkAndRun(RandomType.ON_SCRIPT_START);
context.setRunningScript(this);
BotUI.getInstance().toggleRun();
if(this instanceof LoopTask) {
Core.verbose("Script framework detected: LoopTask");
frameWorkType = TYPE_LOOP;
frameWork = Frameworks.getLooper((LoopTask) this);
} else if(strategies != null && !strategies.isEmpty()) {
Core.verbose("Script framework detected: Strategies");
frameWorkType = TYPE_STRATEGY;
frameWork = Frameworks.getStrategyWorker(strategies);
} else {
Core.verbose("Unknown script framework: Other");
frameWorkType = TYPE_OTHER;
}
Core.verbose("Running script...");
Logger.addMessage("Script started.", true);
try {
while(this.state != STATE_STOPPED) {
if(context.getRandomHandler().checkAndRun()) {
continue;
}
if(this.state == STATE_PAUSE) { Core.verbose("Detecting script framework...");
sleep(500); context.setRunningScript(this);
continue; BotUI.getInstance().toggleRun();
} if (this instanceof LoopTask) {
if(!frameWork.execute()) { Core.verbose("Script framework detected: LoopTask");
break; frameWorkType = TYPE_LOOP;
} frameWork = Frameworks.getLooper((LoopTask) this);
} } else if (strategies != null && !strategies.isEmpty()) {
} catch (Throwable t) { Core.verbose("Script framework detected: Strategies");
t.printStackTrace(); frameWorkType = TYPE_STRATEGY;
} frameWork = Frameworks.getStrategyWorker(strategies);
Core.verbose("Script stopped/finished, unloading and stopping..."); } else {
onFinish(); Core.verbose("Unknown script framework: Other");
Logger.addMessage("Script stopped.", false); frameWorkType = TYPE_OTHER;
context.getServerProvider().unloadScript(this); }
this.state = STATE_STOPPED; Core.verbose("Running script...");
context.setRunningScript(null); Logger.addMessage("Script started.", true);
try {
while (this.state != STATE_STOPPED) {
if (context.getRandomHandler().checkAndRun(RandomType.SCRIPT)) {
continue;
}
Core.verbose("Resetting key bindings..."); if (this.state == STATE_PAUSE) {
Context.getInstance().getPbKeyListener().resetBindings(); sleep(500);
continue;
}
if (!frameWork.execute()) {
break;
}
}
} catch (Throwable t) {
t.printStackTrace();
}
Core.verbose("Script stopped/finished, unloading and stopping...");
onFinish();
BotUI.getInstance().toggleRun(); context.getRandomHandler().checkAndRun(RandomType.ON_SCRIPT_FINISH);
Core.verbose("Done.");
}
/** Logger.addMessage("Script stopped.", false);
* Sleeps until the SleepCondition is valid. context.getServerProvider().unloadScript(this);
* this.state = STATE_STOPPED;
* <B>DEPRECATED!</b> use {@link Time#sleep(SleepCondition, int)} context.setRunningScript(null);
*
* @param conn
* the condition.
* @param timeout
* the time in miliseconds before it stops sleeping.
* @return whether it ran successfully without timing out.
*/
@Deprecated
public final boolean sleep(SleepCondition conn, int timeout) {
return Time.sleep(conn, timeout);
}
/** Core.verbose("Resetting key bindings...");
* Sets the script's state Context.getInstance().getPbKeyListener().resetBindings();
* @param state
*/
public final void setState(final int state) {
if(state < 0 || state > 2) {
throw new IllegalArgumentException("Illegal state");
}
this.state = state;
}
/** BotUI.getInstance().toggleRun();
* Sleeps for an amount of milliseconds Core.verbose("Done.");
* @param ms }
*/
public final void sleep(int ms) {
Time.sleep(ms);
}
public int getState() { /**
return state; * Sleeps until the SleepCondition is valid.
} * <p>
* <B>DEPRECATED!</b> use {@link Time#sleep(SleepCondition, int)}
*
* @param conn the condition.
* @param timeout the time in miliseconds before it stops sleeping.
* @return whether it ran successfully without timing out.
*/
@Deprecated
public final boolean sleep(SleepCondition conn, int timeout) {
return Time.sleep(conn, timeout);
}
public PBPreferences getPreferences(){ /**
if (this.preferences == null){ * Sets the script's state
this.preferences = new PBPreferences(scriptID); *
} * @param state
return this.preferences; */
} public final void setState(final int state) {
if (state < 0 || state > 2) {
throw new IllegalArgumentException("Illegal state");
}
this.state = state;
}
public void setScriptID(int scriptID){ /**
this.scriptID = scriptID; * Sleeps for an amount of milliseconds
} *
* @param ms
*/
public final void sleep(int ms) {
Time.sleep(ms);
}
public int getState() {
return state;
}
public PBPreferences getPreferences() {
if (this.preferences == null) {
this.preferences = new PBPreferences(scriptID);
}
return this.preferences;
}
public void setScriptID(int scriptID) {
this.scriptID = scriptID;
}
} }
@@ -1,10 +1,11 @@
package org.parabot.environment.scripts.randoms; package org.parabot.environment.scripts.randoms;
/** /**
*
* @author Everel * @author Everel
* * @deprecated
* @see org.parabot.environment.randoms.Random
*/ */
@Deprecated
public interface Random { public interface Random {
/** /**
@@ -1,108 +1,11 @@
package org.parabot.environment.scripts.randoms; package org.parabot.environment.scripts.randoms;
import org.parabot.core.Core;
import org.parabot.core.ui.Logger;
import java.util.ArrayList;
/** /**
*
* @author Everel * @author Everel
* * @deprecated
* @see org.parabot.environment.randoms.RandomHandler
*/ */
public class RandomHandler { @Deprecated
private ArrayList<Random> randoms; public class RandomHandler extends org.parabot.environment.randoms.RandomHandler {
/**
* The randoms that will actually run
*/
private ArrayList<Random> activeRandoms;
public RandomHandler() {
this.randoms = new ArrayList<>();
this.activeRandoms = new ArrayList<>();
}
/**
* Adds a random to the random list
* @param random The random that will be added to the arraylist
*/
public void addRandom(Random random) {
if(random == null) {
throw new NullPointerException("Null random");
}
for(Random r : randoms) {
if(r.getClass() == random.getClass()) {
Core.verbose("Ignored added random, duplicate.");
return;
}
}
randoms.add(random);
setActive(random);
}
/**
* Adds a random to the active randoms
* @param random
*/
public void setActive(Random random){
this.activeRandoms.add(random);
}
/**
* Adds a random to the active randoms
* @param random
*/
public void setActive(String random){
for (Random r : this.randoms){
if (r.getName().equalsIgnoreCase(random.toLowerCase())){
this.activeRandoms.add(r);
}
}
}
/**
* Sets the whole random arraylist to the arraylist given as argument
* @param randoms The new random arraylist
*/
public void setRandoms(ArrayList<Random> randoms){
this.randoms = randoms;
}
/**
* Clears all added randoms
*/
public void clearRandoms() {
this.randoms.clear();
}
/**
* Clears all active randoms
*/
public void clearActiveRandoms(){
this.activeRandoms.clear();
}
/**
* Checks if random occurs and runs it
* @return returns <b>true</b> if a random has been executed, otherwise <b>false</b>
*/
public boolean checkAndRun() {
for(Random r : this.activeRandoms) {
if(r.activate()) {
Logger.addMessage("Running random '" + r.getName() + "'", true);
r.execute();
return true;
}
}
return false;
}
public ArrayList<Random> getRandoms(){
return this.randoms;
}
public ArrayList<Random> getActiveRandoms(){
return this.activeRandoms;
}
} }
@@ -27,7 +27,8 @@ public abstract class ServerExecuter {
Context context = Context.getInstance(provider); Context context = Context.getInstance(provider);
context.load(); context.load();
PaintComponent.getInstance().startPainting(context); PaintComponent.getInstance().startPainting(context);
RandomParser.enable();
Context.getInstance().getRandomHandler().init();
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();
} }