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

LTX Support: Поддержка синтаксиса CoP

Рекомендуемые сообщения

 

Icon.png


GitHub README CHANGELOG Wiki Releases Download


Расширение для Visual Studio Code, которое добавляет поддержку синтаксиса логики из S.T.A.L.K.E.R. Call of Pripyat. Плагин добавляет множество крупных и не очень функций, которые должны упростить работу над модификациями, а так же помочь новичкам начать делать свои первые моды. Наверное самым важным аспектом расширения является то, что оно пытается максимально, как это только возможно, адаптироваться под проекты.

Demonstration.gif

На данный момент реализованы такие функции VSCode, как:

  • Completion (Автодополнение):
    • Infos
    • Sections Types
    • Sections Links
    • Functions & Conditions
    • Localization
    • Squads
    • Tasks
    • Signals
  • Hover (Информация при наведении)
  • Syntax Highlighting (Подсветка кода на основе синтаксиса)
  • Semantic Highlighting (Подсветка кода на основе контекста)
  • Folding Ranges (Сворачивание секций)
  • Symbols (Визуализация структуры файла)

Сборка расширения:

Если вам интересно поковырять расширение самому или просто помочь в разработке, то вот немного информации о том, как его собрать. Чтобы это сделать, необходимо:

  1. Скачать исходники с помощью git clone
  2. Открыть проект, запустить в консоли npm install или нажать ПКМ на package.json в спойлере NPM Scripts и нажать на пункт Run install.
  3. После установки всех необходимых библиотек, необходимо нажать Launch во вкладке Run and Debug или на горячую клавишу F5.
  4. Готово. Должно открыться новое окно VS Code, в котором будет 2 тестовых файла.
  • Лайк 8
  • Мастер! 5
  • Хабар 1

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


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

Как по мне - хорошая идея. Думаю, будет весьма полезным подспорьем как новичкам, так и опытным модмейкерам. Жду с нетерпением релиза! (Ну или хотя-бы ОБТ)

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


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

Нужно конечно. Хотя бы для программистов, для меня к примеру. Всё пользуется спросом.

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


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

Выпустил патч 0.1.3.

Многие мелкие ошибки были исправлены, ну и добавлены некоторые небольшие дополнения. Подробнее на GitHub. Качайте, пробуйте, пишите фидбек: Ссылка

  • Лайк 1

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


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

Notepad++ уже не в моде. Чет сложное юзают

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


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

aka_sektor просто тут можно не только подсветку синтаксиса реализовать, но и различные функции - проверка на ошибки, автодополнение функций и переменных. Если это никому не надо, то да, Notepad++ тоже сойдет.

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


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

проверка на ошибки

Ты ведь в курсе, что ltx файлы идентичны формату ini ? Думаю велосипед придумывать нету смысла.

9 минут назад, AziatkaVictor сказал:

автодополнение функций и переменных

Не совсем понимаю, о чем речь. Типа, как в редакторах, выпадающее меню?

10 минут назад, AziatkaVictor сказал:

никому не надо

Вопрос удобства, простоты и скорости лишь. 

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


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

aka_sektor вся информация написана тут: https://github.com/AziatkaVictor/ltx-support#readme

И нет, *.ltx не идентичен *.ini файлам. Все чем он может быть похож, это наличием секций и параметров, не более.

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


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

*.ltx не идентичен *.ini файлам

Обоснуй

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


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

aka_sektor ну потому что есть такой файл:

image.png

А еще я описывал, какая структура у параметров, на примере одной из строк:

image.png

Так же стоит учитывать, что тот же condlist можно еще разложить, на предусловие, функции и ссылку на секцию. Сигналов может быть кстати несколько, для каждого condlist-а, а для некоторых параметров надо писать 2 или более значений в сигнале. Так же можно наследовать секции, чего в оригинальном ini я не увидел. Возможно я слепой, не могу отрицать.

Ну и так далее, можно много различий найти. Но да, ltx наследует некоторые фишки у ini, но они не идентичные.

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


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

файл

Так и что не так? 

473390995__2022-09-12_162911063.png.31f6d941562897dfffdc10d2a82e9232.png

40 минут назад, AziatkaVictor сказал:

структура у параметров

Речь о task manager'е? Ну разве что только, для удобства было бы неплохо.

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


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

aka_sektor логика написана на ltx, и расширение я писал опираясь на это. Чтобы мододелам упростить жизнь тем, что некоторая инфа была доступна прямо в редакторе, ибо сам не раз искал как называется функция или нужная переменная. Вот например, что я хотел сделать и что отчасти сделал:

  • Предложение функций из xr_effects.script (То есть, все функции логики ищутся автоматически, что позволяет использовать кастомные)
  • Различные данные, которые будут храниться в памяти: список сквадов, переменных из локализации, предметов, инфопоршней, стори айди и так далее, зависит от того, как это будет реализовано. Вот как пример:
    Snipaste_2022-06-10_23-58-25.png
  • Анализ структуры кода и поиск на ошибки:
    Snipaste_2022-06-10_23-53-40.png
  • Вот еще например, расширение понимает, откуда я взял функцию логики и может проверять, действительно ли есть функция, которую я хочу вызвать.Snipaste_2022-06-10_23-52-44.png
  • Ну и документация, конечно же. Где можно описать многие вещи, которые новички не понимают.

Ну и так далее. Развивать можно сколько угодно, всё упирается только в реализацию и структуру геймдаты.

  • Лайк 1

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


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

Напоминаю о своём проекте! И рассказываю, что он теперь работает)

Случилась забавная (на самом деле нет, я все еще в тильте из-за этого) ситуация. Из-за моей ошибки у всех, кто скачал плагин, он не работал. Увы, но узнал я об этом только сейчас. Теперь все работает, поэтому было бы круто, если бы вы скачали, потрогали и возможно высказали свои мысли на счет проекта.

  • Мастер! 1

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


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

Всем снова привет! Давно не выкладывал здесь новости по поводу плагина, но теперь уж точно есть что рассказать. В прошлый раз, когда я выкладывал новости о плагине, версия была 0.1.4, сейчас же аж 0.5.2!

В первую очередь, было добавлено ОГРОМНОЕ количество новых функций, проведена оптимизация работы плагина и исправлено множество ошибок. Теперь расширение больше опирается на информацию в текстовом документе, чтобы соответствовать правилам работы языка, тем самым делая работу куда удобнее. 

Небольшая демонстрация:

Demonstration.gif

Расширение начало больше использовать информацию из скриптов, чтобы подстраиваться под разные проекты с различным функционалом. Конечно же, до того самого IntellSence еще далеко, но небольшими шагами программа приближается к этому.

Плагин ставит задачу - облегчить процесс создания разработчикам, но так же не стоит забывать о новичках. Именно поэтому постепенно идет создания документации для параметров, функций и, в будущем, типов секций. Так же идет создание Wiki, в котором подробно описаны некоторые моменты работы языка и некоторых функций плагина.

Кого заинтересовала данная информация, можете ознакомиться подробнее в шапке темы. Исходный код расширения полностью открыт, поэтому буду рад помощи со стороны. Даже если вы не умеете программировать, вы можете помочь с созданием документации или написанием статей для Wiki. Любая помощь приветствуется!

P.S. Прошу прощения за гифку, очень трудно из минутного видоса сделать качественную и легкую гифку.

  • Лайк 4

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


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

Так. По расписанию я должен напомнить о моём расширении. Выпустил 2 новых обновлений. Все как обычно - исправление ошибок, добавление новых функций, расширение документации. Подробнее ниже. У кого расширение скачано, получат обновление автоматически при запуске. У кого еще нет - прошу скачать и поделиться впечатлениями.

Изменения:

  • 0.5.4
    • Поддержка документации для секций
    • Исправлена критическая ошибка с зависимостями
  • 0.5.3
    • Hover Provider для локализации
    • Предпросмотр секций при автодополнении Task или Squad переменных
    • Исправлена ошибка, которая происходила при наличии одинаковых названий функций в xr_effects.script и xr_conditions.script
    • Исправление Highligthing-а
    • Некоторое количество мелких исправлений

Все необходимые ссылки указаны в шапке темы.

  • Лайк 2

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


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

Только что закончил работу над простенькой, но все же, диагностикой кода, которую постоянно откладывал. Вот перечень проверок, который реализованы на данный момент:

  • Объявление нескольких секций в одной строке
  • Дублирование секций с одинаковым названием
  • Ссылка на несуществующую секцию
  • Неверный тип секции
  • Неиспользуемая секция
  • Пустая секция
  • Ссылка на самого себя
  • Ссылка на несколько секций в одном Condlist-е
  • Проверка условия с инфопоршнями
  • Проверка условия с функциями
  • Вызов несуществующей функции
  • Некорректная запись параметра
  • Неизвестный параметр

Так же хочу подметить, что это не просто анализ кода на ошибки. Я добавил возможные решения ошибок, где была такая возможность, которые, может, и не всегда смогут решить проблему пользователя, но избежать примитивных опечаток точно смогут. Список все еще не большой, но со временем он будет пополняться.  Вот пример нескольких решений:

При неверном объявлении типа секции, расширение предлагает 3 самых подходящих решения:

image.png

При указании ссылки на пустую секцию, расширение может порекомендовать заменить это на nil:

image.png  image.png

Все это делается процедурно, поэтому даже если у проекта есть свои типы секции, то расширение их распознает, при правильной настройке. Конечно же, любой, кому будет не по душе данная функция или просто начнут раздражаться из-за неверных обозначениях ошибок - в настройках функцию диагностики кода можно отключить.

Релиз этой версии планируется в ближайшее время, после небольшого теста в "реальных условиях" и возможных исправлений. Более подробно информацию распишу уже в changelog-е. Если у кого-то есть идеи, как это улучшить, готов послушать тут, на Гитхабе (с помощью вкладки Issues) или вовсе, посмотреть на вашу реализацию, так как это полностью открытый код.

И самое важное, что стоит сказать. Расширение - не замена вашему мозгу. Писать полностью за вас оно не сможет и, увы, оно разработано мною (недоучкой, с ужасным кодом), а значит плагин тоже может ошибиться, при чем во многих местах. Поэтому я был бы благодарен тем, кто будет этим пользоваться, периодически проверять, делиться впечатлениями и замечаниями, чтобы сделать его лучше. Ждите обновы!

  • Лайк 2

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


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

Выпустил версию 0.6. Скачать можете, все так же, по ссылкам в шапке темы. Как я и говорил, были добавлены диагностика кода и их решения.  Вот их перечень:

Спойлер

Диагностика кода на ошибки:

  • Объявление нескольких секций в одной строке
  • Дублирование секций с одинаковым названием
  • Ссылка на несуществующую секцию
  • Неверный тип секции
  • Неиспользуемая секция
  • Пустая секция
  • Ссылка на самого себя
  • Ссылка на несколько секций в одном Condlist-е
  • Проверка условия с инфопоршнями
  • Проверка условия с функциями
  • Вызов несуществующей функции
  • Некорректная запись параметра
  • Неизвестный параметр

Решение ошибок:

  • Удаление секции
  • Замена ссылки на nil
  • Удаление секции и замена ссылок на nil
  • Рекомендации по замене типа секции, если оно неверно
  • Рекомендации по замене функции, если она неверна
  • Рекомендации по замене параметра, если он неверный
  • Добавление объявления секции

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

Что я имею ввиду? Для наглядности приведу пример. У меня есть файл "squad_descr_escape.ltx", расширение определило его как файл со сквадами и у него есть перечень параметров, которые свойственны всем секциям данного типа. Это супер, я их собираю в массив, после анализа файла, который отвечает за это, и после использую для анализа или автодополнения. Но так вышло, что ПЫС решили использовать параметр "story_id", не таким образом, как это делается обычно, а именно снаружи файла, в другом месте, а значит в массиве он не появляется, и расширение не отображает его и считает этот параметр ошибкой. Да, можно просто статично объявить нужную мне информацию, но тогда могут возникнуть проблемы у тех, у кого эти вещи изменены. Казалось бы, мелочь, однако таких "мелочей" очень много, из-за чего делать расширение процедурным все труднее и труднее. Тоже самое происходит со многими другими вещами. Множество вещей в скриптах указаны через переменные, которые могут быть динамичными, а с учетом того, что плагин читает их просто как текст, без контекста или понятия о их работе, работать с этим не легко.

