спавн нових предметів
У цій статті я розповім як створювати нові предмети:
Для почав знаходимо файл 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 = <
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
У першому варіанті, музика з денною на нічну, переключиться відразу, як настане ніч.
У другому варіанті, музика так само переключиться з настанням ночі, але пісня не перерветься, а дограється до кінця. Другий варіант, так скажімо, по красивіше.