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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Пт, 20.12.2013, 10:34 | Сообщение # 751
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата NIV ()
Вот похоже, плохо, что не упоминается.

Сделйте свой урок в котором упомяните.

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

Я не припоминаю, чтобы эксклюзивы подчинялись camp_zone, если у них не прописан параметр use_camp = true

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

Освежите в памяти КМБ Урок 6а


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

подскажите пожалуйста как "вызвать" титры
 
NIVДата: Пт, 20.12.2013, 18:51 | Сообщение # 753
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

strelok200,
Код
game.start_tutorial("credits_seq")

ЕМНИП, либо

Код
get_console():execute("main_menu off")


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

Сообщение отредактировал NIV - Пт, 20.12.2013, 18:52
 
strelok200Дата: Сб, 21.12.2013, 11:56 | Сообщение # 754
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

Спасибо. Можете напомнить как полностью отключить все звуки у определенного нпс?
 
FantomICWДата: Сб, 21.12.2013, 13:51 | Сообщение # 755
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

strelok200, убрать из секции в character_desc_***.xml строку с <snd_config>.


 
sergej5500Дата: Вс, 22.12.2013, 21:37 | Сообщение # 756
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. Не могу разобрать all.spawn из Долины Шорохов. Ни один компилятор не берет его.
Алл спавн

Просьба подсказать, какой компилятор подойдёт для этого файла. Или выложить распакованный алл-спавн куда нибудь.
Заранее благодарен за помощь.
 
FantomICWДата: Пн, 23.12.2013, 00:47 | Сообщение # 757
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

sergej5500, вижу, не один я ковыряю ДШ)
Вот, склепал acdccop.pl адаптированный. Закидываем в папку с самим анпакером, пробуем декомпилить. Если не выйдет, кину всю папку.
Ссылка



 
9vova8Дата: Чт, 09.01.2014, 22:35 | Сообщение # 758
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

Всем доброго времени суток, столкулся проблеммой: не создаеться сквад по условию на Затоне. Если прописывать сквад в начале игры, или по условию но первым заданием - всё нормально работает, а после выплонения нескольких заданий - нет.
[cut]Wrong smart_name [zat_volna1_smart] for [nil] faction in create_squad function[/cut]
[cut=alife_zaton][6602]
; cse_abstract properties
section_name = smart_terrain
name = zat_volna1_smart
position = 96.68,-6.99,-135,93
direction = -0.43800100684166,0.972104012966156,-3.10020399093628

; cse_alife_object properties
game_vertex_id = 281
distance = 0
level_vertex_id = 1132418
custom_data = <<END
[story_object]
story_id = zat_volna1_smart
[smart_terrain]
cfg = scripts\zaton\zat_volna1_smart.ltx
END
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 0.7
; cse_alife_space_restrictor properties
restrictor_type = 3
; se_smart_terrain properties[/cut]

[cut][smart_terrain];zat_volna1_smart
squad_id = 112
max_population = 1[/cut]
[cut][logic]
active = sr_idle

[sr_idle]
on_info = {+zat_noy_about_kompas -spawn_volna} sr_idle@2 %+spawn_volna =create_squad(zat_volna1_squad:zat_volna1_smart)%

[sr_idle@2][/cut]




Сообщение отредактировал 9vova8 - Чт, 09.01.2014, 22:35
 
strelok200Дата: Пт, 10.01.2014, 12:52 | Сообщение # 759
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

9vova8, Так у тебя же под третьим спойлером логика для рестриктора, а не для смарта. Ты сам рестриктор заспавнил?
 
9vova8Дата: Пт, 10.01.2014, 13:01 | Сообщение # 760
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

[cut=спавн рестриктора][6600]
; cse_abstract properties
section_name = space_restrictor
name = zat_noah
position = 154.02,-6.82,-140.10
direction = -0.43800100684166,0.972104012966156,-3.10020399093628

; cse_alife_object properties
game_vertex_id = 13
distance = 0
level_vertex_id = 1229477
object_flags = 0xffffff3e
custom_data = <<END
[story_object]
story_id = zat_noah
[logic]
cfg = scripts\zaton\zat_noah.ltx
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 12.0

; cse_alife_space_restrictor properties
restrictor_type = 3[/cut]


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

9vova8, Проблема в том, что сообщение: Wrong smart_name [zat_volna1_smart] for [nil] faction in create_squad function, означает что имя смарта не найдено в таблице smarts_by_names файла sim_board.script и это значит что смарт не был зарегистрирован здесь в начале новой игры. Но дело в том что в случае заполнения смарта в начале игры имя смарта берется из той же таблици в том же файле, а у тебя с этим проблемы нет (нет сообшения Wrong smart name [zat_volna1_smart] in start position)! Отсюда вопрос между событиями Начало новой игры и попыткой спавна через рестриктор есть события типа загрузка игры?

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
9vova8Дата: Пт, 10.01.2014, 14:08 | Сообщение # 762
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

denis2000, да, после убийства загружаюсь. Потом, после выдачи инфопорции, происходит вылет.

Время создания сейва позже времени создания all.spawn? denis2000

denis2000, Вы о том что мне нужно начать НИ? Нет, я начинаю НИ при каждом компилировании all.spawn

