|
Модостроение. Общие вопросы и ответы
|
|
| denis2000 | Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Помощь тем кто хочет знать больше о игре и модах Если у вас появились вопросы по модостроению в игре S.T.A.L.K.E.R. Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (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)", ее и надо расскомментировать, должно получиться вот так: Код function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией
Первый: Код 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) Второй: Код 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 по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
Посты, для которых есть свои категории, из этой темы будут удаляться или перемещаться в соответсвующую тему. Персональных извещений в ЛС о переносе\удалении поста не будет, ищите сами. Учитывайте, что в системах Ucoz тема не обновляется в статистике при переносе поста. Посты, написанные здесь-же после переноса, будут расцениваться как кросспостинг, со всеми вытекающими
[cut noguest=Первый юбилей нашей темы] Здравствуйте господа модостроители, и все так или иначе причастные к этому. Нашей теме исполнился 1 год. От души поздравляю Всех Вас дорогие друзья, творческих успехов. Хочу так же выразить отдельную благодарность denis2000 и ХОВАН. tracker 23.06.11
[/cut]
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| asd123 | Дата: Вс, 10.07.2016, 11:53 | Сообщение # 1951 |
 Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Цитата denis2000 (  ) точка пути тоже игровой объект. Если она игровой объект - значит её можно поставить как цель у вертолёта? Если да, то где что нужно прописать? В логике вертолёта из Госпиталя заметил строку fire_point. Может ли она являться задаванием цели какой-то точки?
Добавлено (10.07.2016, 11:53) --------------------------------------------- Кстати, а как бы добавить БТР на локацию? (враждебный) И чтобы он мог атаковать всё, что видит.
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Вс, 10.07.2016, 19:10 |
| |
|
| Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
| STALKER_ICEBERG | Дата: Вс, 10.07.2016, 12:55 | Сообщение # 1952 |
 Сталкер
Пользователи
Сообщений: 180
| Цитата asd123 (  ) И чтобы он мог атаковать всё, что видит. Позволю себе ворваться в Ваш Сталкер - как NPC будут его уничтожать?)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили STALKER_ICEBERG за это полезное сообщение: |
|
|
| asd123 | Дата: Вс, 10.07.2016, 13:03 | Сообщение # 1953 |
 Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| STALKER_ICEBERG, хочу его задействовать так же как вертолёт Чтоб приехал, пострелял и взорвался(камикадзе ).
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Вс, 10.07.2016, 13:04 |
| |
|
| Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
| denis2000 | Дата: Вс, 10.07.2016, 21:33 | Сообщение # 1954 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата asd123 (  ) В логике вертолёта из Госпиталя заметил строку fire_point. Может ли она являться задаванием цели какой-то точки? Вполне возможно, проверяте.
Цитата asd123 (  ) Кстати, а как бы добавить БТР на локацию? (враждебный) И чтобы он мог атаковать всё, что видит. КМБ Урок 47 посмотрите.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| asd123 | Дата: Пн, 11.07.2016, 17:09 | Сообщение # 1955 |
 Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Цитата denis2000 (  ) Кстати, а как бы добавить БТР на локацию? (враждебный) И чтобы он мог атаковать всё, что видит.КМБ Урок 47 посмотрите. Посмотрел, всё чего не хватало для его появления - добавил Теперь вопрос: А как бы его заспавнить, скажем, через логику? Например, через функцию spawn_object(или какую-то другую. Я без понятия)
