Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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Дата: Вс, 01.12.2013, 18:29 | Сообщение # 721
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата NIV ()
Пытался смотреть, как сделан treasure_manager в Чн - там большие отличия от ЗП.

Единственными существенными отличиями тайников ЧН и ЗП, то что в ЧН они в контейнерах (treasure_box) и спавн предметов происходит в момент выдачи в ЗП они в рестрикторе тайника и предметы заспавнены с начала игры. Соответственно снятие метки происходит в ЧН после опустошения контейнера с меткой, а в ЗП после поднятия всех предметов из рестриктора тайника.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
makdmДата: Вс, 01.12.2013, 19:46 | Сообщение # 722
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата NIV ()
Вопрос про автоматическое снятие меток меня тоже интересует

Если пересчитывать предметы в тайнике и проверять все ли их забрал ГГ, то, как правильно написал denis2000, нужно использовать treasure_manager.script
А вот если всё упростить и снимать метку с тайника, после его юзания ГГ ( не важно взял ГГ предметы или нет. В конце концов это дело игрока нужны они ему или нет), то можно сделать так:

1. В секции рюкзака или ящика прописываем
custom_data = scripts\treasure_inventory_box.ltx
2. После спавна рюкзака или ящика ставим на него метку
level.map_add_object_spot_ser( id_рюкзака_или_ящика, "treasure", "" )
3. Открываем файл PH_IDLE.SCRIPT
После строчки function action_idle:use_callback(obj, actor)
пишем
if level.map_has_object_spot(obj:id(), "treasure") ~= 0 then
level.map_remove_object_spot(obj:id(), "treasure")
end

Теперь, как только ГГ откроет рюкзак или ящик - метка пропадёт.


Терпение......
И все получится!
 
sergej5500Дата: Вс, 01.12.2013, 22:52 | Сообщение # 723
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. Интересует такой момент. Можно ли прописать иммунитет от выброса конкретному скваду с определенным STORY ID. В surge_manager нашел код

[cut=код]local immuned_to_surge_squads = {
["monster_predatory_day"] = true,
["monster_predatory_night"] = true,
["monster_vegetarian"] = true,
["monster_zombied_day"] = true,
["monster_zombied_night"] = true,
["monster_special"] = true,
["monster"] = true,
["zombied"] = true
}
[/cut]
но он, как я понял, действует на всю группировку.
 
makdmДата: Вс, 01.12.2013, 23:07 | Сообщение # 724
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

sergej5500, наличие story_id - это и есть иммунитет к выбросу.
Сталкеры, в sgm моде, потому и не гибнут при выбросе, потому что у них прописан story_id.
А гибнут только симуляционные сквады, у которых нет story_id.


Терпение......
И все получится!


Сообщение отредактировал makdm - Вс, 01.12.2013, 23:14
 
sergej5500Дата: Пн, 02.12.2013, 01:01 | Сообщение # 725
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. Есть пара вопросов.
1. Переделал логику НПС на лесопилке для сталкерской базы.

[cut=Секция][logic@zat_b104_zombied_1_1]
active = walker@walker_1_1
suitable = {=target_squad_name(zat_b104)} true
prior = 200

[walker@walker_1_1]
path_walk = 1_roam_1_walk
path_look = 1_roam_1_look
def_state_moving = walk
def_state_standing = guard_chasovoy
snd_on_use = {!dist_to_actor_le(3)} nil
use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false[/cut]

НПС не хочет разговаривать с игроком и не рассказывает анекдоты. Как надо подправить логику?

2. Мне предложили идею запустить в патруль вокруг базы 3-х бойцов, так чтобы они шли группой. Если прописать им один путь, то они толкают друг друга. Некрасиво смотрится. Если прописать разные пути, то из-за отличающейся длины маршрута группа распадается. Есть ли возможность написать так, чтобы НПС под работой № 21 следовал за НПС под работой № 20 на дистанции, допустим, 2 метра.
 
denis2000Дата: Пн, 02.12.2013, 02:54 | Сообщение # 726
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата sergej5500 ()
НПС не хочет разговаривать с игроком

А где же секция meet? Читай КМБ Урок 7.
Цитата sergej5500 ()
не рассказывает анекдоты

