Всім привіт тут я опишу, як зробити постефект при використанні певного предмета.
Отже нам знадобляться файли:
gamedata\config\misc\items.ltx
gamedata\scripts\escape_dialog.script
gamedata\scripts\bind_stalker.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 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 = bip0 _ _ _ // 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 ;Опис. Можна вписати своє, або у текстовий файл, або сюди але через "". 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 ; ch = 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,9 ; ; eatable item eat_health = 0.05 ; відновлення здоров'я при використанні eat_satiety = 0.2 ;Прибавка ситості при використанні eat_power = 0 ; Набавка сили при використанні eat_radiation = 0 ; Додаток радіації при використанні wounds_heal_per ; 1 предметі (кілька разів можна його з'їсти) ; food item slot = 4 ; Не міняти animation_slot = 4 ; ;hud item hud = wpn_vodka_hud ;Не міняти
Вийде булка. Усі параметри залишаються колишніми, тобто 2 однакові булки, але нас цікавлять не параметри, а виклик постефекту. Зберігаємо, закриваємо.
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 _ _ _ _ _ _ _ _ _ _ скриптове накладення постефекту алкогольного сп'яніння на 3000 мілісекунд. end - перша змінна "end", завершує параметр "if" end - друга змінна "end", завершує функцію
Далі в цьому ж скрипті знаходимо рядок: function give_weapon_to_actor (trader, actor)
Перед "end" вставляємо рядок:
dialogs.relocate_item_section(trader, "test_havka", "in")
Зберігаємо, закриваємо.
3) Заходимо до bind_stalker.script У функцію function actor_binder:net_destroy() вписуємо це:
self.object:set_callback(callback.use_object, nil)
У цьому файлі в функцію actor_binder:reinit() пишемо це:
self.object:set_callback(callback.use_object, self.use_object, self)
І в кінець файлу пишемо ось таку функцію:
function actor_binder:use_object ( obj ) escape_dialog.use_test_havka ( obj ) end
Детально:
function actor_binder:use_object ( obj ) - назва функції escape_dialog.use_test_havka ( obj ) - виклик функції use_test_havka з файлу escape_dialog end - закінчення функції
Зберігаємо, закриваємо. Все, можете перевіряти. Після того, як збережете батон, отримаєте алкогольне сп'яніння.