Тогда странно, что в начале игры имя смарта в таблице есть, а через некоторое время нет. Мониторте ситуацию и ищите хотябы момент когда запись пропадает из таблицы. denis2000

denis2000, вылет происходит не по истечению времени, а после загрузки. И на что она влияет?

Получается, что сейв битый. Нужно искать причину краша сейва (или сейвов). denis2000




Сообщение отредактировал 9vova8 - Пт, 10.01.2014, 22:43
 
alex_xp_77Дата: Сб, 18.01.2014, 12:37 | Сообщение # 763
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

Добрый день всем !!! Хотел поделиться с вами своей проблемой, надеюсь тут помогут, так как вопрос по идее очень простой, создал смарт террейн, заспавнил 1 солдата, все работает норм, как часы, без глюков багов, и всячески других косяков и крашей!!Но как дело касается 2-3-5 НПС, происходит вылет с жалобой на скрипт Lua- 240, для опытных весь лог писать не обязательно, эта строчка обо всем говорит,(неправильно написана логика либо смарту, либо нпс) Собственно непосредственно по моему скрипту, вот что я прописал 1 солдату (НПС) :


А вот логика самому НПС:

Вот при этом раскладе , все работает, нпс, при приближении гг начинает активно атаковать ГГ как и надо, но стоит только сделать 2 или 3 НПС, происходит вылет в самой игре, и жалоба на 240 скрипт, собственно хотел показать именно что я пишу логику второму нпс:


Помогите пожалуста понять что я сделал не так ?? Если нельзя цифровой прописью ставить обозначение, то как вообще делается 5 или 10 неписей, хотя пишут что больше 9 нпс в 1 террейне ставить не желается !! Помогите решить эту проблему очень был бы благодарен!!
Да, забыл пояснить, сделал обсолютно новую локацию, и все эти события пытаюсь прописать в SDK 0.4 на новом террейне!!

ОК! Ждем ответа опытных. denis2000

Знаете сколько скриптов Lua в игре имеющих 240 строчку? По-моему, более одного. Но из логики видно, что вы неправильно именуете вейпоинты. Вейпоинты для сталкеров должны иметь структуру: [PREFIX]_[NAME]_[walk|look] и ничего более (без префикса можно, но крайне нежелательно).
Работают: pri_stalker_walk, stalker_walk, stalker_2_walk;
Не работают: pri_stalker, stalker_wolk, stalker_walk_2;
Ну и не забывайте компилить спавн когда добавляете вейпоинты. НИ после добавления вейпоинтов не нужна.
P.S.: Считаю, что у Вас стоит ТЧ (исходя из SDK 0.4)


спасибо!!! от души!! ваш форум будет в списке благодарности в титрах моего нового проекта!!хован !! денис!!! очень рад что вы есть !! спасибо за вашу поддержку и помощь!!!

добавлено (18.01.2014, 10:23)
---------------------------------------------
буду пробовать,тестировать, пытаться, надеюсь на вашу дальнейшую поддержку!!артур

Добавлено (18.01.2014, 12:37)
---------------------------------------------
А вот теперь хотел написать большое спасибо за помощь!! Все пошло!!! немного скринов!!
http://SSMaker.ru/ea2c9b7e/
http://SSMaker.ru/3e903731/
Только интересно пути монстров так же прописывать??
работать стало только тогда, когда прописал " pri_stalker_walk"
Ребят вы гении smile

Именование для монстров, для схемы mob_walker, такое-же.
Предупреждение #1: Нарушение правил форума, пункт 4.4.
XOBAH




Сообщение отредактировал alex_xp_77 - Сб, 18.01.2014, 10:23
 
sergej5500Дата: Сб, 25.01.2014, 20:00 | Сообщение # 764
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый день.  Интересует такой вопрос. В СГМ много одиночных НПС (базы группировок, неписи для респавна и т.д.)  Они подчиняются логике xr_move. Если этих НПС спавнить как сквады, то будет ли схема xr_move для них работать?

Конечно будет, в крайнем случае ее можно заменить схемой walker. denis2000

Добавлено (25.01.2014, 20:00)
---------------------------------------------
denis2000
Попробовал сделать следующее. На смарте zat_b38 прописал эксклюзивы


Типовая секция работы.



После таких правок имею 

еще до конца загрузки сейва.


Лог ругается на строку v.game_vertex_id = v.alife_task:game_vertex_id() в скрипте. Работы для xr_move брались из кастом-дат одиночных эксклюзивных НПС.  Прямой спавн сквада из этих эксклюзивных НПС вылета не дает, но НПС не хотят выполнять свои работы в xr_move. Если спавнить их не сквадом, а поодиночке, то работы прекрасно выполняются.  Вопрос, можно ли поправить скрипт, чтобы работы в xr_move выполняли НПС на смартах?
 
denis2000Дата: Сб, 25.01.2014, 20:46 | Сообщение # 765
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Попробуй в скрипте gulag_general.script добавить в таблицу job_type_by_scheme, запись:
Код
["move"] = "point_job"


Это как раз, то чего я боялся для внедрения этой логики на смарт придется либо допиливать скрипты или заменить эту логику на walker.


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