VS Code#
amxpy init настраивает .vscode/ в проекте, а расширение amxpy добавляет то, чего нет в
обычном Python: подсказки по нативам AMXX, заготовки после декоратора и установку на сервер.
В существующие файлы настроек init только дописывает недостающее.
Что настраивает проект#
- Подсказки и проверка типов — Pylance в режиме
standard. Поля событий и свойства игрока типизированы (e.damage: float,e.attacker: Player | None,player.health: int), аplugin.include(Settings())возвращает ваш конфиг с типами cvar'ов. - Ошибки amxpyc при открытии и сохранении — расширение Flake8 с плагином amxpy:
AMX101«нет такого поля»,AMX104«событие после await»,AMX103«блокирующий вызов» и остальные. Модуль пакета проверяется вместе со всем плагином. - Автоимпорт —
python.analysis.autoImportCompletions: набираетеcycleилиMenu, выбираете вариант из подсказки —from itertools import cycleпоявляется сам, а имена amxpy дописываются в уже существующую строкуfrom amxpy import .... - Ошибки, которых не видно глазами — кроме кодов amxpyc Flake8 показывает неиспользуемый
импорт (
F401), повторное определение имени (F811) и переменную, которой присвоили, но не использовали (F841) — частая ошибка, когда в функции забылиglobalилисписок[:] = .... - Задачи — Ctrl+Shift+B собирает с переходом к ошибкам; ещё «установить этот плагин на сервер», «перезагрузить плагин на сервере», «плагины на сервере», «тесты».
- Сниппеты —
amxplugin,amxon,amxcmd,amxadmin,amxnative,amxforward,amxcfg,amxmenu,amxevery,amxstate,amxtest.
VS Code сам предложит расширения Python, Pylance, Flake8 и amxpy из extensions.json. Интерпретатор —
тот, которым запущен amxpy init.
Расширение amxpy#
Найдите amxpy во вкладке расширений VS Code — или откройте страницу в
VS Code Marketplace.
Для VSCodium, Cursor и других форков — Open VSX.
В проекте, созданном amxpy init, VS Code сам предложит его поставить.
Файл .vsix для установки вручную лежит в релизах на GitHub;
собрать его из исходников — scripts/build-vscode.sh.
Заготовка после декоратора#
Напишите декоратор и нажмите Enter — расширение допишет функцию с курсором на имени:
@plugin.command("/hp")
def hp(player: Player) -> None: # ← появилось само
...
@plugin.on(events.TakeDamage)
def on_take_damage(e: events.TakeDamage) -> None:
...
То же для native, every, item, on_change и остальных. По @ в начале строки расширение
предлагает заготовки декораторов, а недостающие Player, events, Access дописывает в
from amxpy import ....
Нативы AMXX#
Внутри amxx.call("…") работают автодополнение имени натива, документация из .inc при
наведении, подсказка параметров и готовый вызов из Python. В индексе — 1400 нативов ядра,
модулей и ReAPI; свои .inc добавляются настройкой amxpy.includePaths или просто лежат
в проекте. Подробнее о вызове — Нативы AMXX из Python.
Остальное#
- палитра для
color=(r, g, b)у HUD; - полное имя cvar'а прямо в строке
cvar(...); - предпросмотр цветного чата и меню при наведении на
"!gПривет"; - кнопки «Установить на сервер» и «Плагины на сервере» над
Plugin(...).
Всё это можно выключить в настройках: amxpy.autoDef, amxpy.completions, amxpy.colors,
amxpy.cvarNames, amxpy.colorPreview, amxpy.codeLens, amxpy.nativeHints.
Настройки можно класть в git
В .vscode/ нет путей вашей машины. Интерпретатор записан как ${workspaceFolder}/.venv/...
(если окружение внутри проекта, иначе его выбирают через Python: Select Interpreter), а
amxpy Pylance находит сам, если он установлен с --config-settings editable_mode=compat
(установка). Старые проекты исправляет повторный
amxpy init: он уберёт прежний путь к amxpy из python.analysis.extraPaths.