Перейти к содержанию
Авторизация  

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

 

Всем привет, тут делюсь своим опытом в редактировании артефактов. Буду дополнять со временем! Удачной вам охоты в архивах игры!
 

Спойлер

- 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

 

Изменено пользователем Danibash
  • Лайк 1
  • Спасибо 1

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


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

Спасибо! Хороший материал. Можно ли таким способом создать новый артефакт на основе существующих? Как минимум замена текстуры в инвентаре, я думаю, возможна, как и настройка спавна

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


Ссылка на сообщение
Поделиться на другие сайты
 
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

И всё должно работать. Я сам пока не проверял, но по логике вылета не должно быть.
 

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


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

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

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

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

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

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

Войти

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

Войти
Авторизация  

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

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