reorg
This commit is contained in:
parent
f8d2bc936d
commit
bf71b3a66e
125
src/main/kotlin/Doer.kt
Normal file
125
src/main/kotlin/Doer.kt
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
import java.awt.MouseInfo
|
||||||
|
import java.awt.Point
|
||||||
|
import java.awt.Robot
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
import kotlin.math.ceil
|
||||||
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
class Doer(val r: Robot) {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val xWiggle = 15;
|
||||||
|
val yWiggle = 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun doLoop(volume: Int, step: Int, task: (Doer)->Unit){
|
||||||
|
val r = Doer(Robot())
|
||||||
|
val totalSteps =(ceil((volume/step).toDouble()) +1).toInt()
|
||||||
|
|
||||||
|
val start = System.currentTimeMillis()
|
||||||
|
for(i in 0 until totalSteps){
|
||||||
|
report(i+1, totalSteps, System.currentTimeMillis() - start)
|
||||||
|
task(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
val finish = System.currentTimeMillis()
|
||||||
|
println("Finished everything in ${prettyTimeString(finish - start)}")
|
||||||
|
r.drawStar(getPointerLocationAfter(0))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun report (step: Int, of: Int, dur:Long){
|
||||||
|
val remaining = (dur/step) * (of-step)
|
||||||
|
print("\rStep $step of $of (${prettyTimeString(dur)} complete\t|\t~${prettyTimeString(remaining)} remaining) ")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun prettyTimeString(remaining: Long): String{
|
||||||
|
if (remaining == 0L){
|
||||||
|
return "No time data yet"
|
||||||
|
}
|
||||||
|
val sec = 1000L
|
||||||
|
val min = 60L * sec
|
||||||
|
val hour = 60L * min
|
||||||
|
return if(remaining>hour){
|
||||||
|
return "${remaining/hour}h${(remaining%hour)/min}m${(remaining%min)/sec}s"
|
||||||
|
}else if (remaining > min){
|
||||||
|
return "${(remaining%hour)/min}m${(remaining%min)/sec}s"
|
||||||
|
}else{
|
||||||
|
"${(remaining%min)/sec}s"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mouseMove(p: Point){
|
||||||
|
r.mouseMove(p.x, p.y)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun click(buttons: Int) {
|
||||||
|
r.mousePress(buttons)
|
||||||
|
sleep(Random.nextInt(4, 8).toLong())
|
||||||
|
r.mouseRelease(buttons)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun keypress(buttons: Int) {
|
||||||
|
r.keyPress(buttons)
|
||||||
|
sleep(Random.nextInt(4, 8).toLong())
|
||||||
|
r.keyRelease(buttons)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getAlmostPoint(p: Point): Point {
|
||||||
|
val xDel = Random.nextInt(0, xWiggle)
|
||||||
|
val yDel = Random.nextInt(0, yWiggle)
|
||||||
|
val xDir = if (Random.nextDouble() > 0.5) {
|
||||||
|
1
|
||||||
|
} else {
|
||||||
|
-1
|
||||||
|
}
|
||||||
|
val yDir = if (Random.nextDouble() > 0.5) {
|
||||||
|
1
|
||||||
|
} else {
|
||||||
|
-1
|
||||||
|
}
|
||||||
|
return Point(p.x + (xDel * xDir), p.y + (yDel + yDir))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun sleep(dur: Long) {
|
||||||
|
TimeUnit.MILLISECONDS.sleep(dur)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun sleep(dur: Long, min: Long, max: Long) {
|
||||||
|
val dSize = (max-min)/2
|
||||||
|
val r1 = Random.nextLong(dSize)
|
||||||
|
val r2 = Random.nextLong(dSize)
|
||||||
|
TimeUnit.MILLISECONDS.sleep(dur+r1+r2)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun scrollOut(){
|
||||||
|
r.mouseWheel(1)
|
||||||
|
sleep(100, 50, 100)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getPointerLocationAsValDeclarationString(varName: String) {
|
||||||
|
TimeUnit.SECONDS.sleep(5)
|
||||||
|
val info = MouseInfo.getPointerInfo().location
|
||||||
|
println("val ${varName} = Point(${info.x}, ${info.y})")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getPointerLocationAfter(delay: Long): Point {
|
||||||
|
sleep(delay)
|
||||||
|
return MouseInfo.getPointerInfo().location
|
||||||
|
}
|
||||||
|
|
||||||
|
fun drawStar(p: Point){
|
||||||
|
val offset = 100
|
||||||
|
val top = Point(p.x, p.y - offset*2)
|
||||||
|
val topright = Point(p.x+offset, p.y + offset)
|
||||||
|
val bottomright = Point(p.x+offset, p.y)
|
||||||
|
val topleft = Point(p.x-offset, p.y + offset)
|
||||||
|
val bottomleft = Point(p.x-offset, p.y)
|
||||||
|
val points = arrayListOf<Point>(top, bottomleft, topright, topleft, bottomright)
|
||||||
|
for(i in 0 until 3){
|
||||||
|
for(point in points){
|
||||||
|
mouseMove(point)
|
||||||
|
sleep(200)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,323 +8,6 @@ import kotlin.math.ceil
|
|||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
// cleanHerbs(638, 28)
|
Routines.potionGrindWithWell(5100, 14)
|
||||||
potionGrind(1580, 14)
|
|
||||||
// potionGrindWithWell(110, 14)
|
|
||||||
// supremeOverloadGrind(24, 4)
|
|
||||||
|
|
||||||
// furnaceGrind(1100, 28)
|
|
||||||
// planks()
|
|
||||||
// frames(329, 27)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun potionGrind(volume: Int, step: Int){
|
|
||||||
val r = Doer(Robot())
|
|
||||||
val totalSteps =(ceil((volume/step).toDouble()) +1).toInt()
|
|
||||||
// r.getPointerLocation()
|
|
||||||
// val chest = Point(1039, 511)
|
|
||||||
val chest = r.getPointerLocationAfter(3000L)
|
|
||||||
val start = System.currentTimeMillis()
|
|
||||||
for(i in 0 until totalSteps){
|
|
||||||
r.report(i+1, totalSteps, System.currentTimeMillis() - start)
|
|
||||||
r.makePotions(chest)
|
|
||||||
}
|
|
||||||
|
|
||||||
val finish = System.currentTimeMillis()
|
|
||||||
println("Finished everything in ${(finish.toDouble() - start.toDouble())/1000.00}s")
|
|
||||||
r.drawStar(chest)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun cleanHerbs(volume: Int, step: Int){
|
|
||||||
val r = Doer(Robot())
|
|
||||||
val totalSteps =(ceil((volume/step).toDouble()) +1).toInt()
|
|
||||||
println("Put your mouse over the chest...")
|
|
||||||
val chest = r.getPointerLocationAfter(3000L)
|
|
||||||
val start = System.currentTimeMillis()
|
|
||||||
for(i in 0 until totalSteps){
|
|
||||||
r.report(i+1, totalSteps, System.currentTimeMillis() - start)
|
|
||||||
r.cleanHerbs(chest)
|
|
||||||
}
|
|
||||||
|
|
||||||
val finish = System.currentTimeMillis()
|
|
||||||
println("Finished everything in ${(finish.toDouble() - start.toDouble())/1000.00}s")
|
|
||||||
r.drawStar(chest)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun potionGrindWithWell(volume: Int, step: Int){
|
|
||||||
val r = Doer(Robot())
|
|
||||||
val totalSteps =(ceil((volume/step).toDouble()) +1).toInt()
|
|
||||||
println("Put your mouse over the chest...")
|
|
||||||
val chest = r.getPointerLocationAfter(3000L)
|
|
||||||
println("Put your mouse over the Well...")
|
|
||||||
val well = r.getPointerLocationAfter(3000L)
|
|
||||||
val start = System.currentTimeMillis()
|
|
||||||
for(i in 0 until totalSteps){
|
|
||||||
r.report(i+1, totalSteps, System.currentTimeMillis() - start)
|
|
||||||
r.makePotions(chest, well)
|
|
||||||
}
|
|
||||||
|
|
||||||
val finish = System.currentTimeMillis()
|
|
||||||
println("Finished everything in ${(finish.toDouble() - start.toDouble())/1000.00}s")
|
|
||||||
r.drawStar(chest)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun furnaceGrind(volume: Int, step: Int){
|
|
||||||
val r = Doer(Robot())
|
|
||||||
val totalSteps =(ceil((volume/step).toDouble()) +1).toInt()
|
|
||||||
for(i in 0 until 8){
|
|
||||||
r.scrollOut()
|
|
||||||
}
|
|
||||||
//i think this is a zoom of 6?
|
|
||||||
// r.getPointerLocation("furnaceFromChest")
|
|
||||||
// r.getPointerLocation("chestFromFurance")
|
|
||||||
|
|
||||||
val start = System.currentTimeMillis()
|
|
||||||
|
|
||||||
val furnaceFromChest = Point(776, 321)
|
|
||||||
val chestFromFurance = Point(1713, 843)
|
|
||||||
for(i in 0 until totalSteps){
|
|
||||||
r.report(i+1, totalSteps, System.currentTimeMillis() - start)
|
|
||||||
r.doFurnaceRun(furnaceFromChest, chestFromFurance)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun frames(volume: Int, step: Int){
|
|
||||||
val r = Doer(Robot())
|
|
||||||
val totalSteps =(ceil((volume/step).toDouble()) +1).toInt()
|
|
||||||
r.sleep(1000)
|
|
||||||
for(i in 0 until 8){
|
|
||||||
r.scrollOut()
|
|
||||||
}
|
|
||||||
//i think this is a zoom of 6?
|
|
||||||
// r.getPointerLocation("sawFromChest")
|
|
||||||
// r.getPointerLocation("chestFromSaw")
|
|
||||||
|
|
||||||
val start = System.currentTimeMillis()
|
|
||||||
|
|
||||||
val sawFromChest = Point(1079, 907)
|
|
||||||
val chestFromSaw = Point(1226, 180)
|
|
||||||
for(i in 0 until totalSteps){
|
|
||||||
r.report(i+1, totalSteps, System.currentTimeMillis() - start)
|
|
||||||
r.makeFrame(sawFromChest, chestFromSaw)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun supremeOverloadGrind(volume: Int, step: Int){
|
|
||||||
val r = Doer(Robot())
|
|
||||||
val totalSteps =(ceil((volume/step).toDouble()) +1).toInt()
|
|
||||||
// r.getPointerLocation()
|
|
||||||
// r.getPointerLocation()
|
|
||||||
val wellPoint = Point(1151, 676)
|
|
||||||
val chestPoint = Point(1067, 443)
|
|
||||||
val start = System.currentTimeMillis()
|
|
||||||
for(i in 0 until totalSteps){
|
|
||||||
r.report(i+1, totalSteps, System.currentTimeMillis() - start)
|
|
||||||
r.makeSupremeOverload(wellPoint, chestPoint)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Doer(val r: Robot) {
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
val xWiggle = 5;
|
|
||||||
val yWiggle = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
fun report (step: Int, of: Int, dur:Long){
|
|
||||||
val remaining = (dur/step) * (of-step)
|
|
||||||
print("\rStep $step of $of (${prettyTimeString(dur)} complete\t|\t~${prettyTimeString(remaining)} remaining) ")
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun prettyTimeString(remaining: Long): String{
|
|
||||||
if (remaining == 0L){
|
|
||||||
return "No time data yet"
|
|
||||||
}
|
|
||||||
val sec = 1000L
|
|
||||||
val min = 60L * sec
|
|
||||||
val hour = 60L * min
|
|
||||||
return if(remaining>hour){
|
|
||||||
return "${remaining/hour}h${(remaining%hour)/min}m${(remaining%min)/sec}s"
|
|
||||||
}else if (remaining > min){
|
|
||||||
return "${(remaining%hour)/min}m${(remaining%min)/sec}s"
|
|
||||||
}else{
|
|
||||||
"${(remaining%min)/sec}s"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun doFurnaceRun(furnaceFromChest: Point, chestFromFurnace: Point){
|
|
||||||
val fur = getAlmostPoint(furnaceFromChest)
|
|
||||||
val bank = getAlmostPoint(chestFromFurnace)
|
|
||||||
r.mouseMove(fur.x, fur.y)
|
|
||||||
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
sleep(2800, 200, 800)
|
|
||||||
keypress(KeyEvent.VK_SPACE)
|
|
||||||
sleep(53000,200, 800)
|
|
||||||
r.mouseMove(bank.x, bank.y)
|
|
||||||
sleep(100, 10, 200)
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
sleep(2800, 200, 1200)
|
|
||||||
keypress(KeyEvent.VK_F6)
|
|
||||||
sleep(600, 200, 600)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun cleanHerbs(chest: Point) {
|
|
||||||
mouseMove(chest)
|
|
||||||
sleep(100, 0, 100)
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
sleep(600, 0, 800)
|
|
||||||
keypress(KeyEvent.VK_F6)
|
|
||||||
sleep(600, 0, 800)
|
|
||||||
keypress(KeyEvent.VK_EQUALS)
|
|
||||||
sleep(600, 0, 800)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun makePotions(chest: Point) {
|
|
||||||
val duration = 17000L
|
|
||||||
val firstClickPoint = getAlmostPoint(chest)
|
|
||||||
r.mouseMove(firstClickPoint.x, firstClickPoint.y)
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
sleep(Random.nextInt(1300, 1600).toLong())
|
|
||||||
keypress(KeyEvent.VK_F6)
|
|
||||||
sleep(Random.nextInt(1000, 1500).toLong())
|
|
||||||
keypress(KeyEvent.VK_EQUALS)
|
|
||||||
val sleepDur = Random.nextInt(1000, 1500).toLong()
|
|
||||||
sleep(sleepDur)
|
|
||||||
keypress(KeyEvent.VK_SPACE)
|
|
||||||
if (sleepDur < 1200) {
|
|
||||||
sleep(Random.nextInt(600, 1200).toLong())
|
|
||||||
keypress(KeyEvent.VK_SPACE)
|
|
||||||
}
|
|
||||||
sleep(duration + Random.nextInt(1000).toLong())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun makePotions(chest: Point, well: Point) {
|
|
||||||
val duration = 17000L
|
|
||||||
val firstClickPoint = getAlmostPoint(chest)
|
|
||||||
r.mouseMove(firstClickPoint.x, firstClickPoint.y)
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
sleep(Random.nextInt(1300, 1600).toLong())
|
|
||||||
keypress(KeyEvent.VK_F6)
|
|
||||||
sleep(Random.nextInt(1000, 1500).toLong())
|
|
||||||
|
|
||||||
mouseMove(well)
|
|
||||||
sleep(100, 0, 50)
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
|
|
||||||
sleep(1500, 0, 1000)
|
|
||||||
|
|
||||||
keypress(KeyEvent.VK_SPACE)
|
|
||||||
|
|
||||||
sleep(duration + Random.nextInt(1000).toLong())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun makeSupremeOverload(well: Point, chest: Point){
|
|
||||||
//going to chest
|
|
||||||
mouseMove(getAlmostPoint(chest))
|
|
||||||
sleep(100)
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
sleep(1500, 1000, 2000)
|
|
||||||
//selecting setup
|
|
||||||
keypress(KeyEvent.VK_F6)
|
|
||||||
sleep(1000, 1500, 2000)
|
|
||||||
//going to well
|
|
||||||
mouseMove(getAlmostPoint(well))
|
|
||||||
sleep(100)
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
sleep(1600, 1000, 1800)
|
|
||||||
//combining potions
|
|
||||||
keypress(KeyEvent.VK_SPACE)
|
|
||||||
sleep(5500, 1000, 2000)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun makeFrame(sawFromChest: Point, chestFromSaw: Point){
|
|
||||||
mouseMove(sawFromChest)
|
|
||||||
sleep(100, 0, 50)
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
sleep(2200, 500, 1000)
|
|
||||||
keypress(KeyEvent.VK_SPACE)
|
|
||||||
sleep(63000, 1000, 2000)
|
|
||||||
mouseMove(chestFromSaw)
|
|
||||||
sleep(100, 0, 50)
|
|
||||||
click(InputEvent.BUTTON1_DOWN_MASK)
|
|
||||||
sleep(2200, 500, 1000)
|
|
||||||
keypress(KeyEvent.VK_F6)
|
|
||||||
sleep(1200, 0, 500)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun mouseMove(p: Point){
|
|
||||||
r.mouseMove(p.x, p.y)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun click(buttons: Int) {
|
|
||||||
r.mousePress(buttons)
|
|
||||||
sleep(Random.nextInt(4, 8).toLong())
|
|
||||||
r.mouseRelease(buttons)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun keypress(buttons: Int) {
|
|
||||||
r.keyPress(buttons)
|
|
||||||
sleep(Random.nextInt(4, 8).toLong())
|
|
||||||
r.keyRelease(buttons)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getAlmostPoint(p: Point): Point {
|
|
||||||
val xDel = Random.nextInt(0, xWiggle)
|
|
||||||
val yDel = Random.nextInt(0, yWiggle)
|
|
||||||
val xDir = if (Random.nextDouble() > 0.5) {
|
|
||||||
1
|
|
||||||
} else {
|
|
||||||
-1
|
|
||||||
}
|
|
||||||
val yDir = if (Random.nextDouble() > 0.5) {
|
|
||||||
1
|
|
||||||
} else {
|
|
||||||
-1
|
|
||||||
}
|
|
||||||
return Point(p.x + (xDel * xDir), p.y + (yDel + yDir))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun sleep(dur: Long) {
|
|
||||||
TimeUnit.MILLISECONDS.sleep(dur)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun sleep(dur: Long, min: Long, max: Long) {
|
|
||||||
val dSize = (max-min)/2
|
|
||||||
val r1 = Random.nextLong(dSize)
|
|
||||||
val r2 = Random.nextLong(dSize)
|
|
||||||
TimeUnit.MILLISECONDS.sleep(dur+r1+r2)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun scrollOut(){
|
|
||||||
r.mouseWheel(1)
|
|
||||||
sleep(100, 50, 100)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getPointerLocation(varName: String) {
|
|
||||||
TimeUnit.SECONDS.sleep(5)
|
|
||||||
val info = MouseInfo.getPointerInfo().location
|
|
||||||
println("val ${varName} = Point(${info.x}, ${info.y})")
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getPointerLocationAfter(delay: Long): Point{
|
|
||||||
sleep(delay)
|
|
||||||
return MouseInfo.getPointerInfo().location
|
|
||||||
}
|
|
||||||
|
|
||||||
fun drawStar(p: Point){
|
|
||||||
val offset = 100
|
|
||||||
val top = Point(p.x, p.y - offset*2)
|
|
||||||
val topright = Point(p.x+offset, p.y + offset)
|
|
||||||
val bottomright = Point(p.x+offset, p.y)
|
|
||||||
val topleft = Point(p.x-offset, p.y + offset)
|
|
||||||
val bottomleft = Point(p.x-offset, p.y)
|
|
||||||
val points = arrayListOf<Point>(top, bottomleft, topright, topleft, bottomright)
|
|
||||||
for(i in 0 until 3){
|
|
||||||
for(point in points){
|
|
||||||
r.mouseMove(point.x, point.y)
|
|
||||||
sleep(200)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
84
src/main/kotlin/Routines.kt
Normal file
84
src/main/kotlin/Routines.kt
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
import java.awt.Point
|
||||||
|
import java.awt.Robot
|
||||||
|
|
||||||
|
object Routines {
|
||||||
|
|
||||||
|
fun cleanHerbs(volume: Int, step: Int){
|
||||||
|
val r = Doer(Robot())
|
||||||
|
println("Put your mouse over the bank...")
|
||||||
|
val chest = r.getPointerLocationAfter(3000L)
|
||||||
|
r.doLoop(volume, step){
|
||||||
|
Tasks.cleanHerbs(it, chest)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun potionGrind(volume: Int, step: Int){
|
||||||
|
val r = Doer(Robot())
|
||||||
|
println("Put your mouse over the bank...")
|
||||||
|
val chest = r.getPointerLocationAfter(3000L)
|
||||||
|
r.doLoop(volume, step){
|
||||||
|
Tasks.makePotions(it, chest)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun potionGrindWithWell(volume: Int, step: Int){
|
||||||
|
val r = Doer(Robot())
|
||||||
|
|
||||||
|
println("Put your mouse over the bank...")
|
||||||
|
val chest = r.getPointerLocationAfter(3000L)
|
||||||
|
println("Put your mouse over the well...")
|
||||||
|
val well = r.getPointerLocationAfter(3000L)
|
||||||
|
r.doLoop(volume, step){
|
||||||
|
Tasks.makePotions(it, chest, well)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun furnaceGrind(volume: Int, step: Int){
|
||||||
|
val r = Doer(Robot())
|
||||||
|
println("Reset the camera and zoom in")
|
||||||
|
r.sleep(1000)
|
||||||
|
|
||||||
|
for(i in 0 until 8){
|
||||||
|
r.scrollOut()
|
||||||
|
}
|
||||||
|
|
||||||
|
val furnaceFromChest = Point(776, 321)
|
||||||
|
val chestFromFurance = Point(1713, 843)
|
||||||
|
|
||||||
|
r.doLoop(volume, step){
|
||||||
|
Tasks.doFurnaceRun(it, furnaceFromChest, chestFromFurance)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun frames(volume: Int, step: Int){
|
||||||
|
println("You must zoom in all the way and have the compass pointing straight N with a completely top-down view")
|
||||||
|
val r = Doer(Robot())
|
||||||
|
r.sleep(1000)
|
||||||
|
for(i in 0 until 8){
|
||||||
|
r.scrollOut()
|
||||||
|
}
|
||||||
|
|
||||||
|
val sawFromChest = Point(1079, 907)
|
||||||
|
val chestFromSaw = Point(1226, 180)
|
||||||
|
r.doLoop(volume, step){
|
||||||
|
Tasks.makeFrame(it, sawFromChest, chestFromSaw)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun supremeOverloadGrind(volume: Int, step: Int){
|
||||||
|
val r = Doer(Robot())
|
||||||
|
println("Place mouse over chest")
|
||||||
|
val chestPoint = r.getPointerLocationAfter(3000L)
|
||||||
|
println("Place mouse over well")
|
||||||
|
val wellPoint = r.getPointerLocationAfter(3000L)
|
||||||
|
|
||||||
|
r.doLoop(volume, step){
|
||||||
|
Tasks.makeSupremeOverload(it, wellPoint, chestPoint)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
113
src/main/kotlin/Tasks.kt
Normal file
113
src/main/kotlin/Tasks.kt
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
import java.awt.Point
|
||||||
|
import java.awt.event.InputEvent
|
||||||
|
import java.awt.event.KeyEvent
|
||||||
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
object Tasks {
|
||||||
|
fun doFurnaceRun(d: Doer, furnaceFromChest: Point, chestFromFurnace: Point){
|
||||||
|
d.mouseMove(d.getAlmostPoint(furnaceFromChest))
|
||||||
|
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(2800, 200, 800)
|
||||||
|
d.keypress(KeyEvent.VK_SPACE)
|
||||||
|
d.sleep(53000,200, 800)
|
||||||
|
d.mouseMove(d.getAlmostPoint(chestFromFurnace))
|
||||||
|
d.sleep(100, 10, 200)
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(2800, 200, 1200)
|
||||||
|
d.keypress(KeyEvent.VK_F6)
|
||||||
|
d.sleep(600, 200, 600)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun cleanHerbs(d: Doer, chest: Point) {
|
||||||
|
d.mouseMove(chest)
|
||||||
|
d.sleep(100, 0, 100)
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(600, 0, 800)
|
||||||
|
d.keypress(KeyEvent.VK_F6)
|
||||||
|
d.sleep(600, 0, 800)
|
||||||
|
d.keypress(KeyEvent.VK_EQUALS)
|
||||||
|
d.sleep(600, 0, 800)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun makePotions(d: Doer, chest: Point) {
|
||||||
|
d.mouseMove(d.getAlmostPoint(chest))
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(Random.nextInt(1300, 1600).toLong())
|
||||||
|
|
||||||
|
d.keypress(KeyEvent.VK_F6)
|
||||||
|
d.sleep(Random.nextInt(1000, 1500).toLong())
|
||||||
|
|
||||||
|
d.keypress(KeyEvent.VK_EQUALS)
|
||||||
|
val sleepDur = Random.nextInt(1000, 1500).toLong()
|
||||||
|
d.sleep(sleepDur)
|
||||||
|
|
||||||
|
d.keypress(KeyEvent.VK_SPACE)
|
||||||
|
if (sleepDur < 1200) {
|
||||||
|
d.sleep(Random.nextInt(600, 1200).toLong())
|
||||||
|
d.keypress(KeyEvent.VK_SPACE)
|
||||||
|
}
|
||||||
|
d.sleep(17000L, 500, 1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun makePotions(d: Doer, chest: Point, well: Point) {
|
||||||
|
d.mouseMove(d.getAlmostPoint(chest))
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(1000, 600, 1000)
|
||||||
|
|
||||||
|
d.keypress(KeyEvent.VK_F6)
|
||||||
|
d.sleep(1000, 50, 500)
|
||||||
|
|
||||||
|
d.mouseMove(well)
|
||||||
|
d.sleep(100, 0, 50)
|
||||||
|
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(1500, 0, 500)
|
||||||
|
|
||||||
|
d.keypress(KeyEvent.VK_SPACE)
|
||||||
|
|
||||||
|
d.sleep(18000L, 600, 1200)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun makeSupremeOverload(d: Doer, well: Point, chest: Point){
|
||||||
|
//going to chest
|
||||||
|
d.mouseMove(d.getAlmostPoint(chest))
|
||||||
|
d.sleep(100)
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(1500, 1000, 2000)
|
||||||
|
//selecting setup
|
||||||
|
d.keypress(KeyEvent.VK_F6)
|
||||||
|
d.sleep(1000, 1500, 2000)
|
||||||
|
//going to well
|
||||||
|
d.mouseMove(d.getAlmostPoint(well))
|
||||||
|
d.sleep(100)
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(1600, 1000, 1800)
|
||||||
|
//combining potions
|
||||||
|
d.keypress(KeyEvent.VK_SPACE)
|
||||||
|
d.sleep(5500, 1000, 2000)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun makeFrame(d: Doer, sawFromChest: Point, chestFromSaw: Point){
|
||||||
|
//standing at bank with full inv
|
||||||
|
d.mouseMove(sawFromChest)
|
||||||
|
d.sleep(100, 0, 50)
|
||||||
|
//run to saw
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(2200, 500, 1000)
|
||||||
|
//start cutting frames
|
||||||
|
d.keypress(KeyEvent.VK_SPACE)
|
||||||
|
//waiting
|
||||||
|
d.sleep(63000, 1000, 2000)
|
||||||
|
d.mouseMove(chestFromSaw)
|
||||||
|
d.sleep(100, 0, 50)
|
||||||
|
//running to bank
|
||||||
|
d.click(InputEvent.BUTTON1_DOWN_MASK)
|
||||||
|
d.sleep(2200, 500, 1000)
|
||||||
|
d.keypress(KeyEvent.VK_F6)
|
||||||
|
d.sleep(1200, 0, 500)
|
||||||
|
//full inv
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user