Перейти к контенту

Рекомендуемые сообщения

Получается, что бы адаптировать его к моду Большая Зона (это можно сделать)? 

Нужно сделать так:

На мод Большая Зона четвертый патч + фикс + скайкубы и погода из соли, распаковать еще и этот мод. А затем править "блокнотные" файлики, как написано в разделе "установка"? Заранее спасибо. 

Простите за глупый вопрос, но я не совсем понимаю во всем этом.  :(

28783.png

Microsoft Windows 7 Ultimate; QuadCore AMD Phenom II X4 B40, 3000 MHz (15 x 200); NVIDIA GeForce GT 440 GDDR5  (512 Мб) (DX11); 6144 Мб  (DDR3-1333 DDR3 SDRAM). 

 

Ссылка на комментарий

@Термик, Нет, нужно самому все ручками вписать.

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

Ссылка на комментарий

Итак. Рискну наглядно, с картинками, разъяснить правку Bind_stalker'а.
Скрины с "почти" чистого файла. Поэтому, если увидите строки, которых у вас нет- не бойтесь.

==================================================

1.Если подключаете мод к ТЧ, вписать в файле bind_stalker.script в метод (функцию) update следующую строку:

   " xr_s.on_actor_update(delta) "

7c44d44310dft.jpg

 

2. Итак. Тут Вы можете столкнуться с проблемой отсутствия колбека, поэтому переходим в спойлер "подключение колбека ..."
1) В файле bind_stalker.script в метод reinit класса actor_binder, в конец допишите следующую строку:

   "  self.object:set_callback(callback.use_object, self.use_inventory_item, self) "

ac8fa7847584t.jpg

 

2) Затем, в метод net_destroy допишите:

   " self.object:set_callback(callback.use_object, nil) "

3110f983ed40t.jpg

 

3) Теперь нужно добавить метод, который будет вызываться при использовании какого-либо предмета. Допишите данный код после одного из методов (не во внутрь функции!!!), например перед update:

 

  " function actor_binder:use_inventory_item(obj)

    use_item.CheckSection(obj:section())

    end "

310502791798t.jpg

 

Я эту функцию вставил перед функцией save.
==================================================

Ну и остальные файлы, думаю совместить сможете. 

==================================================

 

 

Товарищи модераторы, если я нарушил правила вставки изображений, то прошу ткнуть на нужный пункт в правилах, ибо не нашел. К наказанию готов)

Изменено пользователем Вспышка
  • Нравится 2
Ссылка на комментарий

создаем скриптовый файл с название kalmah_effects либо можно свое название и пишем в него:



function effects(obj)
local obj_sect = obj:section()
local effects
if obj_sect =='medkit' then effects = level.add_pp_effector("inv_medkit.ppe", 1974, false)
return(level.add_pp_effector)
elseif obj_sect =='medkit_army' then effects = level.add_pp_effector("inv_medkit.ppe", 1974, false)
return(level.add_pp_effector)
elseif obj_sect =='medkit_scientic' then effects = level.add_pp_effector("inv_medkit.ppe", 1974, false)
return(level.add_pp_effector)
elseif obj_sect =='matras' then effects = level.add_pp_effector("sleep.ppe", 1974, false)
return(level.add_pp_effector)
elseif obj_sect =='antirad' then effects = level.add_pp_effector("eat_drug.ppe", 1974, false)
return(level.add_pp_effector)
elseif obj_sect =='vodka' then effects = level.add_pp_effector("alcohol.ppe", 1974, false)
return(level.add_pp_effector)
elseif obj_sect =='energy_drink' then effects = level.add_pp_effector("blur.ppe", 1974, false)
return(level.add_pp_effector)
end
if effects then
local effects_obj = level.add_pp_effector()
end
end
Затем идем в бинд сталкер, и находим функцию с медициной и там же ниже прописываем в функцию эти строки kalmah_effects.effects(obj). например:
function actor_binder:use_inventory_item(obj)
use_item.CheckSection(obj:section())
kalmah_effects.effects(obj)
end
после этого нужно убедиться что у вас есть данные ppe эффекторы в гейм дате если нет то можно скачать, я выложу чуть позже.

 



создаем скриптовый файл kalmah_anims_effect, или можно свое название.и пишем в него:
function anims(obj)
local obj_sect = obj:section()
local anims
if obj_sect =='medkit' then anims = level.add_cam_effector("camera_effects\\item_use_slow.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='medkit_army' then anims = level.add_cam_effector("camera_effects\\item_use_slow.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='medkit_scientic' then anims = level.add_cam_effector("camera_effects\\item_use_slow.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='matras' then anims = level.add_cam_effector("camera_effects\\wake_up.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='bandage' then anims = level.add_cam_effector("camera_effects\\item_use.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='conserva' then anims = level.add_cam_effector("camera_effects\\item_use_slow.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='kolbasa' then anims = level.add_cam_effector("camera_effects\\item_use_slow.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='bread' then anims = level.add_cam_effector("camera_effects\\item_use_slow.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='antirad' then anims = level.add_cam_effector("camera_effects\\item_use_fast.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='vodka' then anims = level.add_cam_effector("camera_effects\\item_use_slow.anm", 10, false, "")
return(level.add_cam_effector)
elseif obj_sect =='energy_drink' then anims = level.add_cam_effector("camera_effects\\item_use.anm", 10, false, "")
return(level.add_cam_effector)
end
if anims then
local anims_obj = level.add_cam_effector()
end
end

Теперь заходим в бинд сталкер и там же где мы прописали Ppe эффекты в ту же функцию пишем эти строки kalmah_anims_effects.anims(obj) например:
function actor_binder:use_inventory_item(obj)
use_item.CheckSection(obj:section())
kalmah_effects.effects(obj)
kalmah_anims_effects.anims(obj)
end
Теперь нужно убедиться в том что у вас есть Anim камеры в гейм дате я их выложу вместе с эффекторами.

 



Создаем скриптовый файл с названием kalmah_effects_state и пишем в него:
function state(obj)
local obj_sect = obj:section()
local state
if obj_sect =='medkit' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='medkit_army' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='medkit_scientic' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='bread' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='kolbasa' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='conserva' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='medkit_scientic' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='antirad' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='vodka' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='bandage' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
elseif obj_sect =='energy_drink' then state = kalmah_effects_state.state()
return(kalmah_effects_state.state())
end
if state then
local state_obj = kalmah_effects_state.state()
end
end

function state()
set_inactivate_input_time(6)
end

теперь идем в бинд сталкер и в ту же фукцию что и ранее прописываем эти строки kalmah_effects_state.state() например:
function actor_binder:use_inventory_item(obj)
use_item.CheckSection(obj:section())
kalmah_effects.effects(obj)
kalmah_anims_effects.anims(obj)
kalmah_effects_state.state()
end

теперь при использовании предметов гг будет не подвижен некоторое время. Время 6 секунд расчитано на проигрывание Аним камеры, и звука.

 



вот собственно архив в нем папка anims  распоковать папку в геймдату и все 

http://yadi.sk/d/E6kxoHosFzYSm

 

 



Важным условием работы всего этого является то что вы прописали калбэки в бинд сталкер и функцию юзания предмета. Ну иными словами если у вас есть мод медицина.)



собственно в этом и заключался kalmah mod который я сейчас делаю.Но я подумал что он мелковат и решил присоединить сюда.



 

Автор скриптов:kalmah 13

Тест и совершенствование: kalmah 13

Anim камеры и ppe эффекты собраны с разных модов. Собератель

kalmah 13

 

Изменено пользователем kalmah 13
  • Спасибо 1
  • Нравится 2
  • Не нравится 2
  • Полезно 2
Ссылка на комментарий

А как сделать подобное для Зов Припяти? Как скрипт будит выглядеть (только функция убирания оружия на 4 секунды)?

Как ее правильно подключить к игре (чтобы работала для всех медикаментов)?

Ссылка на комментарий

Я конечно от моддинга остал, в районе года или даже больше тут не появлялся, но неужели в лост альфе перешли на другой язык для скриптов? Думаю нет. Так что максимум, что нужно перенести это вызовы, которые навреняка в биндере лежат.

Ссылка на комментарий

Парни кто нибудь делал адаптацию этого мода под магазинное питание v1.1 ? Не могу совместить их как ни стараюсь,если кому не лень помогите.

Изменено пользователем Xeon1993
Ссылка на комментарий

Подскажите, в каких единицах задаются параметры времени:

 timeRestore - время, которое этот параметр нужно восстанавливать;
 timeHideWpn - время на которое нужно убрать оружие;
 timeReusing - время, через которое предмет можно использовать вновь;
 
секунды или миллисекунды?
Ссылка на комментарий

Поставил себе, настроил параметры...

Всё работало отлично до того, как решил воспользоваться спальным мешком. ГГ его слопал...

Установил, что причина в коллбеках (в actor_binder:reinit):

self.object:set_callback(callback.use_object, self.use_obj, self)--спальник
self.object:set_callback(callback.use_object, self.use_inventory_item, self)--медицина(продукты)

Если так, то спальник исчезает при попытке использовать. Если поменять их местами - со спальником всё нормально, но "медицина" не работает. 

Подскажите, кто знает, как проблему решить? Заранее благодарю.

 

ТЧ-1.0004...

Изменено пользователем Fagot.
Ссылка на комментарий

@Fagot., ты вторым присваиванием коллбека маскируешь первое. Данным методом на событие можно повесить только один коллбек, вот у тебя и срабатывает тот, который стоит вторым.
Очевидно, что если второй строчкой у тебя стоит медицина - все используемые предметы начинают трактоваться как нечто съедобное и (это зависит уже от вызываемой функции) лечащее.

 

Всю логику по выбору действия в зависимости от типа предмета следует прописать внутри одной из функций use_obj или use_inventory_item и назначать коллбек к одной этой функции.

 

Вопрос, кстати, относится больше к скриптованию, чем к медицине.

Изменено пользователем Kirgudu
Ссылка на комментарий

@Kirgudu, здесь у одного товарища была такая же проблема. Автор темы посоветовал ему следующее:

 

 


Есть вот такой код у тебя:
function actor_binder:use_obj(obj)
main_sleep.sleep(obj)
end

Замени на вот такой:
local item_ = {["medkit"] = true, ["medkit_army"] = true, ["medkit_scientic"] = true,}
function actor_binder:use_obj(obj)
main_sleep.sleep(obj)
if item_[obj:section()] then
medicine.Rehabilitation(obj)
end
end

 

 

Я так и сделал (только у меня не medicine.Rehabilitation(obj), а use_item.Rehabilitation(obj) ) .

А этот коллбек:

self.object:set_callback(callback.use_object, self.use_inventory_item, self)

удалил.

Получил вылет, при использовании аптечки:

scripts\use_item.script:342: attempt to index local 'IP' (a nil value)

строка №342 в use_item:

-- Нужно ли прятать оружие и не спрятано ли оно уже?
if hide and hiddenTime < IP.timeHideWpn then
-- Нужно - прячем.
xr_s.register_callback("update", use_item.HideWeapon, {timeHideWpn = IP.timeHideWpn, time = time_global()})
end

 

Дальше я потерялся, ибо скрипты - дремучий лес, для меня.

Вот мой bind_stalker.script и use_item.script

 

 

Вопрос, кстати, относится больше к скриптованию, чем к медицине.

Это намёк, что мне пора отползать в другую тему?

 

 

Изменено пользователем Fagot.
Ссылка на комментарий

А если заглянуть в шапку, то можно увидеть такую надпись:

В этом же файле в колбек use_object дописать следующую строку:

use_item.CheckSection(obj:section())

Ссылка на комментарий

@Barmolini, ага. Это в наличии, если я правильно сделал:


function actor_binder:use_object(obj)
use_item.CheckSection(obj:section())
end

--------------------------
Изменил actor_binder:use_object(obj) на  actor_binder:use_obj(obj)...

Теперь вылета нет, но ГГ опять жрёт спальник, хотя 

self.object:set_callback(callback.use_object, self.use_inventory_item, self) я убрал, оставив только: 

self.object:set_callback(callback.use_object, self.use_obj, self) ...

Изменено пользователем Fagot.
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...