Soc. Постэффекты при использовании предмета.
Материал из S.T.A.L.K.E.R. Inside Wiki
Постэффект при использовании предмета.
Всем привет, тут я опишу как сделать постэффект при использовании определённого предмета. Итак нам понадобятся файлы: gamedata\config\misc\items.ltx gamedata\scripts\escape_dialog.script
Приступим. 1) Открываем файл item.ltx, спускаемся в самый низ и пишем это:
[test_havka]:identity_immunities
GroupControlSection = spawn_group
discovery_dependency =
$spawn = "food and drugs\bread"
;$prefetch = 32
class = II_FOOD
cform = skeleton
visual = weapons\bred\bred.ogf
description = enc_equipment_food_bread1
script_binding = escape_dialog.use_test_havka
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
Теперь подробнее:
[test_havka]:identity_immunities ;Скриптовое название предмета (секция), не должна повторяться иначе будет вылет.
GroupControlSection = spawn_group ;Это не трогать
discovery_dependency = ;Это не трогать
$spawn = "food and drugs\bread" ;Это не трогать
;$prefetch = 32 ;Это не трогать
class = II_FOOD ;Класс предмета, в данном случае "Еда" (лучше не менять)
cform = skeleton ;Это не трогать
visual = weapons\bred\bred.ogf ;Визуал (3d модель предмета)
description = enc_equipment_food_bread1 ;Описание. Можно вписать своё, либо в соответствующий текстовый ффайл либо сюда но через "".
script_binding = escape_dialog.use_test_havka ;Бинд предмета.
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 ;Стоимость предмета, можно указать свою. В данном случае предмет стоит 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 ;Сколько порций в 1 предмете (сколько раз можно его скушать)
; food item
slot = 4 ;Не менять
animation_slot = 4 ;Не менять
;hud item
hud = wpn_vodka_hud ;Не менять
Получится булка. Все параметры остаются прежними, то есть 2 одинаковые булки, но нас интересуют не параметры, а вызов постэффекта. Сохраняем, закрываем. Далее открываем файл escape_dialog.script Спускаемся в самый низ и пишем вот это:
function use_test_havka(obj)
local obj_sect = obj:section()
local snd
if obj_sect == "test_havka" then
level.add_pp_effector("alcohol.ppe", 3000, false)
end
end
Подробно обо всём:
function use_test_havka(obj) -- Имя функции, не должно повторяться. Переменная "function" должна присутствовать перед название функции
local obj_sect = obj:section()
local snd
if obj_sect == "test_havka" then --если объект "test_havka" использована
level.add_pp_effector("alcohol.ppe", 3000, false) --то скриптовое наложение постэффекта алкогольного опьянения на 3000 милисекунд.
end -- первая переменная "end", завершает параметр "if"
end -- вторая переменная "end", завершает функцию
Далее в этом же скрипте находим строку: function give_weapon_to_actor (trader, actor)
Пред "end" вставляем строку:
dialogs.relocate_item_section(trader, "test_havka", "in")
Сохраняем, закрываем. Всё, можете проверять. После того, как захаваете батон, получите алкогольное опьянение.
Автор: Dj_Ultor