Santa_Claus

Адаптируем Visual Studio Code под Pawn

В теме 9 сообщений

 

Visual Studio Code - визуальный редактор кода, с красивым дизайном.
Сегодня мы будем адаптировать эту программу под язык Pawn.

 

АВТОР -  shinra.tensei 

Спойлер

Было взято с другого сайта -

Видеоролик по установки Visual Studio Code:

Click!

Кому-то легко сделать по видеоролику, кому-то читая статью...

 

Там наглядно все показано!

 

 

 

После обновления VSC некоторые кнопки изменились, в видео показан новый способ кодировки и компилировании..

 

 

Начало

Для начала, нужно скачать саму программу. 
Далее, логично будет ее установить.
После установки, запускаем программу.

После того, как мы насладились этим прекрасным интерфейсом, следует нажать на этот значок:

Спойлер

MLJrfntClk8.jpg

 

Открывается такое меню, в котором нам нужно ввести pawn и установить первое расширение в списке.

Спойлер

i31xJz7k3Ok.jpg

Теперь перезапускаем программу, жмем Файл > Открыть папку, и открываем папку с вашим сервером.

Спойлер

0i_kT-t6eiY.jpg

Теперь мы можем открыть наш мод, если виден синтаксис павна, то мы все сделали правильно :)

 

Компилирование

Зайдем в папку нашего сервера и создадим папку .vscode

Спойлер

24Ud_hx2rjU.jpg

 

Изображение

 

 

Теперь нужно настроить компилирование, для этого заходим в Задачи > Настроить задачи.

Спойлер

Изображение

Далее тыкаем все как на скринах ниже:

 

Спойлер

Изображение

 

Изображение

У нас открылся файл tasks.json
Содержимое этого файла нужно заменить на следующее и сохранить:

{
    "version": "2.0.0",
    "tasks": [
      {
        "label": "build-normal",
        "type": "shell",
        "command": "${workspaceRoot}/pawno/pawncc.exe",
        "args": ["'${fileBasename}'", "'-D${fileDirname}'", "'-;+'", "'-(+'", "'-d3'"],
        "group": {
          "kind": "build",
          "isDefault": true
        },
        "isBackground": false,
        "presentation": {
          "reveal": "silent",
          "panel": "dedicated"
        },
        "problemMatcher": "$pawncc"
      }
    ]
  }

 

Основная часть закончена, теперь нужно забиндить клавишу F5 под компилирование.
Для этого переходим в Файл > Параметры > Сочетание клавиш

Спойлер

Изображение

 

Теперь нужно кликнуть по keybindings.json

Спойлер

Изображение

 

Откроется полный список биндов, и пустой список справа. Вставляем следующий код в список справа, не забываем сохранить все это.

[  
    { "key": "f5", "command": "workbench.action.tasks.build" }  
]  
Спойлер

Изображение

 

Кодировка

 

Переходим в Файл > Параметры > Параметры

Вводим в поиск слово 'Кодировка'

(если у вас стоит русская локализация на Visual Studio Code)

и меняете кодировку на:

"windows1251"

 

Конец

 

Поздравляю, мы все сделали. Теперь мы можем компилировать наш мод нажатием F5. :happy:

Изображение

Отредактировано пользователем Santa_Claus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня проблема, все работает, все окей, все замечательно... но после компиляции amx файл мода появляется не в gamemode а за пределелами папки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, alodayn3232 сказал:

У меня проблема, все работает, все окей, все замечательно... но после компиляции amx файл мода появляется не в gamemode а за пределелами папки.

Вы наверное не внимательно читали, если сделать как написано, то этих проблем не будет. Если вам надо адаптировать VS, то попробуйте заново переделать все, только внимательнее. 

 

P.S возможно проблема в tasks.json в папке .vscode // 

 

Отредактировано пользователем Santa_Claus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собственно, проблема та же. Скомпилированный .amx появляется в корневой папке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@20th century 

Действительно, проблема есть.

Попробуйте в папку .vscode вместе с tasks.json добавить текстовый документ launch.json, после этого открыть его и добавить такие строчки:

Спойлер

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${file}"
        }
    ]
}

 

Спойлер

XTrhjGVzvW?quality=85&format=jpegMkOBTcCDUr?quality=85&format=jpegYLWuSIU0bP?quality=85&format=jpeg

 

 

Отредактировано пользователем odosenok

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Santa_Claus Ещё раз можешь скинуть под спойлер всё, что находится в твоей папке .vscode?
Более часа потратил уже, компилируется по прежнему в корневую.

