|
Модостроение. Спавн и логика
|
|
| denis2000 | Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Спавн и логика Создание объектов на локации и логика поведения этих объектов Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (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 по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| dmitry778 | Дата: Пн, 07.01.2013, 23:18 | Сообщение # 271 |
 Советник «Свободы»
Свобода
Сообщений: 727
| sergej5500, Спасибо, попробую. Но мне кажется, что [zat_a1_actor_start_game_look] Это первая точка старта спавна ГГ, а [zat_a1_actor_start_game_walk] это точка куда переносит ГГ после спавна на пару метров, чтобы игра не вылетела. Это типо создания переходов. Когда ГГ переносится на пару метров от перехода, чтобы обратно не выкинуло. Но я попробую.
Добавлено (07.01.2013, 23:18) --------------------------------------------- Цитата (dmitry778) Да, первый параметр upd:o_torso, тоже нужно менять. denis2000 Так я ставил измененные параметры direction и upd:o_torso и ГГ стал смотреть на восток, а не на запад. Не могу понять почему. И какие бы я не ставил значения в этих параметрах ГГ всеравно смотрит на восток.
Диапазон значений угла в радианах от -ПИ до +ПИ. 0 - это приблизительно смотрит на юг. Первое значение upd:o_torso и второе direction. denis2000
СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили dmitry778 за это полезное сообщение: |
|
|
| 9vova8 | Дата: Пн, 07.01.2013, 23:24 | Сообщение # 272 |
|
Новичок
Пользователи
Сообщений: 91
| Цитата (9vova8) Прочитайте ответ выше. denis2000
Это о постe Aaза?
Это о моем ответе тебе. Или сквад (им в основном управляет движек) или инливидуальная логика (тут возможностей управлять из скриптов гораздо больше). denis2000
Сообщение отредактировал 9vova8 - Пн, 07.01.2013, 23:55 |
| |
|
| Эти 0 пользователя(ей) поблагодарили 9vova8 за это полезное сообщение: |
|
|
| dmitry778 | Дата: Вт, 08.01.2013, 10:34 | Сообщение # 273 |
 Советник «Свободы»
Свобода
Сообщений: 727
| Цитата (dmitry778) Диапазон значений угла в радианах от -ПИ до +ПИ. 0 - это приблизительно смотрит на юг. Первое значение upd:o_torso и второе direction. denis2000 Т.е. Я так понимаю, что если за 0 берем ЮГ то -ПИ - это ближе к востоку, +ПИ - это ближе к западу.Добавлено (08.01.2013, 10:34) --------------------------------------------- Ad = Ar * 180 / пи Где Ad — угол в градусах, Ar — угол в радианах. То получается подставляя параметры взгляда получаемые при снятии координат согласно данной формуле можно понять направление в градусах? Но в каком параметре: direction или upd:o_torso или там и там должен быть одинаковый параметр. И там в параметре три значения все вычислять? Или можно поставить везде 0 и ГГ будет смотреть на ЮГ?
СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили dmitry778 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вт, 08.01.2013, 10:35 | Сообщение # 274 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| dmitry778 ПИ - это 180 градусов. 90 градусов - это ПИ/2 или 1.57.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| dmitry778 | Дата: Вт, 08.01.2013, 10:43 | Сообщение # 275 |
 Советник «Свободы»
Свобода
Сообщений: 727
| sergej5500, Да я знаю. Мне просто понять. Правильный у меня ход мысли при вычислении координат?
СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили dmitry778 за это полезное сообщение: |
|
|
| 9vova8 | Дата: Вт, 08.01.2013, 11:11 | Сообщение # 276 |
|
Новичок
Пользователи
Сообщений: 91
| denis2000, так индивидуальная логика у меня прописана только на бой, а почему не воюют?
А подробности? denis2000
|
| |
|
| Эти 0 пользователя(ей) поблагодарили 9vova8 за это полезное сообщение: |
|
|
| dmitry778 | Дата: Вт, 08.01.2013, 21:43 | Сообщение # 277 |
 Советник «Свободы»
Свобода
Сообщений: 727
| Всем привет. Я разобрался с направлением спавна. Получается, что если поставить параметры direction и upd:o_torso по нулям то ГГ смотрит строго на север, а если поставить в параметре upd:o_torso = 1,57, 0, 0 то ГГ повернется на 90-то градусов налево, = -1,57, 0, 0 то направо, параметр direction ни за что не отвечает. Это при старте ГГ может у НПСя за что-то отвечает.
СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили dmitry778 за это полезное сообщение: |
|
|
| denis2000 | Дата: Чт, 10.01.2013, 00:04 | Сообщение # 278 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| 9vova8? Если применяете эту логику:[cut][logic] on_hit = hit on_combat = combat [combat] combat_type = zombied[/cut] то что вы имеете ввиду строкой: on_hit = hit
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| 9vova8 | Дата: Чт, 10.01.2013, 18:47 | Сообщение # 279 |
|
Новичок
Пользователи
Сообщений: 91
| denis2000, что при звуке выстрела они начинают стрелять.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили 9vova8 за это полезное сообщение: |
|
|
| denis2000 | Дата: Пт, 11.01.2013, 10:55 | Сообщение # 280 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| 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? Чему приравнивается "событие"?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Пт, 11.01.2013, 20:42 | Сообщение # 281 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| 9vova8 Предполагаю, что вылет из-за отсутствия параметра spawn_point. Попробуй его дописать и добавить в all.spawn.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Пт, 11.01.2013, 22:12 | Сообщение # 282 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| 9vova8 Вероятнее всего, ошибки в указании целевых смартов для сквадов. Смарт в оригинале называется zat_b20_smart_terrain.
Сообщение отредактировал sergej5500 - Пт, 11.01.2013, 22:48 |
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| denis2000 | Дата: Пт, 11.01.2013, 22:50 | Сообщение # 283 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (9vova8) повреждение Понятно, значит выход один: Убрать строку on_hit = hit
Цитата (sergej5500) Вероятнее всего, ошибкм в указании целевых смартов для сквадов. Согласен, неверное указание целевых смартов (несуществующий смарт).
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Legio | Дата: Пн, 14.01.2013, 10:11 | Сообщение # 284 |
 Трудоголик
Ночные сталкеры
Сообщений: 613
| Доброго времени суток. Такая проблема. Необходимо, чтобы отряды Альфа спаунились независимо от ранга гг. Или, по другому выражаясь, спаунились с нулевым рангом гг. Можно ли такое осуществить, ковыряясь в файлах мода? Если нельзя, то в каком файле задать ранг, который будет при старте новой игры? К примеру, 1000. Сталкер ЗП, пиратка, 1.6.2. Мод SGM 1.7.
Имя мне - Легион, ибо нас много. Первая вылазка в составе Ночных сталкеров - 17.04.13 Вторая вылазка в составе Ночных сталкеров - 05.06.18
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Legio за это полезное сообщение: |
|
|
| sergej5500 | Дата: Пн, 14.01.2013, 10:31 | Сообщение # 285 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| 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.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|