|
Модостроение. Спавн и логика
|
|
| 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 за это полезное сообщение: |
|
|
| Бабай | Дата: Ср, 09.05.2012, 09:11 | Сообщение # 136 |
 Ветеран
Пользователи
Сообщений: 484
| Quote (iApler) Хотелось бы увеличить количество НПС на карте Почитай здесь конфиги конфигурации смартов.
Правильно заданный вопрос - половина правильного ответа!
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Бабай за это полезное сообщение: |
|
|
| iApler | Дата: Ср, 09.05.2012, 15:36 | Сообщение # 137 |
|
Гражданский
Пользователи
Сообщений: 23
| Quote (Бабай) Почитай здесь конфиги конфигурации смартов. Пишет что текста на странице нет, при переходе куда то пишет что страницы не существует плюс они с иероглифами грузится(
Попробуй еще раз. denis2000Добавлено (09.05.2012, 15:36) --------------------------------------------- spawn_num = {+pri_a18_use_idol_done}2, 0 - не могу понять эту строку за что отвечает 2 и 0. И если не сложно обясните что такое СКВАРД
|
| |
|
| Эти 0 пользователя(ей) поблагодарили iApler за это полезное сообщение: |
|
|
| denis2000 | Дата: Ср, 09.05.2012, 17:47 | Сообщение # 138 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Quote (iApler) spawn_num = {+pri_a18_use_idol_done}2, 0 - не могу понять эту строку за что отвечает 2 и 0. И если не сложно обясните что такое СКВАРД СКВАД (анг. squad) - (военное) отделение, расчет; команда; группа. В игре STALKER так называется группа НПС составляющее единое целое. spawn_num = {+pri_a18_use_idol_done}2, 0. Количество отрядов (сквадов) для спавна при наличии инфопорции pri_a18_use_idol_done - два отряда, по умолчанию ноль.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Lazur | Дата: Ср, 23.05.2012, 17:21 | Сообщение # 139 |
 Новичок
Пользователи
Сообщений: 82
| Делал торговца, двигатель ругается: [cut=Лог]FATAL ERROR
[error]Expression : no_assert [error]Function : CXML_IdToIndex<class CCharacterInfo>::GetById [error]File : d:\prog_repository\sources\trunk\xrserverentities\xml_str_id_loader.h [error]Line : 112 [error]Description : item not found, id [error]Arguments : sidorovich
stack trace:[/cut]
Нет дескрипшена персонажа sidorovich. denis2000
На пыльных тропинках аномальных полей Заспавнятся наши следы...
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Lazur за это полезное сообщение: |
|
|
| slava1990 | Дата: Ср, 23.05.2012, 17:21 | Сообщение # 140 |
|
Удаленные
| день добрый. можно ли в sgm 1.7 сделать так что бы вообще не было монстров на локации? а вместо них больше сталкеров и представителей разных группировок.
Нечто подобное обсуждалось, готовы задавать конкретные вопросы - прошу. denis2000
|
| |
|
| Эти 0 пользователя(ей) поблагодарили slava1990 за это полезное сообщение: |
|
|
| stalker_DOLGa | Дата: Сб, 26.05.2012, 22:22 | Сообщение # 141 |
 Гражданский
Пользователи
Сообщений: 15
| Доброго времени суток у меня три вопроса: Первый при создании НПС у меня они все смотрят в одну сторону где и как нужно указать что бы смотрели в определеную точку. Второй: в файле Аll.spawn в стартовый набор ГГ добавляю wpn_ak74 = 1 /n , и ammo_5.45x39_ap = 3 /n но при старте игры вылет может я что-то не то сделал? Третий: где в all.spawn SoC поменять старт. Позицию ГГ? И еще два вопроса: когда новому НПС прописоваю анимацию Допустим sleep я к нему подхожу он просыпается отхожу на 100 м. Он все равно на меня смотрит и дальше спать отказывается. И как убрать сюжетную линию в ТЧ прошу прощения за столько вопросов. Если несложо обьясните спасибо.
2. Перепутали слеш \\ Если пишите про вылет - пишите его обязательно, если безлоговый - то так и пишите 4. Пишите логику с ремарками, переходите по условию дистанции до ГГ 5. Как вырезать сюжет. XOBAH
здесь был чёрный сталкер
|
| |
|
| Эти 0 пользователя(ей) поблагодарили stalker_DOLGa за это полезное сообщение: |
|
|
| denis2000 | Дата: Вс, 27.05.2012, 00:28 | Сообщение # 142 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| stalker_DOLGa, У меня для тебя пять ответов: 1. Обычно куда смотрит НПС указывается в его логике. 2. А лог а подробнее правки. 3. В секции actor вестимо. 4. Подробнее правки. 5. В интернете море информации по отключению основного сюжета в SoC, даже где то в этом разделе обсуждалось.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| stalker_DOLGa | Дата: Вс, 27.05.2012, 06:16 | Сообщение # 143 |
 Гражданский
Пользователи
Сообщений: 15
| Это безлоговый вылет
Добавлено (27.05.2012, 06:16) --------------------------------------------- И все таки как отключить сюжет в ТЧ а то в инете не нашел. Заранее спасибо.
Как вырезать сюжет. XOBAH
здесь был чёрный сталкер
|
| |
|
| Эти 0 пользователя(ей) поблагодарили stalker_DOLGa за это полезное сообщение: |
|
|
| ALEXXXis | Дата: Вт, 29.05.2012, 01:10 | Сообщение # 144 |
 Проповедник
Монолит
Сообщений: 1869
| хочу в оригинальную Зов Припяти добавить Гр.Зомби, Изломов и Котов! что бы они были заспавнены по всем локациям! в модерстве не разбираюсь, если кто скинет нужные файлы буду благодарен!
Если хочешь обрести врагов, попробуй что-то изменить.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили ALEXXXis за это полезное сообщение: |
|
|
| AnarxisT | Дата: Вт, 29.05.2012, 10:54 | Сообщение # 145 |
 Тень «Свободы»
Свобода
Сообщений: 7317
| ALEXXXis, http://sigerous.ru/forum/17-208-66094-16-1293311149 Урок №14
|
| |
|
| Эти 0 пользователя(ей) поблагодарили AnarxisT за это полезное сообщение: |
|
|
| Lazur | Дата: Ср, 30.05.2012, 18:36 | Сообщение # 146 |
 Новичок
Пользователи
Сообщений: 82
| Вот, не могу разобраться с логикой: [logic@krovos_stan] --Имя секции suitable = {=check_npc_name(stan_bloodsucker)} true --Это что? active = mob_home@krovos_stan --Ссылка на подсекцию monster_job = true --Возможна ли работа для монстра prior = 150 --Приоритет
[mob_home@krovos_stan] --Тож имя подсекции path_home = krovos_stan_walk --Путь по которому непись ходит aggressive = true --Будет ли атаковать home_min_radius = 15 --Минимальный радиус, от коего не отходит после спавна home_max_radius = 35 --Максимальный радиус, от коего не отходит после спавна
Правильно думаю? А теперь вопрос следующий: "Для каждого непися нужно делать подобную логику? Или для сквада?"
Это - эксклюзивная логика, поэтому для всего сквада ее использовать нельзя (в принципе можно, если весь сквад будет состоять из stan_bloodsucker, но получится не шибко красиво) suitable = {=check_npc_name(stan_bloodsucker)} true - Это проверка на то, чтобы эту логику принял только stan_bloodsucker XOBAH Спасибо, а для сквада логика как будет выглядеть?
Никак! Для сквада логики нет, логика может быть написана только для отдельных объектов. Просто файл может быть один, а в нем все равно для каждого объекта своя. denis2000
То есть, для параметра suitable нужно прописать премерно такую штуку: suitable = пёс1, кабан1, пес2, кабан3...?
На пыльных тропинках аномальных полей Заспавнятся наши следы...
Сообщение отредактировал Lazur - Пт, 01.06.2012, 07:19 |
| |
|
| Эти 0 пользователя(ей) поблагодарили Lazur за это полезное сообщение: |
|
|
| denis2000 | Дата: Пт, 01.06.2012, 14:47 | Сообщение # 147 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Lazur, suitable может принимать только два значения true (подходит) или false (не подходит). Пример реализации однотипной логики для сквада снорков: [cut] Code [smart_terrain] squad_id = 47 max_population = 1
[exclusive] snork_01 = zaton\zat_b12_bridge_snorks.ltx snork_02 = zaton\zat_b12_bridge_snorks.ltx snork_03 = zaton\zat_b12_bridge_snorks.ltx snork_04 = zaton\zat_b12_bridge_snorks.ltx
Code [logic@snork_01] active = mob_home@snork prior = 80 suitable = {=is_monster_snork} true monster_job = true
[mob_home@snork] path_home = snorks_home aggressive = true home_min_radius = 5 home_max_radius = 25
[logic@snork_02] active = mob_home@snork prior = 80 suitable = {=is_monster_snork} true monster_job = true
[logic@snork_03] active = mob_home@snork prior = 80 suitable = {=is_monster_snork} true monster_job = true
[logic@snork_04] active = mob_home@snork prior = 80 suitable = {=is_monster_snork} true monster_job = true [/cut]
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Сб, 02.06.2012, 13:46 | Сообщение # 148 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Всем добрый день! Через sgm_spawner.scripts заспавнил квестового НПС. На мини-карте он отображается точкой. Можно ли сделать так, что бы он отозначался звездой, как командиры сквадов. P.S. Добился результата, заспанив этого НПС в эксклюзивном скваде без указания target_smart. НПС принял свою логику. Вопрос, можно ли пометить звездой НПС, не входящего в сквад.
В логику дописать commander = true. XOBAH
Сообщение отредактировал sergej5500 - Сб, 02.06.2012, 16:09 |
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| Lazur | Дата: Сб, 02.06.2012, 18:57 | Сообщение # 149 |
 Новичок
Пользователи
Сообщений: 82
| denis2000, И всё равно не могу понять: Вот, делаю смарт, делаю на него логику (спавнить собак), делаю логику на собак, но как игра узнает, к какому псу какая логика?
Игра увидит свободную работу на смарте и начнет ее "заполнять". Если логика эксклюзивна (как в вышеприведенных примерах) она будет пускать всех NPC на эту работу, поэтому в логике производится "отсев" лишних NPC с помощью suitable. XOBAH
На пыльных тропинках аномальных полей Заспавнятся наши следы...
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Lazur за это полезное сообщение: |
|
|
| sergej5500 | Дата: Сб, 02.06.2012, 23:59 | Сообщение # 150 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Всем Добрый Вечер. Последовал совету Хована: В логику дописать commander = true. Результат нулевой. Приведу логику персонажа. [cut=логика][logic] active = move@stalker_commander
[move@stalker_commander] move_dest_number = 129360 move_look_vertex = 146447 move_state_when_center = ward_noweap move_state_when_move = walk move_combat_disable = true move_home_teleport = true meet = meet invulnerable = true combat_ignore_cond = true combat_ignore_keep_when_attacked = true on_info = {+kosmonavt_artefact_quests_init =dist_to_actor_ge(45)} nil %=release_npc%
[meet] abuse = false use = true allow_break = false meet_on_talking = false trade_enable = false[/cut] НПС стоит там, куда его поставили. Дает квесты, исчезает, когда нужда в нем отпадет. Логика сделана на примере логики Меча. Звездой он отображаться не хочет. Строку commander = true пробовал вставлять во все абзацы логики. Если его спавнить через сквад, то он после выхода из зоны alife и последующего входа в нее обычно уходит со своего места. Есть ли способ повесить на него "звезду". Заранее благодарен за советы.
Сообщение отредактировал sergej5500 - Вс, 03.06.2012, 00:03 |
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|