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

Создаю никому не нужный полный редактор всех конфигураций для создания модов

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

 

Суть - создаю полный редактор конфигураций с помощью ии, что бы даже новичку было ясно куда, кому и чего, пока тестится на версии ТЧ 1.0006, однако желательно тестировщики на разных конфигурациях и на разных версиях,  собственно да. Крайний рабочий билд конфигуратора - 0.5.9.5, для его работы требуется Python v3.10 и выше, остальное что требуется есть внутри архива. Ну вроде как.

stalker_config_editor_v0_5_9_5.zip

  • Мастер! 1

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


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

Вот вот щас
Выйдет все нужные инструменты и пойду моды делать

  • Смех 1

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


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

Vladick_Source эт конечно здорово, но оформил бы "шапку" что ли нормально. Почему нет инфы, которая есть в архиве?

Спойлер

S.T.A.L.K.E.R. Config & Dependency Editor v0.4.3.3

Исправления:
- *_hud вынесены из «Предметов» во вкладку HUD.
- *_arena вынесены во вкладку «Арена».
- af_activation_* вынесены в «Активацию артефактов».
- Рабочие вкладки укорочены.
- Справка открывается кнопкой и закрывается крестиком или средней кнопкой мыши.
- В строке поиска есть пример допустимых запросов.
- Ложный «Бонус прыжка» убран из стандартной карточки артефактов.
- Функции DDS-атласа из v0.4 сохранены.

Запуск:
1. Один раз запустите install_dependencies.bat.
2. Запустите run_editor.bat.
3. Откройте gamedata или gamedata\config.

- Технические ID убраны из дерева объектов; они остаются в сведениях и редакторе.
- Исправлено схлопывание правой панели после открытия объекта.

- Добавлен резервный вывод названий без локализации.
- Идентификаторы с подчёркиваниями отображаются читаемо: ammo_9x18_fmj → Ammo 9x18 fmj.
- Значения в одинарных и двойных кавычках показываются без кавычек.
- Для артефактов af_* автоматическое переименование отключено.
- Правило работает в дереве, вкладках, поиске и зависимостях.

Исправлено:
- В «Технические» попадают только нелокализованные служебные секции.
- Реальные игровые предметы с подчёркиваниями остаются в своих категориях.
- Гранаты F1, RGD-5 и grenade_* восстановлены.

Спойлер

v0.4.3.3
- Исправлена классификация служебных секций.
- Добавлены вкладки HUD, Арена и Активация артефактов.
- Укорочены названия рабочих вкладок.
- Справка сделана закрываемой и вынесена на кнопку.
- Добавлена подсказка в поиске.
- Убран ложный стандартный эффект прыжка у артефактов.

Исправление сборки v0.4.3.3:
- Убраны технические ID из левого дерева.
- Добавлено восстановление ширины правой панели после открытия вкладки.

Исправление имён v0.4.3.3:
- Локализация имеет высший приоритет.
- Добавлено читаемое имя для нелокализованных section_id.
- Убираются внешние кавычки.
- Артефакты исключены из автоматического преобразования.

Исправления Claude (v0.4.3.3, ручной патч):
- Гарантирован приоритет text/rus над text/eng при чтении локализации (было недетерминированно из-за rglob).
- Подключена функция readable_fallback_name() к формированию display_name — раньше была написана, но нигде не вызывалась.
- Исправлено: af_*_absorption (служебные подсекции поглощения артефактов) больше не
  залипают в "Предметы" из-за слишком широкого правила "префикс af_ = реальный предмет".
  Теперь они, как и положено по ТЗ, уезжают в категорию "Технические".
- Убран костыль is_real_item_section (белый список префиксов wpn_/af_/ammo_/grenade_,
  который в обход правила ТЗ считал такие секции предметами всегда). Теперь единственный
  критерий: есть локализация имени -> предмет; нет локализации и есть "_" или кавычки
  в идентификаторе/значении -> "Технические". Без исключений по префиксу.

Исправления классификации (аудит classify() на реальных данных из проекта):
- Порядок проверок в classify() был неправильным: общие поля description/cost
  (ITEM_HINTS) проверялись раньше специфичных признаков секции (trade/dialog/
  task/anim), из-за чего квесты и торговые списки утекали в "Предметы"
  просто потому что тоже используют поле description/cost. Переставлено.
- Квестовые секции (tm_eliminate_camp_1, barmen_find_artefact_1 и т.п.) не
  содержат слова "task"/"quest" в имени -> добавлено распознавание по полям:
  type = eliminate_lager/artefact/kill_stalker/find_item/monster_part/
  defend_lager/storyline, либо reward_money/reward_item/reward_rank,
  либо связка parent+target.
- Убрано слишком широкое правило "/misc/ -> Предметы": в config/misc/ у STALKER
  лежат ещё аномальные зоны, менеджер квестов, менеджер тайников и торговля,
  которые раньше все скопом попадали в "Предметы".
- Добавлено распознавание аномальных зон (zone_*) как "Карты и окружение"
  вместо попадания в "Прочее" по остаточному принципу.

v0.4.5 (журнал изменений):
- Реализована система Remaster с нуля (в ТЗ v0.4.3 значилась, но фактически
  не была написана предыдущими версиями чатгпт).
- При "Сохранить всё" создаётся батч в gamedata/remaster/<дата>_<время>_<первый
  изменённый объект>/ с копиями старой и новой версии каждого затронутого
  файла + manifest.json (какие объекты правились в каждом файле).
  Гранулярность - на уровне файла и события сохранения, не отдельного поля.
- "Первый изменённый объект" определяется по порядку, в котором вкладки
  реально были помечены изменёнными в течение сессии (dirty_seq), а не по
  порядку итерации словаря.
- Новое окно "История изменений" (кнопка в тулбаре): список всех батчей,
  экспорт в Markdown (вся история или выбранный батч, с diff по каждому
  файлу), откат выбранного батча к состоянию "было".

v0.5.0 (редактор торговли):
- Графический редактор торговли. Открывается по клику на секцию [trader]
  файла торговца вместо обычного текстового редактора.
- Парсинг структуры торговца: buy_condition/sell_condition/buy_supplies из
  [trader]. Секции поставок (кол-во/вероятность) и цены продажи связываются
  между собой ПО ОДИНАКОВОМУ ТРИГГЕР-УСЛОВИЮ, а не по порядку в списке
  (реальные файлы держат их в разном порядке).
- Вкладки "Продажа игроку" / "Закупка у игрока", внутри каждой -
  подвкладки по триггер-условиям (например {+bar_svoboda_rg6_done}).
- Сетка иконок предметов (переиспользован рендер DDS-атласа из v0.4).
  Непродаваемые предметы (;NO TRADE) залиты красным крестом поверх иконки.
- Клик по предмету открывает панель: название, описание (из локализации),
  количество, вероятность, диапазон цены, чекбокс NO TRADE - всё
  редактируется и сразу пишется в документ по кнопке "Применить".
- Создание нового торговца с нуля отложено на следующий подэтап (по
  договорённости).

Исправление v0.5.0:
- Секция [trader] раньше называлась одинаково "trader" во всех файлах
  торговцев и валилась в подкатегорию "Прочее" - терялась среди прочего,
  найти её в дереве было невозможно. Теперь у неё отдельная подкатегория
  "Торговец (открыть редактор)" первой в списке, и понятное имя вида
  "Торговец «dolg»" по имени файла.

v0.5.2 (оптимизация):
- _build_dependencies() и ещё 6 мест делали линейный поиск секции по имени
  (next(s for s in doc.sections if...)) на КАЖДЫЙ ресурс при полном
  сканировании проекта - O(N^2) на документ с N секциями. Заменено на
  словарь-индекс имя->секция внутри Document (O(1)), строится один раз
  при парсинге файла.
- refresh_category_lists() (список категорий слева) на каждое нажатие
  клавиши в поиске заново пересчитывал список подкатегорий полным проходом
  по ВСЕМ ресурсам, один раз на каждую из категорий. Список подкатегорий
  теперь считается один раз при (пере)сканировании проекта и кэшируется.
- Добавлен debounce на поиск (150мс) - дерево пересчитывается один раз
  после паузы в наборе текста, а не на каждый символ.
- Редактор торговли грузил и декодировал DDS-атлас заново для каждой
  триггер-вкладки торговца (обычно 2-5 вкладок = 2-5 загрузок одного и
  того же файла). Теперь атлас кэшируется один раз на вкладку торговца.

v0.5.3:
- Создание нового торговца: кнопка "Новый торговец" в тулбаре. Клонирует
  найденный в проекте trade_trader.ltx под новым именем (trade_<имя>.ltx,
  та же папка). Секции с префиксом trader_ (цены закупки/продажи)
  переименовываются под новый id; секции поставок (supplies_*) остаются
  как есть - в реальных файлах они не несут префикса торговца. Шапка
  [trader] не трогается. После создания проект пересканируется и новый
  торговец сразу открывается в графическом редакторе.
- Remaster (история изменений) теперь пишется в папку самого редактора
  (<папка_редактора>/remaster/<имя_проекта>_<хэш>/), а не в gamedata игры -
  раньше засорял папку мода.
- Найден и исправлен баг с BOM: detect_encoding() пробовал "utf-8-sig"
  первым для ЛЮБОГО файла, из-за чего Document.save() у любого файла без
  кириллицы (валидный ASCII/UTF-8, определяется как utf-8-sig) молча
  добавлял BOM в начало при первом же сохранении, даже если в оригинале
  BOM не было. Теперь utf-8-sig возвращается только если BOM реально есть
  в байтах файла.