У тебя правильно компилируется?

 

Похоже, что без PawnVSCode не обойтись, но у меня он не устанавливается, ибо VS Code не установлен в папке Program Files (x86).

 

Не поленился и переустановил. Для будущих посетителей данной темы, у которых .amx файл тоже кидается в корневую:

Спойлер

{
    "version": "2.0.0",
    "tasks": [
      {
        "label": "build-normal",
        "type": "shell",
        "command": "${workspaceRoot}/pawno/pawncc.exe",
        "args": ["'${fileBasename}'", "'-D${fileDirname}'", "'-;+'", "'-(+'", "'-d3'"],
        "group": {
          "kind": "build",
          "isDefault": true
        },
        "isBackground": false,
        "presentation": {
          "reveal": "silent",
          "panel": "dedicated"
        },
        "problemMatcher": "$pawncc"
      }
    ]
  }

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@20th century, я исправлю в теме, спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Desktop\Mod\gamemodes' '-;+' '-(+' '-d3'" (код выхода: 1). Подскажите пожалуйста, что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 08.02.2021 в 23:44, Гость Аккерман сказал:

Desktop\Mod\gamemodes' '-;+' '-(+' '-d3'" (код выхода: 1). Подскажите пожалуйста, что делать?

Вы видимо не по инструкции всё делали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • kirill1995
      От kirill1995
      Крч делаю свой сервер пытаюсь запустить его и у меня вылазит ошибка [MySQL R41-4]: Подключиться к базе данных не удалось.
      может кто шарит как это пофиксить заплачу!

    • Dev_Persona
      От Dev_Persona
      Приветствую, вот ищу код для скрытия кнопки прыжка, пробовал коды HUD_JUMP, HUD_ELEMENT_JUMP, не чего не помогло, подскажите кто знает код для скрытие кнопки прыжка в крмп
    • Tappert
      От Tappert
      Диалог команды работает и отображается, после выбора любой должности пустота
      CMD:ahelp(playerid) {     if (admin_level[playerid] < 1 || !admin_logged[playerid]) return 1;     SPD(playerid, 1234, DIALOG_STYLE_LIST, ""c_server"Команды администрации","\         "c_server"1 "c_white"- Помощник администрации\n\         "c_server"}2 "c_white"- Стажёр модерации\n\         "c_server"3 "c_white"- Младший администратор\n\         "c_server"4 "c_white"- Опытный администратор\n\         "c_server"5 "c_white"- Куратор сервера\n\         "c_server"6 "c_white"- Заместитель главы администрации\n\         "c_server"7 "c_white"- Глава администрации\n\         "c_server"8 "c_white"- Куратор игрового процесса\n\         "c_server"9 "c_white"- Директор проекта\n\         "c_server"10 "c_white"- Создатель", "Выбрать", "Закрыть");          return 1; }         case 9992: return pc_cmd_leaders(playerid, "");         case 9993: return pc_cmd_offleaders(playerid, "");         case 9996: return MenuAtms(playerid); // основной банковский счет         case 9997: return OprDialog(playerid); // система счетов банк         case 9998: return BankDialog(playerid); // банкдиалог         case 9999: return pc_cmd_menu(playerid, ""); // /mm         case 1234:         {         if (!response) return 1;         switch (listitem)         {                 case 0:                 {                     if (admin_level[playerid] < 1 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                                          SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/sc"c_white" — чат игровых помощников\n\                     "c_server"/alogin"c_white" — авторизоваться в панели администратора\n\                     "c_server"/aexit"c_white" — выйти из панели администратора\n\                     "c_server"/ans"c_white" — ответить игроку\n\                     "c_server"/srep"c_white" — список вопросов в порядке живой очереди\n\                     "c_server"/admins"c_white" — список администрации в сети", "Закрыть", "");                 }                 case 1:                 {                     if (admin_level[playerid] < 2 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                          SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/a"c_white" — чат администрации\n\                     "c_server"/arep"c_white" — список жалоб в порядке живой очереди\n\                     "c_server"/sp | /offsp"c_white" — начать / завершить слежку за игроком\n\                     "c_server"/pstats | /offpstats"c_white" — посмотреть статистику игрока\n\                     "c_server"/frz"c_white" — заморозить / разморозить игрока\n\                     "c_server"/ajail"c_white" — посадить игрока в тюрьму (< 30)\n\                     "c_server"/mute"c_white" — заблокировать чат игроку (< 60)\n\                     "c_server"/spawn"c_white" — отправить игрока на место возрождение\n\                     "c_server"/kick"c_white" — отключить игрока от сервера\n\                     "c_server"/hp"c_white" — восстановить здоровье игроку\n\                     "c_server"/okay"c_white" — подтвердить изменение nonRP ник\n\                     "c_server"/nookay"c_white" — отменить изменение nonRP ника", "Закрыть", "");                 }                 case 2:                 {                     if (admin_level[playerid] < 3 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                          SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/ban"c_white" — заблокировать аккаунт игроку (< 10)\n\                     "c_server"/warn"c_white" — выдать предупреждение игроку\n\                     "c_server"/ajail"c_white" — посадить игрока в тюрьму (< 120)\n\                     "c_server"/mute"c_white" — заблокировать чат игроку (< 120)\n\                     "c_server"/goto"c_white" — телепортироватся к игроку\n\                     "c_server"/gethere"c_white" — телепортировать игрока к себе\n\                     "c_server"/fix"c_white" — починить транспорт (ID)\n\                     "c_server"/gotcar"c_white" — телепортироваться к транспорту\n\                     "c_server"/getcar"c_white" — телепортировать транспорт к себе\n\                     "c_server"/recar"c_white" — заспавнить транспорт (ID)\n\                     "c_server"/skick"c_white" — тихо отключить игрока от сервера", "Закрыть", "");                 }                 case 3:                 {                     if (admin_level[playerid] < 4 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                     SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/ban"c_white" — заблокировать аккаунт игроку (< 30)\n\                     "c_server"/fip"c_white" — имеющиеся аккаунты по IP адресу\n\                     "c_server"/banip"c_white" — заблокировать IP адрес\n\                     "c_server"/unwarn"c_white" — снять предупреждение с игрока\n\                     "c_server"/unmute"c_white" — разблокировать чат игроку\n\                     "c_server"/unajail"c_white" — выпустить игрока из тюрьмы\n\                     "c_server"/slap"c_white" — подкинуть игрока\n\                     "c_server"/veh"c_white" — создать транспорт\n\                     "c_server"/delveh"c_white" — удалить созданный транспорт\n\                     "c_server"/delvehall"c_white" — удалить весь созданный транспорт\n\                     "c_server"/plveh"c_white" — выдать временный транспорт игроку\n\                     "c_server"/getip"c_white" — узнать IP игрока\n\                     "c_server"/offmute"c_white" — заблокировать чат игроку в оффлайне\n\                     "c_server"/offajail"c_white" — посадить игрока в тюрьму в оффлайне\n\                     "c_server"/offwarn"c_white" — выдать предупруждение игроку в оффлайне\n\                     "c_server"/offban"c_white" — заблокировать аккаунт в оффлайне\n\                     "c_server"/spveh"c_white" — заспавнить транспорт в радиусе\n\                     "c_server"/spawncars"c_white" — заспавнить весь свободный транспорт", "Закрыть", "");                 }                 case 4:                 {                     if (admin_level[playerid] < 5 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                     SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/aad"c_white" — OOC сообщение для игроков\n\                     "c_server"/skin"c_white" — выдать временную одежду игроку\n\                     "c_server"/setskin"c_white" — выдать постоянную одежду игроку\n\                     "c_server"/templeader"c_white" — назначить себя временным руководителем\n\                     "c_server"/getonline"c_white" — информация онлайна игрока\n\                     "c_server"/unban"c_white" — разблокировать аккаунт\n\                     "c_server"/unbanip"c_white" — разблокировать IP адрес\n\                     "c_server"/setfaction"c_white" — принять игрока в организацию\n\                     "c_server"/infoip"c_white" — информация о IP адресе\n\                     "c_server"/getfake"c_white" — поиск информации по IP адресу\n\                     "c_server"/setvw"c_white" — переместиться в другой виртуальный мир\n\                     "c_server"/setint"c_white" — переместиться в другой интерьер", "Закрыть", "");                 }                 case 5:                 {                     if (admin_level[playerid] < 6 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                     SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/givegun"c_white" — выдать оружие игроку\n\                     "c_server"/settime"c_white" — изменить время на сервере\n\                     "c_server"/agl"c_white" — выдать лицензии игроку\n\                     "c_server"/fullgwh"c_white" — пополнить склады всем организациям\n\                     "c_server"/auninvite"c_white" — уволить игрока из организации", "Закрыть", "");                 }                 case 6:                 {                     if (admin_level[playerid] < 7 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                     SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/makeadmin"c_white" — назначить администратора\n\                     "c_server"/unadmin"c_white" — снять администратора\n\                     "c_server"/createpromo"c_white" — создать новый промокод\n\                     "c_server"/promo"c_white" — список доступных промокодов\n\                     "c_server"/ahouse"c_white" — телепортироваться к дому\n\                     "c_server"/abiz"c_white" — телепортироваться к бизнесу\n\                     "c_server"/afuel"c_white" — телепортироваться к заправке\n\                     "c_server"/freezepanel"c_white" — статусы заморозки банд\n\                     "c_server"/delacc"c_white" — удалить аккаунт", "Закрыть", "");                 }                 case 7:                 {                     if (admin_level[playerid] < 8 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                     SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/alog"c_white" — действия администратора\n\                     "c_server"/addnotify"c_white" — добавить сообщение для игрока (при входе)\n\                     "c_server"/asellhouse"c_white" — продать дом государству\n\                     "c_server"/asellbiz"c_white" — продать бизнес государству\n\                     "c_server"/asellfuel"c_white" — продать запраку государству\n\                     "c_server"/bonus"c_white" — панель управления бонусами\n\                     "c_server"/setprod"c_white" — установить всем бизнесам 20,000 продуктов\n\                     "c_server"/setbizname"c_white" — изменить название бизнеса\n\                     "c_server"/sptext"c_white" — написать сообщение от лица игрока", "Закрыть", "");                 }                 case 8:                 {                     if (admin_level[playerid] < 9 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                     SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/saveall"c_white" — сохранить все данные\n\                     "c_server"/payday"c_white" — запустить PayDay\n\                     "c_server"/setlevel"c_white" — установить игроку уровень", "Закрыть", "");                 }                 case 9:                 {                     if (admin_level[playerid] < 10 || !admin_logged[playerid])                     {                         SendClientMessage(playerid, col_grey, "Вы не достигли такого уровня.");                         return 1;                     }                     SPD(playerid, 1234, DIALOG_STYLE_MSGBOX, "", "\                     "c_server"/restart"c_white" — перезагрузить сервер\n\                     "c_server"/anticheat"c_white" — настройки античита\n\                     "c_server"/givemoney"c_white" — выдать игровую валюту игроку\n\                     "c_server"/givedonate"c_white" — выдать донат рубли игроку\n\                     "c_server"/giveoskolok"c_white" — выдать осколки тайника игроку", "Закрыть", "");                 }                            }         }  
    • Владислав2
      От Владислав2
      Всем привет, я вставляю команду 

      CMD:rep(playerid, params[])
      {     if(!GetPlayerAdminEx(playerid)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}| {FFFFFF}Доступно только администрации проекта!");     if(!g_report_created) return SendClientMessage(playerid, 0xCECECEFF, "{FF0000}| {FFFFFF}Нет обращений для проверки!");     new fmt_text[360],         bool: rep_is_found;     for(new idx; idx < g_report_created; idx ++)     {         if(GetReportData(idx, REP_EDIT) || GetReportData(idx, REP_CREATOR) == INVALID_PLAYER_ID) continue;         format         (             fmt_text, sizeof fmt_text,             "{FFFF00}|{FFFFFF}Отправитель: {FFFF00}%s[%d]\n\n{FFFF00}|{FFFFFF}Содержимое: {FFFF00}%s \n\n"\             "{FFFFFF}Вам необходимо сформулировать, а затем ввести ответ на\n"\             "жалобу игрока в диалоговое поле ниже.",             GetPlayerNameEx(GetReportData(idx, REP_CREATOR)), GetReportData(idx, REP_CREATOR), GetReportData(idx, REP_TEXT)         );         Dialog(playerid, DIALOG_REPORT_EDIT, DIALOG_STYLE_INPUT, "{EB4C42}"SERVER_NAME" {FFFFFF}| Жалобы", fmt_text, "Далеее", "Отмена");         SetReportData(idx, REP_EDIT, true);         SetPVarInt(playerid, "report_id", idx);         rep_is_found = true;         break;     }     if(!rep_is_found) return SendClientMessage(playerid, 0xCECECEFF, "{FF0000}| {FFFFFF}Нет актуальных обращений для рассмотрения!");     return 1; } И после у меня появляются варнинги:

      error 017: undefined symbol "g_report_created"
      error 017: undefined symbol "g_report"
      error 017: undefined symbol "g_report_created"
      error 001: expected token: ";", but found "]"

      Можете помочь, как убрать ошибки?