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

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

Sky_Line, это действительно делается весьма просто, обычным запуском звука функцией например перед/после строки:

xr_s.register_callback("update", medicine.HideWeapon, time_global())


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

Charsi показал мне возможности xr_s.script, за что ему огромное спасибо, я их изучил и решил поделиться с остальными, т.к. не многие знают что это за "фрукт", а те кто знают и без меня его прекрасно используют, кроме того динамически подключаться к колбекам можно не только этим методом - способов более чем достаточно. Что касается того, что в ЗП "давно" есть подобная система, то здесь я даже более тебе скажу - именно данный способ в нём и используется, правда единожды, но используется...

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


Ссылка на сообщение

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

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


Ссылка на сообщение

Куда уже подробнее?

"после одного из методов" означает, что код нужно вписать между функциями, но никак не во внутрь. Как пример, можно разместить его перед строкой:

function actor_binder:update(delta)

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


Ссылка на сообщение

sanjaaa, в таблицу item_, что в файле bind_stalker.script, допиши секцию своей еды после запятой, по аналогии. И в табличку itemParam, в файле medicine.script, допиши туже секцию и два числа: первое из которых - это количество жизней, которое будет пополнять еда; второе число - это сколько времени будет восстанавливаться здоровье (не забудь в конфиге убрать движковое восстановление).

Если тебе не нужно, чтобы еда лечила, то во второй таблице пропиши по нолям, тогда при использовании твоей еды будет просто убираться оружие.

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


Ссылка на сообщение

Артём_killer, а в "шапку" темы заглянуть не судьба?

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


Ссылка на сообщение

Артём_killer, скинь два файла: bind_stalker.script и medicine.script.

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


Ссылка на сообщение

@Артём_killer, вообще-то, когда я говорил, чтобы ты скинул два файла, я ожидал увидеть ссылку, ну максимум две - на каждый файл... Ну да ладно.

По сабжу... Я упустил из виду тот момент, что в ЧН в функцию hide_weapon передаётся (зачем-то) имя зоны. Измени функцию HideWeapon в файле medicine.script на вот эту:

 

--# Убираем оружие.
--# timeNow - время на которое убирать.
function HideWeapon (timeNow)
    --# Прячем оружие.
    db.actor.hide_weapon()
    --# Если время вышло, то...
    if time_global() > timeNow + timeHide then
        --# Вернём оружие
        db.actor.restore_weapon()
        --# отключим данную функцию от апдейта.
        xr_s.unregister_callback ("update", medicine.HideWeapon)
        return
    end
end

 

Вылета более быть не должно.

 

Вывод радиации по этому же принципу сделать можно. :)

 

P.S. спасибо, за указанную ошибку.

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


Ссылка на сообщение

@Артём_killer, в файле bind_stalker.script, в 421 строке убери повторный вызов функции on_actor_update. Возможно причина из-за этого, т.к. всё должно работать, ибо ничего архисложного там ничего нет...

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


Ссылка на сообщение

Вывод радиации делается аналогично функции UpdateHealth в файле medicine.script, только вместо пополнения здоровья нужно делать вывод радиации. Разгляди внимательно эту функцию, там к каждой строке приписаны комментарии, не сложно разобраться, если хоть чуть-чуть знаком с программированием, если же не знаком - "звиняйте" это не ко мне...
 

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


Ссылка на сообщение

@Соболь, уже есть. :)

Два файла в одном "флаконе": >>RGhost<<

  • Нравится 1

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


Ссылка на сообщение

Артём_killer, в общем, посмотрел я, что происходит в ЧН и вспомнил "интересный" пост. Оказывается, функции hide_weapon и restore_weapon - это счётчики, поэтому сколько раз вызывали первую, столько и нужно вызывать вторую. Но лично у меня это проявилось только сейчас на ЧН, в ТЧ подобного "казуса" никогда не было.

В итоге, вот рабочая функция HideWeapon для ЧН:

--# Убираем оружие.
--# timeNow - время на которое убирать.
local hidden = false
function HideWeapon (timeNow)
    --# Прячем оружие.
    if not hidden then
        db.actor:hide_weapon()
        hidden = true
    end
    --# Если время вышло, то...
    if time_global() > timeNow + timeHide then
        --# Вернём оружие
        db.actor:restore_weapon()
        --# отключим данную функцию от апдейта.
        xr_s.unregister_callback ("update", medicine.HideWeapon)
        hidden = false
        return
    end
end

Всё работает как нужно.

Изменено пользователем ColR_iT

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


Ссылка на сообщение

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

Реализовываю по схеме из шапки темы реакцию на все "съедобные" предметы в ТЧ/ЧН, т.е. убирание оружия, звук, эффект и постепенное восстановление. Так вот некоторые предметы "влияют" на несколько параметров сразу, например, водка снижает радиацию и повышает уровень алкоголя, к тому же незначительно восстанавливает здоровье и сытость. Таковыми являются практически все.
Вопрос заключается в следующем: на какие параметры, по Вашему мнению, должен или может влиять тот или иной предмет?
P.S. Напомню, что в ТЧ их десять: три аптечки, бинт, антирад, водка, энергетик, консерва, колбаса и батон.

Я думаю, что должно быть так:

Апечка
Здоровье: +25% от потерянного здоровья.
Пси-здоровье: +3% от общего.
Кровотечение: -30% от набранного.
Выносливость: -10% от общего.
Сытость: -5% от общего.

Армейская аптечка
Здоровье: +55% от потерянного здоровья.
Пси-здоровье: +8% от общего.
Кровотечение: -50% от набранного.
Радиация: -20% от набранной.
Выносливость: -15% от общего.
Сытость: -10% от общего.

Научная аптечка
Здоровье: +85% от потерянного здоровья.
Пси-здоровье: +13% от общего.
Кровотечение: -40% от набранного.
Радиация: -50% от набранной.
Выносливость: -20% от общего.
Сытость: -15% от общего.

Бинт
Кровотечение: -100%.
Выносливость: -25% от общего.

Антирад
Радиация: -100%.
Выносливость: -30% от общего.
Сытость: -35% от общего.

Водка
Здоровье: +3% от потерянного.
Пси-здоровье: +15% от набранного.
Выносливость: -20% от общего.
Радиация: -10% от набранной.
Сытость: -30% от общего.

Энергетик
Выносливость: +100%.
Сытость: -25% от общего.

Консерва
Сытость: +70% от потерянной.
Выносливость: +20% от общего.

Колбаса
Сытость: +50% от потерянной.
Выносливость: +15% от общего.

Батон
Сытость: +30% от потерянной.
Выносливость: +10% от общего.

Хотелось бы видеть мнение окружающих.

Изменено пользователем ColR_iT

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


Ссылка на сообщение

@Хемуль36рус, да я вот подумываю приплести сюда возможности X-Ray extension, тогда можно сделать двойное действие, сначала восстановление выносливость повышается, а затем падает.
Но пока-что, придётся использовать либо-либо. И, лично мне, кажется, что всё таки она должна чуть-чуть повышать здоровье (опираюсь, на притупление чувств боли) и уменьшать выносливость (следствие алкогольного опьянения). Хотя  с другой стороны...  <_<

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


Ссылка на сообщение

Скинь твой bind_stalker.script, но без "медицины".

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


Ссылка на сообщение

@sanjaaa, у тебя зарегистрировано два колбека на использование предмета в методе reinit:

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

Первый из этого метода удали.

 

Теперь адаптация...

Есть вот такой код у тебя:

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

И в метод update впиши вот такую строку:

xr_s.on_actor_update(delta)

Ну и разумеется, закинь файлы medicine.script и xr_s.script себе в геймдату.

  • Нравится 1
  • Не нравится 1

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


Ссылка на сообщение

Файл в студию.

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


Ссылка на сообщение

Наверно, логично, что bind_stalker.script ибо остальные у меня есть. :)
По поводу вылета - я опять запамятовал, что в ЧН функции hide_weapon и restore_weapon принимают параметр, который в ТЧ никак не передать, ибо просто нечего. Решение достаточно простое...
В файле use_item.script, найди функцию HideWeapon (вторая снизу) и измени в ней вот эти две строки:

bind_stalker.hide_weapon()
-- и
bind_stalker.restore_weapon()

На вот такие соответственно:

actor:hide_weapon()
-- и
actor:restore_weapon()
Изменено пользователем ColR_iT
  • Нравится 1

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


Ссылка на сообщение

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

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


Ссылка на сообщение

Лично я не моделировал никакой реальности, я лишь предоставил другой вариант реализации реакции ГГ на съеденные предметы.

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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