Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Ср, 04.05.2016, 12:40 | Сообщение # 1261
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

Сахар, ещё раз здравствуйте.
Не могли бы вы написать пример такой логики. К примеру к эксклюзиву


Сообщение отредактировал men_stalker - Чт, 05.05.2016, 08:39
 
СахарДата: Пт, 06.05.2016, 04:37 | Сообщение # 1262
Гражданский
Пользователи
Сообщений: 2
Награды: 4
Репутация: [ 69 ]

Здравствуй, извини что пишу с задержкой были проблемы с интернетом.
[cut=Вот как-то так]
Код
[logic]
active = walker@1 ;схема которая запускается первой
suitable = {=check_npc_name(профиль НПС)} true ;здесь мы указываем условия при которых можно занять эту работу, в нашем случай мы проверяем профиль НПС
prior = 100 ;приоритет чем больше число тем предпочтительней будет работа для НПС (по идей этот параметр в нашем случай не нужен, но я не помню (все-таки год в армий сказался на моих знания в области модинга) обезательно нужно его прописывать или нет)
meet = no_meet ; запрещаем НПС говорить с ГГ совсем
level_spot = quest_npc ; тип отметки и подписи на карте: quest_npc – важный персонаж, mechanic – техник, trader - торговец. можно также в теорий поставить nil но не факт что сработает, а если  и сработает то НПС на карте отмечаться не будет

[walker@1]
path_walk = <имя пути>
on_info1 = {!is_day} sleeper ; ночь идем спать
on_info2 = {=surge_started} walker@surge_cover ;при выбросе прячемся в укрытия

[walker@surge_cover]
path_walk = <имя пути>
on_info1 = {!is_day} sleeper ; ночь идем спать
on_info2 = {=surge_complete} ; выброс кончился идём обратно

[sleeper]
path_main = <имя пути>
on_info1 = {=is_day =surge_started} walker@surge_cover ;если день и начался выброс то бежим сразу в укрытие
on-info2 = {=is_day} walker@1 ;днем едём обратно на свое место
[/cut]


 
men_stalkerДата: Пн, 09.05.2016, 17:03 | Сообщение # 1263
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

Доброго времени суток, снова вопрос: можно ли члена сквада состоящего из одного нпс сделать без звёздочки, если нет, то можно ли эксклюзиву в логику прописать точку спавна, а то спавнить на одной точке три человека не вариант.
 
denis2000Дата: Пн, 09.05.2016, 18:44 | Сообщение # 1264
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата men_stalker ()
можно ли эксклюзиву в логику прописать точку спавна

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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Вт, 17.05.2016, 16:36 | Сообщение # 1265
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

denis2000, здравствуйте
Цитата denis2000 ()
тогда и звезды не будет

А как тогда для этого надо прописать параметр Level_spot?

А и ещё, наблюдается такой баг: когда нпс спавнится через точку пути то он сначала нарезает круги вокруг неё, а только потом идёт по этому пути. Можно ли это как то исправить?
 
denis2000Дата: Вт, 17.05.2016, 19:45 | Сообщение # 1266
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата men_stalker ()
А как тогда для этого надо прописать параметр Level_spot?

А в чем проблема?
Цитата men_stalker ()
Можно ли это как то исправить?

Если АИ-сетка в этом месте идеально ровная то спавн в начальной точке пути все решает, если сетка не идеальная то НПС нужно некоторое время чтобы занять указанную позицию.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Ср, 18.05.2016, 13:53 | Сообщение # 1267
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

denis2000, допустим вот логика эксклюзива
[logic@esc_c1_millitary_guard_4]
suitable = {=check_npc_name(esc_c1_millitary_guard_4)}
active = walker@guard_4
prior = 200

[walker@guard_4]
path_walk = guard_4_walk
path_look = guard_4_look
meet = no_meet

А на мини карте всё равно отображается как лидер отряда (с звездой)


Сообщение отредактировал men_stalker - Ср, 18.05.2016, 13:55
 
sergej5500Дата: Ср, 18.05.2016, 14:17 | Сообщение # 1268
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата men_stalker ()
А на мини карте всё равно отображается как лидер отряда (с звездой)


Наверняка он заспавнен как сквад из одного человека.
 
denis2000Дата: Ср, 18.05.2016, 16:01 | Сообщение # 1269
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

men_stalker, Все правильно, что написали то и отображается. Чтобы отображалась специальная метка нужен параметр level_spot.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Ср, 18.05.2016, 17:43 | Сообщение # 1270
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

sergej5500, да вот именно: сквад состоит из одного человека, для что бы спавнить сразу каждого нпс на точке пути (что бы быстро занимали позиции). Так можно сделать чтобы отображался как рядовой (просто точка на мини карте)?
 
sergej5500Дата: Ср, 18.05.2016, 17:55 | Сообщение # 1271
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата men_stalker ()
Так можно сделать чтобы отображался как рядовой


Тогда его нужно спавнить как несквадового сталкера с кастом-датой.
 
denis2000Дата: Ср, 18.05.2016, 18:24 | Сообщение # 1272
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата men_stalker ()
Так можно сделать чтобы отображался как рядовой (просто точка на мини карте)?

Уважаемый, ну что вы ходите кругами, вам уже давали ответ на этот вопрос! Пост 1264.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Чт, 26.05.2016, 09:29 | Сообщение # 1273
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

Здравствуйте, такой вопрос: заспавнил через смарт десять эксклюзивов и настроил их пути ,а можно ли чтобы в отсутствие актора они менялись путями?
 
denis2000Дата: Чт, 26.05.2016, 11:56 | Сообщение # 1274
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

men_stalker, Тогда зачем вам эксклюзивы? Используйте неэксклюзивные работы в которых назначение НПС на работы рандомное и динамическое.
Или используйте несколько секций с разными путями в них и переключайте НПС между ними.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Чт, 26.05.2016, 12:16 | Сообщение # 1275
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

Цитата denis2000 ()
Используйте неэксклюзивные работы

А как будет выглядеть такая логика? Извините, но не разу ещё не делал не эксклюзивных нпс. Нпс не пойдут гулять по зоне, а останутся в смарте?


Сообщение отредактировал men_stalker - Чт, 26.05.2016, 12:19
 
Поиск: