Перейти к содержанию

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

 
 

Что такое колбэки и что такое рестикторы

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


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

DimoNULL 
Call back (обратный вызов) - это когда движок вызывает определенную скриптовую функцию в ответ на определенное событие. Например на событие поднятие предмета ГГ вызывается функция actor_binder:on_item_take из bind_stalker.script.
Space restrictor (Пространственный ограничитель) - специальный спавн-объект обладающий двумя основными функциями: 1. Запуск скриптовой логики 2. Ограничение игрового пространства для мобов.

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 04.11.2024 в 20:59, denis2000 сказал:

DimoNULL
Space restrictor (Пространственный ограничитель) - специальный спавн-объект обладающий двумя основными функциями: 1. Запуск скриптовой логики 2. Ограничение игрового пространства для мобов.

То есть я могу при помощи него накинуть какую то логику на объект? Вместо того, что бы пробегаться по всем объектам, сверять тот ли это объект который мне нужен, я могу сделать это через рестиктор? Надеюсь я правильно понял. Но вот что значит "ограничение пространства для мобов" я чет вообще не понимаю

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


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

Где в конфигах указывается длина полоски бронебойности костюма в UI? Именно визуальная часть. У меня у брони прописан hit_fraction_actor = 0.35 но в инвентаре полоска брони оказывается полностью пустой.

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
20 часов назад, DimoNULL сказал:

Но вот что значит "ограничение пространства для мобов" я чет вообще не понимаю

Ну если очень грубо говоря, то с помощью него ты помечаешь определённую область игрового пространства, в которой действует ограничение на передвижение болванчиков. То есть, сделать так, чтобы болванчик (или все мобы и НПС) ходил только там где надо и не заходил куда-нибудь, куда ему не надо, даже если там для него есть АИ-сетка (например, которая проходит через стену и только ради того, чтобы на уровне была единая сетка).

Есть 4 типа рестрикторов: NONE, NOT A, IN и OUT. В чём отличие первых двух - я так и не понял до конца, пусть более осведомлённые в этом вопросе меня дополнят. А вот IN и OUT рестрикторы очень сильно отличаются от первых двух.
IN - это ограничение внутри области для передвижения НПС: если рестриктор помечен как IN, то НПС не будут в него входить. Удобно, если надо, например, протянуть АИ-сетку сквозь меш (чтобы на уровне сетка была валидна) и избежать ситуаций, когда болванчики будут пробегать через стену в этом месте.  
OUT наоборот - ограничение вне области для передвижения НПС. Если поставить его, то НПС сможет передвигаться только внутри области. Это очень хорошо подходит, если надо сделать так, чтобы НПС находились в определённом месте и не сбегали на другой конец карты.

Рестрикторы можно настроить как в SDK, так и в логике НПС. Если сделать рестриктор IN или OUT в SDK, то он будет влиять на всех болванчиков на уровне (в моём опыте OUT рестрикторы через SDK оказались бесполезны). А если рестриктор сделать как NOT A (или NONE, кто-нибудь, пожалуйста, объясните чем они отличаются:)) в SDK, а в логике НПС или моба прописать in_restr/out_restr = "имя рестриктора", то тогда этот рестриктор будет типа IN или OUT только для определённого НПС. Можно даже таким образом один и тот же растриктор сделать типом IN для одних НПС (например, атакующих, но которые не должны подходить в упор) и OUT для других (например, тем кто отбивается и не должны случайно пойти в атаку).


Дополнено 10 минуты спустя
20 часов назад, DimoNULL сказал:

То есть я могу при помощи него накинуть какую то логику на объект? Вместо того, что бы пробегаться по всем объектам, сверять тот ли это объект который мне нужен, я могу сделать это через рестиктор?

Скорее, более эффективно проверять наступление каких-нибудь событий. Например, если надо выдать инфопоршень при поднятии предмета, то вместе того, чтобы каждый тик проверять, есть ли у нас нужный предмет в инвентаре и нет ли нужного поршня (чтобы кучу раз не выдавать его, если предмет в инвентаре валяется), мы можем просто один раз при срабатывании коллбека on_item_take (то есть когда игрок поднимает какой-нибудь предмет) проверить, что поднялся именно нужный предмет. И таким образом, это положительно скажется на быстродействии игры.

Ну а через рестриктор можно, например, сделать какую-нибудь логику, которая не должна быть привязана к какому-нибудь физическому объекту (например, координировать действия НПС и других объектов в катсцене), либо делать проверки на нахождение чего-либо в нужном месте (и обратное).

Изменено пользователем Prostomod
  • Жму руку 1
  • Спасибо 1

Мод в разработке - X-7: Эпицентр

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


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

Здравствуйте, подскажите полнейшему чайнику.
А как начать? есть подробный примерный гайд? очень хочется начать этим заниматься
Заранее спасибо! :)

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

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


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

sakrav  начать что?

 

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


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

sakrav Попробуй с мелочей: подкорректировать значения в конфигах, прописать новый предмет в продажу, мб скрипт простой накидать или диалог сделай. Главное - с чего-то небольшого, и потихоньку пытаться усложнять себе задачу. Туториалов в интернете полно.


Мод в разработке - X-7: Эпицентр

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


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

Mawrak Вообще, полоска прогрессии показывает значение от 0 до 1, а формула, переводящая значение защиты брони в значение для полоски зашито в движок. Но это так, к слову. Я глянул что у тебя не так, и причина в том, что у тебя потеряны коэффициенты защиты для костей для этого костюма.

Что имеется в виду. Защита от пуль в сталкере работает сложнее, чем просто "режем урон на значение коэффициента защиты помноженный на состояние брони" (то есть сложнее, чем защита от аномалий). При получении урона там работает сложная система, в которой в том числе участвуют коэффициенты костей. То есть, реально сделать так, чтобы, например, в ноги НПС урон не проходил, а в голову проходил полный урон, и для этого нужно править не коэффициенты защиты костюма, а коэффициенты защиты костей. Ссылка на секцию с коэффициентами костей прописывается в ключе bones_koeff_protection, и в ней находится список костей с 2 значениями: коэффициент урона и брони.

А теперь поясняю подробнее, что у тебя не так. У тебя куда-то потерялись секции body_damage_50 и head_damage_40, из которых состоит секция actor_mix_50_40, которая прописана как секция коэффициентов костей. Я не знаю, по каким причинам IX-Ray не вылетел из-за несуществующей секции, но обработалось такое просто: у тебя назначались костям стандартные значения, которые прописаны в движке: полный урон в кость и 0 брони. А виджет характеристик костюма на самом деле показывает тебе броню на кости bip01_spine. А так как значение брони, "считанное" из конфига равняется 0 (потому что из-за невалидной секции у тебя все кости имеют такие параметры защиты), то у тебя броня на этой кости равняется 0, что и показал тебе виджет.

И да: это также означает, что твоя броня на самом деле вообще не защищала от пуль. Так что в перестрелке не было разницы, бегать в броне или без неё.


Мод в разработке - X-7: Эпицентр

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


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

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

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

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

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

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

Войти

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

Войти

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

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