Сповіщення
Очистити все

SoC. Генерування предметів у трупах


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Вступ

Розберу, як випадково в трупах генеруються предмети. За спавн предметів відповідають 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% ймовірністю.

PS У «Чистому Небі» та «Кличі Прип'яті» мінімальне значення для спавна це 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 атпечки.

ДОДАВАННЯ В ГЕНЕРАЦІЮ НОВОГО ПРЕДМЕТА

Для прикладу розберу додавання енергетичного напою STALKER (патч 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 шт.


   
Цитата