Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Спавн и логика
denis2000Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Спавн и логика

Создание объектов на локации и логика поведения этих объектов

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


Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7

Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML
[cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл:
1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R])
2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx"
3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо)
Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#"
Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]

[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти?
Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда.
Для того чтоб найти LOG необходимо зайти вот сюда:

В Win хр лог находится:

C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs

Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.

В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs

Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка:
...
$app_data_root$ = true | false| $fs_root$| users\
(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx)
...
$logs$ = true| false| $app_data_root$| logs\
(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи)
...
[/cut][cut=Получение более подробной информации о вылете (ХОВАН)]
Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...)
Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так:
Code
function abort(fmt, ...)
                    local reason = string.format(fmt, ...)
                    error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Code
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil)

Второй:
Code
Expression    : 0
Function      : ErrorLog
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
Line          : 49
Description   : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic'

[/cut]


Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
strelok200Дата: Пт, 13.12.2013, 21:22 | Сообщение # 736
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

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

Уточняйте обыск трупа другим НПС или ГГ? denis2000
 
makdmДата: Пт, 13.12.2013, 23:03 | Сообщение # 737
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

strelok200, в оригинальном COP трупы сталкеров, имеющих story_id не обыскиваются.
Если вы не меняли скрипт release_body_manager, то пропишите вашему НПС story_id и сталкеры не должны будут обыскивать его труп. Это "видно" из скрипта xr_corpse_detection. В скрипте трупы для обыска берутся именно из таблицы release_objects_table, которая заполняется в скрипте release_body_manager.

Надеюсь, понятно объяснил.


Терпение......
И все получится!
 
strelok200Дата: Сб, 14.12.2013, 10:59 | Сообщение # 738
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

makdm, Спасибо, конечно, но я не уточнил. Мне надо главному герою запретить обыскивать труп
 
makdmДата: Сб, 14.12.2013, 12:07 | Сообщение # 739
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

strelok200, тогда делайте, например так.

Пусть ваш НПС имеет секцию [test_npc]

В файле xr_motivator.script в функции function motivator_binder:use_callback(obj, who)

после строчек

if self.st.active_section then
xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who)
end

пишите

else
if string.find(self.object:name(), "test_npc") ~= nil then
self.object:set_nonscript_usable(false)
end

После этого ГГ не сможет юзать труп этого НПС.


Терпение......
И все получится!
 
strelok200Дата: Сб, 14.12.2013, 15:54 | Сообщение # 740
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

makdm, Огромное спасибо.
Кстати, подскажите пожалуйста какой рестриктор телепортирует ГГ к Янову при переходе на Юпитер?
 
makdmДата: Сб, 14.12.2013, 17:36 | Сообщение # 741
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

strelok200, при переходе на Янов, хоть с Припяти, хоть с Затона, координаты начальной позиции ГГ на Юпитере прописываются в all.spawn в секции level_changer. Параметры dest_game_vertex_id, dest_level_vertex_id, dest_position.

Терпение......
И все получится!
 
NIVДата: Сб, 14.12.2013, 19:33 | Сообщение # 742
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

strelok200, за телепорт на Янов в первый раз отвечает файл scripts\jupiter\zat_b215_logic_jupiter.ltx. Вот здесь можно взять исправленный файл.

--------------------------------------------------------------------------------------------------------------------------

Добавлено (14.12.2013, 19:33)
---------------------------------------------
Подскажите, пожалуйста, мне.

Добавил к оригиналу локацию Янтарь, добавляю туда профессора. В оригинале ЧН он переходил из одного волкера в другой по инфопоршню из рестриктора. Вроде сделал все так же, но профессор не хочет ходить по Бункеру. Есть подозрение, что ГГ стоит близко к нему, и профессор останавливается.

В связи с этим вопрос - как называется параметр, когда НПС останавливается при приближении ГГ? Также не могу найти, как увеличить дистанцию, с которой можно начать разговор (при use = true).

Пробовал заспанить НПС на крыше Бункера - он начинает ходить внутри. Вокруг Бункера - ходит нормально. Что может быть не так на крыше? На Юпитере они ведь ходили по крыше нормально?


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"

Сообщение отредактировал NIV - Сб, 14.12.2013, 19:24
 
FantomICWДата: Сб, 14.12.2013, 19:43 | Сообщение # 743
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Цитата NIV ()
Пробовал заспанить НПС на крыше Бункера - он начинает ходить внутри

NIV, возможно дело в АИ-сетке. Но это чисто мое предположение.
Цитата NIV ()
увеличить дистанцию, с которой можно начать разговор

А вот:
Код
use = {=dist_to_actor_le(#)} true, false

Вместо # ставим цифру, обозначающую количество метров.



 
NIVДата: Сб, 14.12.2013, 20:15 | Сообщение # 744
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Цитата FantomICW ()
=dist_to_actor_le
К сожалению, это срабатывает только на use = self, а не true. По умолчанию, расстояние использования - 2 м, хотелось бы увеличить эту дистанцию.

Как можно проверить наличие / отсутствие АИ-сетки?


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"

Сообщение отредактировал NIV - Сб, 14.12.2013, 20:20
 
FantomICWДата: Сб, 14.12.2013, 20:24 | Сообщение # 745
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

NIV, в СДК.


 
denis2000Дата: Сб, 14.12.2013, 22:36 | Сообщение # 746
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата NIV ()
Пробовал заспанить НПС на крыше Бункера - он начинает ходить внутри

Там нет АИ-сетки, уважаемый FantomICW совершенно прав.

Цитата NIV ()
как называется параметр, когда НПС останавливается при приближении ГГ?

Параметр close_distance, работает совместно с параметром close_anim.

Цитата NIV ()
По умолчанию, расстояние использования - 2 м, хотелось бы увеличить эту дистанцию.

Это невозможно, дистанция юзанья любого объекта не превышает 2 метра и конфигами не регулируется.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Ср, 18.12.2013, 19:59 | Сообщение # 747
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Вопрос по созданию лагеря, урок 18 КМБ - кроме создания смарта, camp_zone и smart_cover, надо ли что-нибудь писать в логику НПС? А то они не садятся по смарт-каверам. И как потом отпустить НПС из этого лагеря?

Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
 
denis2000Дата: Ср, 18.12.2013, 20:46 | Сообщение # 748
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата NIV ()
надо ли что-нибудь писать в логику НПС?

Разве в этом уроке упоминается логика НПС? Для них работает "дефолтная логика" работ на смарте.

Цитата NIV ()
как потом отпустить НПС из этого лагеря?

Назначить им другой лагерь (смарт террейн).


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Пт, 20.12.2013, 07:14 | Сообщение # 749
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Цитата denis2000 ()
Разве в этом уроке упоминается логика НПС?

Вот похоже, плохо, что не упоминается. Разбирал в качестве примера смарт jup_b4 (пишу по памяти, могу и попутать). Там у каждого персонажа эксклюзивная логика, а в ней активная секция анимпойнт, в котором написано cover_name = Имя анимпоинта. Имя анимпойнта - из соответствующего смарт_кавера. Так же написано и в уроке КМБ 47. Правда я так пока и не смог сделать у себя так.
А что вы имеете ввиду под дефолтной логикой? Прописать пути с именем смарт_walker_(или guard)_walk (look), совпадающие по координатам с smart_cover?


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"

Сообщение отредактировал NIV - Пт, 20.12.2013, 07:16
 
makdmДата: Пт, 20.12.2013, 08:41 | Сообщение # 750
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата NIV ()
Там у каждого персонажа эксклюзивная логика,

Ошибочный вывод. У персонажа нет логики. А есть эксклюзивная работа на смарте, которая назначается определённому НПС. В любой момент времени можно "выгнать" НПС с этой работы и назначить эту работу другому НПС.
Всё это прописывается в параметре suitable

Цитата NIV ()
А что вы имеете ввиду под дефолтной логикой?

Логика работ, которая прописывается в путях, относящихся к смарту.
Файл gulag_general.script
Изучив файл, Вы поймёте, как прописывать дефолтную логику в путях для каждого вида работы, которая может быть назначена НПС в лагере (на смарте).


Терпение......
И все получится!
 
Поиск: