Перейти к содержанию
Авторизация  
AziatkaVictor

Медицина [ТЧ]

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

 

Платформа: ТЧ
Автор: ColR_iT

Мод реализует реакцию ГГ на использование съедобного предмета.

Спойлер

Медленное восстановление

Для каждого из предметов можно определить до четырёх параметров (здоровье, пси-здоровье, радиация и выносливость), которые могут восстанавливать/"поломать" соответствующее свойство ГГ. Обновляются эти параметры независимо друг от друга, прекращение обновления каждого - также не зависит от других.

Критический хит

В случае, когда мы использовали аптечку и во время восстановления здоровья получили значительный хит, то восстановление оного прекращается. Это относится исключительно к хиту полученному по здоровью.

Запрет на повторное использование

Использовать медицинские препараты (аптечки, бинт, антирад) повторно нельзя, на протяжении некоторого времени. Еду и энергетик при этом использовать ничего не запрещает. Получение критического хита, позволяет воспользоваться аптечкой досрочно.

Убирание оружия

После использования предмета, некоторое время будет невозможно воспользоваться оружием. Критический хит, восстанавливает оружие преждевременно.

Звуки при использовании

Во время использования предмета проигрывается соответствующий звук.


Спойлер
  • В файле use_item.script имеются общие настройки, а также настройки для каждого предмета, позволяющие отрегулировать мод под собственное видение игры. Все настройки весьма гибкие и описаны комментариями, поэтому разобраться что к чему не составит труда.
  • Мод использует динамическое подключение и отключение функций от биндера автора, посредством функционала xr_s.script за авторством xStream. Таким образом весь процесс вычислений происходит исключительно после использования какого-либо предмета. Когда действие всех эффектов заканчивается, функции отключаются от биндера и никаких вычислений не происходит. Благодаря этому, использование ресурсов системы - минимально, а процесс адаптации с другими модами - прост.
  • Исходя из ограничений движков игры, без вмешательства в сам движок, скриптовая регенерация возможна лишь для пяти свойств ГГ:
    • health (здоровье)
    • psy_health (пси-здоровье)
    • radiation (радиация)
    • power (выносливость)
    • morale (мораль, но я не знаю для чего она).
  • Остальные свойства, к сожалению, скриптовому воздействию не поддаются (?) и поэтому изменять их нужно посредством соответствующих движковых параметров в конфигах предметов:
    • bleeding (кровотечение)
    • satiety (сытость)
    • alcohol (алкоголь)
  • Принцип действия до безумия прост - Вы используете предмет, скрипт отлавливает это действие и в зависимости от настроек производит то или иное действие.


Спойлер

Как и прежде, я постарался свести процесс адаптации к минимуму. Для этого, Вам необходимо:

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


xr_s.on_actor_update(delta)

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


use_item.CheckSection(obj:section())

Если у Вас нет данного колбека, то его нужно добавить. Как это сделать написано ниже.

Адаптировать файл item.ltx с имеющимся у Вас. Процесс адаптации состоит в совмещении десяти секций предметов описанных выше. В частности нескольких параметров после комментария "eatable item" в каждой секции. Для параметров eat_health, eat_power и eat_radiation нужно обязательно(!) ставить значение равное нулю, в противном случае смысл мода сходит на нет. Можете вручную подправить параметры секций исходя из данных в табличке ниже.

В редких случаях, возможен конфликт папки со звуками. Если таковой возник, то для параметра soundsFolder, который находится в самом низу в скрипте, укажите путь до папки, в которой находятся звуки. К слову, звуки используются из мода Lost World Trops of Doom, единственно что - прогнал их через СДК, дабы избавится от возмущений в логе.


Спойлер

В файле bind_stalker.script в метод reinit класса actor_binder, в конец допишите следующую строку:


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

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


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

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


function actor_binder:use_inventory_item(obj)
end

Собственно всё.

P.S. Может случится так, что в Вашем моде метод вызываемый колбеком уже есть, чтобы узнать какой именно метод Вам нужен, обратите внимание на регистрацию колбека в методе reinit, а именно на второй аргумент функции set_callback, в нашем случае это use_inventory_item.


Спойлер

Аптечка:

  • Здоровье: +25% на протяжении 5 секунд;
  • Пси-здоровье: +3% на протяжении 5 секунд;
  • Выносливость: -10% на протяжении 5 секунд;
  • Сытость: -3%.

Армейская аптечка:

  • Здоровье: +55% на протяжении 9 секунд;
  • Пси-здоровье: +8% на протяжении 6 секунд;
  • Радиация: -20% на протяжении 6 секунд;
  • Выносливость: -15% на протяжении 6 секунд;
  • Сытость: -5%.

Научная аптечка:

  • Здоровье: +85% на протяжении 14 секунд;
  • Пси-здоровье: +13% на протяжении 9 секунд;
  • Радиация: -50% на протяжении 9 секунд;
  • Выносливость: -20% на протяжении 9 секунд;
  • Сытость: -15%.

Бинт:

  • Кровотечение: -100%;
  • Выносливость: -25% на протяжении 5 секунд.

Антирад:

  • Радиация: -100% на протяжении 15 секунд;
  • Выносливость: -30% на протяжении 10 секунд;
  • Сытость: -15%.

Водка:

  • Здоровье: +3% на протяжении 4 секунд;
  • Пси-здоровье: +15% на протяжении 9 секунд;
  • Выносливость: -20% на протяжении 9 секунд;
  • Радиация: -10% на протяжении 6 секунд;
  • Сытость: -30%;
  • Алкоголь: +10%.

Энергетик:

  • Выносливость: +100% на протяжении 15 секунд;
  • Сытость: -25%.

Консерва:

  • Выносливость: +20% на протяжении 12 секунд;
  • Сытость: +40%;
  • Алкоголь: -5%.

Колбаса:

  • Выносливость: +15% на протяжении 10 секунд;
  • Сытость: +30%;
  • Алкоголь: -4%.

Батон:

  • Выносливость: +10% на протяжении 8 секунд;
  • Сытость: +20%;
  • Алкоголь: -3%.


Спойлер

К сожалению, без них не обошлось...

  • При сохранении игры во время процесса восстановления, загрузка этого сохранения не приведёт к продолжению процесса, простыми словами - сие не сохраняется.
  • В момент, когда Вы повторно воспользуетесь предметом, а его повторное использование запрещено настройками, то скрипт не позволит восстанавливать ни один из параметров, кроме тех, что не поддаются правки скриптами. Например:
    • Вы использовали армейскую аптечку. Первое её использование запустит процесс постепенного восстановления четырёх параметров: здоровья, пси-здоровья, радиации и выносливости, плюс мгновенно изменится параметр сытости. При повторном использовании заново процесс запускаться не будет и аптечка вернётся к Вам в инвентарь, но к сожалению, параметр сытости будет изменен, т.к. это движковое действие и отловить этот момент не представляется возможным. Та же картина и с антирадом.
  • Каких либо вылетов замечено не было, те что были - поправил. Если кто найдёт, будьте любезны, не поленитесь сообщить, можно в личку, но лучше сюда в тему - буду признателен.


Спойлер

Спасибо Charsi, Gun12 и malandrinus за оказанную помощь.
С Удовольствием приму конструктивную критику и пожелания по развитию мода.

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу