SoC. Генерирование предметов в трупах
Материал из S.T.A.L.K.E.R. Inside Wiki
Содержание
Введение
Разберу, как случайным образом в трупах генеретятся предметы. За спавн предметов отвечают 4 файла в папке "config\misc":
-death_generic.ltx
-death_items_by_communities.ltx
-death_items_by_levels.ltx
-death_items_count.ltx
Разберем их структуру.
DEATH_GENERIC.LTX
Является главным файлом с инклудами остальных. В нём описываются зависимости спавна патронов при наличии определенного оружия (то есть если у НПС есть ТОЗ-34, то заспавненые патроны должны быть для него, а не для СВД, например), секция:
[item_dependence]
Перечисляются уникальные, квестовые предметы, которые не должны удаляться, если они есть у НПС, секция:
[keep_items]
И предметы, относящиеся к патронам (их надо спавнить другим методом), секция:
[ammo_sections]
DEATH_ITEMS_BY_COMMUNITIES.LTX
В ней указывается вероятность заспаунить или нет какой либо предмет в процентах,например:
af_medusa = 0.015 af_cristall_flower = 0.01 af_night_star = 0.005
Означает, что артефакт «медуза» заспавнится с вероятностью 1.5%, «кристальная колючка» — с 1% ,а «ночная звезда» — с вероятностью 0.5%. Если стоит 1, то предмет заспавнится со 100% вероятностью.
P.S. В «Чистом Небе» и «Зове Припяти» минимальное значение для спавна это 0.01 (1%). Игра больше не понимает значения ниже 1%.
Во всех остальных секциях пишется соответствие на именно эту секцию,например:
[bandit]:stalker
Это значит, что у всех бандитов генерация предметов точно такая же, как и у сталкеров. Если необходимо задать другой шанс спавна, то просто пишется строка с новым значением, например, у наёмников отключен спавн хлеба, колбасы, водки, однако увеличен шанс сгенеретить энергетический напиток:
[killer]:stalker ;Еда bread = 0 kolbasa = 0 vodka = 0 energy_drink = 0.3
Стоит дополнительно оговориться, что учитываются только сотые доли, то есть писать меньше, чем 0.01 не имеет смысла, поскольку в этом случае цифра будет округляться до нуля. Иными словами, шанса меньше 1% в игре не может быть.
DEATH_ITEMS_BY_LEVEL.LTX
Генерирование предметов для разных уровней(локаций). Опять таки главной секцией является:
[default]
А во всех других пишется соответствие на неё. В этом файле задается значение, спавнить или нет предмет на уровне:
af_medusa = 1 af_cristall_flower = 0
То есть если стоит цифра 1,то спавним,если 0-не спавним.
DEATH_ITEMS_COUNT.LTX
Количественное отношение заспавненных предметов для разных уровней сложности прохождения игры.
[item_count_0] -новичок [item_count_1] -опытный [item_count_2] -ветеран [item_count_3] -мастер
Как видите, с каждым уровнем сложности спавн предметов уменьшается. Главной как всегда является первая секция(новичок). Отличительная особенность написания — это 2 цифры.Первая цифра указывает минимальное количество заспавненных предметов, вторая максимальное. Если стоит одно значение, то спавнится всегда в определённом количестве. Пример:
bandage = 2 medkit = 1, 2
Значит будет генеретится всегда 2 бинта, и 1 или 2 атпечки.
ДОБАВЛЕНИЕ В ГЕНЕРАЦИЮ НОВОГО ПРЕДМЕТА
Для примера разберу добавление энергетического напитка «S.T.A.L.K.E.R.» (патч 5, напиток отсутствует). Создание собственного предмета я разбирать не буду, так как такая статья уже имеется, я просто напишу его конфиг:
[energy_drink_stalker]:vodka $spawn = "food and drugs\energy_drink_stalker" inv_name = energy_drink_stalker_name inv_name_short = energy_drink_stalker_short_name visual = equipments\drink_stalker.ogf description = enc_equipment_energydrink_stalker cost = 75 inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 11 inv_grid_y = 0 inv_weight = 0.3 inv_name = drink_stalker eat_health = 0 eat_satiety = 0 eat_power = 1.0 eat_alcohol = 0 eat_radiation = 0 wounds_heal_perc = 0 eat_portions_num = 1 eat_max_power = 0.2 attach_angle_offset = 0.000000, 0.000000, 0.000000 attach_position_offset = 0.087266, -0.078540, 0.052360 attach_bone_name = bip01_r_hand auto_attach = false
Само собой добавте описание... Сделаем упрощенное генерирование, то есть для всех: группировок, уровней сложности, локаций оно будет одинаковым... Для этого добавим наш энергетик во все главные секции:
-death_items_by_communities.ltx
[stalker] energy_drink_stalker =0.2 af_medusa = 0.015
-death_items_by_levels.ltx
[default] energy_drink_stalker = 1 af_medusa = 1
-death_items_count.ltx
[item_count_0] energy_drink_stalker = 1 af_medusa = 1
Вписывать спавн нашего предмета можно в любое место в этих секциях между другими предметами, не обращая внимание на записи разрабов (;Еда,;Медикаменты и т.п.), так как сделаны они просто для удобства, игра это не учитывает. Всё, новый предмет добавлен в игру, появляться он будет с 20%-ой вероятностью в количестве 1 шт.
P.S. Учёл пожелания HikeR'a, надеюсь статья оформлена правильно:)
Автор: Костя.н.ы.ч 13:24, 17 сентября 2009 (UTC)]]