Кстати, заметил, что вертолёт в логике не реагирует на строки: upd_vis, stop_fire. Сколько бы я не ставил значение в upd_vis, цель он так и не меняет. В stop_fire у меня что стоит true, что не стоит - он всё равно продолжает палить, если теряет цель из виду. Эх.. как же они не доработаны в ЗП. А с fire_point интересная вещь получается... я поставил fire_point в одной секции логики(к которой вертолёт уже никогда не возвращается), но он всё равно считает эту точку своей целью.(Я указал этой точкой координаты walk лидера сталкеров на Южном блокпосту. Когда он пролетает над блокпостом, то начинает палить в эту точку, хотя в секциях эта точка уже не указана как противник(да и вообще никакая точка не указана). Вот так..)
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Пн, 11.07.2016, 21:58 |
| |
|
| Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
| denis2000 | Дата: Вт, 12.07.2016, 10:47 | Сообщение # 1956 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата asd123 (  ) Например, через функцию spawn_object(или какую-то другую. Я без понятия) Ну так и спавните:
Код %=spawn_object(ОБЪЕКТ:ТОЧКА_ПУТИ)%
Цитата asd123 (  ) Кстати, заметил, что вертолёт в логике не реагирует на строки: upd_vis, stop_fire. upd_vis работает только в паре с enemy = all, при потере текущей цели через интервал времени upd_vis будет выбрана новая. stop_fire работает только если path_look = actor, если ГГ не виден вертолетом, то огонь он прекратит.
Цитата asd123 (  ) Эх.. как же они не доработаны в ЗП. Как раз наоборот, схему слишком узко специализировали для финального боя ГГ с Боссом-вертолетом в ЧН, откуда она с небольшими изменениями (для красивого пролета над Припятью) и перекочевала в ЗП.
Цитата asd123 (  ) А с fire_point интересная вещь получается... я поставил fire_point в одной секции логики(к которой вертолёт уже никогда не возвращается), но он всё равно считает эту точку своей целью. Совершенно верно - единожды указанная цель, будет ею во всех последующих секциях логики, пока не будет перебита новым параметром enemy, fire_point или не убита.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| asd123 | Дата: Вт, 12.07.2016, 14:31 | Сообщение # 1957 |
 Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Цитата denis2000 (  ) upd_vis работает только в паре с enemy = all А у меня оно так и задействованно Но он всё равно не желает менять цель.
Цитата denis2000 (  ) пока не будет перебита новым параметром enemy Вот логика вертолёта(выделил жёлтым цветом его выбор целей): [cut=Вертушка-бестолочь :D] [logic] active = heli_move@start
[heli_move@start] path_move = esc_heli_start path_look = esc_heli_go_to_gate_look on_info = {+esc_village_annex_start} heli_move@go_to_gate max_velocity = 60 engine_sound = false invulnerable = true
[heli_move@go_to_gate] path_move = esc_heli_go_to_gate path_look = esc_heli_go_to_gate_look on_timer = 20000 | heli_move@go_to_base max_velocity = 30 engine_sound = true invulnerable = false
[heli_move@go_to_base] path_move = esc_heli_go_to_base path_look = esc_heli_go_to_base_look max_velocity = 40 engine_sound = true fire_point = esc_b1_commander_walk invulnerable = false on_timer = 35000 | heli_move@patrol_1 %=send_tip(esc_heli_text:portrait_New_Voenniy5:esc_b1_base_commander_title:8000)%
[heli_move@patrol_1] path_move = esc_heli_patrol_1 path_look = esc_heli_patrol_1_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_1)} heli_move@patrol_3 max_velocity = 60 enemy = nil stop_fire = true
[heli_move@patrol_2] path_move = esc_heli_patrol_2 path_look = esc_heli_patrol_2_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_2)} heli_move@patrol_3 max_velocity = 60 enemy = all invulnerable = false stop_fire = true upd_vis = 3
[heli_move@patrol_3] path_move = esc_heli_patrol_3 path_look = esc_heli_patrol_3_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_3)} heli_move@patrol_4 max_velocity = 50 min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all invulnerable = false stop_fire = true upd_vis = 3
[heli_move@patrol_4] path_move = esc_heli_patrol_4 path_look = esc_heli_patrol_4_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_4)} heli_move@patrol_5 max_velocity = 30 min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all invulnerable = false stop_fire = true upd_vis = 5
[heli_move@patrol_5] path_move = esc_heli_patrol_5 path_look = esc_heli_patrol_5_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_5)} heli_move@patrol_6 max_velocity = 40 min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all upd_vis = 3 invulnerable = false stop_fire = true
[heli_move@patrol_6] path_move = esc_heli_patrol_6 path_look = esc_heli_patrol_6_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_6)} heli_move@patrol_7 max_velocity = 30 min_mgun_attack_dist = 1 max_mgun_attack_dist = 50 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all upd_vis = 3 invulnerable = true stop_fire = true
[heli_move@patrol_7] path_move = esc_heli_patrol_7 path_look = esc_heli_patrol_7_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_7)} heli_move@patrol_8 max_velocity = 30 min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all invulnerable = false stop_fire = true upd_vis = 3
[heli_move@patrol_8] path_move = esc_heli_patrol_8 path_look = esc_heli_patrol_8_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_8)} heli_move@patrol_9 max_velocity = 60 min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all invulnerable = false stop_fire = true upd_vis = 3
[heli_move@patrol_9] path_move = esc_heli_patrol_9 path_look = esc_heli_patrol_9_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_9)} heli_move@patrol_10 max_velocity = 60 min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all invulnerable = false stop_fire = true upd_vis = 3
[heli_move@patrol_10] path_move = esc_heli_patrol_10 path_look = esc_heli_patrol_10_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_10)} heli_move@patrol_11 max_velocity = 60 min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all invulnerable = false stop_fire = true upd_vis = 3
[heli_move@patrol_11] path_move = esc_heli_patrol_11 path_look = esc_heli_patrol_11_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_11)} heli_move@patrol_1 max_velocity = 100 min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = nil invulnerable = false stop_fire = true upd_vis = 3
[heli_move@attack] path_move = esc_heli_go_to_base path_look = esc_heli_go_to_base_look on_info = {+esc_blockpost_protection_done} heli_move@end max_velocity = 25 min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all invulnerable = false stop_fire = true upd_vis = 3 [/cut] Тут видно, сколько раз это "чудо" должно переключаться на другие цели.. Он так и делает, но цель из уже не работающей логики так и не забывает.. Злопамятный
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Вт, 12.07.2016, 14:35 |
| |
|
| Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
| denis2000 | Дата: Вт, 12.07.2016, 14:41 | Сообщение # 1958 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| asd123, Параметр enemy перебивает enemy, а параметр fire_point соответственно fire_point. Не перекрестно. Соответственно раз написали fire_point все остальные указания с параметром enemy успешно проигнорированы.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| asd123 | Дата: Вт, 12.07.2016, 14:43 | Сообщение # 1959 |
 Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| denis2000, ладно.. fire_point из этого вертолёта я убрал(но я рад, что я наконец-то нашёл способ заставить вертолёт стрелять в точку, а не в персонажа). Хочу наконец-то разобраться с upd_vis. Я так понимаю, нужно убрать из всех секций enemy = all и оставить только в одной? Вернее.. если нужно поставить nil, то только в нужной секции, чтобы он у меня всех военных на блокпосте не повыносил
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Вт, 12.07.2016, 14:46 |
| |
|
| Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
| denis2000 | Дата: Вт, 12.07.2016, 18:31 | Сообщение # 1960 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| asd123, upd_vis и enemy = all ставь во всех секциях где необходима атака противника, но учти что enemy = nil не приводит к забыванию последней цели, к тому же цели выбираются рандомно из всего списка НПС в онлайне находящихся в зоне видимости вертолета и на дистанции досягаемости.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| asd123 | Дата: Вт, 12.07.2016, 23:28 | Сообщение # 1961 |
 Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Вообщем.. Вот логика: [cut=Логика] [logic] active = heli_move@start
[heli_move@start] path_move = esc_heli_start path_look = esc_heli_go_to_gate_look on_info = {+esc_village_annex_start} heli_move@go_to_gate max_velocity = 60 engine_sound = false invulnerable = true
[heli_move@go_to_gate] path_move = esc_heli_go_to_gate path_look = esc_heli_go_to_gate_look on_timer = 20000 | heli_move@go_to_base max_velocity = 30 engine_sound = true invulnerable = false
[heli_move@go_to_base] path_move = esc_heli_go_to_base path_look = esc_heli_go_to_base_look max_velocity = 40 engine_sound = true invulnerable = false on_timer = 35000 | heli_move@patrol_1 %=send_tip(esc_heli_text:portrait_New_Voenniy5:esc_b1_base_commander_title:8000)%
[heli_move@patrol_1] path_move = esc_heli_patrol_1 path_look = esc_heli_patrol_1_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_1)} heli_move@patrol_3 max_velocity = 60
[heli_move@patrol_3] path_move = esc_heli_patrol_3 path_look = esc_heli_patrol_3_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack on_info2 = {=npc_in_zone(esc_heli_patrol_3)} heli_move@patrol_4 max_velocity = 50 invulnerable = false min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all upd_vis = 1
[heli_move@patrol_4] path_move = esc_heli_patrol_3 path_look = esc_heli_patrol_4_look on_info = {+esc_blockpost_protection_start -esc_blockpost_protection_done} heli_move@attack ;on_info2 = {=npc_in_zone(esc_heli_patrol_4)} heli_move@patrol_5 max_velocity = 30 invulnerable = false min_mgun_attack_dist = 1 max_mgun_attack_dist = 150 min_rocket_attack_dist = 50 max_rocket_attack_dist = 180 use_rocket = true use_mgun = true enemy = all upd_vis = 1 [/cut] А вот видео с вертолётом: [cut=Первое. Вступление. Логика вертолёта на глазах. Атакуем ГГ.][/cut] [cut=Второе. Атакуем НПС.][/cut] Видимо, upd_vis правда не работает в ЗП(да и в ЧН я что-то не припомню чтобы он работал. Вертолёт в Госпитале меняет цель, когда переключается на другую секцию логики)
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Ср, 13.07.2016, 01:01 |
| |
|
| Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
| Бармен | Дата: Ср, 13.07.2016, 02:36 | Сообщение # 1962 |
 Ветеран
Свобода
Сообщений: 370
| Давненько меня тут не было, и вот проблема появилась, при компиляции локации в SDK 0.7.
Код FATAL ERROR
[error]Expression : assertion failed [error]Function : CDB::MODEL::build [error]File : D:\prog_repository\sources\trunk\xrCDB\xrCDB.cpp [error]Line : 86 [error]Description : (Vcnt>=4)&&(Tcnt>=2)
stack trace:
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Бармен за это полезное сообщение: |
|
|
| denis2000 | Дата: Ср, 13.07.2016, 09:32 | Сообщение # 1963 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата Бармен (  ) [error]File : D:\prog_repository\sources\trunk\xrCDB\xrCDB.cpp [error]Line : 86 [error]Description : (Vcnt>=4)&&(Tcnt>=2) Судя по всему проблема с геометрией у одного из объектов.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Кошелев | Дата: Ср, 13.07.2016, 20:32 | Сообщение # 1964 |
|
Гражданский
Пользователи
Сообщений: 19
| Приветствую, форумчане. Восстановил Сидоровича в ЗП. Когда прописываю ему в характер start_dialog, он работает без вылетов, но при замене на actor_dialog ловлю вылет
Код Expression : !phrase_dialog->m_PhraseVector.empty() Function : CPhraseDialog::SayPhrase File : D:\prog_repository\sources\trunk\xrGame\PhraseDialog.cpp Line : 146 Description : No available phrase to say, dialog[hello_dialog]
Класс полностью восстановлен, группировка "Торговцы" тоже. В dialog_manager прописал
Код [dm_hello_0] category = hello npc_community = stalker, trader level = all
[dm_hello_1] category = hello npc_community = stalker, trader level = all
[dm_hello_2] category = hello npc_community = stalker, trader level = all
Прошу помощи!
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Кошелев за это полезное сообщение: |
|
|
| sergej5500 | Дата: Ср, 13.07.2016, 21:04 | Сообщение # 1965 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Кошелев,
Старт-диалог всегда начинает НПС. Соответственно, фразы выбирает движок. Исходя из условий диалога. Старт-диалог в профиле НПС должен быть один.
Актор-диалог начинает игрок. И игрок выбирает фразы. Актор-диалогов в профиле НПС может быть сколько угодно.
Старт и актор диалоги менять местами не рекомендуется.
Вы прописали hello_dialog в качестве актор-диалога. Не уверен, что это вообще можно делать. Структура у hello_dialog очень своеобразная. И не подходит для диалога главного героя. Условия для выбора фразы.
npc_community = stalker, trader
Если ГГ у нас работает в роли НПС, то игрок должен быть в группировке stalker или trader. Игрок у нас состоит в группировке actor. Это первая причина вылета.
Вторая причина. Если у нас несколько фраз подходят по условию, то движок рандомно выберет одну из них. В случае, когда hello_dialog является актор-диалогом, рандомный выбор невозможен. Движок не знает, что выбрать: dm_hello_0, dm_hello_1 и т.д.
Лучше всего прописать Сидоровичу индивидуальный старт-диалог.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|