Для этого логика его должна быть animpoint! Читай КМБ Урок 18


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Пн, 02.12.2013, 16:41 | Сообщение # 727
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый день. Возник один вопрос, который меня озадачил.

[cut=Первый вариант логики Эльбруса.][logic]
active = move@waiting_actor
on_death = death

[death]
on_info = {=killed_by_actor -zat_stalker_elbrus_enemy} %+zat_stalker_elbrus_enemy +zat_stalker_elbrus_death%, %+zat_stalker_elbrus_death%

[move@waiting_actor]
move_dest_number = 1354156
move_state_when_center = hello_wpn
move_state_when_move = walk
move_look_subject = actor
move_combat_disable = true
meet = meet
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = {!actor_enemy} true, false
on_info = {+zat_assault_bandit_base_bandits_lost -zat_assault_bandit_base_elbrus} nil %=release_npc%
on_info2 = {+zat_assault_bandit_base_elbrus} move@pursue_actor %=play_s3d_sound(characters_voice\human_01\stalker\alife\attack\attack_begin_1) =zat_stalker_elbrus_spawn2%
on_info3 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info4 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[move@pursue_actor]
move_pursue_actor = true
move_pursue_range = 8|35
move_pursue_formation = back
move_combat_disable = true
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = {!actor_enemy} true, false
on_actor_dist_ge_nvis = 35| move@themselves %=play_s2d_sound(characters_voice\human_01\stalker\alife\attack\wait_again_1)%
on_info = {+zat_assault_bandit_base_actor_pos} move@themselves
on_info2 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info3 = {=dist_to_actor_ge(130)} nil %+zat_stalker_elbrus_enemy =actor_enemy%
on_info4 = {+zat_bandit_base_actor_hit} move@assault_base %+zat_assault_bandit_base_choose =zat_b5_bandit_alies_stalker_alies_table_enemies%
on_info5 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[move@themselves]
move_dest_number = 1531223
move_state_when_center = hide
move_state_when_move = assault
move_look_subject = actor
move_center_info = zat_assault_bandit_base_on_pos
move_send_tip = zat_stalker_elbrus_need_command_title|zat_stalker_elbrus_need_command_text|elbrus|0|6000
move_combat_disable = true
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = {!actor_enemy} true, false
on_signal = on_center|{+zat_assault_bandit_base_on_pos} move@waiting_signal %=autosave_game(save_zat_assault_bandit_base_wait_signal)%
on_info = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info2 = {=dist_to_actor_ge(130)} nil %+zat_stalker_elbrus_enemy =actor_enemy%
on_info3 = {+zat_bandit_base_actor_hit} move@assault_base %+zat_assault_bandit_base_choose =zat_b5_bandit_alies_stalker_alies_table_enemies%
on_info4 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[move@waiting_signal]
move_dest_number = 1531223
move_look_vertex = 1581785
move_state_when_center = hide
move_state_when_move = assault
move_combat_disable = true
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = {!actor_enemy} true, false
on_info = {+zat_bandit_base_actor_hit} move@assault_base %+zat_assault_bandit_base_choose =zat_b5_bandit_alies_stalker_alies_table_enemies%
on_info2 = {=dist_to_actor_ge(130)} nil %+zat_stalker_elbrus_enemy =actor_enemy%
on_info3 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info4 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[move@assault_base]
move_dest_number = 1633419
move_state_when_center = guard
move_state_when_move = raid
on_info = {+zat_assault_bandit_base_bandits_lost} move@after_victory
on_info2 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info3 = {=dist_to_actor_ge(130)} nil %+zat_stalker_elbrus_enemy =actor_enemy%
on_info4 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[move@after_victory]
move_dest_number = 1633419
move_look_vertex = 1640615
move_state_when_center = sit_ass
move_state_when_move = walk
meet = meet_victory
on_info = {+zat_stalker_elbrus_flesh_otdal =dist_to_actor_ge(125)} nil %=release_npc%
on_info2 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info3 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[meet]
abuse = false
use = {+zat_assault_bandit_base_elbrus !actor_enemy} true, {-zat_assault_bandit_base_elbrus =dist_to_actor_le(6) !actor_enemy} self, false
allow_break = false
meet_on_talking = false
trade_enable = false

[meet_victory]
abuse = false
use = {!actor_enemy} true, false
allow_break = true
meet_on_talking = false
trade_enable = false[/cut]

При такой логике Эльбрус "капризничает". Не хочет говорить с ГГ.

[cut=Второй вариант логики Эльбруса.][logic]
active = move@waiting_actor
on_death = death

[death]
on_info = {=killed_by_actor -zat_stalker_elbrus_enemy} %+zat_stalker_elbrus_enemy +zat_stalker_elbrus_death%, %+zat_stalker_elbrus_death%

[move@waiting_actor]
move_dest_number = 1354156
move_state_when_center = hello_wpn
move_state_when_move = walk
move_look_subject = actor
move_combat_disable = true
meet = meet
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = {!actor_enemy} true, false
on_info = {+zat_assault_bandit_base_bandits_lost -zat_assault_bandit_base_elbrus} nil %=release_npc%
on_info2 = {+zat_assault_bandit_base_elbrus} move@pursue_actor %=play_s3d_sound(characters_voice\human_01\stalker\alife\attack\attack_begin_1) =zat_stalker_elbrus_spawn2%
on_info3 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info4 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[meet]
abuse = false
use = {+zat_assault_bandit_base_elbrus !actor_enemy} true, {-zat_assault_bandit_base_elbrus =dist_to_actor_le(6) !actor_enemy} self, false
allow_break = false
meet_on_talking = false
trade_enable = false

[move@pursue_actor]
move_pursue_actor = true
move_pursue_range = 8|35
move_pursue_formation = back
move_combat_disable = true
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = {!actor_enemy} true, false
on_actor_dist_ge_nvis = 35| move@themselves %=play_s2d_sound(characters_voice\human_01\stalker\alife\attack\wait_again_1)%
on_info = {+zat_assault_bandit_base_actor_pos} move@themselves
on_info2 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info3 = {=dist_to_actor_ge(130)} nil %+zat_stalker_elbrus_enemy =actor_enemy%
on_info4 = {+zat_bandit_base_actor_hit} move@assault_base %+zat_assault_bandit_base_choose =zat_b5_bandit_alies_stalker_alies_table_enemies%
on_info5 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[move@themselves]
move_dest_number = 1531223
move_state_when_center = hide
move_state_when_move = assault
move_look_subject = actor
move_center_info = zat_assault_bandit_base_on_pos
move_send_tip = zat_stalker_elbrus_need_command_title|zat_stalker_elbrus_need_command_text|elbrus|0|6000
move_combat_disable = true
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = {!actor_enemy} true, false
on_signal = on_center|{+zat_assault_bandit_base_on_pos} move@waiting_signal %=autosave_game(save_zat_assault_bandit_base_wait_signal)%
on_info = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info2 = {=dist_to_actor_ge(130)} nil %+zat_stalker_elbrus_enemy =actor_enemy%
on_info3 = {+zat_bandit_base_actor_hit} move@assault_base %+zat_assault_bandit_base_choose =zat_b5_bandit_alies_stalker_alies_table_enemies%
on_info4 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[move@waiting_signal]
move_dest_number = 1531223
move_look_vertex = 1581785
move_state_when_center = hide
move_state_when_move = assault
move_combat_disable = true
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = {!actor_enemy} true, false
on_info = {+zat_bandit_base_actor_hit} move@assault_base %+zat_assault_bandit_base_choose =zat_b5_bandit_alies_stalker_alies_table_enemies%
on_info2 = {=dist_to_actor_ge(130)} nil %+zat_stalker_elbrus_enemy =actor_enemy%
on_info3 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info4 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[move@assault_base]
move_dest_number = 1633419
move_state_when_center = guard
move_state_when_move = raid
on_info = {+zat_assault_bandit_base_bandits_lost} move@after_victory
on_info2 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info3 = {=dist_to_actor_ge(130)} nil %+zat_stalker_elbrus_enemy =actor_enemy%
on_info4 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[move@after_victory]
move_dest_number = 1633419
move_look_vertex = 1640615
move_state_when_center = sit_ass
move_state_when_move = walk
meet = meet_victory
on_info = {+zat_stalker_elbrus_flesh_otdal =dist_to_actor_ge(125)} nil %=release_npc%
on_info2 = {+zat_stalker_elbrus_enemy} nil %=actor_enemy%
on_info3 = {=actor_enemy} nil %+zat_stalker_elbrus_enemy%

[meet_victory]
abuse = false
use = {!actor_enemy} true, false
allow_break = true
meet_on_talking = false
trade_enable = false[/cut]

В этом варианте все происходит нормально. При подходе на нужную дистанцию Эльбрус начинает разговор.
Почему секция meet не читается, когда она внизу файла? Буду благодарен за любые идеи.
 
denis2000Дата: Пн, 02.12.2013, 19:44 | Сообщение # 728
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Вероятно - это особенность парсинга ltx-файлов, я предпочитаю писать секцию (например meet) сразу после ее задействования.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
InvuLДата: Вт, 03.12.2013, 19:10 | Сообщение # 729
Отмычка
Пользователи
Сообщений: 25
Награды: 2
Репутация: [ 4 ]

S.T.A.L.K.E.R Clear Sky 1.5.10 + SGM
Я на кордоне пытаюсь создать сквад на свободном смарте, создать пытаюсь через файл по которому идёт подкрепление к военному блок посту:

[cut noguest=esc_support_military_spawn]
Код

[logic]
active = sr_idle

[sr_idle]
on_info = {!squad_exist(esc_smart_terrain_3_16_military_2_squad_1)} sr_idle@1pre
on_info2 = {!squad_exist(esc_smart_terrain_3_16_military_2_squad_2)} sr_idle@2pre
on_info3 = {!squad_exist(esc_smart_terrain_3_16_military_2_squad_3)} sr_idle@3pre
on_info4 = {!squad_exist(esc_smart_terrain_3_16_military_2_squad_4)} sr_idle@4pre
-->on_info5 = {!squad_exist(esc_stalker_dif_1_squad)} sr_idle@5pre

[sr_idle@1pre]
on_game_timer = 120 | sr_idle@1

[sr_idle@1]
on_actor_dist_ge_nvis = 80 | {!is_smart_captured(esc_smart_terrain_4_13)} sr_idle %=create_squad(esc_smart_terrain_3_16_military_2_squad_1:esc_smart_terrain_3_16)%

[sr_idle@2pre]
on_game_timer = 120 | sr_idle@2

[sr_idle@2]
on_actor_dist_ge_nvis = 80 | {!is_smart_captured(esc_smart_terrain_4_13)} sr_idle %=create_squad(esc_smart_terrain_3_16_military_2_squad_2:esc_smart_terrain_3_16)%

[sr_idle@3pre]
on_game_timer = 120 | sr_idle@3

[sr_idle@3]
on_actor_dist_ge_nvis = 80 | {!is_smart_captured(esc_smart_terrain_2_14)} sr_idle %=create_squad(esc_smart_terrain_3_16_military_2_squad_3:esc_smart_terrain_3_16)%

[sr_idle@4pre]
on_game_timer = 120 | sr_idle@4

[sr_idle@4]
on_actor_dist_ge_nvis = 80 | {!is_smart_captured(esc_smart_terrain_2_14)} sr_idle %=create_squad(esc_smart_terrain_3_16_military_2_squad_4:esc_smart_terrain_3_16)%

-->[sr_idle@5pre]
-->on_actor_dist_ge_nvis = 80 | {!is_smart_captured(esc_smart_terrain_4_9)} sr_idle %=create_squad(esc_stalker_dif_1_squad:esc_smart_terrain_4_9)%

[/cut]

Выхожу (первый раз) на кордон с болот, стою, смотрю в КПК, отряд видно, отображается. Но пытаясь к ним подойти (метров 100-150) игра вылетает.

[cut noguest=лог]
Код

! Invalid ogg-comment version, file:  d:\games\cs\gamedata\sounds\weapons\for_colt1911\colt1911_empty.ogg
! [LUA][ERROR] ERROR: Couldnt find sounds fight\post_combat_wait\relax_ with prefix characters_voice\human_01\stalker
       
FATAL ERROR
       
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp
[error]Line          : 180
[error]Description   : <no expression>
[error]Arguments     : LUA error: d:\games\cs\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil)

[/cut]


Сообщение отредактировал InvuL - Вт, 03.12.2013, 19:12
 
makdmДата: Вт, 03.12.2013, 19:34 | Сообщение # 730
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

InvuL, вот это sr_idle - это не нормальное переключение, хотя, как хотите.

Цитата InvuL ()
[LUA][ERROR] ERROR: Couldnt find sounds fight\post_combat_wait\relax_ with prefix characters_voice\human_01\stalker

А вот это говорит, что не хватает какого-то звука.


Терпение......
И все получится!


Сообщение отредактировал makdm - Вт, 03.12.2013, 19:35
 
InvuLДата: Вт, 03.12.2013, 19:41 | Сообщение # 731
Отмычка
Пользователи
Сообщений: 25
Награды: 2
Репутация: [ 4 ]

А всё, разобрался:
[cut=character_desc_unver.ltx]
Код

    <specific_character id="esc_stalker_dif_1_1_1" team_default = "1">
      <name>GENERATE_NAME_stalker</name>
      <icon>ui_npc_u_neutral_2</icon>
      <map_icon x="1" y="0"></map_icon>
      <bio>Бандит новичёк, стреляет как лох</bio>
      <class>esc_stalker_dif_1_1_1</class>
      <community>stalker</community>   
      <terrain_sect>stalker_terrain</terrain_sect>
      <rank>100</rank>
      <reputation>0</reputation>
      <visual>actors\stalker_neutral\stalker_neutral_4</visual>
      <snd_config>characters_voice\human_01\stalker\</snd_config>
      <supplies>
      [spawn] \n
    wpn_pkm \n
    ammo_pkm_100 = 1 \n
    wpn_beretta \n
            ammo_9x19_fmj = 1 \n
            grenade_rgd5 = 1 \n
    #include "gameplay\character_food.xml"
    #include "gameplay\character_drugs.xml"
      </supplies>
    #include "gameplay\character_criticals_1.xml"
    #include "gameplay\character_dialogs.xml"
    </specific_character>

[/cut]
Просто в настройке звука, забыл поставить слэш после слова ...\stalker. (до этого его там не было)


Сообщение отредактировал InvuL - Вт, 03.12.2013, 19:42
 
АзазельДата: Чт, 05.12.2013, 11:33 | Сообщение # 732
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

Всем привет smile Такой вопрос. Как возможно воспроизводить анимации у объекта ? И через логику ли вообще.
У объекта планируется как минимум 4 анимации. И все должны проигрываться при условии. (инфопоршень, куда же без них).
 
denis2000Дата: Чт, 05.12.2013, 12:55 | Сообщение # 733
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Азазель, Если это динамический объект на локации (дверь, лифт, вентилятор) то он может воспроизврдить только одну анимацию в прямом и обратном направлении, а если НПС или мутант, то несколько.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Вс, 08.12.2013, 00:23 | Сообщение # 734
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер.
Известно, что после вступления в Долг (Свободу) Бродяга остается желтым (иногда вообще краснеет).

Посмотрел его файлы.
[cut=jup_b4_monolit_logic_2]
[sr_idle@duty]
on_npc_in_zone = jup_b4_monolith_squad_leader_duty_skin |jup_surge_hide_a6 | sr_idle@nill %+jup_b4_monolith_squad_on_base =set_squad_goodwill(jup_b4_squad_duty_leader:1000)%

[sr_idle@freedom]
on_npc_in_zone = jup_b4_monolith_squad_leader_freedom_skin |jup_surge_hide_a6 | sr_idle@nill %+jup_b4_monolith_squad_on_base =set_squad_goodwill(jup_b4_squad_freedom_leader:1000)%[/cut]

При замене set_squad_goodwill(jup_b4_squad_freedom_leader:1000) на set_squad_goodwill(jup_b4_squad_freedom_leader:friend) и дальнейшей загрузке сейва он оказывается красным.

Подстановка в конфиг сквада Бродяги-долговца параметра relationship = friend дает аналогичный результат. Бродяга красный.
Вопрос, в чем может быть причина? Заранее спасибо за советы.
 
denis2000Дата: Вс, 08.12.2013, 19:31 | Сообщение # 735
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Повесь указанную функцию на "горячую кнопку" и проверь ее работу, возможно именно функция не срабатывает.

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