trainerbase 3.8.2__tar.gz → 3.10.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 (31) hide show
  1. {trainerbase-3.8.2 → trainerbase-3.10.0}/PKG-INFO +1 -1
  2. {trainerbase-3.8.2 → trainerbase-3.10.0}/pyproject.toml +1 -1
  3. trainerbase-3.10.0/trainerbase/common/__init__.py +0 -0
  4. trainerbase-3.10.0/trainerbase/common/abc.py +22 -0
  5. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/common/keyboard.py +23 -21
  6. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gameobject.py +10 -1
  7. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gui/misc.py +11 -1
  8. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gui/objects.py +18 -8
  9. trainerbase-3.8.2/trainerbase/common/__init__.py +0 -3
  10. {trainerbase-3.8.2 → trainerbase-3.10.0}/LICENSE +0 -0
  11. {trainerbase-3.8.2 → trainerbase-3.10.0}/README.rst +0 -0
  12. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/__init__.py +0 -0
  13. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/codeinjection.py +0 -0
  14. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/common/helpers.py +0 -0
  15. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/common/teleport.py +0 -0
  16. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/config.py +0 -0
  17. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gui/__init__.py +0 -0
  18. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gui/helpers.py +0 -0
  19. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gui/injections.py +0 -0
  20. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gui/scripts.py +0 -0
  21. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gui/speedhack.py +0 -0
  22. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gui/teleport.py +0 -0
  23. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/gui/types.py +0 -0
  24. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/main.py +0 -0
  25. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/memory.py +0 -0
  26. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/scriptengine.py +0 -0
  27. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/speedhack.py +0 -0
  28. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase/tts.py +0 -0
  29. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase_vendor/FASM.EXE +0 -0
  30. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase_vendor/speedhack32.dll +0 -0
  31. {trainerbase-3.8.2 → trainerbase-3.10.0}/trainerbase_vendor/speedhack64.dll +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: trainerbase
3
- Version: 3.8.2
3
+ Version: 3.10.0
4
4
  Summary: Framework for creating game trainers/mods
5
5
  Home-page: https://gitlab.com/python-trainers/trainer-base
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "trainerbase"
3
- version = "3.8.2"
3
+ version = "3.10.0"
4
4
  description = "Framework for creating game trainers/mods"
5
5
  authors = ["v01d <v01d@v01d.ru>", "doomayka <zd@doomayka.ru>"]
6
6
  license = "MIT"
File without changes
@@ -0,0 +1,22 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+
4
+ class Switchable(ABC):
5
+ @abstractmethod
6
+ def enable(self):
7
+ pass
8
+
9
+ @abstractmethod
10
+ def disable(self):
11
+ pass
12
+
13
+
14
+ class AbstractKeyboardHandler(ABC):
15
+ @property
16
+ @abstractmethod
17
+ def hotkey(self) -> str:
18
+ pass
19
+
20
+ @abstractmethod
21
+ def handle(self):
22
+ pass
@@ -1,19 +1,11 @@
1
- from abc import ABC, abstractmethod
2
1
  from collections.abc import Callable
3
2
  from time import time
4
3
  from typing import override
5
4
 
6
5
  from keyboard import add_hotkey, on_press_key, on_release_key
7
6
 
8
-
9
- class Switchable(ABC):
10
- @abstractmethod
11
- def enable(self):
12
- pass
13
-
14
- @abstractmethod
15
- def disable(self):
16
- pass
7
+ from trainerbase.common.abc import AbstractKeyboardHandler, Switchable
8
+ from trainerbase.gameobject import GameBool
17
9
 
18
10
 
19
11
  class SimpleSwitchable(Switchable):
@@ -30,17 +22,6 @@ class SimpleSwitchable(Switchable):
30
22
  self._on_disabled()
31
23
 
32
24
 
33
- class AbstractKeyboardHandler(ABC):
34
- @property
35
- @abstractmethod
36
- def hotkey(self) -> str:
37
- pass
38
-
39
- @abstractmethod
40
- def handle(self):
41
- pass
42
-
43
-
44
25
  class SimpleHotkeyHandler(AbstractKeyboardHandler):
45
26
  def __init__(self, callback: Callable[[], None], hotkey: str):
46
27
  self._callback = callback
@@ -80,6 +61,27 @@ class ReleaseHotkeySwitch(AbstractKeyboardHandler):
80
61
  on_release_key(self._key, self._on_release)
81
62
 
82
63
 
64
+ class GameBoolReleaseHotkeySwitch(AbstractKeyboardHandler):
65
+ def __init__(self, game_bool: GameBool, key: str):
66
+ self._key = key
67
+ self._game_bool = game_bool
68
+
69
+ def _on_release(self, _):
70
+ if self._game_bool.value:
71
+ self._game_bool.disable()
72
+ else:
73
+ self._game_bool.enable()
74
+
75
+ @property
76
+ @override
77
+ def hotkey(self):
78
+ return self._key
79
+
80
+ @override
81
+ def handle(self):
82
+ on_release_key(self._key, self._on_release)
83
+
84
+
83
85
  class ShortLongHotkeyPressSwitch(AbstractKeyboardHandler):
84
86
  def __init__(self, switchable: Switchable, key: str, short_press_max_delta: float = 0.3):
85
87
  self._key = key
