Bugfix: Quick list manipulation to remove anything before experience in the list (#679)

* Quick list manipulation to remove anything before experience in the list

* update

* stupid ide

* cleanup

Co-authored-by: mgleed <aliigleed16@gmail.com>
This commit is contained in:
egut125
2022-03-31 22:38:13 -04:00
committed by GitHub
parent 0606adb5da
commit c6d2f3f068
2 changed files with 27 additions and 21 deletions

View File

@@ -114,10 +114,10 @@ class GameStats:
curr_lvl = get_level(exp[1])['lvl']
if curr_lvl > 0:
self._current_lvl = curr_lvl-1
if self._starting_exp == 0:
self._starting_exp = exp[0]
if exp[0] > 0:
self._current_exp = exp[0]
@@ -159,26 +159,31 @@ class GameStats:
avg_length_str = hms(avg_length)
curr_lvl = get_level(self._current_lvl)
exp_gained = self._current_exp - curr_lvl['exp']
per_to_lvl = exp_gained / curr_lvl["xp_to_next"]
gained_exp = self._current_exp - self._starting_exp
exp_per_second = gained_exp / good_games_time
exp_per_hour = round(exp_per_second * 3600, 1)
exp_per_game = round(gained_exp / float(good_games_count), 1)
exp_needed = curr_lvl['xp_to_next'] - exp_gained
time_to_lvl = exp_needed / exp_per_second
games_to_lvl = exp_needed / exp_per_game
msg = f'\nSession length: {elapsed_time_str}'
msg += f'\nGames: {self._game_counter}'
msg += f'\nAvg Game Length: {avg_length_str}'
msg += f'\nCurrent Level: {curr_lvl["lvl"]}'
msg += f'\nPercent to Level: {math.ceil(per_to_lvl*100)}%'
msg += f'\nXP Gained: {gained_exp:,}'
msg += f'\nXP Per Hour: {exp_per_hour:,}'
msg += f'\nXP Per Game: {exp_per_game:,}'
msg += f'\nTime Needed To Level: {hms(time_to_lvl)}'
msg += f'\nGames Needed To Level: {math.ceil(games_to_lvl):,}'
if curr_lvl["lvl"] < 99:
try:
exp_gained = self._current_exp - curr_lvl['exp']
per_to_lvl = exp_gained / curr_lvl["xp_to_next"]
gained_exp = self._current_exp - self._starting_exp
exp_per_second = gained_exp / good_games_time
exp_per_hour = round(exp_per_second * 3600, 1)
exp_per_game = round(gained_exp / float(good_games_count), 1)
exp_needed = curr_lvl['xp_to_next'] - exp_gained
time_to_lvl = exp_needed / exp_per_second
games_to_lvl = exp_needed / exp_per_game
msg += f'\nPercent to Level: {math.ceil(per_to_lvl*100)}%'
msg += f'\nXP Gained: {gained_exp:,}'
msg += f'\nXP Per Hour: {exp_per_hour:,}'
msg += f'\nXP Per Game: {exp_per_game:,}'
msg += f'\nTime Needed To Level: {hms(time_to_lvl)}'
msg += f'\nGames Needed To Level: {math.ceil(games_to_lvl):,}'
except:
Logger.warning("Failed to log exp")
table = BeautifulTable()
table.set_style(BeautifulTable.STYLE_BOX_ROUNDED)

View File

@@ -14,7 +14,7 @@ def get_experience():
wait(0.05)
# crop roi
img = grab()
mouse.move(x_m, y_m-50, randomize = (8,1))
crop = cut_roi(img, Config().ui_roi["xp_bar_text"])
ocr_result = Ocr().image_to_text(
@@ -33,6 +33,7 @@ def get_experience():
)[0]
split_text = ocr_result.text.split(' ')
split_text = split_text[split_text.index("EXPERIENCE:"):]
try:
current_exp = int(split_text[1].replace(',', '').replace('.', ''))
required_exp = int(split_text[3].replace(',', '').replace('.', ''))
@@ -46,14 +47,14 @@ def get_experience():
if __name__ == "__main__":
import keyboard
import os
from screen import start_detecting_window
start_detecting_window()
keyboard.add_hotkey('f12', lambda: Logger.info('Force Exit (f12)') or os._exit(1))
print("Go to D2R window and press f11 to start game")
keyboard.wait("f11")
exp = get_experience()
Logger.debug(f"EXP curr: {exp[0]}")
Logger.debug(f"EXP req: {exp[1]}")