Случайная подборка модов
Путь в Припять
3.8
Lost Alpha
4.0
Последняя надежда
2.4
Dead Autumn 2: Другая реальность
4.1
Путь во мгле
4.5
L.U.R.K.
4.0
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 1
  • 1
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » [SoC] Урок по созданию respawn-ра (В этом уроке, расказаны способы создания респавнеров для нпс)
[SoC] Урок по созданию respawn-ра
Российская Федерация  ins33
Понедельник, 02.06.2014, 04:23 | Сообщение # 1
Dream Reader Mod
Статус:
Опытный:
Сообщений: 2269
Награды: 1
Регистрация: 17.01.2012

Респавн мобов.


Рано или поздно, каждый модостроитель задаётся вопросом респавна. Как и все, я не исключение.
Первые пробы, создать респавнер, увенчались частичным успехом. О не удаче, читайте в коце поста. Помучив респавнер пару дней, я отложил сие занятие, на дальнюю полку.
И вот пришло время, но на сей раз, мне надо было заспавнить мобов. И это оказалось на порядок
проще!

И так, приступим:
Первое, что необходимо запомнить:
Респавнер срабатывает, при условиях:
1) Есть свободная работа в смарте.
2) Секции респавнера, совпадают с секциями смарта.
3) Соблюдены условия работы респавнера: conditions


Для начала создадим смарт, с одной работай.
В папку ACDC\all создадим alife_l01_escape_test.ltx и way_l01_escape_test.ltx
Сделаем это для удобства, при запаковке, всё добавленное окажется в файлах локации, куда это добавляется.
В acdc\all\all.ltx добавим alife_l01_escape_test.ltx, и way_l01_escape_test.ltx

В alife_l01_escape_test.ltx добавим смарт:


Смарттерей, мы создали, добавим моба для этого смарта:


Зверушка есть, добавим пути.
Откроем way_l01_escape_test.ltx


Теперь, нам надо создать логику, и условия работы. Для этого создадим
gamedata\config\misc\gulag_escape_test.ltx.
В gulag_task.ltx зарегистрируем новый гулаг #include "gulag_escape_test.ltx" и напишем в gulag_escape_test.ltx простую логику:


Логику, написали, теперь добавим условие. Создадим скрипт gulag_escape_test.script, зарегистрируем его в xr_gulag.script добавив в level_gulags = {*, gulag_escape_test}
В gulag_escape_test.script пропишем:


Сделали. Тепрь у нас есть смарт с одной зверушкой. Давайте проверим, работате ли наш смарт?
Загрузим игру, и прогуляемся в сторону вагончика на предбаннике, рядом с раненым.
С кабанчиком познакомились, давайте добавим респавнер.
В alife_l01_escape_test.ltx
Добавим:


Респавнер, сделали. Теперь, было бы здорово, не ждать когда он сам сработает, а заставить сработать его, когда нам это надо. Для этого сделаем спейсрестриктор? Рядом с входом в бункер Сидоровича, который и вызовет респавнер:


Собираем all.spawn начинаем НИ, идём убиваем кабана, возвращаемся к входу в бункер, спускаемся по лестнице, и идём обратно, к смарту кабана.
Поздравляю, вы сделали респавнер.


Домашнее задание
smile



П.С. Следующий урок выложу через пару дней, что бы хватило время на "домашнее задание", если конечно он нужен.
Предпологается, что если вы задались вопросом о респавне, то вы уже имеете представление о работе смартов и логики. И знакомы с структурой папок и файлов.
Сообщение отредактировал ins33 - Понедельник, 02.06.2014, 05:38
  Злобная реклама
Понедельник, 02.06.2014, 04:23
Статус:
Сообщений: 666
Регистрация: 17.01.2012
Российская Федерация  Карлан
Пятница, 06.06.2014, 15:53 | Сообщение # 2
Статус:
Зевака:
Сообщений: 3
Награды: 0
Регистрация: 21.06.2013

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

У меня своя система респавнеров уникальных гулагов, а так же система "псведосмартов", которая работает на одном таймере. Функции сами понимают куда и кого и в каком количестве им нужно доспавнить. Функционал в целом нормальный у моей функции, можно указывать логику, аут и ин рестрикторы, свои списки секций чуваков/зверей(если нужно). Получение количества для доспавнивания в смарт/псведосмарт по трем параметрам. В зависимости от уровня выбираются секции, если брать оригинал то это weak normal strong. На паре локаций довел жизнь до типа ЧН. Так же сейчас в доработке система контроля за всем живым в зоне, она обеспечивает нормальное наполнение локаций => геймплей.

В твоем подходе куча подводных камней, и слишком долгая реализация. В целом не советовал бы такое использовать.
  Злобная реклама
Пятница, 06.06.2014, 15:53
Статус:
Сообщений: 666
Регистрация: 21.06.2013
Украина  BozKurt
Пятница, 06.06.2014, 18:23 | Сообщение # 3
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Если прочитать чуть внимательней, то можно увидеть мысль о том, что рестрикторы здесь даны для теста работоспособности респавнеров. Не более.
  Злобная реклама
Пятница, 06.06.2014, 18:23
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  Карлан
Пятница, 06.06.2014, 19:29 | Сообщение # 4
Статус:
Зевака:
Сообщений: 3
Награды: 0
Регистрация: 21.06.2013

Ты хотя бы сначала пойми о чем речь идет, потом выводы пиши. Тут вся система респавнера завязана на рестриктор, при заходе в который и происходит событие, если туда актор не зайдет кабаны и не появятся, пока не сработает обычный респавнер. Для тесты работоспособности? Ну раз ты такой тут провидец мыслей покажи мне эту систему БЕЗ рестриктора(и без проверки расстояния до точки(что в этом способе было бы оптимальней)).
  Злобная реклама
Пятница, 06.06.2014, 19:29
Статус:
Сообщений: 666
Регистрация: 21.06.2013
Российская Федерация  Scouser
Пятница, 06.06.2014, 19:40 | Сообщение # 5
Статус:
Опытный:
Сообщений: 1614
Награды: 16
Регистрация: 21.10.2012

Цитата Карлан ()
Ты хотя бы сначала пойми о чем речь идет, потом выводы пиши.

Вот тебе это надо уяснить.


Не тупи, ins33 специально сделал принудительный респавн, чтобы его проверить. Не будет же он ждать, когда кабан сам зареспавнится.
  Злобная реклама
Пятница, 06.06.2014, 19:40
Статус:
Сообщений: 666
Регистрация: 21.10.2012
Российская Федерация  BeeRsek
Пятница, 11.07.2014, 09:52 | Сообщение # 6
Тайна Зоны: История Стрелка
Статус:
Опытный:
Сообщений: 1308
Награды: 7
Регистрация: 24.01.2011

Цитата Карлан ()
покажи мне эту систему БЕЗ рестриктора(и без проверки расстояния до точки

я делал респавнеры подобным способом, без рестрикторов. Респавн обычно срабатывает когда я перехожу на другую локу, может еще как то,я особо не проверял, но то что всё норм работает это да...

Добавлено (11.07.2014, 09:52)
---------------------------------------------
написал такое в респавнерах:

[respawn]
respawn_section = boar_weak,20, boar_normal,10, boar_strong,5
max_spawn = 5
idle_spawn = often
conditions = {+dialog_cezar_quest_done, +gar_sv_dialog_done} 100, 0


Цитата
conditions =Условие респавна. Можно установить проверку условий (инфопоршень), где респавн будет происходить только при выполнении условия. Номер означает общий процент выполнения респавна. Например так:

conditions = {+инфо} 100, 0 где, респавн будет происходить со сто-процентной вероятностью, только при наличии установленного инфопоршна.


без кондишинов до этого всё работало. Что не так? А то выдает ошибку:

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...of chernobyl_0004\gamedata\scripts\se_respawn.script:289: attempt to compare number with nil
Сообщение отредактировал BeeRsek - Пятница, 11.07.2014, 09:52
  Злобная реклама
Пятница, 11.07.2014, 09:52
Статус:
Сообщений: 666
Регистрация: 24.01.2011
Украина  BozKurt
Пятница, 11.07.2014, 11:11 | Сообщение # 7
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Запятую в скобках убери.
  Злобная реклама
Пятница, 11.07.2014, 11:11
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » [SoC] Урок по созданию respawn-ра (В этом уроке, расказаны способы создания респавнеров для нпс)
  • Страница 1 из 1
  • 1
Поиск: