Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
9vova8Дата: Чт, 10.01.2013, 18:47 | Сообщение # 286
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

denis2000, что при звуке выстрела они начинают стрелять.

 
denis2000Дата: Пт, 11.01.2013, 10:55 | Сообщение # 287
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

9vova8, Интересная мысль, тоесть по вашему on_shut_sound = kill`em all и on_hit = hit выглядит и переводиться одинаково?

Для начала: on_hit, on_combat, on_death, on_game_timer ... и еще многие другие обозначают событие, это вы правильно уловили, а вот на перевод с английского времени не хватило. on_hit - событие, наненсение урона НПС.

Значит on_combat = combat, on_hit = hit, тогда что такое hit? Чему приравнивается "событие"?


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
9vova8Дата: Пт, 11.01.2013, 20:23 | Сообщение # 288
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

denis2000, повреждение

Добавлено (11.01.2013, 20:23)
---------------------------------------------
[cut=ошибка]FATAL ERROR

[error]Expression : !m_error_code
[error]Function : raii_guard::~raii_guard
[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line : 748
[error]Description : ...в Припяти\gamedata\scripts\sim_squad_scripted.script:124: attempt to index local 'point' (a nil value)


stack trace:
[/cut]

[cut=squad_descr_jupiter][jup_beta_squad_1]:online_offline_group
faction = beta
npc = jup_beta_1_1, jup_beta_2_1, jup_beta_leader_1,jup_beta_3_1
target_smart = jup_b208:jup_b202:loop
story_id = jup_beta_squad_1

[jup_beta_squad_2]:online_offline_group
faction = beta
npc = jup_beta_1_2, jup_beta_2_2, jup_beta_leader_2,jup_beta_3_2
target_smart = jup_a10_smart_terrain:jup_a12:loop
story_id = jup_beta_squad_2

[jup_beta_squad_3]:online_offline_group
faction = beta
npc = jup_beta_1_3, jup_beta_2_3, jup_beta_leader_3,jup_beta_3_3
target_smart = jup_b205_smart_terrain:jup_b46:loop
story_id = jup_beta_squad_3[/cut]




Сообщение отредактировал 9vova8 - Пт, 11.01.2013, 18:31
 
sergej5500Дата: Пт, 11.01.2013, 20:42 | Сообщение # 289
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

9vova8
Предполагаю, что вылет из-за отсутствия параметра spawn_point. Попробуй его дописать и добавить в all.spawn.
 
9vova8Дата: Пт, 11.01.2013, 21:43 | Сообщение # 290
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

sergej5500, все, решил

Добавлено (11.01.2013, 21:30)
---------------------------------------------
А нет, не решил((

Добавлено (11.01.2013, 21:43)
---------------------------------------------
[cut=squad_descr_zaton][zat_beta_squad]:online_offline_group
faction = beta
npc = zat_beta_1, zat_beta_2, zat_beta_leader, zat_beta_3, zat_beta_4
target_smart = zat_b100
story_id = zat_beta_squad

[zat_beta_art_squad]:online_offline_group
faction = beta
npc = zat_beta_art_1, zat_beta_art_2, zat_beta_art_3
target_smart = {+zat_beta_quest_sultan_art} zat_b20, zat_b106_smart_terrain
story_id = zat_beta_art_squad[/cut]




Сообщение отредактировал 9vova8 - Пт, 11.01.2013, 21:15
 
sergej5500Дата: Пт, 11.01.2013, 22:12 | Сообщение # 291
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

9vova8
Вероятнее всего, ошибки в указании целевых смартов для сквадов. Смарт в оригинале называется zat_b20_smart_terrain.


Сообщение отредактировал sergej5500 - Пт, 11.01.2013, 22:48
 
denis2000Дата: Пт, 11.01.2013, 22:50 | Сообщение # 292
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (9vova8)
повреждение

Понятно, значит выход один: Убрать строку on_hit = hit

Цитата (sergej5500)
Вероятнее всего, ошибкм в указании целевых смартов для сквадов.

Согласен, неверное указание целевых смартов (несуществующий смарт).


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LegioДата: Пн, 14.01.2013, 10:11 | Сообщение # 293
Трудоголик
Ночные сталкеры
Сообщений: 613
Награды: 4
Репутация: [ 182 ]

Доброго времени суток. Такая проблема. Необходимо, чтобы отряды Альфа спаунились независимо от ранга гг. Или, по другому выражаясь, спаунились с нулевым рангом гг. Можно ли такое осуществить, ковыряясь в файлах мода?
Если нельзя, то в каком файле задать ранг, который будет при старте новой игры? К примеру, 1000.

Сталкер ЗП, пиратка, 1.6.2.
Мод SGM 1.7.


Имя мне - Легион, ибо нас много.


Первая вылазка в составе Ночных сталкеров - 17.04.13
Вторая вылазка в составе Ночных сталкеров - 05.06.18
 
sergej5500Дата: Пн, 14.01.2013, 10:31 | Сообщение # 294
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Legio
Спавн "Альфы" прописывается по определенным точкам - смартам. Есть 7 смартов на Затоне, 4 на Юпитер и 2 на Припяти.
Конфиги смартов лежат в gamedata\configs\scripts\zaton\smart ...jupiter\smart и ...pripyat\smart. Откроем первый файл zat_sim_9.
[cut=Содержимое файла][smart_terrain];zat_sim_9
squad_id = 2
max_population = 2
respawn_params = respawn@zat_alfa_sim_9

[respawn@zat_alfa_sim_9]
zat_alfa_force_novice
zat_alfa_force_regular
zat_alfa_force_experienced
zat_alfa_force_veteran
zat_alfa_force_master

[zat_alfa_force_novice]
spawn_squads = zat_alfa_squad_1_novice
spawn_num = {+opt_activate_alfa_force =check_actor_rank(0:100)} 1, 0

[zat_alfa_force_regular]
spawn_squads = zat_alfa_squad_1_regular
spawn_num = {+opt_activate_alfa_force =check_actor_rank(100:200)} 1, 0

[zat_alfa_force_experienced]
spawn_squads = zat_alfa_squad_1_experienced
spawn_num = {+opt_activate_alfa_force =check_actor_rank(200:350)} 1, 0

[zat_alfa_force_veteran]
spawn_squads = zat_alfa_squad_1_veteran
spawn_num = {+opt_activate_alfa_force =check_actor_rank(350:600)} 1, 0

[zat_alfa_force_master]
spawn_squads = zat_alfa_squad_1_master
spawn_num = {+opt_activate_alfa_force =check_actor_rank(600)} 1, 0[/cut]

Здесь прописаны условия спавна отрядов Альфы. К примеру, новички:
[zat_alfa_force_novice]
spawn_squads = zat_alfa_squad_1_novice
spawn_num = {+opt_activate_alfa_force =check_actor_rank(0:100)} 1, 0.
Спавнятся при опции "Разрешить отряд Альфа" и ранге от 0 до 100. Поменяв ранг в условиях спавна, можно добиться спавна всех разновидностей Альфы сразу после начала новой игры. Параметр max_population показывает, сколько отрядов может спавнится на данном смарте. Чтобы заспавнились все 5 разновидностей, нужно сделать
max_population = 5. Аналогичным образом нужно править все остальные смарты. Если хотите, чтобы Альфа спавнилась независимо от ранга ГГ, нужно писать следующее:
spawn_num = {+opt_activate_alfa_force} 1, 0.
 
LegioДата: Пн, 14.01.2013, 11:05 | Сообщение # 295
Трудоголик
Ночные сталкеры
Сообщений: 613
Награды: 4
Репутация: [ 182 ]

sergej5500, а когда должен произойти реаспаун?
В смартах я убрал условие ранга и {+opt_activate_alfa_force}. Значит отряды должны появляться независимо от ранга и независимо включена или отключена опция использования Альфа в настройках мода.


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


Имя мне - Легион, ибо нас много.


Первая вылазка в составе Ночных сталкеров - 17.04.13
Вторая вылазка в составе Ночных сталкеров - 05.06.18
 
sergej5500Дата: Пн, 14.01.2013, 11:43 | Сообщение # 296
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Legio
Если Вы убрали опцию активации Альфы, то надо прописывать так:
[zat_alfa_force_novice]
spawn_squads = zat_alfa_squad_1_novice
spawn_num = 1.
Кроме того, Альфа ходит по круговому пути. Они могли уйти со смарта. Измените все Затоновские смарты и проверьте все точки. Тогда можно будет делать выводы. Кроме того, нужно в файле configs\misc\simulation_objects_props.ltx найти строки, относящиеся к Альфе:
[zat_alfa_squad_1_novice]:default_squad
sim_avail = false
и т.д. и разрешить самостоятельную генерацию сквадов, заменив
sim_avail = false на sim_avail = true.
 
yakutiДата: Пт, 18.01.2013, 19:53 | Сообщение # 297
Отмычка
Пользователи
Сообщений: 46
Награды: 0
Репутация: [ 7 ]

Подскажите логику раннего нпс в ЗП

Смотри секции [wounded]. denis2000

Добавлено (17.01.2013, 16:59)
---------------------------------------------
Создал ллагерь нпс в СГМ 1.7. Как повесить метку главнокомандующего на одного из нпс?

В секции [logic] параметр level_spot. denis2000

Добавлено (18.01.2013, 19:53)
---------------------------------------------
Это я понял. А что именно писать там
level_spot = ?

 
sergej5500Дата: Пт, 18.01.2013, 20:16 | Сообщение # 298
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

yakuti
За метки главнокомандующих отвечают строки типа:
{"zat_bandit_base_leader","st_base_boss_name",sgm_flags.spot_base_commander,"its_boss","none"}, в файле sgm_modules в gamedata\scripts. Можно добавить в этот файл вашего НПС по образцу существующих или попробовать написать в логику level_spot = spot_base_commander. Первый способ я проверял в игре, всё получилось. Второй способ (с правкой логики) я не пробовал.
 
dimdocДата: Вс, 20.01.2013, 12:38 | Сообщение # 299
Гражданский
Пользователи
Сообщений: 6
Награды: 0
Репутация: [ 0 ]

Камрады! А в каком файле прописаны stalker_immunities_strong?

spawn_sections_underpass.ltx
denis2000
 
9vova8Дата: Вс, 20.01.2013, 21:56 | Сообщение # 300
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

Доброго времени суток, вот такая вот гадость получилась
[cut=ошибка]
FATAL ERROR

[error]Expression : !m_error_code
[error]Function : raii_guard::~raii_guard
[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line : 748
[error]Description : ...e.r. - Зов Припяти\gamedata\scripts\sim_board.script:226: attempt to index local 'spawn_smart' (a nil value)

stack trace:
[/cut]

Сделал смарт
[cut][6476]
; cse_abstract properties
section_name = space_restrictor
name = zat_a23_smart_3
position = -407.0328,32.1635,-323.7318
direction = 0,0.841602981090546,0

; cse_alife_object properties
game_vertex_id = 2
distance = 0
level_vertex_id = 167815
object_flags = 0xffffff3e
custom_data = <<END
[story_object]
story_id = zat_a23_spawn_3

[smart_terrain]
cfg = scripts\zaton\zat_a23_spawn_3.ltx
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 2.0

; cse_alife_space_restrictor properties
restrictor_type = 3
; se_smart_terrain properties[/cut]

А вот, как раз, таки, смарт вы и не сделали! denis2000

Приписал его отряду
[cut][zat_a23_spawn_3_squad]:online_offline_group
faction = beta
npc = zat_beta_zombied_4, zat_beta_zombied_5
target_smart = zat_a23_spawn_3
story_id = zat_a23_spawn_3_squad[/cut]

И в simulation.ltx
[cut]zat_a23_spawn_3_squad = zat_a23_spawn_3[/cut]

Спасибо.

И ещё, как изменить живучесть зомби?
Спасибо.

На выбор изменить уровень здоровья или имунитеты к повреждениям. denis2000

А с рестриктором все правильно?




Сообщение отредактировал 9vova8 - Вс, 20.01.2013, 22:51
 
Поиск: