Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Общие вопросы и ответы
denis2000Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Помощь тем кто хочет знать больше о игре и модах

Если у вас появились вопросы по модостроению в игре 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]
 
asd123Дата: Вс, 10.07.2016, 11:53 | Сообщение # 1951
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
точка пути тоже игровой объект.

Если она игровой объект - значит её можно поставить как цель у вертолёта? Если да, то где что нужно прописать?
В логике вертолёта из Госпиталя заметил строку fire_point. Может ли она являться задаванием цели какой-то точки?

Добавлено (10.07.2016, 11:53)
---------------------------------------------
Кстати, а как бы добавить БТР на локацию? (враждебный) И чтобы он мог атаковать всё, что видит.


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Вс, 10.07.2016, 19:10
 
STALKER_ICEBERGДата: Вс, 10.07.2016, 12:55 | Сообщение # 1952
Сталкер
Пользователи
Сообщений: 180
Награды: 1
Репутация: [ 24 ]

Цитата asd123 ()
И чтобы он мог атаковать всё, что видит.

Позволю себе ворваться в Ваш Сталкер - как NPC будут его уничтожать?)
 
asd123Дата: Вс, 10.07.2016, 13:03 | Сообщение # 1953
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

STALKER_ICEBERG, хочу его задействовать так же как вертолёт smile Чтоб приехал, пострелял и взорвался(камикадзе biggrin ). happy

У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Вс, 10.07.2016, 13:04
 
denis2000Дата: Вс, 10.07.2016, 21:33 | Сообщение # 1954
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата asd123 ()
В логике вертолёта из Госпиталя заметил строку fire_point. Может ли она являться задаванием цели какой-то точки?

Вполне возможно, проверяте.
Цитата asd123 ()
Кстати, а как бы добавить БТР на локацию? (враждебный) И чтобы он мог атаковать всё, что видит.

КМБ Урок 47 посмотрите.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Пн, 11.07.2016, 17:09 | Сообщение # 1955
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Кстати, а как бы добавить БТР на локацию? (враждебный) И чтобы он мог атаковать всё, что видит.КМБ Урок 47 посмотрите.

Посмотрел, всё чего не хватало для его появления - добавил smile Теперь вопрос: А как бы его заспавнить, скажем, через логику? Например, через функцию spawn_object(или какую-то другую. Я без понятия)

Кстати, заметил, что вертолёт в логике не реагирует на строки: upd_vis, stop_fire. Сколько бы я не ставил значение в upd_vis, цель он так и не меняет. В stop_fire у меня что стоит true, что не стоит - он всё равно продолжает палить, если теряет цель из виду. sad Эх.. как же они не доработаны в ЗП. А с fire_point интересная вещь получается... я поставил fire_point в одной секции логики(к которой вертолёт уже никогда не возвращается), но он всё равно считает эту точку своей целью.(Я указал этой точкой координаты walk лидера сталкеров на Южном блокпосту. Когда он пролетает над блокпостом, то начинает палить в эту точку, хотя в секциях эта точка уже не указана как противник(да и вообще никакая точка не указана). Вот так..)


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Пн, 11.07.2016, 21:58
 
denis2000Дата: Вт, 12.07.2016, 10:47 | Сообщение # 1956
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата 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 или не убита.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Вт, 12.07.2016, 14:31 | Сообщение # 1957
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
upd_vis работает только в паре с enemy = all

А у меня оно так и задействованно smile Но он всё равно не желает менять цель.
Цитата 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]
Тут видно, сколько раз это "чудо" должно переключаться на другие цели.. Он так и делает, но цель из уже не работающей логики так и не забывает.. Злопамятный biggrin


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Вт, 12.07.2016, 14:35
 
denis2000Дата: Вт, 12.07.2016, 14:41 | Сообщение # 1958
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

asd123, Параметр enemy перебивает enemy, а параметр fire_point соответственно fire_point. Не перекрестно. Соответственно раз написали fire_point все остальные указания с параметром enemy успешно проигнорированы.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Вт, 12.07.2016, 14:43 | Сообщение # 1959
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

denis2000, ладно.. fire_point из этого вертолёта я убрал(но я рад, что я наконец-то нашёл способ заставить вертолёт стрелять в точку, а не в персонажа). Хочу наконец-то разобраться с upd_vis. Я так понимаю, нужно убрать из всех секций enemy = all и оставить только в одной? Вернее.. если нужно поставить nil, то только в нужной секции, чтобы он у меня всех военных на блокпосте не повыносил biggrin

У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Вт, 12.07.2016, 14:46
 
denis2000Дата: Вт, 12.07.2016, 18:31 | Сообщение # 1960
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

asd123,
upd_vis и enemy = all ставь во всех секциях где необходима атака противника, но учти что enemy = nil не приводит к забыванию последней цели, к тому же цели выбираются рандомно из всего списка НПС в онлайне находящихся в зоне видимости вертолета и на дистанции досягаемости.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Вт, 12.07.2016, 23:28 | Сообщение # 1961
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

censored Вообщем.. Вот логика:
[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
 
БарменДата: Ср, 13.07.2016, 02:36 | Сообщение # 1962
Ветеран
Свобода
Сообщений: 370
Награды: 11
Репутация: [ 105 ]

Давненько меня тут не было, и вот проблема появилась, при компиляции локации в 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:
 
denis2000Дата: Ср, 13.07.2016, 09:32 | Сообщение # 1963
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата Бармен ()
[error]File          : D:\prog_repository\sources\trunk\xrCDB\xrCDB.cpp
[error]Line          : 86
[error]Description   : (Vcnt>=4)&&(Tcnt>=2)

Судя по всему проблема с геометрией у одного из объектов.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
КошелевДата: Ср, 13.07.2016, 20:32 | Сообщение # 1964
Гражданский
Пользователи
Сообщений: 19
Награды: 0
Репутация: [ 0 ]

Приветствую, форумчане.
Восстановил Сидоровича в ЗП. Когда прописываю ему в характер 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


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

Кошелев,

Старт-диалог всегда начинает НПС. Соответственно, фразы выбирает движок. Исходя из условий диалога. Старт-диалог в профиле НПС должен быть один.

Актор-диалог начинает игрок. И игрок выбирает фразы. Актор-диалогов в профиле НПС может быть сколько угодно.

Старт и актор диалоги менять местами не рекомендуется.

Вы прописали hello_dialog в качестве актор-диалога. Не уверен, что это вообще можно делать. Структура у hello_dialog очень своеобразная. И не подходит для диалога главного героя. Условия для выбора фразы.

npc_community = stalker, trader

Если ГГ у нас работает в роли НПС, то игрок должен быть в группировке stalker или trader. Игрок у нас состоит в группировке actor. Это первая причина вылета.

Вторая причина. Если у нас несколько фраз подходят по условию, то движок рандомно выберет одну из них. В случае, когда hello_dialog является актор-диалогом, рандомный выбор невозможен. Движок не знает, что выбрать: dm_hello_0, dm_hello_1 и т.д.

Лучше всего прописать Сидоровичу индивидуальный старт-диалог.
 
Поиск: