Перейти к содержанию

amxx#

Вызов нативов AMX Mod X из Python. Руководство: Нативы AMXX из Python.

Нативы AMX Mod X, модулей (cstrike, fun, fakemeta, ReAPI...) и Pawn-плагинов из Python.

from amxpy import amxx

amxx.call("cs_set_user_money", player, 16000)

name = amxx.String(32)
amxx.call("get_user_name", player, name, 31)
player.print(name.value)

Аргументы переводятся по типу: int, bool, Player, Entity — число; float — Float:; str — строка. Выходные параметры — обёртки: String(размер) — буфер под строку, Ref/FloatRef — параметр по ссылке (&x), Array/FloatArray — массив, который натив может изменить. В переменных аргументах (any:..., как у client_print) числа передаются по ссылке — оберните их в Ref/FloatRef.

Нативы вызываются только в игровом потоке (не из offload()). Натив, который регистрирует колбэк вызывающего плагина (set_task, register_event...), из Python не работает — для этого есть свои средства amxpy.

NativeError #

Натив недоступен или завершился с ошибкой (подробности — в логе ошибок AMXX).

String #

String(size: int = 256)

Буфер под строку, которую запишет натив: String(32) → после вызова .value.

Ref #

Ref(value: int = 0)

Целое по ссылке (&value в Pawn): натив читает и меняет .value.

FloatRef #

FloatRef(value: float = 0.0)

Float: по ссылке (&Float:value): натив читает и меняет .value.

Array #

Array(values: int | Iterable[int] = 0)

Массив целых, который натив может прочитать и изменить: Array(3) или Array([1, 2, 3]).

FloatArray #

FloatArray(values: int | Iterable[float] = 0)

Массив Float: (вектор, цвет...): FloatArray(3) → после вызова .values.

call #

call(name: str, *args: Arg) -> int

Вызвать натив по имени и вернуть результат-ячейку.

Параметры#
  • name — имя натива: cs_set_user_money, rg_give_item, натив Pawn-плагина.
  • *args — аргументы по порядку объявления натива (см. описание модуля).
Возвращает#

Результат натива как целое; для Float:-результата — call_float.

Исключения#
  • NativeError — натива нет на сервере или он завершился с ошибкой.
Пример#
amxx.call("cs_set_user_money", player, 16000)
origin = amxx.Array(3)
amxx.call("get_user_origin", player, origin)

call_float #

call_float(name: str, *args: Arg) -> float

Вызвать натив, который возвращает Float:: amxx.call_float("entity_range", a, b).

available #

available(*names: str) -> bool

Есть ли на сервере все эти нативы (заодно привязывает их заранее).