Исправление v0.5.3:
- Создание нового торговца раньше тупо клонировало ВСЮ структуру шаблона,
  включая квестовые триггер-условия конкретного NPC (например secondary
  sell/supply группа "после того как принёс флешку Сидоровичу"). Новый
  торговец получал секции вроде "vojaka_after_fabric_sell", которые
  ссылались на чужое условие (esc_kill_bandits_quest_done) - бессмысленно
  для нового персонажа. Теперь берётся только БАЗОВОЕ (безусловное)
  состояние шаблона - чистый стартовый ассортимент, три секции без единого
  триггер-условия: [<имя>_buy], [<имя>_supplies], [<имя>_sell].

v0.5.5 (привязка торговца к NPC):
- Разобрал реальный механизм: файл торговли ни на кого не ссылается сам -
  привязка идёт из ОТДЕЛЬНОГО файла-логики NPC (например bar_petrenko.ltx)
  через строку "trade = misc\trade_dolg.ltx" в секции [logic]. Путь -
  относительно папки config/, через обратный слеш.
- В редакторе торговли (открытая вкладка [trader]) теперь сверху видно,
  к каким NPC этот файл торговца сейчас привязан (обратный поиск по всем
  .ltx проекта на предмет строки trade = ...<имя файла>).
- Кнопка "Привязать / перепривязать NPC..." открывает список всех
  найденных в проекте секций с trade = ... (с поиском), выбор NPC и
  подтверждение переписывает его строку trade на текущий открытый файл
  торговца - с правильным относительным путём (misc\trade_<имя>.ltx).

v0.5.6 (NPC: редактирование и создание):
- Разобрал реальную структуру: NPC в SoC - это 3 файла: профиль
  (<specific_character id="..."> в character_desc_*.xml), логика
  (отдельный ltx вроде bar_petrenko.ltx с секцией [logic]) и спавн-секция
  (character_profile/custom_data в spawn_sections.ltx). По договорённости
  редактор трогает только профиль + логику, спавн (физическое размещение
  на карте) остаётся за SDK/all.spawn.
- Профили парсятся регэкспами по сырому тексту XML, не через ElementTree -
  в реальных файлах полно закомментированных тегов
  (<!--actor_dialog>...</actor_dialog-->) и своеобразного форматирования,
  которые ElementTree при обратной сериализации бы уничтожил. Правится
  только конкретное изменённое поле внутри блока NPC, всё остальное в
  файле остаётся байт-в-байт как было.
- Новое окно "NPC" (кнопка в тулбаре), вкладка "Профили": поиск по всем
  <specific_character> проекта, карточка с полями (name, bio, class,
  community, rank, reputation, visual, snd_config, start_dialog,
  supplies), просмотр actor_dialog. Кнопка "Новый NPC из выбранного" -
  клонирует блок профиля под новым id, с опцией сразу клонировать и
  файл-логику (шаблон выбирается из списка найденных).
- Вкладка "Логика": список отдельных логик-файлов NPC (эвристика - ltx с
  секцией [logic], где есть active/meet/trade/on_death/on_info),
  прямое редактирование секции [logic] текстом.

v0.5.7 (оптимизация интерфейса):
- Левая панель категорий сокращена до 6 самых ходовых: Предметы,
  Персонажи, Торговцы, Диалоги, Квесты и задания, Карты и окружение.
  Остальные 9 (HUD, Арена, Активация артефактов, Технические, Анимации,
  Скрипты, Интерфейс, Системные, Прочее) переехали в отдельное окно по
  кнопке "Прочие категории" в тулбаре - деревья строятся один раз при
  старте, окно просто прячется/показывается, не пересоздаётся заново.
- Тулбар сокращён до: Открыть проект, Пересканировать, Сохранить
  вкладку/все, Закрыть вкладку, Справка, Прочие категории.
- "История изменений" (remaster) перенесена внутрь окна Справки.
- Кнопка "Новый торговец" перенесена из тулбара в саму панель категории
  "Торговцы" (сверху над деревом).
- NPC теперь полноценно встроены в общую систему ресурсов вместо
  отдельного попап-окна: каждый <specific_character> - отдельный
  кликабельный объект в дереве "Персонажи" (подкатегория "Профиль"),
  открывается как вкладка редактирования (аналогично торговцу). Логика
  NPC (bar_petrenko.ltx и подобные) - тоже отдельные объекты в этой же
  категории (подкатегория "Логика"), открываются обычным редактором
  свойств. Кнопка "Новый NPC" - в панели категории "Персонажи", открывает
  выбор шаблона для клонирования.
- classify(): секция [logic] с поведенческими ключами NPC (active/meet/
  trade/on_death/on_info) теперь распознаётся как категория "Персонажи" -
  раньше такие файлы уезжали в "Скрипты" просто по пути /scripts/.

Исправление v0.5.7 (привязка торговца к NPC):
- find_npc_trade_links() раньше искал ключ trade = ... в ЛЮБОЙ секции
  любого ltx-файла - в список привязки могли попасть секции, где trade
  просто случайно совпал по имени и не имеет отношения к персонажам.
  Теперь ищет строго в секции [logic], и только если там есть другие
  поведенческие признаки персонажа (active/meet/on_death/on_info/
  combat_ignore_cond) - одинокий trade= без остальных признаков больше
  не считается персонажем.

v0.5.8:
- ИСПРАВЛЕНО: вкладки закрывались просто по клику на них. Причина - клик
  по вкладке проверялся на попадание в последние 24px справа (угадывание
  позиции псевдо-крестика "×" в тексте вкладки); на коротких названиях эта
  зона занимала половину вкладки и обычной клик мимо цели её закрывал.
  Убрал этот механизм целиком - клик по вкладке теперь только переключает
  на неё. Закрытие: средняя кнопка мыши (было и раньше) или ПРАВЫЙ клик -
  теперь открывает контекстное меню "Закрыть вкладку / Закрыть остальные /
  Закрыть все".
- Редактор NPC: подключены иконки (портреты). Разобрал реальный механизм -
  в отличие от предметов (координаты атласа в самой секции), иконки NPC
  ссылаются на именованный id (например "ui_npc_u_barman"), который
  описан в отдельном ui_texture-descriptor файле (вида ui_npc_unique.xml:
  <file_name>ui\ui_npc_unique</file_name><texture id="..." x=".." y=".."
  width=".." height=".."/>). Такие descriptor'ы разбираются один раз при
  сканировании проекта (ProjectIndex.ui_textures), не при каждом открытии
  вкладки.
- Редактор NPC переработан по глубине на уровне редактора предметов - три
  вложенные вкладки:
  * "Профиль" - имя и биография теперь редактируются как РЕЗУЛЬТИРУЮЩИЙ
    текст локализации (с отдельной кнопкой "Применить имя и биографию",
    создаёт ключ локализации если его не было) - раньше редактировался
    только сырой ключ, а не сам видимый текст. Остальные поля (класс,
    community, ранг, репутация, визуал, звук, диалог, supplies) - как раньше.
  * "Иконка" - кликабельная сетка ВСЕХ портретов, найденных в проекте
    (с поиском по id), а не просто текстовое поле - клик применяет выбор
    сразу к профилю. Плюс превью текущего выбора сверху.
  * "Исходник" - показывает точный XML-блок этого персонажа как есть
    (только чтение), для проверки/доверия к правкам.

v0.5.9 (фикс подвисаний при работе с DDS):
- Нашёл причину: find_icon_atlases() и find_dds_by_stem() делали ПОЛНЫЙ
  обход всего проекта (root.rglob("*.dds")) на КАЖДЫЙ вызов, без кэша.
  Особенно больно било в сетке иконок NPC (v0.5.8) - там это вызывалось
  на КАЖДУЮ отдельную иконку в сетке (десятки полных обходов диска ради
  отрисовки одной сетки один раз). На реальном gamedata с тысячами файлов
  это ощущалось как подвисание интерфейса.
- Список .dds файлов теперь кэшируется ОДИН РАЗ при сканировании проекта
  (ProjectIndex.dds_files), обе функции читают из кэша вместо диска.
  Проверено счётчиком: раньше открытие вкладки NPC с сеткой портретов
  делало N+1 обход диска (N - число иконок в сетке), теперь - 0
  дополнительных обходов (используется тот же кэш, что построен при
  открытии проекта).

v0.5.9.5 (сужение выбора иконок NPC):
- Настоящая причина ощущения "тянет вообще все иконки UI": index.ui_textures
  парсит ВСЕ ui_texture-descriptor'ы проекта разом - в реальной игре это не
  только портреты, а ещё оружие, HUD, меню, PDA и т.д. (десятки отдельных
  descriptor-файлов). Сетка выбора портрета показывала вообще всё это одним
  списком.
- Добавлена npc_icon_choices(): атлас считается "портретным", если хотя бы
  один его id уже используется каким-то NPC-профилем в проекте - тогда
  показывается весь этот атлас (чтобы выбрать другой портрет из того же
  набора). Если НИ ОДИН NPC ещё не назначил иконку - запасной вариант по
  имени файла атласа ("npc" в названии), чтобы сетка не была пустой.
  Проверено на наборе из 3 descriptor-файлов (портреты + оружие + HUD,
  6 иконок суммарно) - в сетку NPC теперь попадают только 3 портретных,
  оружие и HUD корректно исключены.

 

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


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

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

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

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

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

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

Войти

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

Войти

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

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

Важная информация

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