trainerbase 4.6.5__tar.gz → 4.7.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.6.5 → trainerbase-4.7.0}/PKG-INFO +2 -2
  2. {trainerbase-4.6.5 → trainerbase-4.7.0}/pyproject.toml +2 -2
  3. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/objects.py +23 -2
  4. {trainerbase-4.6.5 → trainerbase-4.7.0}/README.md +0 -0
  5. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/__init__.py +0 -0
  6. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/abc.py +0 -0
  7. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/codeinjection.py +0 -0
  8. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/common/__init__.py +0 -0
  9. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/common/abc.py +0 -0
  10. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/common/helpers.py +0 -0
  11. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/common/keyboard.py +0 -0
  12. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/common/rainbow.py +0 -0
  13. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/common/tapper.py +0 -0
  14. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/common/teleport.py +0 -0
  15. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/config.py +0 -0
  16. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gameobject.py +0 -0
  17. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/__init__.py +0 -0
  18. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/helpers.py +0 -0
  19. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/injections.py +0 -0
  20. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/misc.py +0 -0
  21. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/rainbow.py +0 -0
  22. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/scripts.py +0 -0
  23. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/speedhack.py +0 -0
  24. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/tapper.py +0 -0
  25. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/teleport.py +0 -0
  26. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/gui/types.py +0 -0
  27. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/logger.py +0 -0
  28. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/main.py +0 -0
  29. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/memory.py +0 -0
  30. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/process.py +0 -0
  31. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/py.typed +0 -0
  32. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/scriptengine.py +0 -0
  33. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/speedhack.py +0 -0
  34. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/tts.py +0 -0
  35. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/vendor/FASM.EXE +0 -0
  36. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/vendor/big_logo.png +0 -0
  37. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/vendor/speedhack32.dll +0 -0
  38. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/vendor/speedhack64.dll +0 -0
  39. {trainerbase-4.6.5 → trainerbase-4.7.0}/trainerbase/vendor/trainerbase.ico +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trainerbase
3
- Version: 4.6.5
3
+ Version: 4.7.0
4
4
  Summary: Framework for creating game trainers/mods
5
5
  Author: v01d, doomayka
6
- Author-email: v01d <v01d@v01d.ru>, doomayka <zd@doomayka.ru>
6
+ Author-email: v01d <v01d@v01d.ru>, doomayka <doomaykaka@gmail.com>
7
7
  License-Expression: MIT
8
8
  Classifier: Programming Language :: Python :: Implementation :: CPython
9
9
  Classifier: Programming Language :: Python :: 3.14
@@ -1,11 +1,11 @@
1
1
  [project]
2
2
  name = "trainerbase"
3
- version = "4.6.5"
3
+ version = "4.7.0"
4
4
  description = "Framework for creating game trainers/mods"
5
5
  license = "MIT"
6
6
  authors = [
7
7
  { name = "v01d", email = "v01d@v01d.ru" },
8
- { name = "doomayka", email = "zd@doomayka.ru" },
8
+ { name = "doomayka", email = "doomaykaka@gmail.com" },
9
9
  ]
10
10
  requires-python = ">=3.14"
11
11
  readme = "README.md"
@@ -1,5 +1,6 @@
1
1
  from collections.abc import Callable
2
2
  from contextlib import suppress
3
+ from enum import Enum
3
4
  from typing import Any, ClassVar, Self, override
4
5
  from uuid import uuid4
5
6
 
@@ -43,6 +44,7 @@ class GameObjectUI(AbstractUIComponent):
43
44
  before_set: Callable | None = None,
44
45
  tts_on_hotkey: bool = True,
45
46
  setter_input_width: int = 220,
47
+ enum: type[Enum] | None = None,
46
48
  ):
47
49
  if not gameobject.is_tracked:
48
50
  freeze_hotkey = None
@@ -56,6 +58,7 @@ class GameObjectUI(AbstractUIComponent):
56
58
  self.before_set = before_set
57
59
  self.tts_on_hotkey = tts_on_hotkey
58
60
  self.setter_input_width = setter_input_width
61
+ self.enum = enum
59
62
 
60
63
  dpg_tag = f"{self.DPG_TAG_PREFIX}{uuid4()}"
61
64
  self.dpg_tag_frozen = f"{dpg_tag}{self.DPG_TAG_POSTFIX_IS_FROZEN}"
@@ -89,9 +92,15 @@ class GameObjectUI(AbstractUIComponent):
89
92
  default_kwargs = {
90
93
  "tag": self.dpg_tag_setter,
91
94
  "width": self.setter_input_width,
92
- "default_value": self.default_setter_input_value,
95
+ "default_value": self.default_setter_input_value.name
96
+ if isinstance(self.default_setter_input_value, Enum)
97
+ else self.default_setter_input_value,
93
98
  }
94
99
 
100
+ if self.enum is not None:
101
+ dpg.add_combo(list(self.enum.__members__.keys()), **default_kwargs)
102
+ return
103
+
95
104
  if self.gameobject.value_range is not None:
96
105
  min_value, max_value = self.gameobject.value_range
97
106
  default_kwargs["min_clamped"] = True
@@ -141,7 +150,12 @@ class GameObjectUI(AbstractUIComponent):
141
150
 
142
151
  def on_value_set(self):
143
152
  raw_new_value = dpg.get_value(self.dpg_tag_setter)
153
+ if self.enum is not None:
154
+ raw_new_value = self.enum[raw_new_value]
155
+
144
156
  new_value = raw_new_value if self.before_set is None else self.before_set(raw_new_value)
157
+ if isinstance(new_value, Enum):
158
+ new_value = new_value.value
145
159
 
146
160
  if self.gameobject.frozen is None:
147
161
  with suppress(MemoryWriteError, ValueError):
@@ -164,6 +178,13 @@ def update_displayed_objects():
164
178
  try:
165
179
  new_value = game_object_ui.gameobject.value
166
180
  except MemoryReadError:
167
- new_value = "<Unresolved>"
181
+ dpg.set_value(game_object_ui.dpg_tag_getter, "<Unresolved>")
182
+ continue
183
+
184
+ if game_object_ui.enum is not None:
185
+ try:
186
+ new_value = game_object_ui.enum(new_value).name
187
+ except ValueError:
188
+ new_value = "<InvalidEnumValue>"
168
189
 
169
190
  dpg.set_value(game_object_ui.dpg_tag_getter, new_value)
File without changes