Куда поместить файлы amx и pwn в samp
Обновлено: 21.11.2024
В настоящее время это порт пакета Sublime Text, который включает правильную подсветку синтаксиса Pawn, автозаполнение для стандартной библиотеки и некоторых популярных библиотек.
Если вам нравятся инструменты разработки, ускоряющие рабочий процесс и повышающие производительность, обратите внимание на sampctl!
- Статический анализ
- Автозаполнение
- Поддержка IntelliSense
Установка
Просто найдите "Pawn Tools" в расширениях vscode и установите его.
Кроме того, вы можете проверить исходный код или просмотреть страницу Marketplace:
Компиляция пешечного кода
Чтобы выполнить компиляцию после того, как вы настроили файл tasks.json ниже, нажмите CTRL+Shift+B (Windows) или CMD+Shift+B (Mac) или откройте палитру команд, нажав CTRL+Shift+P. (Windows) или CMD+Shift+P (Mac) и введите Run Task , нажмите Enter и выберите build-normal .
Если вы используете sampctl, это тот же процесс, за исключением того, что у вас будет четыре параметра в списке «Выполнить задачу»:
- только сборка — сборка пакета
- сборка наблюдателя — сборка пакета при каждом изменении файла
- запустить тесты — запустить пакет
- запустить наблюдатель за тестами — запускать пакет при каждом изменении файла
С инициализацией пакета sampctl
Если вы используете sampctl, команда инициализации пакета sampctl автоматически создаст vscode tasks.json, если вы выбрали vscode в части редактора меню настройки.
Если у вас уже есть пакет, но вы этого не сделали, вы можете просто загрузить tasks.json из репозитория шаблонов Pawn Package.
После того как вы это сделаете, больше ничего не нужно настраивать!
Создание tasks.json
Code использует метод под названием "Задачи" для запуска компиляторов и инструментов сборки. Все, что вам нужно сделать, это создать папку с именем .vscode в каталоге вашего проекта и создать там файл с именем tasks.json .
Затем вставьте следующий соответствующий фрагмент в этот файл, в зависимости от вашей основной оболочки:
PowerShell
Командная строка (cmd.exe)
В этом примере нет escape-символов, поэтому его можно адаптировать к другим оболочкам, таким как Bash, Oil, Fish и т. д.
Пояснение
"command": "$/pawno/pawncc.exe", это важная часть здесь, это путь к вашему компилятору Pawn, и я предположил, что у большинства из вас есть оставшаяся папка pawno с того давно умершего Текстовый редактор! Эта папка содержит не только Pawno, но и компилятор кода Pawn ( pawncc.exe ). Вы можете безопасно удалить pawno.exe навсегда.
"аргументы": [. ], также важно, здесь вы определяете аргументы, передаваемые компилятору. Павно тоже делал это, но вы, возможно, не знали. Значения по умолчанию всегда были -;+ для принудительного использования точки с запятой и -(+ для принудительного использования квадратных скобок в операторах.
Если вы храните компилятор Pawn в другом месте, просто замените весь параметр команды полным путем к вашему компилятору.
Кроме того, если вы хотите отключить символы отладки (вы не сможете использовать функцию обнаружения сбоев), просто удалите -d3 из "args" .
problemMatcher — это часть, которая позволяет распознавать выходные данные компилятора Pawn и представлять их на панели задач редактора. Это не работает с внешними включениями, потому что пути меняются с относительных на абсолютные. sampctl, к счастью, исправляет это (и много других раздражающих вещей).
Возможности
В настоящее время только подсветка синтаксиса и дополнения из проекта Sublime.
Как только проект Pawn-Parser достигнет работоспособного состояния, в этом расширении появятся дополнительные языковые функции, такие как поддержка IntelliSense, переход к определению, просмотр всех ссылок и т. д.
Вот как выглядит панель проблем, если файл tasks.json настроен правильно:
Это ОТЧЕТ ОБ ОШИБКЕ, ЗАПРОС ФУНКЦИИ или ВОПРОС?:
- Отчет об ошибке
- Запрос функции
- Вопрос
Что произошло:
Иногда файлы .amx находятся не в том месте. Обычно (если не всегда) они находятся в корне диска, на котором находился исходный скрипт/компилятор.
Если сценарий/компилятор находится в папке X:/dir1/dir2 , загадочный файл .amx появится в папке X:/ с тем же именем, что и у скомпилированного сценария.
Что вы ожидали:
файлов .amx там быть не должно.
Как это воспроизвести (минимально и точно):
Загадка.
Что-нибудь еще, что нам нужно знать?:
Окружающая среда:
- Операционная система: Windows 10/7/XP
- Версия компилятора: 3.10.7, но это происходит годами?
- Как вы вызываете компилятор? Pawno, Sublime, vscode, sampctl или командная строка? Павно
Текст был успешно обновлен, но возникли следующие ошибки:
Комментарий Southclaws от 10 июня 2018 г.
Чтобы добавить к загадке: я использую 3.10.4 с тех пор, как он вышел, это компилятор по умолчанию для sampctl, и мой корень C:\ вообще не содержит файлов .amx. Я только недавно начал использовать 3.10.7, так что через несколько дней я проверю, происходит ли это.
Ниже приведен пример вызова компилятора с помощью sampctl со всеми настройками и флагами по умолчанию для реальной сборки пакета, я думаю, что никогда не видел этого, потому что sampctl всегда передает компилятору абсолютные пути, тогда как я думаю, что большинство пользователей просто пусть pawncc определит выходной каталог, в котором могут быть проблемы.
Y-Less прокомментировал 10 июня 2018 г.
У меня такое было, но я никогда об этом не задумывался. Обычно я неделями не замечаю лишние файлы, поэтому я просто подумал, что они взяты из старой компиляции с неправильными флажками.
Комментарий Zeex от 10 июня 2018 г.
Может ли это быть из-за неправильного рабочего каталога? Я видел что-то подобное только тогда, когда забыл перейти в нужное место.
Амир Ахмади прокомментировал 16 июня 2018 г.
Итак, я чистил свои папки и увидел несколько файлов .amx в моем каталоге D, я посмотрел даты последних изменений и понял, что в те дни я, вероятно, использовал Pawno , поэтому я пошел для некоторых тестов я пробовал как старый, так и обновленный компилятор с VS Code, Sublime Text 3 и Pawno, ну, результат был довольно странным, эта ошибка (или как вы ее называете) возникает только тогда, когда вы используете Pawno (по крайней мере, для меня примерно после 5 тестов с компиляторами и 3 редакторами) так что на мой взгляд дело может быть в Pawno.
Комментарий Southclaws от 16 июня 2018 г.
Я думаю, можно с уверенностью сказать, что Pawno, несмотря на его очевидное величие, похоже, случайным образом копирует выходные файлы в корень. Я голосую за закрытие этого вопроса.
YashasSamaga прокомментировал 16 июня 2018 г. •
Также может случиться так, что Pawno запускает компилятор с относительным путем, а другие редакторы (где такого загадочного поведения не наблюдается) выполняют компилятор с абсолютным путем.
Обновление: вышесказанное оказалось ложным. Pawno передает абсолютный путь к скрипту, но не указывает выходной путь.
Southclaws прокомментировал 8 июля 2018 г. •
По какой-то причине я возился с Пауно и понял, что это было. В Pawno есть два режима сборки: «Сборка» и «Сборка+Выполнить» (на F5 и F6). «Build+Run» предназначен для сборки вашего кода и последующего выполнения некоторой внешней команды, такой как samp-server.exe, для открытия сервера и немедленного тестирования игрового режима.
Однако команда по умолчанию для этого на самом деле просто pawncc с -r -w 203 :
- скопируйте вывод в \ (root)
- создать XML-файл графика вызовов, который, похоже, не выполняется
Я думаю, что предполагаемое использование заключается в том, что вы скопируете свой скрипт в игровые моды и запустите samp-server.exe или что-то в этом роде. Возможно, это было пережитком того времени, когда Pawn использовался для других целей, поэтому, возможно, граф вызовов был бы важен, и копирование скрипта в другое место тоже имело бы значение.
В результате в этом нет ничего "случайного", люди просто время от времени случайно нажимают F6 вместо F5, в результате чего этот файл появляется в корневом каталоге.
Sampctl похож на узел npm, как и в node.js, но он находится в залоге, есть много совместимых библиотек, а также включает, есть много причин для использования sampctl.
Первый — это компилятор для vscode, и он может поддерживать оба редактора.
Во-вторых, вы можете установить библиотеки/включения всего за одну строку.
В-третьих, вы можете попрощаться с server.cfg, в sampctl вы будете использовать pawn.json вместо server.cfg
Есть 2 способа установить это (на самом деле их 3 или что-то в этом роде).
Первый способ - использовать SCOOP (УСТАНОВИТЕ SCOOP ЗДЕСЬ или просто запустите
из другой строки. Теперь вы можете запускать `sampctl` в PowerShell, CMD, git bash, но вам нужно будет перезапустить любые другие открытые терминалы, если вы устанавливаете scoop в первый раз, чтобы он правильно загружался в переменную окружения PATH
Второй способ - установить его вручную, вот шаги.
1. Создайте каталог в корневом каталоге вашего диска `c:\` с именем `sampctl`
2. Загрузите версию sampctl для Windows и поместите файл .exe в созданный вами каталог `sampctl`
3. Добавьте `c:\sampctl\` в системный PATH.
4. Откройте новую оболочку (PowerShell, CMD или bash) и введите `sampctl`. Если вы все сделали правильно, вы увидите справку по sampctl.
<р>1. Как установить sampctl в свой игровой мод.
Откройте PowerShell или CMD в каталоге файлов вашего сервера (там, где находятся файлы samp-server.exe и server.cfg), используйте `sampctl p init`, и вы увидите это.
Я никогда не использовал .yaml, я использовал только .json, поэтому выберите здесь то, что вы хотите, и вам нужно предоставить информацию для вашего игрового режима/библиотеки, например, если вы хотите, чтобы он был выпущен на Github.
Теперь вас спросят, хотите ли вы опубликовать подобный игровой мод/библиотеку.
Библиотека означает, что если вы хотите создать многоразовые включения, здесь начинается самое интересное. Если вы создаете библиотеку с помощью sampctl, мы можем загрузить ее с помощью одной командной строки, которую мы рассмотрим позже.
Теперь вы можете выбрать свой текстовый редактор, вы увидите опцию, подобную этой.
Вы можете выбрать любые текстовые редакторы, какие хотите (vscode или Sublime), для меня я выберу VScode.
Затем, наконец, вы выберете свой основной файл .pwn
ОН ДОЛЖЕН БЫТЬ ВАШИМ ОСНОВНЫМ ФАЙЛОМ .PWN, но не волнуйтесь, теперь вы сможете изменить его в своем файле pawn.json, ХА-ХА все готово. Если вы используете vscode, вы можете просто нажать ctrl + shift + b, чтобы скомпилировать свой скрипт, я думаю, то же самое относится и к Sublime
<р>2. Как установить зависимости.
Ну, вы можете установить только зависимости, совместимые или созданные с помощью sampctl, вы видели опцию там ранее в руководстве с выбором «gamemode / library», если вы создаете библиотеку, вы можете просто установить ее в свой игровой режим с помощью всего лишь 1 строка
` sampctl p install ` например ` sampctl p install CnRXomoX/X_Enex ` теперь некоторые из вас спрашивают "Как он получил ссылку" (предполагая, что вы спрашиваете) ну это довольно просто, вы можете взять посмотрите на эту картинку
Вы видите разницу? вы можете ввести его без github.com, потому что sampctl автоматически добавляет его без колебаний, загружая его 1 за 1, и это забавная вещь о sampctl, он автоматически загружает файл .dll или файлы .so автоматически!
Поэтому не нужно искать «Как исправить скрипт .dll error samp».
Вы можете увидеть загруженные библиотеки/включения в папке зависимостей.
Если вы только что клонировали свой игровой режим на другой ПК/НОУТБУК, вы можете запустить ` sampctl p гарантировать `, чтобы загрузить библиотеки/включения, которые находятся в папке зависимостей. и файлы .dll в ваших плагинах!
Скомпилируйте сценарии SAMP с помощью pawncc.exe в Linux
Если вы хотите создать сценарии для многопользовательской игры San Andreas, вы обычно компилируете их на своем ПК с Windows.
Но, поскольку вы можете захотеть автоматизировать его на компьютере с Linux (например, чтобы протестировать свои скрипты на travis-ci), pawncc.exe не будет запускаться на Linux из коробки.
Мне известно, что команда языка pawn предоставляет на своем веб-сайте собственный компилятор Linux под названием pawncc, но полученные файлы .amx не работают с сервером samp.
Чтобы подготовить наш Ubuntu Linux для компиляции скриптов samp pawn, нам нужны некоторые предметы первой необходимости.
Прежде всего: официальный репозиторий Wine, чтобы получить последнюю версию Wine:
Теперь мы устанавливаем последнюю стабильную версию Wine (на момент написания 1.7):
Поскольку винные приложения работают как X-приложения, нам потребуется установленный X-сервер. Если вы не используете настольный ПК с Linux, X-сервер не установлен. Мы можем использовать xvfb в качестве альтернативы. Поставляемый инструмент командной строки под названием xfvb-run позволит нам запустить одну команду с «фальшивым» X-сервером и будет иметь меньше накладных расходов, чем вся система X-сервера.
Поскольку нам потребуются установленные библиотеки DLL, чтобы запустить pawncc.exe, мы установим winetricks, чтобы упростить их установку.
Установки Sine Wine распространяются на пользователя, нам нужно продолжить, используя обычного пользователя, и мы не будем выполнять следующие шаги от имени пользователя root. Вот почему я не добавлял sudo к следующим командам.
Теперь нам нужно установить vcrun6 (среда выполнения проектов Visual Studio 6) и vcrun2005 (среда выполнения проектов Visual Studio 2005) с помощью winetricks:
Если xvfb-run выдает эту ошибку:
вы можете запустить xvfb-run с параметром: -n 1337 , чтобы изменить порт сервера на 1337 вместо 99.
Если что-то сломалось с winetricks и вы хотите начать с нуля: удалите папку .wine, и среда wine снова станет полностью чистой.
Наконец мы можем зайти в папку нашего сервера samp (загрузить сервер samp) и выполнить:
Эти параметры: -rcompile.info.log , -ecompile.error.log и передача вывода stderr в файл errors.txt полезны, если вы хотите впоследствии просмотреть информацию о компиляции. Вы можете опустить эти параметры.
Вуаля: файл grandlarc.amx сгенерирован!
Отдайте что-нибудь взамен
Были ли мои сообщения в блоге полезными для вас? Если вы хотите помочь, поддержите одну из этих благотворительных организаций!
В версии 1.8 появился лучший способ настройки действующих серверов.
Этот краткий документ поможет вам перейти от старого способа (с использованием samp.json) к новому: с использованием поля среды выполнения в pawn.json.
Шаг 1. Скопируйте содержимое samp.json в pawn.json во время выполнения
В файле pawn.json поле выполнения всегда закрыто. Все, что вам нужно сделать, это просто скопировать содержимое файла samp.json и вставьте его в качестве значения нового ключа с именем runtime в файл pawn.json.
Например, предположим, что ваш файл samp.json выглядит так:
И ваш файл pawn.json выглядит так:
Сначала вы хотите добавить новое поле с именем runtime в конец файла, не забудьте поставить запятую после последнего поля:
Затем просто вставьте все содержимое samp.json сразу после "runtime": и сделайте отступ, чтобы он выглядел так:
(Если вы используете vscode, он может автоматически отформатировать ваш файл JSON!)
Шаг 2. Удалите лишние поля
Одна вещь, которую sampctl будет делать с пакетами, — это автоматически обрабатывать поле игровых режимов и плагины для вас.
Поскольку samp-incognito/samp-streamer-plugin:2.9.3 и Southclaws/pawn-requests:0.6.1 уже находятся в поле зависимостей pawn.json , их не нужно указывать в поле plugins файла во время выполнения, поскольку sampctl уже знает, что эти зависимости являются подключаемыми модулями, и автоматически создает файл server.cfg с именами подключаемых модулей.
То же самое относится и к игровым режимам: поскольку в файле pawn.json уже есть поля ввода и вывода, он уже знает, какой файл .amx является игровым режимом, поэтому вы можете безопасно удалить поле игровых режимов из раздела времени выполнения, потому что оно будет автоматически заполняется cnr на основе содержимого выходного поля.
Готовый пример файла теперь выглядит так:
Обратите внимание, что my_custom_private_plugin остался в плагинах, потому что это не удаленная зависимость, а просто файл в папке плагинов. Это по-прежнему действует, если вам нужно использовать устаревшие плагины, которые не предоставляют Pawn Packages на GitHub.
Шаг 3. Добавьте «local»: true
Нам нужно указать sampctl, что этот пакет должен выполняться локально, а не во временной области выполнения, для этого просто установите для поля local значение true в файле pawn.json:
Шаг 4. Удалите samp.json
Теперь вы можете безопасно удалить файл samp.json, так как он больше не нужен.
Читайте также: