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.
Files changed (44) hide show
  1. {trainerbase-4.9.0 → trainerbase-4.9.1}/PKG-INFO +2 -2
  2. {trainerbase-4.9.0 → trainerbase-4.9.1}/pyproject.toml +6 -6
  3. {trainerbase-4.9.0 → trainerbase-4.9.1}/pyproject.toml.orig +5 -5
  4. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/keyboard.py +3 -3
  5. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/config.py +0 -6
  6. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/helpers.py +1 -0
  7. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/speedhack.py +11 -8
  8. trainerbase-4.9.1/trainerbase/vendor/big_logo.png +0 -0
  9. trainerbase-4.9.1/trainerbase/vendor/speedhack32.dll +0 -0
  10. trainerbase-4.9.1/trainerbase/vendor/speedhack64.dll +0 -0
  11. trainerbase-4.9.1/trainerbase/vendor/trainerbase.ico +0 -0
  12. trainerbase-4.9.0/trainerbase/vendor/big_logo.png +0 -0
  13. trainerbase-4.9.0/trainerbase/vendor/speedhack32.dll +0 -0
  14. trainerbase-4.9.0/trainerbase/vendor/speedhack64.dll +0 -0
  15. trainerbase-4.9.0/trainerbase/vendor/trainerbase.ico +0 -0
  16. {trainerbase-4.9.0 → trainerbase-4.9.1}/README.md +0 -0
  17. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/__init__.py +0 -0
  18. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/abc.py +0 -0
  19. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/codeinjection.py +0 -0
  20. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/__init__.py +0 -0
  21. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/abc.py +0 -0
  22. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/helpers.py +0 -0
  23. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/rainbow.py +0 -0
  24. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/tapper.py +0 -0
  25. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/common/teleport.py +0 -0
  26. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gameobject.py +0 -0
  27. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/__init__.py +0 -0
  28. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/injections.py +0 -0
  29. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/misc.py +0 -0
  30. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/objects.py +0 -0
  31. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/rainbow.py +0 -0
  32. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/scripts.py +0 -0
  33. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/speedhack.py +0 -0
  34. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/tapper.py +0 -0
  35. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/teleport.py +0 -0
  36. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/gui/types.py +0 -0
  37. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/logger.py +0 -0
  38. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/main.py +0 -0
  39. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/memory.py +0 -0
  40. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/process.py +0 -0
  41. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/py.typed +0 -0
  42. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/scriptengine.py +0 -0
  43. {trainerbase-4.9.0 → trainerbase-4.9.1}/trainerbase/tts.py +0 -0
  44. {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.0
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.0
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.0"
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.0",
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.pyright]
69
+ [tool.basedpyright]
70
70
  include = ["trainerbase"]
71
71
  typeCheckingMode = "standard"
72
72
  pythonPlatform = "All"
73
73
  pythonVersion = "3.14"
74
74
 
75
- [[tool.pyright.executionEnvironments]]
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
- "pyright>=1.1.414",
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.0"
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.0",
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.pyright]
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
- "pyright>=1.1.414",
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 time
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 = time()
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 time() - self._press_timestamp
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:
@@ -37,6 +37,7 @@ def simple_trainerbase_menu(
37
37
  height=height,
38
38
  resizable=False,
39
39
  small_icon=ICON_PATH,
40
+ large_icon=ICON_PATH,
40
41
  )
41
42
  dpg.setup_dearpygui()
42
43
 
@@ -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, get_module_address
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
- SPEED_MODIFIER_OFFSET: Final[int] = (
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._dll_injection_address = self._inject()
32
- self._speed_modifier = GameDouble(self._dll_injection_address + SPEED_MODIFIER_OFFSET)
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) -> int:
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):
File without changes