trainerbase 4.9.0__tar.gz → 4.9.1__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.9.0 → trainerbase-4.9.1}/PKG-INFO +2 -2
- {trainerbase-4.9.0 → trainerbase-4.9.1}/pyproject.toml +6 -6
- {trainerbase-4.9.0 → trainerbase-4.9.1}/pyproject.toml.orig +5 -5
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/keyboard.py +3 -3
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/config.py +0 -6
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/helpers.py +1 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/speedhack.py +11 -8
- trainerbase-4.9.1/trainerbase/vendor/big_logo.png +0 -0
- trainerbase-4.9.1/trainerbase/vendor/speedhack32.dll +0 -0
- trainerbase-4.9.1/trainerbase/vendor/speedhack64.dll +0 -0
- trainerbase-4.9.1/trainerbase/vendor/trainerbase.ico +0 -0
- trainerbase-4.9.0/trainerbase/vendor/big_logo.png +0 -0
- trainerbase-4.9.0/trainerbase/vendor/speedhack32.dll +0 -0
- trainerbase-4.9.0/trainerbase/vendor/speedhack64.dll +0 -0
- trainerbase-4.9.0/trainerbase/vendor/trainerbase.ico +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/README.md +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/__init__.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/abc.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/codeinjection.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/__init__.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/abc.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/helpers.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/rainbow.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/tapper.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/teleport.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gameobject.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/__init__.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/injections.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/misc.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/objects.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/rainbow.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/scripts.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/speedhack.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/tapper.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/teleport.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/types.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/logger.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/main.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/memory.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/process.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/py.typed +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/scriptengine.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/tts.py +0 -0
- {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/vendor/FASM.EXE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: trainerbase
|
|
3
|
-
Version: 4.9.
|
|
3
|
+
Version: 4.9.1
|
|
4
4
|
Summary: Framework for creating game trainers/mods
|
|
5
5
|
Author: v01d, doomayka
|
|
6
6
|
Author-email: v01d <v01d@v01d.ru>, doomayka <doomaykaka@gmail.com>
|
|
@@ -11,7 +11,7 @@ Requires-Dist: dearpygui>=2.3.1
|
|
|
11
11
|
Requires-Dist: keyboard>=0.13.5
|
|
12
12
|
Requires-Dist: mouse>=0.7.1
|
|
13
13
|
Requires-Dist: psutil>=7.2.2
|
|
14
|
-
Requires-Dist: pydantic>=2.14.
|
|
14
|
+
Requires-Dist: pydantic>=2.14.1
|
|
15
15
|
Requires-Dist: pymem>=1.14.0
|
|
16
16
|
Requires-Dist: pyttsx3>=2.99
|
|
17
17
|
Requires-Dist: trainerbase-injector>=1.0.1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "trainerbase"
|
|
3
|
-
version = "4.9.
|
|
3
|
+
version = "4.9.1"
|
|
4
4
|
description = "Framework for creating game trainers/mods"
|
|
5
5
|
license = "MIT"
|
|
6
6
|
requires-python = ">=3.14"
|
|
@@ -10,7 +10,7 @@ dependencies = [
|
|
|
10
10
|
"keyboard>=0.13.5",
|
|
11
11
|
"mouse>=0.7.1",
|
|
12
12
|
"psutil>=7.2.2",
|
|
13
|
-
"pydantic>=2.14.
|
|
13
|
+
"pydantic>=2.14.1",
|
|
14
14
|
"pymem>=1.14.0",
|
|
15
15
|
"pyttsx3>=2.99",
|
|
16
16
|
"trainerbase-injector>=1.0.1",
|
|
@@ -66,13 +66,13 @@ lines-after-imports = 2
|
|
|
66
66
|
[tool.ruff.format]
|
|
67
67
|
line-ending = "lf"
|
|
68
68
|
|
|
69
|
-
[tool.
|
|
69
|
+
[tool.basedpyright]
|
|
70
70
|
include = ["trainerbase"]
|
|
71
71
|
typeCheckingMode = "standard"
|
|
72
72
|
pythonPlatform = "All"
|
|
73
73
|
pythonVersion = "3.14"
|
|
74
74
|
|
|
75
|
-
[[tool.
|
|
75
|
+
[[tool.basedpyright.executionEnvironments]]
|
|
76
76
|
root = "."
|
|
77
77
|
extraPaths = ["src"]
|
|
78
78
|
|
|
@@ -86,7 +86,7 @@ build-backend = "uv_build"
|
|
|
86
86
|
|
|
87
87
|
[dependency-groups]
|
|
88
88
|
dev = [
|
|
89
|
+
"basedpyright>=1.40.2",
|
|
89
90
|
"invoke>=3.0.3",
|
|
90
|
-
"
|
|
91
|
-
"ruff>=0.17.0",
|
|
91
|
+
"ruff>=0.17.1",
|
|
92
92
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "trainerbase"
|
|
3
|
-
version = "4.9.
|
|
3
|
+
version = "4.9.1"
|
|
4
4
|
description = "Framework for creating game trainers/mods"
|
|
5
5
|
license = "MIT"
|
|
6
6
|
authors = [
|
|
@@ -14,7 +14,7 @@ dependencies = [
|
|
|
14
14
|
"keyboard>=0.13.5",
|
|
15
15
|
"mouse>=0.7.1",
|
|
16
16
|
"psutil>=7.2.2",
|
|
17
|
-
"pydantic>=2.14.
|
|
17
|
+
"pydantic>=2.14.1",
|
|
18
18
|
"pymem>=1.14.0",
|
|
19
19
|
"pyttsx3>=2.99",
|
|
20
20
|
"trainerbase-injector>=1.0.1",
|
|
@@ -63,7 +63,7 @@ lines-after-imports = 2
|
|
|
63
63
|
[tool.ruff.format]
|
|
64
64
|
line-ending = "lf"
|
|
65
65
|
|
|
66
|
-
[tool.
|
|
66
|
+
[tool.basedpyright]
|
|
67
67
|
include = ["trainerbase"]
|
|
68
68
|
typeCheckingMode = "standard"
|
|
69
69
|
pythonPlatform = "All"
|
|
@@ -82,7 +82,7 @@ build-backend = "uv_build"
|
|
|
82
82
|
|
|
83
83
|
[dependency-groups]
|
|
84
84
|
dev = [
|
|
85
|
+
"basedpyright>=1.40.2",
|
|
85
86
|
"invoke>=3.0.3",
|
|
86
|
-
"
|
|
87
|
-
"ruff>=0.17.0",
|
|
87
|
+
"ruff>=0.17.1",
|
|
88
88
|
]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from collections.abc import Callable
|
|
2
|
-
from time import
|
|
2
|
+
from time import monotonic
|
|
3
3
|
from typing import override
|
|
4
4
|
|
|
5
5
|
from keyboard import add_hotkey, on_press_key, on_release_key
|
|
@@ -78,7 +78,7 @@ class ShortLongHotkeyPressSwitch(AbstractKeyboardHandler):
|
|
|
78
78
|
|
|
79
79
|
def _on_press(self, _):
|
|
80
80
|
if self._press_timestamp is None:
|
|
81
|
-
self._press_timestamp =
|
|
81
|
+
self._press_timestamp = monotonic()
|
|
82
82
|
self.on_press()
|
|
83
83
|
|
|
84
84
|
def _on_release(self, _):
|
|
@@ -93,7 +93,7 @@ class ShortLongHotkeyPressSwitch(AbstractKeyboardHandler):
|
|
|
93
93
|
if self._press_timestamp is None:
|
|
94
94
|
return 0
|
|
95
95
|
|
|
96
|
-
return
|
|
96
|
+
return monotonic() - self._press_timestamp
|
|
97
97
|
|
|
98
98
|
def _is_short_delta(self):
|
|
99
99
|
return self._get_press_delta() <= self._short_press_max_delta
|
|
@@ -19,14 +19,8 @@ class Process(BaseModel):
|
|
|
19
19
|
ignore_case: bool = False
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
class SpeedhackConfig(BaseModel):
|
|
23
|
-
offset_x64: int = 0x47098
|
|
24
|
-
offset_x32: int = 0x40058
|
|
25
|
-
|
|
26
|
-
|
|
27
22
|
class Vendor(BaseModel):
|
|
28
23
|
extra_search_paths: list[Path] | None = None
|
|
29
|
-
speedhack: SpeedhackConfig = SpeedhackConfig()
|
|
30
24
|
|
|
31
25
|
@property
|
|
32
26
|
def folder(self) -> Path:
|
|
@@ -7,15 +7,13 @@ from trainerbase_injector import inject
|
|
|
7
7
|
|
|
8
8
|
from trainerbase.config import config
|
|
9
9
|
from trainerbase.gameobject import GameDouble
|
|
10
|
-
from trainerbase.memory import ARCH,
|
|
10
|
+
from trainerbase.memory import ARCH, AOBScan
|
|
11
11
|
from trainerbase.process import pm
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
SPEEDHACK_DLL_MODULE_NAME: Final[str] = f"speedhack{ARCH}.dll"
|
|
15
15
|
SPEEDHACK_DLL_PATH: Final[Path] = config.vendor.folder / SPEEDHACK_DLL_MODULE_NAME
|
|
16
|
-
|
|
17
|
-
config.vendor.speedhack.offset_x32 if ARCH == 32 else config.vendor.speedhack.offset_x64
|
|
18
|
-
)
|
|
16
|
+
SPEED_MODIFIER_ANCHOR: Final[bytes] = b"trainerbase__speedhackrs__anchor"
|
|
19
17
|
|
|
20
18
|
|
|
21
19
|
class SpeedHack:
|
|
@@ -28,14 +26,19 @@ class SpeedHack:
|
|
|
28
26
|
return cls._instance
|
|
29
27
|
|
|
30
28
|
def __init__(self):
|
|
31
|
-
self.
|
|
32
|
-
self._speed_modifier = GameDouble(
|
|
29
|
+
self._inject()
|
|
30
|
+
self._speed_modifier = GameDouble(
|
|
31
|
+
AOBScan(
|
|
32
|
+
SPEED_MODIFIER_ANCHOR,
|
|
33
|
+
add=len(SPEED_MODIFIER_ANCHOR),
|
|
34
|
+
module_name=SPEEDHACK_DLL_MODULE_NAME,
|
|
35
|
+
),
|
|
36
|
+
)
|
|
33
37
|
|
|
34
38
|
self.factor = 1.0
|
|
35
39
|
|
|
36
|
-
def _inject(self)
|
|
40
|
+
def _inject(self):
|
|
37
41
|
inject(cast(int, pm.process_id), str(SPEEDHACK_DLL_PATH))
|
|
38
|
-
return get_module_address(SPEEDHACK_DLL_MODULE_NAME)
|
|
39
42
|
|
|
40
43
|
@property
|
|
41
44
|
def factor(self):
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
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
|