initial commit
This commit is contained in:
commit
6fdddd6454
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
.settings
|
||||
bin
|
||||
.classpath
|
17
.project
Normal file
17
.project
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>GarticPhoneCheats</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
BIN
amogus.jpg
Normal file
BIN
amogus.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
122
src/GarticPhoneCheats.java
Normal file
122
src/GarticPhoneCheats.java
Normal file
@ -0,0 +1,122 @@
|
||||
import java.awt.Color;
|
||||
import java.awt.MouseInfo;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.Robot;
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
public class GarticPhoneCheats {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
BufferedImage img = ImageIO.read(new File("cock.jpg"));
|
||||
Robot r = new Robot();
|
||||
|
||||
System.out.println("Top left");
|
||||
Thread.sleep(3000);
|
||||
Point topLeft = MouseInfo.getPointerInfo().getLocation();
|
||||
|
||||
System.out.println("Bottom right");
|
||||
Thread.sleep(3000);
|
||||
Point bottomRight = MouseInfo.getPointerInfo().getLocation();
|
||||
|
||||
System.out.println("TL colors");
|
||||
Thread.sleep(3000);
|
||||
Point topLeftC = MouseInfo.getPointerInfo().getLocation();
|
||||
|
||||
System.out.println("BR colors");
|
||||
Thread.sleep(3000);
|
||||
Point bottomRightC = MouseInfo.getPointerInfo().getLocation();
|
||||
|
||||
int poop = 5;
|
||||
Map<Color, Point> colors = new HashMap<>();
|
||||
Rectangle colRect = new Rectangle(topLeftC.x, topLeftC.y, bottomRightC.x - topLeftC.x, bottomRightC.y - topLeftC.y);
|
||||
BufferedImage colorImage = r.createScreenCapture(colRect);
|
||||
for(int x = 0; x < colorImage.getWidth(); x++) {
|
||||
yLoop: for(int y = 0; y < colorImage.getHeight(); y++) {
|
||||
int rgb = colorImage.getRGB(x, y);
|
||||
for(int dx = -poop; dx <= poop; dx++) {
|
||||
for(int dy = -poop; dy <= poop; dy++) {
|
||||
if(x + dx < 0 || x + dx >= colorImage.getWidth() || y + dy < 0 || y + dy >= colorImage.getHeight()) continue yLoop;
|
||||
if(colorImage.getRGB(x + dx, y + dy) != rgb) continue yLoop;
|
||||
}
|
||||
}
|
||||
colors.put(new Color(rgb), new Point(topLeftC.x + x, topLeftC.y + y));
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println(colors);
|
||||
|
||||
Rectangle drawRect = new Rectangle(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
|
||||
double ratio = img.getWidth() / (double) img.getHeight();
|
||||
double targetRatio = drawRect.width / (double) drawRect.height;
|
||||
|
||||
int nW, nH;
|
||||
if(ratio > targetRatio) {
|
||||
nW = drawRect.width;
|
||||
nH = (int) (drawRect.width / ratio);
|
||||
}else {
|
||||
nH = drawRect.height;
|
||||
nW = (int) (drawRect.height * ratio);
|
||||
}
|
||||
|
||||
System.out.println(nW + "," + nH);
|
||||
System.out.println(drawRect);
|
||||
|
||||
BufferedImage nImg = new BufferedImage(nW, nH, BufferedImage.TYPE_3BYTE_BGR);
|
||||
nImg.createGraphics().drawImage(img, 0, 0, nW, nH, null);
|
||||
|
||||
int scale = 10;
|
||||
int delay = 7;
|
||||
|
||||
Color selectedColor = null;
|
||||
for(int x = 0; x < nImg.getWidth() / scale; x++) {
|
||||
for(int y = 0; y < nImg.getHeight() / scale; y++) {
|
||||
int rgb = nImg.getRGB(x * scale, y * scale);
|
||||
|
||||
int pX = topLeft.x + x * scale;
|
||||
int pY = topLeft.y + y * scale;
|
||||
if(pX < topLeft.x || pX > bottomRight.x || pY < topLeft.y || pY > bottomRight.y) continue;
|
||||
|
||||
Color col = new Color(rgb);
|
||||
Color closest = colors.keySet().stream()
|
||||
.sorted(Comparator.comparingDouble(c -> dist(c, col)))
|
||||
.findFirst().orElse(null);
|
||||
|
||||
if(!Objects.equals(selectedColor, closest)) {
|
||||
Thread.sleep(2 * delay);
|
||||
|
||||
selectedColor = closest;
|
||||
Point colPoint = colors.get(closest);
|
||||
r.mouseMove(colPoint.x, colPoint.y);
|
||||
|
||||
r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
||||
Thread.sleep(delay);
|
||||
r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
||||
}
|
||||
|
||||
r.mouseMove(pX, pY);
|
||||
r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
||||
Thread.sleep(delay);
|
||||
r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
||||
|
||||
Thread.sleep(delay);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int dist(Color a, Color b) {
|
||||
int dR = Math.abs(a.getRed() - b.getRed());
|
||||
int dG = Math.abs(a.getGreen() - b.getGreen());
|
||||
int dB = Math.abs(a.getBlue() - b.getBlue());
|
||||
return dR * dR + dG * dG + dB * dB;
|
||||
}
|
||||
|
||||
}
|
BIN
testimg.jpg
Normal file
BIN
testimg.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 47 KiB |
Loading…
Reference in New Issue
Block a user