Skip to content
AziatkaVictor edited this page Feb 24, 2023 · 17 revisions

Добро пожаловать на Wiki! Здесь будет описана информация о расширении и то, как работает логика сталкера. Создаёться всё с целью помочь начинающим мододелам и объяснить вещи, которые могут быть не ясны.

База знаний

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

Структура файлов

Начнем с самого важного - со структуры файла. Файлы могут различаться между собой, в зависимости от назначения, но у них всех есть общие свойства.

Определение секции

Для начала, любая информация храниться в "секциях". Это своего рода объекты с набором параметров, которые обычно предопределённы либо движком игры, если это какой-то конфиг, либо скриптами, если это файл, отвечающий за игровую логику.

Рассмотрим для примера секцию stalker_sim_squad_novice из файла конфигурации squad_desct.ltx:

[stalker_sim_squad_novice]:online_offline_group
faction = stalker
npc_random = sim_default_stalker_0, sim_default_stalker_1, sim_default_stalker_2
npc_in_squad = 2, 3

В данном случае мы можем подметить следующее:

  • Объявление секции stalker_sim_squad_novice. Работает как обычная переменная со схожими свойствами:
    • Название не может повторяться в области видимости.
    • Может обладать разными областями видимости, в зависимости от контекста.
    • Можно ссылаться, если необходимо сменить секцию или просто вынести информацию в отдельную секцию (например секция meet).
  • Наследование online_offline_group. Как и любое другое наследование, перенимает в себе информацию родителя, которую можно перезаписать при желании. В данном случае идет наследование из файла m_online_offline_group.ltx:
[online_offline_group]
GroupControlSection   = spawn_group
class         		= ON_OFF_S
;$spawn          = "scripts\online_offline_group" 
  • Объявление параметров faction, npc_random и npc_in_squad

Определение параметра

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

on_info = {-dont_have_info} %+add_info =play_sound(sound_name)% sr_idle@end

Структура может по началу сбить с толку, но она достаточно закономерна и проста. Для начала разобьем её на части:

  • Название параметра on_info
  • Разделитель =
  • Так называемый "Condlist", о котором будет рассказано позже, {-dont_have_info} %+add_info =play_sound(sound_name)% sr_idle@end

Информация о расширении

Здесь будет информация о работе расширения или его особенностях.

Создание собственной документации

Первое, что необходимо сделать - вызвать команду Add Documentation через нажатие сочетания клавиш Ctrl+Shift+P и выбрав в списке нужный пункт:

Step1

Далее выбираем файл с нужной нам функцией, для которой хотим написать документацию (при вызове автодополнение сбоку пишется, из какого файла взята функция):

Step2

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

Step3

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

Question

После всего, появиться поле ввода текста. У расширения есть поддержка Markdown так что можно оформить описание так, как захочется.

Step4

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

Result

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