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

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

 
 

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

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


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

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, что и показал тебе виджет.

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

  • Мастер! 1

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

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


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

Prostomod спасибо большое за разъяснения, это многое объясняет


Дополнено 9 минуты спустя

Prostomod а теперь прикол, приписал туда actor_armor_medium, а отображается это только при наведении мышки (внизу на UI пустая полоска):

Спойлер

ss_666_11-08-24_04-35-40_(gz_promzone).thumb.jpg.ae249b798f82b1631ad40b9326ece975.jpg

Если прописываю actor_armor_exo то вроде и там и там видно.

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


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

Mawrak у тебя как то странно этот и ещё один научник прописаны, зачем добавлен параметр fire_wound_protection? он все равно движком не используется, для защиты от пуль используется параметр bones_koeff_protection, где указывается секция которые обычно в файле damages.ltx, там как раз я такой секции не нашёл она у тебя почему то в самом outfite прописана.

лучше сделай новый костюм как в оригинале, как в той же экзе, в конфиг брони в bones_koeff_protection пропиши новую секцию , и файле damages её создай по аналогии с экзой, только заполни уже нужными для данной брони параметрами брони костей.

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


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

fire_wound_protection

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

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

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


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

Как в ЗП сделать из обычной метки квеста, полупрозрачный круг как этот:

изображение_2024-11-08_110848829.png

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


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

vladvexa188 Ничего не мешает добавить в любой момент любую метку на нужный объект:

level.map_add_object_spot(id_объекта, имя_метки, описание_метки)

И удалить:

level.map_remove_object_spot(id_объекта, имя_метки)
Изменено пользователем denis2000
  • Мастер! 1

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
57 минут назад, denis2000 сказал:

vladvexa188 Ничего не мешает добавить в любой момент любую метку на нужный объект:


level.map_add_object_spot(id_объекта, имя_метки, описание_метки)

И удалить:


level.map_remove_object_spot(id_объекта, имя_метки)

Ти по вот так?
xrEffects:
function val_start_find_shelter()
    level.map_add_object_spot(val_find_safehouse_sr, crlc_mdl, val_find_safehouse_text)
end

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


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

Можете подсказать как сделать сюжет на зп с сткоп


Дополнено 2 минуты спустя

Здравствуйте, подскажите как сделать сюжет на сталкер зов Припяти с Stcop 

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


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

Ilia_Onoprienko берешь СДК, изучаешь его, собираешь спавн. Или спавнишь НПС по скриптам. Диалоги все прописываются в профили НПС и потом создаются в специальных файлах (папка configs/gameplay). Логика НПС прописывается в конфигах (configs/scripts). Слишком общий вопрос, чтобы конкретнее ответить, тут вопросница для конкретных вопросов по конкретным проблемам.

Как это все выучить? По ютуб-туториалам, либо статьям, плюс метод проб и ошибок, и я бы сказал в первую очередь полагаться на последнее.

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


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

vladvexa188 Самое примитивное:

function add_map_spot(actor, npc, p)
   local obj_id = get_story_object_id(p[1])
   level.map_add_object_spot(obj_id, p[2], p[3])
end

 

  • Мастер! 1

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

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


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

Prostomod короче как я понял в дополнение к тому что ты писал, у костюмов, блокирующих шлем, нельзя указывать actor_head_damage_absent как основу для секции (как сделано у actor_armor_medium), иначе UI дурит, при том только в одном месте, а в другом показывает броню.

Честно говоря треш это тот еще, по хорошему надо будет залезть в движок и переделать это все в корне (все равно это UI полоски и так не совпадают с реальными значениями нормально).

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


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

Можете подсказать, как сделать мод на «Зов Припяти» с STCoP 3.3 и графическим паком без всяких программ или подскажите прогу, которая сделает квест за меня, просто очень хочется свой мод.

Изменено пользователем Ilia_Onoprienko
  • Дурка 2

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


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

Нужно выводить раздельно броню головы и броню костюма.
image.png.331adcb0f94162c3eeb6de1017952deb.png
P.S. куда-то потерялись магнитуды у артефактов, не обращайте внимания.

Изменено пользователем Hrust
  • Хабар 1

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


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

которая сделает квест за меня

Чё за бред? Как ты представляешь, что за ТЕБЯ какая-тот программа будет квест делать? И как ты без программ собрался квесты делать? Ты на ап про тоже без программ заходишь? Всё делается своим трудом, иначе если бы всё так просто было, то каждый месяц выходило-бы по 50-60 модов.

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

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


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

Ilia_Onoprienko За тебя никто ничего не сделает. Моды делают своими ручками. Скачай SDK 0.7 - это игровой редактор, через который ПЫС делали все 3 части сталкера. Также вместо обычного блокнота скачай Notepad ++, потому что он куда удобнее. На ютубе есть куча уроков  по моддингу, советую тебе посмотреть Бориса Шепелёва, Андрея Непряхина, Шеву сталкера и S_Grez. Ещё в инете есть много текстовых уроков.

Нет программ, которые за тебя всё сделают, есть только проги, которые упростят жизнь.

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


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

vladvexa188 Самое примитивное:


function add_map_spot(actor, npc, p)
   local obj_id = get_story_object_id(p[1])
   level.map_add_object_spot(obj_id, p[2], p[3])
end

 

Спасибо за самое примитивное!

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


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

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

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

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

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

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

Войти

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

Войти

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