С вами снова я, Сталкер_27 и сейчас я поясню,как случайным образом генерируются предметы.
  • Шаг первый: За спавн предметов отвечают 4 файла:
    death_generic<span style="color:#EEDC82">.ltx

    death_items_by_communities.ltx
    death_items_by_levels.ltx
    death_items_count.ltx

  • Шаг второй: Разберем структуру:
    death_generic.ltx является главным файлом с инклюдами остальных. В нем описываются зависимости спавна патронов при наличии определенного оружия (то есть если у нпс есть ТОЗ-34, то заспавненые патроны должны быть для него, а не для СВД, например), секция:</span>
    Code
    [item_dependence]

    Перечисляются уникальные, квестовые предметы, которые не должны удаляться, если они есть у нпс, секция:</span>
    Code
    [keep_items]

    [size=10]И предметы, относящиеся к патронам (их надо спавнить другим методом), секция:

    Code
    [ammo_sections]

  • Шаг третий: Разберем структуру:
    death_items_by_communities.ltx
    В ней указывается вероятность заспавнить какой либо предмет в процентах,например:

    Code
    af_medusa = 0.015
    af_cristall_flower = 0.01
    af_night_star = 0.005

    Означает,что артефакт медуза заспавнится с вероятностью 1.5%,кристальная колючка с 1%,а ночная звезда с вероятностью 0.5%.Если стоит 1,то предмет заспавнится со 100% вероятностью. Во всех остальных секциях пишется соответствие на именно эту секцию,например:
    Code
    [bandit]:stalker

    Это значит,что у всех членов группировки "Бандиты" генерация предметов точно такая же,как и у сталкеров.Если необходимо задать другой шанс спавна,то просто пишется строка с новым значением, например у наемников отключен спавн хлеба,колбасы,водки,однако увеличен шанс сгенеретить энергетический напиток:
    Code
    [killer]:stalker

    ;Еда
    Code
    bread = 0
    kolbasa = 0
    vodka = 0
    energy_drink = 0.3

    Стоит дополнительно оговориться, что учитываются только сотые доли, то есть писать меньше, чем 0.01 не имеет смысла, поскольку в этом случае цифра будет округляться до нуля. Иными словами, шанса меньше 1% в игре не может быть.
  • Шаг четвёртый: Разберем структуру:
    death_items_by_levels.ltx
    Генерирование предметов для разных уровней(локаций). Главной секцией является:

    Code
    [default]

    А во всех других пишется соответствие на нее. В этом файле задается значение,спавнить или нет предмет на уровне:
    Code
    af_medusa = 1
    af_cristall_flower = 0

    То есть если стоит цифра 1,то спавним,если 0-не спавним.
  • Шаг пятый: Разберем структуру:
    death_items_count.ltx
    Количественное отношение заспавненных предметов для разных уровней сложности прохождения игры.

    Code
    [item_count_0]
    -новичек
    Code
    [item_count_1]
    -сталкер
    Code
    [item_count_2]
    -ветеран
    Code
    [item_count_3]
    -мастер
    Как видите,с каждым уровнем сложности спавн предметов уменьшается.Главной как всегда является первая секция(новичек). Отличительная особенность написания,это две цифры.Первая цифра указывает минимальное количество заспавненных предметов,вторая максимальное. Если стоит одно значение,то спавнится всегда в определенном количестве. Пример:
    Code
    bandage = 2
    medkit = 1, 2

    Значит будет генеретится всегда 2 бинта, и 1 или 2 атпечки.
  • Шаг шестой: Генерация нового предмета.
    Для примера разберу добавление энергитического напитка "S.T.A.L.K.E.R.". Создание собственного предмета я разбирать не буду,так как такая статья уже имеется,я просто напишу его конфиг:

    Code
    [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

    Code
    [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 шт.