Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.lostillusion.shootmeirl.FortniteHealthTracker;
- import net.sourceforge.tess4j.ITesseract;
- import net.sourceforge.tess4j.Tesseract;
- import net.sourceforge.tess4j.TesseractException;
- import java.awt.*;
- import java.awt.image.BufferedImage;
- import java.util.Collection;
- import java.util.LinkedList;
- import java.util.concurrent.Executors;
- import java.util.concurrent.ScheduledExecutorService;
- import java.util.concurrent.TimeUnit;
- import java.util.logging.Logger;
- public class Fortnite {
- private static ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
- private static Collection<HealthLossListener> listeners = new LinkedList<>();
- private static int pastHealth = 100;
- public static void addHealthLossListener(HealthLossListener healthLossListener) {
- listeners.add(healthLossListener);
- if(listeners.size() == 1) executorService.scheduleAtFixedRate(Fortnite::scan, 0, 5, TimeUnit.SECONDS);
- }
- private static void scan() {
- try {
- ITesseract tesseract = new Tesseract();
- Rectangle screenRect = new Rectangle(770, 968, 40, 22);
- BufferedImage capture = new Robot().createScreenCapture(screenRect);
- BufferedImage blackAndWhiteCapture = new BufferedImage(capture.getWidth(), capture.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
- Graphics2D graphic = blackAndWhiteCapture.createGraphics();
- graphic.drawImage(capture, 0, 0, null);
- graphic.dispose();
- String ocrOutput = tesseract.doOCR(blackAndWhiteCapture).trim();
- int currentHealth = Integer.valueOf(ocrOutput);
- Logger.getGlobal().info(String.format("%s HP", ocrOutput));
- if(currentHealth < pastHealth) {
- pastHealth = currentHealth;
- listeners.forEach(healthLossListener -> healthLossListener.onHealthLossEvent(new HealthLossEvent(pastHealth, currentHealth)));
- } else if (currentHealth > pastHealth)
- pastHealth = currentHealth;
- } catch (AWTException | HeadlessException e) {
- e.printStackTrace();
- } catch (NumberFormatException e) {
- Logger.getGlobal().severe("OCR returned NAN!");
- } catch (TesseractException e) {
- Logger.getGlobal().severe(String.format("Error while doing OCR\n%s", e.getMessage()));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement