scripts/full_abyssal_beasts.py

130 lines
4 KiB
Python
Raw Normal View History

2025-06-19 23:06:36 +02:00
from typing import Callable
import pynput.keyboard as keyboard
import pynput.mouse as mouse
from secrets import randbelow
from pynput.mouse import Button
from pynput.keyboard import Key
2025-06-20 17:15:52 +02:00
from datetime import datetime, timedelta
import time
# Constants
2025-06-20 17:15:52 +02:00
potion_doses = 16 * 6
potion_duration_seconds = 7.5 * 60
key_quick_prayers = 'o'
key_book_activation = 'p'
key_pvm_hub_teleport = 'h'
2025-06-20 17:15:52 +02:00
key_aggression_potion = '7'
key_lantadyme_stick = '8'
position_compass = (1173 , 34)
position_bank_chest_teleport = (896, 238)
position_bank_chest_after = (676, 339)
position_ectoplasm = (1210, 478)
position_ectoplasmator = (1210, 447)
position_open_page = (1250, 443)
position_select_all_page = (1205, 484)
position_open_springs = (1290, 444)
position_select_all_springs = (1256, 485)
position_open_divine_charge = (1330, 444)
position_select_all_divine_charge = (1267, 518)
k = keyboard.Controller()
m = mouse.Controller()
def random_between(minimum: int, maximum: int) -> int:
delta = maximum - minimum
return minimum + randbelow(delta)
def random_sleep_between(min_milliseconds: int, max_milliseconds: int) -> int:
sleep_microseconds = random_between(min_milliseconds * 1_000, max_milliseconds * 1_000)
sleep_seconds = sleep_microseconds / 1_000_000
print(f"Sleeping for: {sleep_seconds} seconds")
time.sleep(sleep_seconds)
return sleep_microseconds
def click_at(position: tuple[int,int]):
m.position = position
m.click(Button.left)
def right_click_at(position: tuple[int,int]):
m.position = position
m.click(Button.right)
def full_setup():
k.tap(key_pvm_hub_teleport)
2025-06-19 22:53:10 +02:00
random_sleep_between(6_000, 7_000)
click_at(position_compass)
random_sleep_between(100, 300)
click_at(position_bank_chest_teleport)
random_sleep_between(4_000, 5_000)
k.tap('2')
random_sleep_between(1_800, 2_200)
click_at(position_ectoplasm)
2025-06-20 16:31:02 +02:00
random_sleep_between(500, 700)
click_at(position_ectoplasmator)
random_sleep_between(1_200, 1_400)
k.type('999')
2025-06-20 16:31:02 +02:00
random_sleep_between(500, 700)
k.tap(Key.enter)
2025-06-20 16:31:02 +02:00
random_sleep_between(500, 700)
2025-06-20 16:34:20 +02:00
right_click_at(position_open_page)
2025-06-20 16:31:02 +02:00
random_sleep_between(500, 700)
click_at(position_select_all_page)
2025-06-20 16:31:02 +02:00
random_sleep_between(500, 700)
2025-06-20 16:34:20 +02:00
right_click_at(position_open_springs)
2025-06-20 16:31:02 +02:00
random_sleep_between(500, 700)
click_at(position_select_all_springs)
2025-06-20 16:31:02 +02:00
random_sleep_between(500, 700)
2025-06-20 16:34:20 +02:00
right_click_at(position_open_divine_charge)
2025-06-20 16:31:02 +02:00
random_sleep_between(500, 700)
click_at(position_select_all_divine_charge)
2025-06-20 16:31:02 +02:00
random_sleep_between(500, 700)
2025-06-19 22:56:54 +02:00
click_at(position_bank_chest_after)
random_sleep_between(1_800, 2_200)
k.tap('1')
2025-06-20 17:15:52 +02:00
def start_abyssal_beasts():
global potion_doses
for dose in range(potion_doses):
start_of_dose_time = datetime.now()
dose_ends_at = start_of_dose_time + timedelta(seconds=potion_duration_seconds)
print(f"{start_of_dose_time} : Dose {dose + 1} out of {potion_doses}")
k.tap(key_aggression_potion)
print("Pressed overload")
random_sleep_between(600, 1300)
k.tap(key_lantadyme_stick)
print("Pressed lantadyme stick")
while datetime.now() < dose_ends_at:
k.tap(" ")
print("Pressed space - looting")
delta_to_dose_end = dose_ends_at - datetime.now()
print(f"Time until dose ends: {delta_to_dose_end}")
if(delta_to_dose_end.total_seconds() < timedelta(seconds=60))
print("Reduced sleep")
random_sleep_between(25_000, 40_000)
else:
print("Regular sleep")
random_sleep_between(25_000, 70_000)
2025-06-19 23:06:36 +02:00
def add_keybind(keybind: str | Key, action: Callable):
def on_release(key):
try:
if key == keybind:
action()
else:
if key.char == keybind:
action()
except:
pass
2025-06-19 23:06:36 +02:00
keyboard.Listener(on_release=on_release).start()
2025-06-19 23:26:53 +02:00
2025-06-20 17:15:52 +02:00
add_keybind(Key.f11, start_abyssal_beasts)
2025-06-19 23:26:53 +02:00
add_keybind(Key.f12, full_setup)
2025-06-19 23:06:36 +02:00
while True:
time.sleep(1000)