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.
- {trainerbase-4.3.0 → trainerbase-4.4.0}/PKG-INFO +1 -2
- {trainerbase-4.3.0 → trainerbase-4.4.0}/pyproject.toml +1 -2
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gameobject.py +1 -7
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/misc.py +65 -1
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/scriptengine.py +1 -1
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/speedhack.py +2 -7
- {trainerbase-4.3.0 → trainerbase-4.4.0}/.gitignore +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/LICENSE +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/README.md +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/__init__.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/abc.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/codeinjection.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/__init__.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/abc.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/helpers.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/keyboard.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/rainbow.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/tapper.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/common/teleport.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/config.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/__init__.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/helpers.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/injections.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/objects.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/rainbow.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/scripts.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/speedhack.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/tapper.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/teleport.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/gui/types.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/logger.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/main.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/memory.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/process.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/py.typed +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase/tts.py +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase_vendor/FASM.EXE +0 -0
- {trainerbase-4.3.0 → trainerbase-4.4.0}/trainerbase_vendor/speedhack32.dll +0 -0
- {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
|
+
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
|
+
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,
|
|
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
|
|
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
|
|
File without changes
|