@@ -3,6 +3,7 @@ from typing import Self, override
3
3
 
4
4
  from pymem.exception import MemoryWriteError
5
5
 
6
+ from trainerbase.common.abc import Switchable
6
7
  from trainerbase.memory import ConvertibleToAddress, ensure_address, pm
7
8
 
8
9
 
@@ -167,12 +168,20 @@ class GameUnsignedLongLong(GameObject[int, int]):
167
168
  pm_write = pm.write_ulonglong
168
169
 
169
170
 
170
- class GameBool(GameObject[bool, bool]):
171
+ class GameBool(GameObject[bool, bool], Switchable):
171
172
  value_range: tuple[bool, bool] = (False, True)
172
173
 
173
174
  pm_read = pm.read_bool # type: ignore
174
175
  pm_write = pm.write_bool
175
176
 
177
+ @override
178
+ def enable(self):
179
+ self.value = True # pylint: disable=attribute-defined-outside-init
180
+
181
+ @override
182
+ def disable(self):
183
+ self.value = False # pylint: disable=attribute-defined-outside-init
184
+
176
185
 
177
186
  class ReadonlyGameObjectSumGetter(AbstractReadableObject[int | float]):
178
187
  def __init__(self, *game_numbers: GameInt | GameFloat):
@@ -8,13 +8,23 @@ from trainerbase.gui.types import AbstractUIComponent
8
8
 
9
9
 
10
10
  class SeparatorUI(AbstractUIComponent):
11
+ def __init__(self, empty_lines_before: int = 1, empty_lines_after: int = 0):
12
+ self._empty_lines_before = empty_lines_before
13
+ self._empty_lines_after = empty_lines_after
14
+
11
15
  @override
12
16
  def add_to_ui(self) -> None:
17
+ for _ in range(self._empty_lines_before):
18
+ dpg.add_text()
19
+
13
20
  dpg.add_separator()
14
21
 
22
+ for _ in range(self._empty_lines_after):
23
+ dpg.add_text()
24
+
15
25
 
16
26
  class TextUI(AbstractUIComponent):
17
- def __init__(self, text: str):
27
+ def __init__(self, text: str = ""):
18
28
  self.text = text
19
29
 
20
30
  @override
@@ -35,19 +35,21 @@ class GameObjectUI(AbstractUIComponent):
35
35
  self,
36
36
  gameobject: GameObject,
37
37
  label: str,
38
- hotkey: str | None = None,
38
+ freeze_hotkey: str | None = None,
39
+ set_hotkey: str | None = None,
39
40
  default_setter_input_value: Any = 0,
40
41
  before_set: Callable | None = None,
41
42
  tts_on_hotkey: bool = True,
42
43
  setter_input_width: int = 220,
43
44
  ):
44
45
  if not gameobject.is_tracked:
45
- hotkey = None
46
+ freeze_hotkey = None
46
47
 
47
48
  self.gameobject = gameobject
48
49
  self.pure_label = label
49
- self.label_with_hotkey = label if hotkey is None else f"[{hotkey}] {label}"
50
- self.hotkey = hotkey
50
+ self.label_with_hotkey = label if freeze_hotkey is None else f"[{freeze_hotkey}] {label}"
51
+ self.freeze_hotkey = freeze_hotkey
52
+ self.set_hotkey = set_hotkey
51
53
  self.default_setter_input_value = default_setter_input_value
52
54
  self.before_set = before_set
53
55
  self.tts_on_hotkey = tts_on_hotkey
@@ -60,8 +62,11 @@ class GameObjectUI(AbstractUIComponent):
60
62
 
61
63
  @override
62
64
  def add_to_ui(self) -> None:
63
- if self.hotkey is not None:
64
- add_hotkey(self.hotkey, self.on_hotkey_press)
65
+ if self.freeze_hotkey is not None:
66
+ add_hotkey(self.freeze_hotkey, self.on_freeze_hotkey_press)
67
+
68
+ if self.set_hotkey is not None:
69
+ add_hotkey(self.set_hotkey, self.on_value_set)
65
70
 
66
71
  with dpg.group(horizontal=True):
67
72
  if self.gameobject.is_tracked:
@@ -72,7 +77,12 @@ class GameObjectUI(AbstractUIComponent):
72
77
 
73
78
  self.add_setter_input()
74
79
 
75
- dpg.add_button(label="Set", callback=self.on_value_set)
80
+ if self.set_hotkey is None:
81
+ setter_button_text = "Set"
82
+ else:
83
+ setter_button_text = f"[{self.set_hotkey}] Set"
84
+
85
+ dpg.add_button(label=setter_button_text, callback=self.on_value_set)
76
86
 
77
87
  GameObjectUI.displayed_objects.append(self)
78
88
 
@@ -141,7 +151,7 @@ class GameObjectUI(AbstractUIComponent):
141
151
  else:
142
152
  self.gameobject.frozen = new_value
143
153
 
144
- def on_hotkey_press(self):
154
+ def on_freeze_hotkey_press(self):
145
155
  dpg.set_value(self.dpg_tag_frozen, not dpg.get_value(self.dpg_tag_frozen))
146
156
 
147
157
  self.on_frozen_state_change()
@@ -1,3 +0,0 @@
1
- from .helpers import *
2
- from .keyboard import *
3
- from .teleport import *
File without changes
File without changes