В общем. Я, наверное, закончу на версии 0.6. Проект был интересный, пускай не так много людей им пользуются, как бы мне хотелось, и я не смог сделать его действительно качественным. Код остаётся открытым. У кого будет желание - редактируйте. Если будут вопросы по тех. части, я отвечу. Но стоит учитывать, что код там действительно не самый лучший и понятный.

Всем спасибо за внимание. Особая благодарность тем, кто помогал в процессе разработки.

  • Лайк 1
  • Печаль 1
  • Спасибо 1

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


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

Сегодня исправил небольшой баг связанный с параметрами в некоторых секциях, обновление должно само обновиться.

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 12.09.2022 в 20:43, AziatkaVictor сказал:

Чтобы мододелам упростить жизнь тем, что некоторая инфа была доступна прямо в редакторе, ибо сам не раз искал как называется функция или нужная переменная

Весомый аргумент. Молодец. что сделал это расширение.

В 12.09.2022 в 16:46, aka_sektor сказал:

Вопрос удобства, простоты и скорости лишь. 

Лишь? :)))))) Это очень весомые аргументы.

Не могу понять, откуда у людей такая любовь к Notepad-ам. В данном случае предоставляется более удобный узко-специализированный инструмент.

В 25.04.2023 в 15:04, AziatkaVictor сказал:

пускай не так много людей им пользуются, как бы мне хотелось

А на сколько активно ты освещал данную тему? Смотрю в теме активности почти нет.
Предположу, что причиной стала привычка людей работать безо всяких хинтов, а порой и в простых блокнотах. Если это первый extension по работе с LTX, то сбить эту самую привычку в ~15 лет очень сложно.

Желаю удачи, если будут ещё попытки погрузиться в тему расширений для Сталкера ;)


Дополнено 8 минуты спустя

P.S. В следующий раз перед релизом stable версии, попробуй продумать и тему раскрутки данного проекта. Никто не увидит твой бриллиант, пока ты его под нос не сунешь. Если будет пользоваться немало людей, это придаст тебе больше мотивации и ответственности. Так ты сможешь дольше поддерживать проект.

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


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

А на сколько активно ты освещал данную тему? Смотрю в теме активности почти нет.

Упоминал каждый раз, когда затрагивал тему логики в сталкере. Большинство тех, с кем знаком рекомендовал и некоторые его используют и временами дают фидбек. В целом, развивать эту тему можно, но тут слишком много вещей сделано через хардкор, поэтому задумка с адаптивностью полностью исчезает. Самый базовый функционал у расширения есть, дальше его развивать вряд ли буду. Те кто хочет, пусть пользуются или даже редактируют код, проект открытый.

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


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

AziatkaVictor Понятно.

Мне больно смотреть на то, как подобный инструментарий умирает так быстро, по этому и решил как-то подбодрить тебя. Но да ладно, надеюсь ты хоть какое-то удовольствие для себя извлёк во время работы над ним.

Желаю всего хорошего в подобных начинаниях ;)

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 21.09.2023 в 05:13, alinsky сказал:

Не могу понять, откуда у людей такая любовь к Notepad-ам

Удобство практичность в малом весе программы, плюс так же возможность создать плагин. 

  • Лайк 1

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


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

Stern-13 Но это несоизмеримо с тем же VS code. Я понимаю привычку, но вот принять не могу. Это лютый консерватизм.


Дополнено 6 минуты спустя

Stern-13 Сталкерский моддинг, если это не работа на C++ с самим движком, вещь специфичная и хардкорная. До сих пор огромное количество людей работают чуть ли ни методом тыка. Что не есть гуд.

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


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

Моя жизнь разделилась на до и после, когда я начал пользоваться этим!

  • Жму руку 1
  • Смех 1
  • Спасибо 1

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


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

Сталкерский моддинг, если это не работа на C++ с самим движком, вещь специфичная и хардкорная.

Когда поймешь принцип работы, то станет вообще все равно, начнешь даже через стандартный блокнот делать.

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


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

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

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

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

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

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

Войти

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

Войти

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

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