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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dmitry778Дата: Вт, 08.01.2013, 21:43 | Сообщение # 286
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

Всем привет. Я разобрался с направлением спавна. Получается, что если поставить параметры direction и upd:o_torso по нулям то ГГ смотрит строго на север, а если поставить в параметре upd:o_torso = 1,57, 0, 0 то ГГ повернется на 90-то градусов налево, = -1,57, 0, 0 то направо, параметр direction ни за что не отвечает. Это при старте ГГ может у НПСя за что-то отвечает.

СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
 
denis2000Дата: Чт, 10.01.2013, 00:04 | Сообщение # 287
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

9vova8? Если применяете эту логику:[cut][logic]
on_hit = hit
on_combat = combat
[combat]
combat_type = zombied[/cut] то что вы имеете ввиду строкой: on_hit = hit


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

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

 
denis2000Дата: Пт, 11.01.2013, 10:55 | Сообщение # 289
Полевой исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 290
Новичок
Пользователи
Сообщений: 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 | Сообщение # 291
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

9vova8
Предполагаю, что вылет из-за отсутствия параметра spawn_point. Попробуй его дописать и добавить в all.spawn.
 
9vova8Дата: Пт, 11.01.2013, 21:43 | Сообщение # 292
Новичок
Пользователи
Сообщений: 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 | Сообщение # 293
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

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


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

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

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

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

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


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

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

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


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


Первая вылазка в составе Ночных сталкеров - 17.04.13
Вторая вылазка в составе Ночных сталкеров - 05.06.18
 
sergej5500Дата: Пн, 14.01.2013, 10:31 | Сообщение # 296
Полевой Исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 297
Трудоголик
Ночные сталкеры
Сообщений: 613
Награды: 4
Репутация: [ 182 ]

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


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


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


Первая вылазка в составе Ночных сталкеров - 17.04.13
Вторая вылазка в составе Ночных сталкеров - 05.06.18
 
sergej5500Дата: Пн, 14.01.2013, 11:43 | Сообщение # 298
Полевой Исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 299
Отмычка
Пользователи
Сообщений: 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 | Сообщение # 300
Полевой Исследователь
Ученые сталкеры
Сообщений: 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. Первый способ я проверял в игре, всё получилось. Второй способ (с правкой логики) я не пробовал.
 
Поиск: