Модостроение. Спавн и логика
|
|
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 за это полезное сообщение: |
|
|
Стелп | Дата: Вс, 16.10.2011, 15:02 | Сообщение # 16 |
Браток
Бандиты
Сообщений: 3101
| Скорее не вопрос,а просьба:Добавьте в шапку ссылки на:ACDC для разных сталкеров,было бы более удобно. Спасибо за внимание.
Все это и многое другое есть в шапке темы "Программы для модинга STALKER'а". denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили Стелп за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 16.10.2011, 15:55 | Сообщение # 17 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| McPain, Респавн артефактов в ЧН не после выброса, а по интервалу времени artefact_spawn_idle - параметр в конфиге аномальной зоны. К тому же есть вероятность спавна арта в аномалии artefact_spawn_rnd и максимальное число артов в аномалии max_artefact_count, то же параметры в конфиге аномалии. Если такие настройки тебя не устраивают то возможно организовать спавн артов в определенном интервале игрового времени, то в файле se_zones.script вместо Code game.get_game_time():diffSec(self.last_spawn_time) >= self.artefact_spawn_idle вставь Code xr_conditions.is_arsenal_guard_rest_time (nil, nil) Функция xr_conditions.is_arsenal_guard_rest_time (nil, nil) возвращает истину в интервале игрового времени от 3 до 5 часов. Если не устраивает этот интервал сделай свою функцию по анологии.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Pechenegin | Дата: Пн, 17.10.2011, 13:02 | Сообщение # 18 |
Отмычка
Пользователи
Сообщений: 25
| Здравствуйте denis2000. Вот уже около месяца бьюсь над совмещением для ЧН, мод SGM 3.10 с Intellectual Marauder Mod ЧН 1.5.07. Уж больно привлекательные моды, и не хотелось бы отказаться, ни от одного, ни от другого. Но понемногу пришел к выводу, что совмещение модов вообще наиболее трудная задача в модострое и без знания "Lua" совместить эти моды практически невозможно.Хотелось бы научиться хотя бы одному действию по "раздеванию" убитых неписей из "мародера". Уж слишком эффектно это выглядет в игре! Возможно ли создать такое действие по "раздеванию" трупов в тельняшки, после снятия брони, путем добавления или изменения в необходимые файлы из "Мародера" для "SGM"? И если это возможно, то какие файлы участвуют в этом процессе? Может быть это надо делать в "all spawn"? Пробывал мониторить Filemonom, но в логах указаны только пути обращения к файлам. С уважением любитель игры "Сталкер".
Pechenegin
|
|
|
Эти 0 пользователя(ей) поблагодарили Pechenegin за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 17.10.2011, 14:23 | Сообщение # 19 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Pechenegin, Без глубоких знаний в модостроении, в языке Lua и в функциях и методах движка в частности нормально совместить моды не получиться. Можно попробовать программу Умный Установщик Модов (текущая версия 1.7 поддерживает ЧН).
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Pechenegin | Дата: Пн, 17.10.2011, 15:25 | Сообщение # 20 |
Отмычка
Пользователи
Сообщений: 25
| Cпасибо denis2000. К сожалению я стал это понимать. Но буду дальше стараться образовывться. УУМ уже пробывал пользоваться. Ничего кроме показа пригодности файлов к одному моду от другого эта программа не делает. Но и на том спасибо! Благодарю за Ваши всегда грамотные и исчерпывющие ответы!
Pechenegin
|
|
|
Эти 0 пользователя(ей) поблагодарили Pechenegin за это полезное сообщение: |
|
|
InvuL | Дата: Вт, 18.10.2011, 12:43 | Сообщение # 21 |
Отмычка
Пользователи
Сообщений: 25
| Люди подскажите как сделать в логике телохранителя так что бы при получении критического\смертельного урона телохранитель падал на землю, просил аптечку и был неуязвимым когда лежал (ну что бы не убили его ),или убегал(sprint)на место своего спавна? И можно ли для телохранителей сделать отдельные иммунитеты, если да то в каких файлах? А то у меня на Затоне 8 телохранителей неуязвимых бегают и всех просто мочат !
Сообщение отредактировал InvuL - Вт, 18.10.2011, 12:49 |
|
|
Эти 0 пользователя(ей) поблагодарили InvuL за это полезное сообщение: |
|
|
Колхозник | Дата: Вт, 18.10.2011, 17:27 | Сообщение # 22 |
Командир Штурмового Подразделения
Пользователи
Сообщений: 571
| Здрасте. У меня возникла такая проблема: в разобраном all.spawn'е добавил несколько нпс и теперь он не собираеться через тот же acdc что и был разобран. В чем дело?
Допустил ошибку при добавлении, перепроверь пробелы в секциях. XOBAH
Добавлено (18.10.2011, 15:58) --------------------------------------------- перепроверял 4 раза все норм. а теперь еще и all.spawn даже не разбирает даже удалял то что добавил и все равно не помогает
Добавлено (18.10.2011, 16:32) --------------------------------------------- Все впасибо разобрался Active perl заблокировол антивирус
Добавлено (18.10.2011, 17:27) --------------------------------------------- не могу понять в чем ошибка подскажите
[cut noguest][1867] ; cse_abstract properties section_name = smart_terrain name = army_smart position = -362.385376,39.999546,-330.086782 direction = 0,0,0
; cse_alife_object properties game_vertex_id = 29 distance = 26 level_vertex_id = 235780 object_flags = 0xffffff3e custom_data = <<END [story_object] story_id = army_smart
[smart_terrain] cfg = scripts\zaton\smart\army_smart.ltx END
; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2.50760293006897
; cse_alife_space_restrictor properties restrictor_type = 3
; se_smart_terrain properties[/cut]
Сообщение отредактировал Ленин - Вт, 18.10.2011, 17:34 |
|
|
Эти 0 пользователя(ей) поблагодарили Колхозник за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 19.10.2011, 00:25 | Сообщение # 23 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Ленин, Номер секции уникален?
InvuL, Не пробовал такое делать, но возможно прокатит в текущей секции написать:Code on_info = {=health_le(0.5)} <новая секция> То есть если здоровье снизиться менее половины переключиться на новую секцию, а вот в новой секции делай его неуязвимым, раненым, убегающим на точку и т.п.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Колхозник | Дата: Пт, 21.10.2011, 16:00 | Сообщение # 24 |
Командир Штурмового Подразделения
Пользователи
Сообщений: 571
| да номер секции уникален, он идет следующим по списку
Уникальным номер должен быть не в пределах файла, а в пределах всего all.spawn, т.е. всех alife_* файлов. XOBAH
Добавлено (19.10.2011, 16:50) --------------------------------------------- сделал так и все равно ошибка
Добавлено (19.10.2011, 16:57) --------------------------------------------- вроде проблема решена
Добавлено (19.10.2011, 18:02) --------------------------------------------- как создать way point не скажете?
Добавлено (20.10.2011, 19:51) --------------------------------------------- снова эта же проблема при добавлении нпс в all.spawn он не собираеться. ошибок нет т.к. копировал уже созданные в этом файле строки. но токо менял ид нпс на свое. перепробовал 3 acdc cop от sgm, dcm и простой . в чем может быть дело ? номер уникален в пределах всего all.spawn.
А что пишет в ошибке? XOBAH
Добавлено (21.10.2011, 16:00) --------------------------------------------- Died at stkutils/ini_file.pm line 47, <GEN1> line 58677
Что добавляли в alife_zaton (если не правили all.ltx)? Конкретная секция (Копи-Паст). XOBAH
Сообщение отредактировал Ленин - Ср, 19.10.2011, 16:50 |
|
|
Эти 0 пользователя(ей) поблагодарили Колхозник за это полезное сообщение: |
|
|
Kosha | Дата: Пт, 21.10.2011, 17:52 | Сообщение # 25 |
Отмычка
Пользователи
Сообщений: 32
| как сделать так что-бы (в скрипте респавна) целью отряда появившегося на одном смарте сразу же пошли на другой? (напишите пример такого скрипта плиз). И еще а можно ли сделать так что-бы условием респавна через скрипт был например захват базы свободы долгом (ЧН)?
|
|
|
Эти 0 пользователя(ей) поблагодарили Kosha за это полезное сообщение: |
|
|
Колхозник | Дата: Пт, 21.10.2011, 18:15 | Сообщение # 26 |
Командир Штурмового Подразделения
Пользователи
Сообщений: 571
| [cut noguest][6471] ; cse_abstract properties section_name = stalker name = rad_a24_pechkin position = -429.065979,39.999710,-393.802094 direction = 0,0,0
; cse_alife_trader_abstract properties money = 5000 character_profile = rad_a24_pechkin
; cse_alife_object properties game_vertex_id = 306 distance = 4.19999980926514 level_vertex_id = 135246 object_flags = 0xffffffff (в ЧН у сталкеров обычно 0xfffff7bf и 0xffffffbf (а в ЗП - нету)) custom_data = <<END [logic] cfg = scripts\logic_arm.ltx END
; cse_visual properties visual_name = actors\stalker_soldier\stalker_soldier_2
; cse_alife_creature_abstract properties g_team = 8 g_squad = 0 g_group = 0 health = 1 dynamic_out_restrictions = dynamic_in_restrictions =
upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = -429.065979,39.999710,-393.802094 upd:o_model = 0 upd:o_torso = 0,0,0 upd:g_team = 8 upd:g_squad = 0 upd:g_group = 0
; cse_alife_monster_abstract properties base_in_restrictors = yan_bunker_door_zomby_restrictor
upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0
; cse_alife_human_abstract properties predicate5 = 2,2,1,1,2 predicate4 = 1,0,0,1
; cse_ph_skeleton properties
upd:start_dialog =
; se_stalker properties [/cut]
только это
Выделил лишние строки, закрыл глаза на неверное оформление секции, мб ACDC тоже закроет. XOBAH
|
|
|
Эти 0 пользователя(ей) поблагодарили Колхозник за это полезное сообщение: |
|
|
xardaslich | Дата: Ср, 26.10.2011, 09:52 | Сообщение # 27 |
Отмычка
Пользователи
Сообщений: 41
| S.T.A.L.K.E.R. Call of Pripyat 1.6.02(лиц) + Sigerous Mod 1.7+ fix 31.08
У меня вопрос касаемый редактирования наполнения "обычных" тайников(оружие, боеприпасы, броня...и т.п. припрятаные под открытым небом - вне контейнеров и рюкзаков), а именно:
- содержимое наполнения оных тайников осуществляется через редактирование alife_локация.ltx распакованого All.spawn файла? Также само как и в показаном уроке "Создание тайника через All.spawn (от XOBAH)"? - пример для тайника в рюкзаке. [cut noguest][866] - уникальный ID
; cse_abstract properties
section_name = inventory_box - имя секции (не трогать)
name = level_prefix_inventory_box_0000 имя (можно не изменять)
position = -447.109985351563,-6.13000011444092,183.639999389648 (координаты тайника - x, y, z)
direction = -0.062830001115799,-2.99324011802673,-0.169295996427536 (куда направлен)
; cse_alife_object properties
game_vertex_id = 0 - game_vertex
distance = 0
level_vertex_id = 293223 - level_vertex
object_flags = 0xffffff3f
custom_data = <<END
[spawn] вещи в тайнике
wpn_pb
wpn_ak74
ammo_9x18_pmm
medkit_army
drug_antidot
END
; cse_visual properties
visual_name = dynamics\devices\dev_rukzak\dev_rukzak.ogf визуал тайника (рюкзак)
; cse_alife_inventory_box properties
tip = inventory_box_use[/cut]
Либо есть отличия(нюансы) для тайников "под открытым небом"?
Заранее благодарен за пояснения к моему вопросу.
|
|
|
Эти 0 пользователя(ей) поблагодарили xardaslich за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 26.10.2011, 10:05 | Сообщение # 28 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| xardaslich, Для такого тайника создаешь рестриктор в all.spawn: [cut]; cse_abstract properties section_name = space_restrictor name = zat_hiding_place_56 position = -170.444961547852,15.9161548614502,141.224716186523 direction = -0.431140005588531,-0.0219049993902445,-0.0938460007309914
; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 293223 object_flags = 0xffffef3e custom_data = <<END [secret] cfg = misc\secret_zaton.ltx END
; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 1
; cse_alife_space_restrictor properties restrictor_type = 3 [/cut] А в указанном файле misc\secret_zaton.ltx добавляешь секцию zat_hiding_place_56 по образцу, указывая какие предметы и в каком количестве (мин,макс) положить.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
xardaslich | Дата: Ср, 02.11.2011, 11:15 | Сообщение # 29 |
Отмычка
Пользователи
Сообщений: 41
| S.T.A.L.K.E.R. Call of Pripyat 1.6.02(лиц) + Sigerous Mod 1.7+ fix 31.08 Доброго дня всем!
Подскажите пожайлуста как реализовать следующее:
Наверно, всем не секрет, что на локе "ПРИПЯТЬ" единожды заспавнивается только 2 отряда "Альфа-новички" (2 точки "смарта" по одному отряду "Альфа-новички") и на этом всё заканчивается
А хотелось-бы немножко поправить эту "несправедливость" (ведь по идее ПРИПЯТЬ- одно из самых опастных мест ЗОНЫ, а тут такое...!). В общем хочу реализовать, но пока незнаю как:
1). Отряды "Альфа" спавнятся всегда (как и на других локах: "Окрестности Юпитера", "Затон"), в тех же 2-х точках спавна, но ...
2). "Альфа" начинает свой спавн сразу с "ветеранов"- при первом посещении, а далее только "мастера"(суперэлитные "АЛЬФА").
|
|
|
Эти 0 пользователя(ей) поблагодарили xardaslich за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 02.11.2011, 12:52 | Сообщение # 30 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| xardaslich, Скажу вам по секрету условия респавна Альфы в Припяти идентичны другим локациям (за исключением конечно количества точек спавна). Так что просто добавте смартов для спавна и сделайте им логику аналогичную существующим.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
|