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

Настройки и сервер#

Руководства: Настройки и cvar'ы, Игроки и сервер.

Config #

Config()

Группа cvar'ов плагина: class Settings(Config, prefix="vip_").

Поля — cvar'ы: cfg.hp_bonus читает текущее значение с сервера, присваивание меняет cvar. Подключается через plugin.include(Settings()).

Параметры#
  • prefix — начало имён cvar'ов (vip_ + hp_bonus = vip_hp_bonus).
Пример#
class Settings(Config, prefix="vip_"):
    hp_bonus: int = cvar(25, "Доп. HP на спавне", min=0)

cfg = plugin.include(Settings())
player.health += cfg.hp_bonus

on_change #

on_change(
    attr: str,
) -> Callable[[Callable[[Any, Any], Any]], Callable[[Any, Any], Any]]

Подписаться на изменение cvar'а; обработчик получает (старое, новое).

Пример#
@cfg.on_change("hp_bonus")
def changed(old: int, new: int) -> None:
    plugin.log.info("hp_bonus: %s → %s", old, new)

cvar #

cvar(
    default: Any,
    description: str = "",
    *,
    min: float | None = None,
    max: float | None = None,
    flags: int = 0,
    protected: bool = False,
    name: str | None = None,
) -> Any

Объявить cvar в классе Config.

Тип берётся из аннотации; cvar регистрируется при загрузке плагина, а в addons/amxpy/configs/<плагин>.cfg пишется значение по умолчанию с описанием.

Параметры#
  • default — значение по умолчанию (литерал: его читает компилятор).
  • description — комментарий в .cfg.
  • min — нижняя граница для чисел.
  • max — верхняя граница для чисел.
  • flags — флаги FCVAR_* движка.
  • protected — скрыть значение (FCVAR_PROTECTED), например для паролей.
  • name — имя cvar'а целиком вместо prefix + имя поля.
Пример#
class Settings(Config, prefix="vip_"):
    hp_bonus: int = cvar(25, "Доп. HP на спавне", min=0, max=155)
    enabled: bool = cvar(True, "Включить плагин")

Server #

Сервер целиком: from amxpy import server.

Пример#
server.print(f"!gКарта: !t{server.map}")
for player in server.players:
    player.money += 1000

players #

players: list[Player]

Игроки на сервере (без вышедших).

map #

map: str

Текущая карта: de_dust2.

max_players #

max_players: int

Число слотов сервера.

time #

time: float

Игровое время (gpGlobals->time).

print #

print(text: str) -> None

Сообщение в чат всем игрокам.

Теги цвета: !g — зелёный, !t — цвет команды, !y — обычный.

console #

console(text: str) -> None

Строка в консоль сервера.

command #

command(command: str) -> None

Команда серверной консоли (выполнится в начале следующего кадра).

Пример#
server.command("mp_restartgame 1")

change_level #

change_level(map_name: str) -> None

Сменить карту: server.change_level("de_inferno").

find_player #

find_player(query: str) -> Player | None

Игрок по #userid, SteamID или части ника.

Возвращает#

Игрок или None, если никого или подходят несколько.

cvar #

cvar(name: str) -> str | None

Значение любого cvar'а сервера строкой; None — такого нет.

set_cvar #

set_cvar(name: str, value: object) -> None

Изменить cvar сервера: server.set_cvar("mp_freezetime", 3).