trainerbase 4.3.0__tar.gz → 4.4.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.
Files changed (39) hide show
  1. {trainerbase-4.3.0 → trainerbase-4.4.0}/PKG-INFO +1 -2
  2. {trainerbase-4.3.0 → trainerbase-4.4.0}/pyproject.toml +1 -2
  3. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gameobject.py +1 -7
  4. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/misc.py +65 -1
  5. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/scriptengine.py +1 -1
  6. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/speedhack.py +2 -7
  7. {trainerbase-4.3.0 → trainerbase-4.4.0}/.gitignore +0 -0
  8. {trainerbase-4.3.0 → trainerbase-4.4.0}/LICENSE +0 -0
  9. {trainerbase-4.3.0 → trainerbase-4.4.0}/README.md +0 -0
  10. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/__init__.py +0 -0
  11. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/abc.py +0 -0
  12. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/codeinjection.py +0 -0
  13. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/__init__.py +0 -0
  14. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/abc.py +0 -0
  15. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/helpers.py +0 -0
  16. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/keyboard.py +0 -0
  17. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/rainbow.py +0 -0
  18. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/tapper.py +0 -0
  19. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/teleport.py +0 -0
  20. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/config.py +0 -0
  21. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/__init__.py +0 -0
  22. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/helpers.py +0 -0
  23. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/injections.py +0 -0
  24. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/objects.py +0 -0
  25. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/rainbow.py +0 -0
  26. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/scripts.py +0 -0
  27. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/speedhack.py +0 -0
  28. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/tapper.py +0 -0
  29. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/teleport.py +0 -0
  30. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/types.py +0 -0
  31. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/logger.py +0 -0
  32. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/main.py +0 -0
  33. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/memory.py +0 -0
  34. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/process.py +0 -0
  35. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/py.typed +0 -0
  36. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/tts.py +0 -0
  37. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase_vendor/FASM.EXE +0 -0
  38. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase_vendor/speedhack32.dll +0 -0
  39. {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase_vendor/speedhack64.dll +0 -0
@@ -1,13 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trainerbase
3
- Version: 4.3.0
3
+ Version: 4.4.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
8
  License-Expression: MIT
9
9
  License-File: LICENSE
10
- Classifier: Programming Language :: Python :: 3.12
11
10
  Classifier: Programming Language :: Python :: 3.13
12
11
  Classifier: Programming Language :: Python :: Implementation :: CPython
13
12
  Requires-Python: >=3.13
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "trainerbase"
3
- version = "4.3.0"
3
+ version = "4.4.0"
4
4
  description = "Framework for creating game trainers/mods"
5
5
  license = "MIT"
6
6
  authors = [
@@ -21,7 +21,6 @@ dependencies = [
21
21
 
22
22
  classifiers = [
23
23
  "Programming Language :: Python :: Implementation :: CPython",
24
- "Programming Language :: Python :: 3.12",
25
24
  "Programming Language :: Python :: 3.13",
26
25
  ]
27
26
 
@@ -52,13 +52,7 @@ class GameObject[PymemType, TrainerBaseType](AbstractReadableObject[TrainerBaseT
52
52
  self.value_range = value_range
53
53
 
54
54
  def __repr__(self):
55
- return (
56
- f"<{self.__class__.__name__}"
57
- f" at {hex(self.address.resolve())}:"
58
- f" value={self.value},"
59
- f" frozen={self.frozen}"
60
- ">"
61
- )
55
+ return f"<{self.__class__.__name__} at {hex(self.address.resolve())}: value={self.value}, frozen={self.frozen}>"
62
56
 
63
57
  def after_read(self, value: PymemType) -> TrainerBaseType:
64
58
  return cast(TrainerBaseType, value)
@@ -1,14 +1,18 @@
1
1
  from collections.abc import Callable
2
- from typing import override
2
+ from typing import Any, override
3
3
 
4
4
  from dearpygui import dearpygui as dpg
5
5
 
6
6
  from trainerbase.common.keyboard import (
7
7
  AbstractKeyboardHandler,
8
+ GameBoolReleaseHotkeySwitch,
8
9
  ReleaseHotkeySwitch,
9
10
  ShortLongHotkeyPressSwitch,
10
11
  SimpleHotkeyHandler,
11
12
  )
13
+ from trainerbase.gameobject import GameBool
14
+ from trainerbase.gui.helpers import add_components
15
+ from trainerbase.gui.objects import GameObjectUI
12
16
  from trainerbase.gui.types import AbstractUIComponent
13
17
 
14
18
 
@@ -77,3 +81,63 @@ class HotkeyHandlerUI(AbstractUIComponent):
77
81
  callable_object()
78
82
 
79
83
  return callback_with_dunder_code
84
+
85
+
86
+ class HorizontalUI(AbstractUIComponent):
87
+ def __init__(self, *components: AbstractUIComponent):
88
+ self.components = components
89
+
90
+ @override
91
+ def add_to_ui(self) -> None:
92
+ with dpg.group(horizontal=True):
93
+ add_components(*self.components)
94
+
95
+ return super().add_to_ui()
96
+
97
+
98
+ class SwitchableGameBoolUI(AbstractUIComponent):
99
+ def __init__(
100
+ self,
101
+ gameobject: GameBool,
102
+ toggle_hotkey: str,
103
+ label: str,
104
+ freeze_hotkey: str | None = None,
105
+ set_hotkey: str | None = None,
106
+ *,
107
+ default_setter_input_value: Any = 0,
108
+ before_set: Callable | None = None,
109
+ tts_on_hotkey: bool = True,
110
+ setter_input_width: int = 220,
111
+ toggle_text: str = "Toggle",
112
+ ):
113
+ self.gameobject = gameobject
114
+ self.toggle_hotkey = toggle_hotkey
115
+ self.toggle_text = toggle_text
116
+
117
+ self.pure_label = label
118
+ self.freeze_hotkey = freeze_hotkey
119
+ self.set_hotkey = set_hotkey
120
+ self.default_setter_input_value = default_setter_input_value
121
+ self.before_set = before_set
122
+ self.tts_on_hotkey = tts_on_hotkey
123
+ self.setter_input_width = setter_input_width
124
+
125
+ @override
126
+ def add_to_ui(self) -> None:
127
+ add_components(
128
+ HorizontalUI(
129
+ HotkeyHandlerUI(GameBoolReleaseHotkeySwitch(self.gameobject, self.toggle_hotkey), self.toggle_text),
130
+ GameObjectUI(
131
+ self.gameobject,
132
+ self.pure_label,
133
+ self.freeze_hotkey,
134
+ self.set_hotkey,
135
+ default_setter_input_value=self.default_setter_input_value,
136
+ before_set=self.before_set,
137
+ tts_on_hotkey=self.tts_on_hotkey,
138
+ setter_input_width=self.setter_input_width,
139
+ ),
140
+ )
141
+ )
142
+
143
+ return super().add_to_ui()
@@ -36,7 +36,7 @@ class SimpleScript(AbstractBaseScript):
36
36
  self.enabled = enabled
37
37
 
38
38
  def __repr__(self):
39
- return f"<Script {getattr(self._callback, "__name__", "Anon function-based script")}: enabled={self.enabled}>"
39
+ return f"<Script {getattr(self._callback, '__name__', 'Anon function-based script')}: enabled={self.enabled}>"
40
40
 
41
41
  @override
42
42
  def __call__(self):
@@ -4,11 +4,9 @@ from typing import Final, Self, cast
4
4
 
5
5
  from pyinjector import inject
6
6
  from pymem.exception import MemoryWriteError
7
- from pymem.process import module_from_name
8
- from pymem.ressources.structure import MODULEINFO
9
7
 
10
8
  from trainerbase.gameobject import GameDouble
11
- from trainerbase.memory import ARCH
9
+ from trainerbase.memory import ARCH, get_module_address
12
10
  from trainerbase.process import pm
13
11
 
14
12
 
@@ -36,10 +34,7 @@ class SpeedHack:
36
34
 
37
35
  def _inject(self) -> int:
38
36
  inject(cast(int, pm.process_id), str(SPEEDHACK_DLL_PATH))
39
-
40
- speedhack_address = cast(MODULEINFO, module_from_name(pm.process_handle, SPEEDHACK_DLL_MODULE_NAME)).lpBaseOfDll
41
-
42
- return speedhack_address
37
+ return get_module_address(SPEEDHACK_DLL_MODULE_NAME)
43
38
 
44
39
  @property
45
40
  def factor(self):
File without changes
File without changes
File without changes