trainerbase 4.2.0__tar.gz → 4.2.2__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.2.0 → trainerbase-4.2.2}/PKG-INFO +2 -3
- {trainerbase-4.2.0 → trainerbase-4.2.2}/pyproject.toml +2 -2
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/codeinjection.py +2 -1
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/helpers.py +2 -1
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gameobject.py +3 -2
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/objects.py +3 -2
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/memory.py +1 -1
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/process.py +3 -3
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/speedhack.py +2 -1
- {trainerbase-4.2.0 → trainerbase-4.2.2}/.gitignore +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/LICENSE +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/README.md +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/__init__.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/abc.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/__init__.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/abc.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/keyboard.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/rainbow.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/tapper.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/teleport.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/config.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/__init__.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/helpers.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/injections.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/misc.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/rainbow.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/scripts.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/speedhack.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/tapper.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/teleport.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/types.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/logger.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/main.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/py.typed +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/scriptengine.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/tts.py +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase_vendor/FASM.EXE +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase_vendor/speedhack32.dll +0 -0
- {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase_vendor/speedhack64.dll +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: trainerbase
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.2
|
|
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
|
-
License
|
|
9
|
-
License-File: LICENSE
|
|
8
|
+
License: MIT
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.12
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.13
|
|
12
11
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "trainerbase"
|
|
3
|
-
version = "4.2.
|
|
3
|
+
version = "4.2.2"
|
|
4
4
|
description = "Framework for creating game trainers/mods"
|
|
5
5
|
license = "MIT"
|
|
6
6
|
authors = [
|
|
@@ -74,5 +74,5 @@ build-backend = "hatchling.build"
|
|
|
74
74
|
|
|
75
75
|
[dependency-groups]
|
|
76
76
|
dev = [
|
|
77
|
-
"ruff>=0.7.
|
|
77
|
+
"ruff>=0.7.4",
|
|
78
78
|
]
|
|
@@ -8,7 +8,8 @@ from typing import ClassVar, Final, Self, override
|
|
|
8
8
|
|
|
9
9
|
from pymem.exception import MemoryWriteError
|
|
10
10
|
|
|
11
|
-
from trainerbase.memory import ARCH, ConvertibleToAddress, allocate, ensure_address
|
|
11
|
+
from trainerbase.memory import ARCH, ConvertibleToAddress, allocate, ensure_address
|
|
12
|
+
from trainerbase.process import pm
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
FASM_EXECUTABLE_PATH: Final[Path] = Path(__file__).resolve().parent.parent / "trainerbase_vendor" / "FASM.EXE"
|
|
@@ -7,7 +7,8 @@ from uuid import uuid4
|
|
|
7
7
|
from pymem.exception import MemoryReadError, MemoryWriteError
|
|
8
8
|
|
|
9
9
|
from trainerbase.gameobject import AbstractReadableObject, GameObject
|
|
10
|
-
from trainerbase.memory import POINTER_SIZE, Address, allocate
|
|
10
|
+
from trainerbase.memory import POINTER_SIZE, Address, allocate
|
|
11
|
+
from trainerbase.process import pm
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
type Number = int | float
|
|
@@ -7,7 +7,8 @@ from typing import ClassVar, Self, cast, override
|
|
|
7
7
|
from pymem.exception import MemoryWriteError
|
|
8
8
|
|
|
9
9
|
from trainerbase.abc import Switchable
|
|
10
|
-
from trainerbase.memory import ConvertibleToAddress, ensure_address
|
|
10
|
+
from trainerbase.memory import ConvertibleToAddress, ensure_address
|
|
11
|
+
from trainerbase.process import pm
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class AbstractReadableObject[T](ABC):
|
|
@@ -19,7 +20,7 @@ class AbstractReadableObject[T](ABC):
|
|
|
19
20
|
|
|
20
21
|
class GameObject[PymemType, TrainerBaseType](AbstractReadableObject[TrainerBaseType]):
|
|
21
22
|
tracked_objects: ClassVar[list[Self]] = []
|
|
22
|
-
value_range: tuple[TrainerBaseType, TrainerBaseType]
|
|
23
|
+
value_range: tuple[TrainerBaseType, TrainerBaseType] | None = None
|
|
23
24
|
ctype_size: int
|
|
24
25
|
|
|
25
26
|
@staticmethod
|
|
@@ -116,8 +116,9 @@ class GameObjectUI(AbstractUIComponent):
|
|
|
116
116
|
# There is no input for integers that are not simple `signed long int`.
|
|
117
117
|
# TODO: Use better input component if it's already added to dpg. Remove this crutch.
|
|
118
118
|
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
assert GameInt.value_range is not None, "GameInt must have value_range"
|
|
120
|
+
min_value = default_kwargs.pop("min_value", GameInt.value_range[0])
|
|
121
|
+
max_value = default_kwargs.pop("max_value", GameInt.value_range[1])
|
|
121
122
|
|
|
122
123
|
if self.gameobject.value_range is not None:
|
|
123
124
|
min_value = max(min_value, GameInt.value_range[0]) # type: ignore
|
|
@@ -10,7 +10,7 @@ from pymem.pattern import pattern_scan_all, pattern_scan_module
|
|
|
10
10
|
from pymem.process import module_from_name
|
|
11
11
|
|
|
12
12
|
from trainerbase.logger import logger
|
|
13
|
-
from trainerbase.process import
|
|
13
|
+
from trainerbase.process import pm
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
ARCH: Final[int] = 64 if pm.is_64_bit else 32
|
|
@@ -74,14 +74,14 @@ def attach_to_process() -> Pymem:
|
|
|
74
74
|
|
|
75
75
|
|
|
76
76
|
def shutdown_if_process_exited():
|
|
77
|
-
if not pid_exists(cast(int,
|
|
77
|
+
if not pid_exists(cast(int, pm.process_id)):
|
|
78
78
|
logger.info("Game process exited. Shutting down.")
|
|
79
79
|
force_exit(0)
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
def kill_game_process():
|
|
83
83
|
logger.info("Killing game process.")
|
|
84
|
-
Process(
|
|
84
|
+
Process(pm.process_id).kill()
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
pm = attach_to_process()
|
|
@@ -8,7 +8,8 @@ from pymem.process import module_from_name
|
|
|
8
8
|
from pymem.ressources.structure import MODULEINFO
|
|
9
9
|
|
|
10
10
|
from trainerbase.gameobject import GameDouble
|
|
11
|
-
from trainerbase.memory import ARCH
|
|
11
|
+
from trainerbase.memory import ARCH
|
|
12
|
+
from trainerbase.process import pm
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
SPEEDHACK_DLL_MODULE_NAME: Final[str] = f"speedhack{ARCH}.dll"
|
|
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
|