Модостроение. Спавн и логика
|
|
denis2000 | Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Спавн и логика Создание объектов на локации и логика поведения этих объектов Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (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 по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 11.11.2014, 07:29 | Сообщение # 1036 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| alex_xp_77, А чем не устраивают видеоуроки Непряхина?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Вт, 11.11.2014, 13:03 | Сообщение # 1037 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Цитата denis2000 ( ) А чем не устраивают видеоуроки Непряхина? Доброго дня Денис!! У Андрея(genior) к сожалению именно по спавну, что мне надо, нету, я с ним лично занят созданием мода,точнее он мне помогает (технический директор проекта) и он говорит что не знаком системой спавна, можно делать по нескольким методикам, кстати урок называется создание спавна, но имеется в виду, создание дефолтной логике нпс, look, walk, sleep, и тд. и тп. Он мне скидывал создание спавна на тетради(текстовый урок) но он очень сложен, и по ходу не для sdk, но попробую делать по методу Дизеля, уж больно он подробно разжевал, думаю попыхтеть и все получится!!!
Сообщение отредактировал alex_xp_77 - Вт, 11.11.2014, 13:04 |
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 11.11.2014, 21:42 | Сообщение # 1038 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| alex_xp_77, То есть то что происходит в уроке "Спавн элементы на локации. Часть 1" начиная с 4:45 это не спавн? Тогда почему в названии урока затесалось слово спавн - это досадная ошибка?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Пт, 14.11.2014, 22:06 | Сообщение # 1039 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Ну да согласен есть елементы спавна, но все на уровне invertori_box, но разница ощутимая между ящиком и нпс, я же писал что в спавне чайник уважаемый Денис, поэтому и просил как именно заспавнить нпс, но вроде как получил подробный ответ, хотя если подумать, наверное, это мое мнение, то поменять логику в спавн_рестикторе, и он подойдет и для нпс!!Очень благодарен вам!! Добавлено (14.11.2014, 22:06) --------------------------------------------- Доброго вечера , подскажите че я упустил, видео тут http://www.youtube.com/watch?v....n=share Почему нпс на корточках спит
|
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 14.11.2014, 23:03 | Сообщение # 1040 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата alex_xp_77 ( ) подскажите че я упустил Упустили прочитать и выполнить последний параграф шапки темы.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 17.11.2014, 18:47 | Сообщение # 1041 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый день.
Написал рестриктор управления зоной уборки оружия для СГМ 2.1.
[cut=Логика][logic] active = sr_universal@1
[sr_universal@1] scheme_type = noweap_zone noweap_zone_cond = true on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_idle@end on_info2 = {+esc_b1_monster_attack_task_start} sr_idle@esc_b1_monster_attack_task
[sr_idle@esc_b1_monster_attack_task] on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_idle@end on_info2 = {+esc_b1_monster_attack_task_final} sr_universal@2 on_info3 = {+esc_b1_monster_attack_task_fail} sr_universal@2
[sr_universal@2] scheme_type = noweap_zone noweap_zone_cond = true on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_idle@end
[sr_idle@end][/cut]
После начала квеста esc_b1_monster_attack_task_start рестриктор переключается на 2-ю секцию с глюком. На первой секции уборка оружия работает отлично. После перехода на 2-ю секцию оружие достать нельзя не только в зоне рестриктора, но и за её пределами. Помогает только запись сейва и загрузка с него.
В таком варианте логика работает без сбоев.
[cut=Логика][logic] active = sr_universal@1
[sr_universal@1] scheme_type = noweap_zone noweap_zone_cond = true on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_universal@4 on_info2 = {+esc_b1_monster_attack_task_start} sr_universal@2
[sr_universal@2] scheme_type = noweap_zone noweap_zone_cond = false on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_universal@4 on_info2 = {+esc_b1_monster_attack_task_final} sr_universal@3 on_info3 = {+esc_b1_monster_attack_task_fail} sr_universal@3
[sr_universal@3] scheme_type = noweap_zone noweap_zone_cond = true on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_universal@4
[sr_universal@4] scheme_type = noweap_zone noweap_zone_cond = false[/cut]
Можно ли схемы sr_idle и sr_universal применять в одном рестрикторе?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Дизель | Дата: Пн, 17.11.2014, 19:53 | Сообщение # 1042 |
Сталкер
Разработчики
Сообщений: 260
| sr_universal - что то новое? Лезь в скрипты и смотри там, прописано ли...
Вообще в рестрикторе, можно в логике хоть sr_kupe написать, будет ли связь с функциями?
andreyholkin
|
|
|
Эти 0 пользователя(ей) поблагодарили Дизель за это полезное сообщение: |
|
|
FantomICW | Дата: Пн, 17.11.2014, 20:01 | Сообщение # 1043 |
Лидер «Свободы»
Свобода
Сообщений: 4438
| Цитата Дизель ( ) можно в логике хоть sr_kupe написать Разумеется, будет вылет.
Цитата Дизель ( ) sr_universal Это разработанная Николаем универсальная убер-схема для рестрикторов, переходов и другого.
|
|
|
Эти 0 пользователя(ей) поблагодарили FantomICW за это полезное сообщение: |
|
|
makdm | Дата: Пн, 17.11.2014, 20:09 | Сообщение # 1044 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата sergej5500 ( ) Можно ли схемы sr_idle и sr_universal применять в одном рестрикторе? Можно. Только параметры у схем разные. Например параметр scheme_type в схеме sr_idle обрабатываться не будет.
Схема sr_universal крайне не рациональна. С одной стороны кажется, что всё очень удобно и можно с помощью одной схемы отследить все события. НО если у вас рестриктор, который только отслеживает условия и производит переключения, в соответствие с работой скрипта xr_logic, то это просто "распыление" ресурсов компа и как следствие Большие тормоза в игре.
Достаточно посмотреть в метод UPDATE этой схемы и в в этот же метод в схеме sr_idle и сравнить их. Теперь сразу станет понятно почему в SGM моде такие "тормоза" в игре.
Терпение...... И все получится!
Сообщение отредактировал makdm - Пн, 17.11.2014, 20:16 |
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
Сахар | Дата: Вт, 18.11.2014, 12:07 | Сообщение # 1045 |
Гражданский
Пользователи
Сообщений: 2
| Всем доброго времени суток. Столкнулся с такой проблемой я прописал сталкеру в эксклюзиве что бы он во время выброса шёл в укрытие. Вот собственно переход на нужную секцию. Код on_info2 = {=surge_started} walker@surge Но проблема заключается в том, что этот сталкер во время выброса идёт в случайное укрытие.
|
|
|
Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 18.11.2014, 12:11 | Сообщение # 1046 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Сахар, Покажите всю логику сталкера.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Сахар | Дата: Вт, 18.11.2014, 12:41 | Сообщение # 1047 |
Гражданский
Пользователи
Сообщений: 2
| sergej5500, Пожалуйста.
[cut=Логика]Код [logic@d3_czech] active = walker ; suitable = {=check_npc_name(czech_name)} true suitable = {=check_npc_name(d3_stalker_czech)} true level_spot = quest_npc on_death = death
[walker] path_walk = walker_czech_walk path_look = walker_czech_look use_camp = false on_info1 = {!is_day} sleeper on_info2 = {=surge_started} walker@surge show_spot = {+info_d3_czech_hello_talk} true, false
[sleeper] path_main = d3_sleeper_czech_walk wakeable = false use_camp = false meet = no_meet on_info = {=is_day} walker show_spot = {+info_d3_czech_hello_talk} true, false
[walker@surge] path_walk = surge_czech_walk path_look = surge_czech_look use_camp = false on_info1 = {=surge_complete} walker on_info2 = {=is_dark_night} sleeper show_spot = {+info_d3_czech_hello_talk} true, false
[death] on_info = %+info_d3_stalker_czech_death% [/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
makdm | Дата: Вт, 18.11.2014, 13:02 | Сообщение # 1048 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата Сахар ( ) Но проблема заключается в том, что этот сталкер во время выброса идёт в случайное укрытие. А вы точно уверены, что он идёт в укрытие? Скорее всего туда, куда вы его в логике хотите отправить, нет AI - сетки. И соответственно схема walker не работает. Если с SDK не работаете и не можете посмотреть сетку, то попробуйте его отправить в другое укрытие. Возможно там есть сетка.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
Сахар | Дата: Вт, 18.11.2014, 13:12 | Сообщение # 1049 |
Гражданский
Пользователи
Сообщений: 2
| Цитата makdm ( ) нет AI - сетки Сетка есть, на это указывает две вещи 1)Эту работу занимает случайный сталкер, который находится в лагере. 2)Я работаю в СДК.
Сообщение отредактировал Сахар - Вт, 18.11.2014, 14:49 |
|
|
Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 18.11.2014, 14:42 | Сообщение # 1050 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Сахар,
Попробуй работы
path_walk = surge_czech_walk path_look = surge_czech_look
и секцию walker@surge
переименовать. Убери surge из названий. Тогда дефолтные неписи перестанут её занимать.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|