Advertisement
Guest User

Untitled

a guest
Sep 1st, 2018
1,602
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 2.39 KB | None | 0 0
  1. package me.lostillusion.shootmeirl.FortniteHealthTracker;
  2.  
  3. import net.sourceforge.tess4j.ITesseract;
  4. import net.sourceforge.tess4j.Tesseract;
  5. import net.sourceforge.tess4j.TesseractException;
  6. import java.awt.*;
  7. import java.awt.image.BufferedImage;
  8. import java.util.Collection;
  9. import java.util.LinkedList;
  10. import java.util.concurrent.Executors;
  11. import java.util.concurrent.ScheduledExecutorService;
  12. import java.util.concurrent.TimeUnit;
  13. import java.util.logging.Logger;
  14.  
  15. public class Fortnite {
  16.     private static ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
  17.     private static Collection<HealthLossListener> listeners = new LinkedList<>();
  18.     private static int pastHealth = 100;
  19.     public static void addHealthLossListener(HealthLossListener healthLossListener) {
  20.         listeners.add(healthLossListener);
  21.         if(listeners.size() == 1) executorService.scheduleAtFixedRate(Fortnite::scan, 0, 5, TimeUnit.SECONDS);
  22.     }
  23.     private static void scan() {
  24.         try {
  25.             ITesseract tesseract = new Tesseract();
  26.             Rectangle screenRect = new Rectangle(770, 968, 40, 22);
  27.             BufferedImage capture = new Robot().createScreenCapture(screenRect);
  28.             BufferedImage blackAndWhiteCapture = new BufferedImage(capture.getWidth(), capture.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
  29.             Graphics2D graphic = blackAndWhiteCapture.createGraphics();
  30.             graphic.drawImage(capture, 0, 0, null);
  31.             graphic.dispose();
  32.             String ocrOutput = tesseract.doOCR(blackAndWhiteCapture).trim();
  33.             int currentHealth = Integer.valueOf(ocrOutput);
  34.             Logger.getGlobal().info(String.format("%s HP", ocrOutput));
  35.             if(currentHealth < pastHealth) {
  36.                 pastHealth = currentHealth;
  37.                 listeners.forEach(healthLossListener -> healthLossListener.onHealthLossEvent(new HealthLossEvent(pastHealth, currentHealth)));
  38.             } else if (currentHealth > pastHealth)
  39.                 pastHealth = currentHealth;
  40.         } catch (AWTException | HeadlessException e) {
  41.             e.printStackTrace();
  42.         } catch (NumberFormatException e) {
  43.             Logger.getGlobal().severe("OCR returned NAN!");
  44.         } catch (TesseractException e) {
  45.             Logger.getGlobal().severe(String.format("Error while doing OCR\n%s", e.getMessage()));
  46.         }
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement