master
sigonasr2 2 years ago
parent 34df39d439
commit 3e4224c095
  1. 143
      sig/App.java

@ -10,6 +10,7 @@ import java.util.Map.Entry;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import java.awt.AWTException; import java.awt.AWTException;
import java.awt.Color;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.Robot; import java.awt.Robot;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
@ -140,6 +141,11 @@ class Client {
} }
} }
enum Target{
AYA,
MYTHRA
}
class Server class Server
{ {
//initialize socket and input stream //initialize socket and input stream
@ -155,6 +161,10 @@ class Server
r.keyRelease(keycode);r.delay(100); r.keyRelease(keycode);r.delay(100);
r.keyRelease(modifier); r.keyRelease(modifier);
} }
private void PressKey(int keycode) {
r.keyPress(keycode);
r.keyRelease(keycode);
}
float GetMythraHealth(){ float GetMythraHealth(){
BufferedImage img=r.createScreenCapture(new Rectangle(92, 171, 86, 1)); BufferedImage img=r.createScreenCapture(new Rectangle(92, 171, 86, 1));
@ -165,6 +175,20 @@ class Server
} }
return 0; return 0;
} }
boolean MythraHasShield(){
BufferedImage img=r.createScreenCapture(new Rectangle(92, 163, 1, 1));
Color c=new Color(img.getRGB(0,0));
return c.getRed()==255&&c.getRed()==211&&c.getBlue()==0;
}
float GetMythraMana(){
BufferedImage img=r.createScreenCapture(new Rectangle(196, 171, 86, 1));
for (int i=img.getWidth()-1;i>=0;i--){
if ((img.getRGB(i,0)&255)>100){
return (float)i/(img.getWidth()-1)*100;
}
}
return 0;
}
float GetAyaHealth(){ float GetAyaHealth(){
BufferedImage img=r.createScreenCapture(new Rectangle(92, 211, 86, 1)); BufferedImage img=r.createScreenCapture(new Rectangle(92, 211, 86, 1));
for (int i=img.getWidth()-1;i>=0;i--){ for (int i=img.getWidth()-1;i>=0;i--){
@ -174,6 +198,11 @@ class Server
} }
return 0; return 0;
} }
boolean AyaHasShield(){
BufferedImage img=r.createScreenCapture(new Rectangle(92, 203, 1, 1));
Color c=new Color(img.getRGB(0,0));
return c.getRed()==255&&c.getRed()==211&&c.getBlue()==0;
}
float GetTargetHealth(){ float GetTargetHealth(){
BufferedImage img=r.createScreenCapture(new Rectangle(781, 134, 432, 1)); BufferedImage img=r.createScreenCapture(new Rectangle(781, 134, 432, 1));
for (int i=img.getWidth()-1;i>=0;i--){ for (int i=img.getWidth()-1;i>=0;i--){
@ -183,6 +212,46 @@ class Server
} }
return 0; return 0;
} }
boolean MultipleTargets(){
BufferedImage img=r.createScreenCapture(new Rectangle(75, 628, 1, 1));
Color c=new Color(img.getRGB(0,0));
return (c.getRed()==120&&c.getRed()==118&&c.getBlue()==120)||(c.getRed()==140&&c.getRed()==138&&c.getBlue()==140);
}
long bioTimer=0;
long lucidDreamingTimer=0;
long nextActionTimer=0;
long aetherflowTimer=0;
int aetherflowStacks=0;
long whisperingDawnTimer=0;
long feyIlluminationTimer=0;
boolean allowedToAetherflow=false;
long lastFrame=System.currentTimeMillis();
void Heal(Target target){
if (aetherflowStacks>0){
PressKey(KeyEvent.VK_C);
aetherflowStacks--;
nextActionTimer=1000;
return;
} else
if (target==Target.AYA&&AyaHasShield()){
PressKeyWithModifier(KeyEvent.VK_CONTROL, KeyEvent.VK_3);
nextActionTimer=2500;
return;
} else
if (target==Target.MYTHRA&&MythraHasShield()){
PressKeyWithModifier(KeyEvent.VK_CONTROL, KeyEvent.VK_3);
nextActionTimer=2500;
return;
} else {
PressKey(KeyEvent.VK_5);
nextActionTimer=2500;
return;
}
}
// constructor with port // constructor with port
public Server(int port) public Server(int port)
@ -263,6 +332,80 @@ class Server
System.out.println(i); System.out.println(i);
break; break;
} }
fightLoop:
while (true){
if (fighting){
if (nextActionTimer==0){
if (GetMythraMana()<80&&lucidDreamingTimer==0){
lucidDreamingTimer=60000;
PressKeyWithModifier(KeyEvent.VK_CONTROL, KeyEvent.VK_6);
nextActionTimer=1000;
break fightLoop;
}
}
if (allowedToAetherflow&&aetherflowTimer==0){
PressKeyWithModifier(KeyEvent.VK_ALT, KeyEvent.VK_2);
nextActionTimer=1000;
aetherflowStacks=3;
break fightLoop;
}
float ayaHealth=GetAyaHealth();
float mythraHealth=GetMythraHealth();
if (ayaHealth<0.4){
PressKey(KeyEvent.VK_F2);
Heal(Target.AYA);
break fightLoop;
}
if (ayaHealth<0.6){
if (whisperingDawnTimer==0&&feyIlluminationTimer<60000){
PressKeyWithModifier(KeyEvent.VK_CONTROL, KeyEvent.VK_C);
whisperingDawnTimer=60000;
nextActionTimer=1000;
break fightLoop;
} else
if (feyIlluminationTimer==0&&whisperingDawnTimer<30000){
PressKey(KeyEvent.VK_X);
feyIlluminationTimer=120000;
nextActionTimer=1000;
break fightLoop;
}
}
if (mythraHealth<0.4){
PressKey(KeyEvent.VK_F1);
Heal(Target.MYTHRA);
break fightLoop;
}
//Looks like we're attacking.
PressKeyWithModifier(KeyEvent.VK_CONTROL, KeyEvent.VK_8);
float targetHealth=GetTargetHealth();
if (!MultipleTargets()){
if (targetHealth>50&&bioTimer==0){
PressKeyWithModifier(KeyEvent.VK_CONTROL, KeyEvent.VK_2);
bioTimer=30000;
nextActionTimer=2500;
break fightLoop;
} else {
PressKeyWithModifier(KeyEvent.VK_CONTROL, KeyEvent.VK_1);
nextActionTimer=2500;
break fightLoop;
}
} else {
PressKeyWithModifier(KeyEvent.VK_CONTROL, KeyEvent.VK_Z);
nextActionTimer=2500;
break fightLoop;
}
}
break fightLoop;
}
long difference=System.currentTimeMillis()-lastFrame;
bioTimer=Math.max(0,bioTimer-difference);
lucidDreamingTimer=Math.max(0,lucidDreamingTimer-difference);
nextActionTimer=Math.max(0,nextActionTimer-difference);
aetherflowTimer=Math.max(0,aetherflowTimer-difference);
whisperingDawnTimer=Math.max(0,whisperingDawnTimer-difference);
feyIlluminationTimer=Math.max(0,feyIlluminationTimer-difference);
lastFrame=System.currentTimeMillis();
} }
System.out.println("Closing connection"); System.out.println("Closing connection");

Loading…
Cancel
Save