Тестирование#
amxpy.testing — сервер в памяти с тем же рантаймом amxpy и виртуальным временем.
Фикстура pytest server подключается сама после установки amxpy. Руководство:
Тестирование.
FakeServer
#
FakeServer(
*,
game_dir: str | Path | None = None,
max_players: int = 32,
map_name: str = "de_dust2",
fps: int = 100,
)
Сервер в памяти: тот же рантайм amxpy, но бэкенд — словари, а время — виртуальное.
forwards
#
Форварды, отправленные Pawn-плагинам: (имя, аргументы).
load
#
Скомпилировать плагин amxpyc и загрузить его (как на сервере после старта карты).
reload
#
Пересобрать плагин из исходника и перезагрузить его на лету.
run
#
Прокрутить seconds секунд виртуального времени (минимум один кадр).
settle
#
Досчитать последствия: задачи asyncio и offload(), не двигая время.
join
#
join(
name: str,
*,
steam_id: str | None = None,
team: Team | int = Team.CT,
flags: str | int = "",
ip: str = "127.0.0.1",
bot: bool = False,
alive: bool = True,
health: float = 100,
armor: float = 0,
money: int = 800,
lang: str = "",
authorize: bool = True,
) -> FakePlayer
Подключить игрока: Connect → PutInServer → (на следующем кадре) Authorized.
damage
#
damage(
victim: FakePlayer,
amount: float,
*,
attacker: FakePlayer | None = None,
damage_type: int = DMG_BULLET,
) -> float
Нанести урон; возвращает нанесённый урон (после плагинов).
change_map
#
Смена карты: MapEnd, AMXX заново грузит плагины (в т.ч. приёмник форвардов), MapStart.
pawn_forward
#
Pawn-плагин выполнил форвард name (ExecuteForward): вернуть итог подписчиков amxpy.
int/bool/Player — ячейка, float — Float:, str — строка в памяти AMX,
Ref/FloatRef — параметр по ссылке: после вызова в .value то, что записал Python.
Форвард доходит, только если плагин-приёмник с ним загружен — с карты после подписки.
choose_team
#
Выбрать команду в меню: 1 — T, 2 — CT, 5 — авто, 6 — зрители; False — плагин не пустил.
give_money
#
give_money(
player: FakePlayer,
amount: int,
reason: MoneyReason | int = MoneyReason.NONE,
*,
track: bool = True,
) -> int
Начислить (или списать) деньги, как игра; возвращает итоговое изменение после плагинов.
buy
#
Купить оружие (без префикса weapon_); False — плагин запретил.
throw_grenade
#
Бросить гранату; возвращает индекс сущности гранаты.
defuse
#
Начать разминирование и закончить его (успешно или нет); False — плагин не дал начать.
amxx_native
#
Подставить натив AMXX для amxx.call(...) плагина.
Функция получает аргументы по порядку: числа, float и строки — как есть,
выходные (String, Ref, Array...) — объектом с .value.
Исключение в ней — ошибка натива (NativeError у плагина).
native
#
Вызвать натив плагина так, как его вызвал бы Pawn-плагин.
FakePlayer
#
Игрок фейкового сервера со стороны теста.
select
#
Нажать в меню клавишу 1–9 или 0; меню на экране закрывается, как у клиента.
ConnectionRejected
#
Плагин не пустил игрока (Connect.reject()).