Danibash 16 Опубликовано 28 ноября, 2024 (изменено) Всем привет, тут делюсь своим опытом в редактировании артефактов. Буду дополнять со временем! Удачной вам охоты в архивах игры! Спойлер - Stalker2\Content\GameLite\GameData\EffectPrototypes.cfgЭтот файл отвечает за свойства и эффекты в игре (не только артефактов)- Stalker2\Content\GameLite\GameData\ItemPrototypes\ArtifactPrototypes.cfgЭтот файл отвечает за сами артефакты - Stalker2\Content\GameLite\GameData\ItemPrototypes\ArtifactSpawnerPrototypes.cfgЭтот файл отвечает за спавнеры артефактов Спойлер GArtifactRubiksCube : struct.begin {refkey=TemplateArtifact}Название артефакта и от чего он наследуется (TemplateArtifact) SID = GArtifactRubiksCube Игровой идентификатор артефакта (Первая буква названия, тип аномалии) Icon = Texture2D'путь до иконки' Иконка артефакта и его местоположение MeshPrototypeSID = GArtifactRubiksCube Модель артефакта Cost = 60000.0 Цена Weight = 0.5 Вес AnomalyElementType = EAnomalyElementType::Gravity К какой группе аномалий принадлежит артефакт ( в нашем случае гравитационым ) ArtifactType = EArtifactType::Gravity Тип аномалии самого артефакта ( обычно соотвествует пункту выше ) Rarity = EArtifactRarity::Epic Редкость артефакта (обычно от неё зависит цена и полезные свойства) FakeArtifactDistortionVFX = NiagaraSystem'' Отвечает за эффект фальшивого артефакта (встречаются такие аномалии) SoundStateTransitionOnHide = AkAudioEvent'путь до звука' Звук убирания артефакта SoundStateTransitionOnShow = AkAudioEvent'путь до звука' Звук доставания артефакта ArtifactTypeSwitch = AkSwitchValue'путь до звука' Не совсем понял, переключение артефакта? Blueprint = Blueprint'путь' Путь до блюпринта артефакта ( это что-то типа скрипта и заготовки в Unreal Engine) EffectPrototypeSIDs : struct.begin [0] = ArtifactProtectionStrike3 [1] = ArtifactProtectionBurn3 [2] = ArtifactProtectionChemicalBurn3 [3] = ArtifactProtectionShock3 [4] = ArtifactAddRadiation4 struct.end Здесь мы перечисляем эффекты которые будут у артефакта из файла EffectPrototypes.cfg ShouldShowEffects : struct.begin [0] = true [1] = true [2] = true [3] = true [4] = true struct.end Здесь мы перечисляем какой из эффектов будет виден в инвентаре. Если хотите скрытый, ставьте false. EffectsDisplayTypes : struct.begin [0] = EEffectDisplayType::EffectLevel [1] = EEffectDisplayType::EffectLevel [2] = EEffectDisplayType::EffectLevel [3] = EEffectDisplayType::EffectLevel [4] = EEffectDisplayType::EffectLevel struct.end Здесь мы уточняем тип отображения характеристик артефакта: EEffectDisplayType::EffectLevel - значение по типу (слабо, сильно) EEffectDisplayType::Value - значение по типу (0.5, 1.0) EEffectDisplayType::ValueAndTime - значение по типу (0.5, 1.0) и длительность эффекта ( 2 минуты ) JumpAmount = 7 Сколько раз артефакт скачет в аномалии в серии JumpDelay = 3.0 Задержка между каждым прыжком JumpSeriesDelay = 25.0 Через сколько серия прыжков повторится ViewOffset : struct.begin X = -1.5 Y = 0.0 Z = 0.0 struct.end Смещение модели при осмотре (коррекция анимации доставания) struct.end Спойлер ArtifactDegenBleeding1 : struct.begin {refkey=[0]}Название эффекта и от чего наследуется ( в данном случае почти всегда 0 ) SID = ArtifactDegenBleeding1 Игровой идентификатор, должен совпадать с названием эффекта! Text = ArtifactDegenBleeding1 Описание эффекта (не в инвентаре!) LocalizationSID = general_protectionBleed Описание эффекта в инвентаре! В данном случае ссылка на файл локализации и конкретную в нём надпись. Icon = Texture2D'путь до иконки в интерфейсе' Иконка эффекта Type = EEffectType::DegenBleeding Тип и свойства эффекта ( в данном случае уменьшение кровотечения / смотрите другие, там много разных ) ValueMin = 0.5 ValueMax = 0.5 Минимальное и максимальное значение ( в игре всегда стоят одинаковые, так что старайтесь писать одно число ) Positive = EBeneficial::Positive Является ли эффект положительным ( цифры или надпись будет красной или зелёной ) bIsPermanent = true Вечный ли эффект? В случае с артефактами всегда true. struct.end Так научившись работать с этими двумя файлами можно создавать свои артефакты и редактировать их свойства и эффекты. Если же вы хотите пойти дальше и например попробовать добавить или изменить спавны артефактов, заходим в файл: Спойлер [77] : struct.begin {refkey=[0]}Ид спавнера и наследование ( опять от 0 ) ID = 77 ID спавнера. Берём число побольше чтобы не перезаписать что-то другое. SID = ChemicalArtifactSpawner Уникальные идентификатор Далее будет неиспользованная механика, но я её объясню. Можно настраивать под конкретную сложность у игроков. Newbie : struct.begin Название сложности (новичок) Count = 1 Количество артефактов для спавна Radius = 0.f В каком радиусе спавнятся (лучше оставлять 0, а то могут проваливаться сквозь землю) MinCooldown = 3.0 Минимальный время спавна артефакта ( в часах ) -- удар в сердце, не спавнятся от выбросов.... MaxCooldown = 15.0 Максимальное время спавна артефакта ( в часах ) SpawnChanceBase = 40.0 С какой вероятностью появиться артефакт SpawnChanceBonus = 5.0 Не совсем понимаю зачем это нужно, но бонусная вероятность спавна RarityChance : struct.begin В процентах какой редкости артефакт заспавниться с более высоким шансом (не используется) Common = 0.f Uncommon = 0.f Rare = 0.f Epic = 0.f struct.end struct.end UseListOfArtifacts = true Использовать ли лист для спавна артефактов? Да. ListOfArtifacts : struct.begin Список артефактов на спавн. [0] = CArtifactCrystalThorn [1] = CArtifactPellicle [2] = CArtifactChunkMeat [3] = CArtifactBun [4] = CArtifactThorn [5] = CArtifactMica [6] = CArtifactBubble [7] = CArtifactSlime [8] = CArtifactSlug [9] = CArtifactEchinus [10] = CArtifactKryptonite [11] = CArtifactBung [12] = CArtifactCottonWool [13] = CArtifactRosin [14] = CArtifactPlasticine [15] = CArtifactBouncyBall [16] = CArtifactDevilsMushroom [17] = CArtifactLiquidStone struct.end struct.end Изменено 28 ноября, 2024 пользователем Danibash 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NikolasRedArrow 46 Опубликовано 28 ноября, 2024 Спасибо! Хороший материал. Можно ли таким способом создать новый артефакт на основе существующих? Как минимум замена текстуры в инвентаре, я думаю, возможна, как и настройка спавна Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Danibash 16 Опубликовано 28 ноября, 2024 4 минуты назад, NikolasRedArrow сказал: Спасибо! Хороший материал. Можно ли таким способом создать новый артефакт на основе существующих? Как минимум замена текстуры в инвентаре, я думаю, возможна, как и настройка спавна Создавать артефакты не пробовал, но по идеи это можно сделать на основе другого и ничего ругаться не должно.В начале просто будет наследовать свой артефакт от другого:GНовыйартефакт : struct.begin {refkey=GArtifactRubiksCube}Затем меняем ему что хотим и добавляем в спавнеры (ArtifactSpawnerPrototypes.cfg):SID = ChemicalArtifactSpawnerНапример, я взял химические аномалии. И там будет секция: ListOfArtifacts : struct.begin [0] = CArtifactCrystalThorn [1] = CArtifactPellicle [2] = CArtifactChunkMeat [3] = CArtifactBun [4] = CArtifactThorn [5] = CArtifactMica [6] = CArtifactBubble [7] = CArtifactSlime [8] = CArtifactSlug [9] = CArtifactEchinus [10] = CArtifactKryptonite [11] = CArtifactBung [12] = CArtifactCottonWool [13] = CArtifactRosin [14] = CArtifactPlasticine [15] = CArtifactBouncyBall [16] = CArtifactDevilsMushroom [17] = CArtifactLiquidStone [18] = GНовыйартефакт -- добавили свой struct.end И всё должно работать. Я сам пока не проверял, но по логике вылета не должно быть. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StariyStalkKRG 3 827 Опубликовано 29 ноября, 2024 Вот бы ещё убогий фонарик поправить в игре! Мой канал на YouTubeСтарый сталк. KRG. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты