Modstalker - все для справжнього сталкера!

спавн нових предметів

У цій статті я розповім як створювати нові предмети:

Для почав знаходимо файл items.ltx, що знаходиться в папці config / misc /, і копіюємо який-небудь предмет, я, наприклад, взяв:

[Bread]: identity_immunities
GroupControlSection = spawn_group
discovery_dependency =
$ Spawn = "food and drugs # 92; bread"
; $ Prefetch = 32
class = II_FOOD
cform = skeleton
visual = weapons # 92; bred # 92; bred.ogf
description = enc_equipment_food_bread1

inv_name = Bread
inv_name_short = Bread
inv_weight = 0.3; 0.2

inv_grid_width = 1
inv_grid_height = 1
inv_grid_x = 11
inv_grid_y = 9
cost = 20

attach_angle_offset = -0.287979, 1.560923, 1.544060
attach_position_offset = 0.096910, -0.013594, 0.107925
attach_bone_name = bip01_r_hand
auto_attach = false

// should be deleted after update
bone_name = bip01_r_hand
position_offset = 0.0,0.0,0.0
angle_offset = 1.570790,1.570790,3.92699

; eatable item
eat_health = 0.05
eat_satiety = 0.2
eat_power = 0
eat_radiation = 0
wounds_heal_perc = 0
eat_portions_num = -1

; food item
slot = 4
animation_slot = 4

; Hud item
hud = wpn_vodka_hud

Вставляємо його копію в кінець, міняємо назву:

inv_name = Bread
inv_name_short = Bread

inv_name = test
inv_name_short = test

І description = enc_equipment_food_bread1 на description = enc_equipment_food_bread1_test

І, також, "за бажанням":

eat_health = 0.05 eat_satiety = 0.2 eat_power = 0 eat_radiation = 0 wounds_heal_perc = 0 eat_portions_num = -1

Все, в item.ltx робота закінчена, тепер переходимо до редагування опису, відкриваємо string_table_enc_equipment "Блокнотом". Що ми там бачимо: всі описи і назви прописані за тегами:

Назва в грі

Опис в грі

Тестовий предмет, розроблений в надсекретних лабораторіях Зони

Зберігаємо. Усе! Основна робота завершена! Тепер додамо предмет торговцям, наприклад, Сидоровичу.

Відкриваємо trade_trader з папки config / misc (робота з ним детально описана в цій статті), прописуємо:

Зберігаємо, запускаємо гру, торгуємо з Сидоровичем і бачимо у нього два види хліба: один з них - наш

Спавн об'єктів через db.script
[Ред]
теорія

Сьогодні я розповім вам як заспавніть, наприклад, AK-74 на самому початку гри, без використання діалогів! Але, перш ніж вчитися запускати функції без використання діалогів - спочатку навчіться їх викликати загальноприйнятим методом.

* [Спавн через скрипт]

Для початку нам треба розпакувати db.script і там знаходимо функцію:

function add_actor (obj)
actor = obj
actor_proxy: net_spawn (obj)
add_obj (obj)
end

Змінимо цю функцію. У нас повинно вийти так:

function add_actor (obj)
actor = obj
actor_proxy: net_spawn (obj)
add_obj (obj)
new_spawn.give_ak74 ()
end

new_spawn.script - це назва скрипта, в якому буде знаходитися наша функція спавна калаша.

Створюємо скрипт new_spawn.script і пишемо там функцію:

function give_ak74 ()
alife (): create ( "wpn_ak74", db.actor:position (), db.actor:level_vertex_id (), db.actor:game_vertex_id (), db.actor:id ())
end

* Шатров Дмитро (Fim @ n)

"Створюємо роботи радіо"

1. Для початку, в gamedata # 92; sounds # 92; characters_voice # 92; scenario # 92; створити папку, наприклад, esc_mafon.
І в отриману директорію: gamedata # 92; sounds # 92; characters_voice # 92; scenario # 92; esc_mafon # 92; покласти музику з назвою day_music_1.ogg, day_music_2.ogg і т.д. (Буде грати вдень). І в цю ж папку додаємо night_music_1.ogg, night_music_2.ogg. (Буде грати вночі).
2. У файл sound_theme.script (gamedata # 92; scripts # 92;) додати:
код
ph_snd_themes [ "day_music"] = "characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; day_music_2",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; day_music_3",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; day_music_4",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; day_music_5",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; day_music_6",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; day_music_7",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; day_music_8",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; day_music_9",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; day_music_10"
>

ph_snd_themes [ "night_music"] = "characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; night_music_2",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; night_music_3",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; night_music_4",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; night_music_5",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; night_music_6",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; night_music_7",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; night_music_8",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; night_music_9",
"Characters_voice # 92; # 92; scenario # 92; # 92; esc_mafon # 92; # 92; night_music_10"
>

Я довів рахунок до 10-ти файлів. Можна продовжити - залежить від того, скільки пісень планується додати.
3. Розпакувати all.spawn і в в файл alife_l01_escape.ltx додати в кінці:
код
[888]
; cse_abstract properties
section_name = physic_object
name = esc_mafon
position = -212.976898193359, -22.2855587005615, -127.408164978027
direction = 0,2.40000009536743,0

; cse_alife_object properties
game_vertex_id = 59
distance = 0.400000005960464
level_vertex_id = 41277
object_flags = 0xffffff3a
custom_data = < [Logic]
cfg = scripts # 92; esc_mafon.ltx
END

; cse_visual properties
visual_name = equipments # 92; mafon

; cse_ph_skeleton properties
skeleton_flags = 1

; cse_alife_object_physic properties
physic_type = 0x3
mass = 10
fixed_bones = link

4. Тепер сама логіка. У gamedata # 92; config # 92; scripts # 92 ;, створити файл esc_mafon.ltx і заповнити:
код
[Logic]
active = ph_sound @ day

[Ph_sound @ day]
snd = day_music
on_info = ph_sound @ night

[Ph_sound @ night]
snd = night_music
on_info = ph_sound @ day

або:
код
[Logic]
active = ph_sound @ day

[Ph_sound @ day]
snd = day_music
on_signal = sound_end | ph_sound @ night

[Ph_sound @ night]
snd = night_music
on_signal = sound_end | ph_sound @ day

У першому варіанті, музика з денною на нічну, переключиться відразу, як настане ніч.
У другому варіанті, музика так само переключиться з настанням ночі, але пісня не перерветься, а дограється до кінця. Другий варіант, так скажімо, по красивіше.

Схожі статті