trainerbase 4.2.5__tar.gz → 4.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {trainerbase-4.2.5 → trainerbase-4.3.0}/LICENSE +2 -2
- {trainerbase-4.2.5 → trainerbase-4.3.0}/PKG-INFO +5 -4
- {trainerbase-4.2.5 → trainerbase-4.3.0}/pyproject.toml +3 -3
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/misc.py +1 -2
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/speedhack.py +30 -1
- {trainerbase-4.2.5 → trainerbase-4.3.0}/.gitignore +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/README.md +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/__init__.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/abc.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/codeinjection.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/common/__init__.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/common/abc.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/common/helpers.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/common/keyboard.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/common/rainbow.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/common/tapper.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/common/teleport.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/config.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gameobject.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/__init__.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/helpers.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/injections.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/objects.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/rainbow.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/scripts.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/tapper.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/teleport.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/gui/types.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/logger.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/main.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/memory.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/process.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/py.typed +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/scriptengine.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/speedhack.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase/tts.py +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase_vendor/FASM.EXE +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase_vendor/speedhack32.dll +0 -0
- {trainerbase-4.2.5 → trainerbase-4.3.0}/trainerbase_vendor/speedhack64.dll +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2021 -
|
|
4
|
-
Copyright (c) 2022 -
|
|
3
|
+
Copyright (c) 2021 - 2025 v01d
|
|
4
|
+
Copyright (c) 2022 - 2025 doomayka
|
|
5
5
|
|
|
6
6
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
7
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: trainerbase
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.3.0
|
|
4
4
|
Summary: Framework for creating game trainers/mods
|
|
5
5
|
Project-URL: Homepage, https://gitlab.com/python-trainers/
|
|
6
6
|
Project-URL: Repository, https://gitlab.com/python-trainers/trainer-base
|
|
7
7
|
Author-email: v01d <v01d@v01d.ru>, doomayka <zd@doomayka.ru>
|
|
8
|
-
License: MIT
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
9
10
|
Classifier: Programming Language :: Python :: 3.12
|
|
10
11
|
Classifier: Programming Language :: Python :: 3.13
|
|
11
12
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
@@ -13,7 +14,7 @@ Requires-Python: >=3.13
|
|
|
13
14
|
Requires-Dist: dearpygui>=2.0.0
|
|
14
15
|
Requires-Dist: keyboard>=0.13.5
|
|
15
16
|
Requires-Dist: mouse>=0.7.1
|
|
16
|
-
Requires-Dist: psutil>=6.1.
|
|
17
|
+
Requires-Dist: psutil>=6.1.1
|
|
17
18
|
Requires-Dist: pyinjector>=1.3.0
|
|
18
19
|
Requires-Dist: pymem>=1.14.0
|
|
19
20
|
Requires-Dist: pyttsx3>=2.98
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "trainerbase"
|
|
3
|
-
version = "4.
|
|
3
|
+
version = "4.3.0"
|
|
4
4
|
description = "Framework for creating game trainers/mods"
|
|
5
5
|
license = "MIT"
|
|
6
6
|
authors = [
|
|
@@ -13,7 +13,7 @@ dependencies = [
|
|
|
13
13
|
"dearpygui>=2.0.0",
|
|
14
14
|
"keyboard>=0.13.5",
|
|
15
15
|
"mouse>=0.7.1",
|
|
16
|
-
"psutil>=6.1.
|
|
16
|
+
"psutil>=6.1.1",
|
|
17
17
|
"pyinjector>=1.3.0",
|
|
18
18
|
"pymem>=1.14.0",
|
|
19
19
|
"pyttsx3>=2.98",
|
|
@@ -74,5 +74,5 @@ build-backend = "hatchling.build"
|
|
|
74
74
|
|
|
75
75
|
[dependency-groups]
|
|
76
76
|
dev = [
|
|
77
|
-
"ruff>=0.8.
|
|
77
|
+
"ruff>=0.8.6",
|
|
78
78
|
]
|
|
@@ -50,8 +50,7 @@ class HotkeyHandlerUI(AbstractUIComponent):
|
|
|
50
50
|
def add_to_ui(self) -> None:
|
|
51
51
|
match self.handler:
|
|
52
52
|
case ShortLongHotkeyPressSwitch():
|
|
53
|
-
dpg.add_text(f"Hold [{self.handler.hotkey}] Enable {self.label}")
|
|
54
|
-
dpg.add_text(f"Press [{self.handler.hotkey}] Toggle {self.label}")
|
|
53
|
+
dpg.add_text(f"Press/Hold [{self.handler.hotkey}] Toggle/Enable {self.label}")
|
|
55
54
|
case ReleaseHotkeySwitch():
|
|
56
55
|
dpg.add_text(f"[{self.handler.hotkey}] Toggle {self.label}")
|
|
57
56
|
case SimpleHotkeyHandler():
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
from functools import partial
|
|
1
2
|
from typing import override
|
|
2
3
|
|
|
3
4
|
from dearpygui import dearpygui as dpg
|
|
4
5
|
|
|
5
|
-
from trainerbase.common.keyboard import ShortLongHotkeyPressSwitch, Switchable
|
|
6
|
+
from trainerbase.common.keyboard import ShortLongHotkeyPressSwitch, SimpleHotkeyHandler, Switchable
|
|
6
7
|
from trainerbase.gui.helpers import add_components
|
|
7
8
|
from trainerbase.gui.misc import HotkeyHandlerUI
|
|
8
9
|
from trainerbase.gui.types import AbstractUIComponent
|
|
@@ -34,9 +35,15 @@ class SpeedHackUI(AbstractUIComponent):
|
|
|
34
35
|
speedhack: SpeedHack | None = None,
|
|
35
36
|
key: str = "Delete",
|
|
36
37
|
default_factor_input_value: float = 3.0,
|
|
38
|
+
next_preset_hotkey: str | None = "Shift+PageUp",
|
|
39
|
+
previous_preset_hotkey: str | None = "Shift+PageDown",
|
|
37
40
|
):
|
|
38
41
|
self.speedhack = SpeedHack() if speedhack is None else speedhack
|
|
42
|
+
|
|
39
43
|
self.key = key
|
|
44
|
+
self.next_preset_hotkey = next_preset_hotkey
|
|
45
|
+
self.previous_preset_hotkey = previous_preset_hotkey
|
|
46
|
+
|
|
40
47
|
self.default_factor_input_value = default_factor_input_value
|
|
41
48
|
self.handler = ShortLongHotkeyPressSwitch(
|
|
42
49
|
SpeedHackUISwitch(self.speedhack, self.DPG_TAG_SPEEDHACK_FACTOR_INPUT),
|
|
@@ -47,6 +54,19 @@ class SpeedHackUI(AbstractUIComponent):
|
|
|
47
54
|
def add_to_ui(self) -> None:
|
|
48
55
|
add_components(HotkeyHandlerUI(self.handler, "SpeedHack"))
|
|
49
56
|
|
|
57
|
+
if self.next_preset_hotkey is not None and self.previous_preset_hotkey is not None:
|
|
58
|
+
with dpg.group(horizontal=True):
|
|
59
|
+
add_components(
|
|
60
|
+
HotkeyHandlerUI(
|
|
61
|
+
SimpleHotkeyHandler(partial(self.change_preset, -1), self.previous_preset_hotkey),
|
|
62
|
+
"Preset -",
|
|
63
|
+
),
|
|
64
|
+
HotkeyHandlerUI(
|
|
65
|
+
SimpleHotkeyHandler(partial(self.change_preset, 1), self.next_preset_hotkey),
|
|
66
|
+
"Preset +",
|
|
67
|
+
),
|
|
68
|
+
)
|
|
69
|
+
|
|
50
70
|
dpg.add_input_double(
|
|
51
71
|
tag=self.DPG_TAG_SPEEDHACK_FACTOR_INPUT,
|
|
52
72
|
label="SpeedHack Factor",
|
|
@@ -68,6 +88,15 @@ class SpeedHackUI(AbstractUIComponent):
|
|
|
68
88
|
callback=self.on_preset_change,
|
|
69
89
|
)
|
|
70
90
|
|
|
91
|
+
def change_preset(self, diff: int):
|
|
92
|
+
new_preset_index = dpg.get_value(self.DPG_TAG_SPEEDHACK_PRESET_INPUT) + diff
|
|
93
|
+
|
|
94
|
+
if not (0 <= new_preset_index < len(self.PRESETS)):
|
|
95
|
+
return
|
|
96
|
+
|
|
97
|
+
dpg.set_value(self.DPG_TAG_SPEEDHACK_PRESET_INPUT, new_preset_index)
|
|
98
|
+
self.on_preset_change()
|
|
99
|
+
|
|
71
100
|
def on_preset_change(self):
|
|
72
101
|
new_factor = self.PRESETS[dpg.get_value(self.DPG_TAG_SPEEDHACK_PRESET_INPUT)]
|
|
73
102
|
dpg.set_value(self.DPG_TAG_SPEEDHACK_FACTOR_INPUT, new_factor)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|