Модостроение. Спавн и логика
|
|
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 | Дата: Пт, 16.09.2016, 20:15 | Сообщение # 1366 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата progkuchumov ( ) то же оружие, оно в одних конфигах со всякими приставками пишется, в других без них - и как тут разобраться? Все на самом деле очень просто: различие хоть в одном символе - это разные предметы.
mp_ammo_12x70_buck - да это дробь, несколько модифицированная для мультиплеерной игры и только там встречавшаяся. Вам нужно прописывать НПС боеприпас для синглплеерной игры ammo_12x70_buck и его же соответственно запрещать к торговли.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
progkuchumov | Дата: Пт, 16.09.2016, 20:29 | Сообщение # 1367 |
Отмычка
Пользователи
Сообщений: 38
| denis2000, ясно, спасибо большое, объяснили... я не понимал различие между ними... можно было сразу сказать, и я бы не отнимал у вас столько времени...
Добавлено (16.09.2016, 20:29) --------------------------------------------- Поэтому и просил нормальный мануал - но видимо такого нет, везде надо сотни раз перепроверить, перечитать, и все равно не будешь знать, куда рыть... Простите.
Сообщение отредактировал progkuchumov - Пт, 16.09.2016, 20:30 |
|
|
Эти 0 пользователя(ей) поблагодарили progkuchumov за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 16.09.2016, 20:31 | Сообщение # 1368 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата progkuchumov ( ) можно было сразу сказать Как только я увидел дескрипшен вашего персонажа, так сразу вам и стал об этом говорить. Немного терпения.
Модостроение вообще требует массу терпения, не пеняйте за снобизм - вам гораздо проще. У начинавших модостроение не было ни мануалов, ни какой то информации, более того интернет был не у всех на постоянной основе. Все изучали самостоятельно по крупицам собирая информацию - которая теперь стала доступна всем и каждому.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
progkuchumov | Дата: Пт, 16.09.2016, 20:38 | Сообщение # 1369 |
Отмычка
Пользователи
Сообщений: 38
| denis2000, я все понимаю, поверьте. Но не надо лишний раз мстить за это - информации действительно море сейчас, но в этом и беда - ориентируешься на нее, а она вдруг тебе дает ошибочные сведения. В итоге стараешься разобраться сам - и возникают такие глупые ошибки, как у меня. А заходишь на форум, чтобы спросить - и встречаешь непонимание. Мне бы не хотелось, чтобы меня считали за дурака. Если есть направление - я дальше сам иду и буду знать, где копать. Мне нужно лишь правильное направление.
|
|
|
Эти 0 пользователя(ей) поблагодарили progkuchumov за это полезное сообщение: |
|
|
Magadan | Дата: Сб, 17.09.2016, 17:53 | Сообщение # 1370 |
Удаленные
| denis2000, как же я с тобой согласен. тот же читер клуб-всё по полочкам,бери и пользуйся. а нам раньше такое и не снилось.
|
|
|
Эти 0 пользователя(ей) поблагодарили Magadan за это полезное сообщение: |
|
|
sergej5500 | Дата: Ср, 02.11.2016, 23:11 | Сообщение # 1371 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер. Возник вопрос.
В смарте полтергейст и 4 собаки. Все под логикой home.
Существует схема companion. Когда НПС следует за ГГ.
Возможно ли сделать так, чтобы собаки ходили за полтергейстом в режиме companion или в эквивалентной схеме? Какой логикой можно воспользоваться?
Полтергейсту желательно оставить логику home.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 03.11.2016, 17:55 | Сообщение # 1372 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Готовой схемы поведения конечно нет, поэтому если хотите можете взять за основу логику companion и на ее базе написать свою совершенно новую или есть возможность использовать логику mob_walker тогда можно попытаться запустить ваших монстров по статическим маршрутам, причем собак направить за полтергейстом.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Shyr | Дата: Сб, 19.11.2016, 18:02 | Сообщение # 1373 |
Отмычка
Пользователи
Сообщений: 38
| Доброго времени суток. Решил пройти первый урок КМБ "Создание нового игрового персонажа" Сделал все по инструкции не отклоняясь от нее. В уроке, файл описания персонажа создается на основе уже существующего персонажа, а спавн осуществляется с помощью клавиши F6 (осуществляется через ui_main_menu.script) Однако после загрузки игры, последующего выхода в меню и нажатия клавиши F6 игра вылетает с логом:
Код FATAL ERROR
[error]Expression : no_assert [error]Function : CXML_IdToIndex<class CCharacterInfo>::GetById [error]File : d:\prog_repository\sources\trunk\xrserverentities\xml_str_id_loader.h [error]Line : 112 [error]Description : item not found, id [error]Arguments : zat_sh_nikitka_skadovsk
stack trace:
Я подозреваю, что ошибка допущена в файле описания персонажа. Подскажите, верно-ли это и в чем может быть ошибка?
P.s. Код фала описания персонажа прилагается:
Код <?xml version='1.0' encoding="windows-1251" ?> <xml> <specific_character id="zat_sh_nikitka_skadovsk" team_default = "1"> <name>zat_sh_nikitka_skadovsk_name</name> <icon>ui_inGame2_Soldier_4</icon> <map_icon x="0" y="0"></map_icon> <bio>esc_wolf_bio</bio> <class>zat_sh_nikitka_skadovsk</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <money min="4000 " max="120000" infinitive="0"></money> <rank>999</rank> <reputation>0</reputation> <visual>actors\stalker_mercenary\stalker_mercenary_1_helm</visual> <snd_config>characters_voice\human_01\stalker\</snd_config> <crouch_type>-1</crouch_type> <panic_treshold>0</panic_treshold> <supplies> [spawn] \n #include "gameplay\character_items.xml" \n #include "gameplay\character_drugs.xml" \n #include "gameplay\character_food.xml" </supplies> <start_dialog>hello_dialog</start_dialog> </specific_character> </xml>
Сообщение отредактировал Shyr - Пт, 25.11.2016, 18:17 |
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
denis2000 | Дата: Сб, 19.11.2016, 19:33 | Сообщение # 1374 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Shyr, Судя по логу не находиться секция объекта: [zat_sh_nikitka_skadovsk], проверяйте файл sh_stalkers.ltx и регистрацию его в spawn_sections.ltx.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Shyr | Дата: Пн, 21.11.2016, 22:25 | Сообщение # 1375 |
Отмычка
Пользователи
Сообщений: 38
| denis2000, решил проблему: в КМБ, Урок 1, пункт 2 "Создать файл описания классов" в этом пункте имеется вставка с кодом:
Код <character id="zat_sh_nikitka_skadovsk"> <class>zat_sh_nikitka_skadovsk</class> </character>
так вот, в нем упущены строчки открытия и закрытия XML документа, а так-же описание подключенной к документу таблицы кодировок. После правки документ должен выглядеть такким образом:
Код <?xml version='1.0' encoding="UTF-8"?> <xml> <character id="zat_sh_nikitka_skadovsk"> <class>zat_sh_nikitka_skadovsk</class> </character> </xml>
тогда НПС спавнится и все работает.
Добавлено (21.11.2016, 22:25) --------------------------------------------- Еще такой вопрос: есть у меня НПС, (созданный по КМБ уроку 1). По ходу урока он делается бессмертным и, соответственно, если открыть по нему огонь, то он никак на это не среагирует. Однако моей целью является создать его смертным и статичным(недвижимым). Пробовал просто отключить строку отвечающую за бессмертие значением false, однако тогда НПС переходит на универсальный комбат (верно?) и начинает передвигаться в неизвестном направлении. Вопрос: как мне правильно реализовать эту задумку?
Сообщение отредактировал Shyr - Пт, 25.11.2016, 18:17 |
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 22.11.2016, 07:51 | Сообщение # 1376 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата Shyr ( ) как мне правильно реализовать эту задумку? Изучать уроки далее. По 7-ой включительно.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Shyr | Дата: Чт, 24.11.2016, 18:15 | Сообщение # 1377 |
Отмычка
Пользователи
Сообщений: 38
| denis2000, подскажите, пожалуйста в каком файле (в случае для Никитки из КМБ урок1) задается on/off-line режим?
|
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 25.11.2016, 08:24 | Сообщение # 1378 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Shyr, Не совсем понятно, что вам требуется.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Shyr | Дата: Пт, 25.11.2016, 15:38 | Сообщение # 1379 |
Отмычка
Пользователи
Сообщений: 38
| denis2000, идея заключается в том, что-бы создать неподвижного НПС-мишень, который будет враждебен для ГГ. Поискав в интернете, наткнулся на свой вопрос: человек тоже делал НПС-мишень, с такой логикой:
Код [logic] active = remark@search
[remark@fire] combat_ignore_cond = always danger_ignore = danger_ignore radius = 0 anim = ward wounded = wounded@work sniper = true
[smart_terrains] none = true
[remark@search] combat_ignore_cond = always combat_ignore_keep_when_attacked = true danger_ignore = danger_ignore anim = ward target = actor wounded = wounded@work
[wounded@work] hp_state = 0|wounded_heavy@help_heavy hp_state_see = 0|wounded_heavy@help_heavy hp_victim = 0|nil hp_fight = 0|false hp_cover = 0|false Однако его НПС при виде ГГ срывался в бег. Что-бы пресечь такую реакцию НПС, этому человеку посоветовали убрать из логики флаг sniper = true и перевести НПС в режим offline.
Поискав в интернете варианты перевода НПС в offline режим, наткнулся на статью, где этот перевод осуществляется через скрипт. Однако через какой именно скрипт не указано. Вот я и хочу узнать через какой скрипт это осуществляется.
Сообщение отредактировал Shyr - Пт, 25.11.2016, 15:53 |
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 25.11.2016, 20:11 | Сообщение # 1380 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Shyr, Приведенная вами логика некого умельца, представляет собой авангард абсурда, а совет по ее улучшению выводит модостроение на такие вершины, что я плачу от смеха. Лучше читайте статьи на сталкер-инсаде по вопросам логики НПС или изучайте уроки в КМБ.
Некоторые вопросы к приведенной схеме: 1. Зачем секция remark@fire если она не используется? 2. Зачем писать флаг sniper = true в скекцию в которой он принципиально не работает (он читается только в camper)? 3. Зачем писать параметр danger_ignore если он никуда не ссылается и в принципе не известен в логике? 4. Зачем писать combat_ignore_cond = always если в этом параметре ожидается кондлист или на худой конец true/false? 5. За использование логики remark в качестве базовой вообще расстрел на месте.
Цитата Shyr ( ) идея заключается в том, что-бы создать неподвижного НПС-мишень, который будет враждебен для ГГ Что проще то? Логика волкера с игнорированием всех опасностей и соблазнов:
Код [walker] path_walk = ***_walk path_look = ***_look corpse_detection_enabled = false combat_ignore_keep_when_attacked = true combat_ignore_cond = true meet = no_meet use_camp = false
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
|