Модостроение. Спавн и логика
|
|
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 за это полезное сообщение: |
|
|
Колхозник | Дата: Ср, 04.01.2012, 19:29 | Сообщение # 61 |
Командир Штурмового Подразделения
Пользователи
Сообщений: 571
| подскажите как прописать инфо порцию : ч то при случае смерти нпс происходит спавн в его рюкзаке?
|
|
|
Эти 0 пользователя(ей) поблагодарили Колхозник за это полезное сообщение: |
|
|
XOBAH | Дата: Ср, 04.01.2012, 19:48 | Сообщение # 62 |
Техник Вольных
Вольные сталкеры
Сообщений: 912
| Ленин, в логику прописать обработчик on_death [cut=Пример][logic] active = bla_bla on_death = death@bla ... [death@bla] on_info = %+info_1 =spawn_item_to_npc("ID_предмета")%[/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили XOBAH за это полезное сообщение: |
|
|
stalex | Дата: Чт, 12.01.2012, 17:30 | Сообщение # 63 |
Гражданский
Пользователи
Сообщений: 15
| Скажите как сделать так что-бы после выполнения квеста нпс ушел? (нпс заспавнен скриптом)
|
|
|
Эти 0 пользователя(ей) поблагодарили stalex за это полезное сообщение: |
|
|
XOBAH | Дата: Чт, 12.01.2012, 17:45 | Сообщение # 64 |
Техник Вольных
Вольные сталкеры
Сообщений: 912
| stalex, в активную логику добавить строчку: on_info = {+infoportion} next_shem_logic Где +infoportion - проверка на наличие инфопоршня (например, на завершение квеста) next_shem_logic - Следующая логика, где прописан путь (вейпоинт) для ухода NPC
|
|
|
Эти 0 пользователя(ей) поблагодарили XOBAH за это полезное сообщение: |
|
|
razor_md | Дата: Вс, 15.01.2012, 09:28 | Сообщение # 65 |
Разработчик «Путь в Припять»
Свобода
Сообщений: 21
| Всем привет...Подключил новую локацию к зов припяти из чистого неба (янтарь). Проблема в следующем, при спавне нпс (скриптом и олом) нпс спавнится в нужном месте, но при загрузке автосохранения спавн происходит на 1 метр от точки спавна. В чем может быть проблема? Вейпоинт делал на точку спавна, не помогает .
Поможет задать НПС логику в которой он занимает определенную точку. denis2000
Спасибо....как я понял вы про Waypoint??? Еще одна проблемка. Как правильно сделать точку в которую нпс смотрит...Допустим заспавнил сталкера и прописал ему анимацию. После загрузки автосейфа сталкер может отвернуться или смотреть совсем в другое место... точку look сделал, смотрит в неё пока не загружу сохранение, это не всегда происходит но частенько. И как сделать так чтобы сталкер проигрывал анимацию вечно? Пример тому азот(сидячая анимация)....
Если все правильно прописано то НПС и после загрузки займет указанное положение. А рабочая секция Азота animpoint, в ней можно задавать анимацию, точнее это может быть целая группа анимаций, в которой он будет сидеть. В любом случае посмотрите КМБ уроки начинаая с 5. denis2000
Сообщение отредактировал razor_md - Пн, 16.01.2012, 21:08 |
|
|
Эти 0 пользователя(ей) поблагодарили razor_md за это полезное сообщение: |
|
|
vovchick-78 | Дата: Вт, 24.01.2012, 21:36 | Сообщение # 66 |
Инженер НОИГ «Омега»
Ученые сталкеры
Сообщений: 417
| Подскажите пожалуйста как сделать,чтобы NPS начинал говорить когда к нему приближаешься.Не диалог,а звук как у квестовых персонажей:Сыч,Султан и т.д.Где и что нужно прописывать?
|
|
|
Эти 0 пользователя(ей) поблагодарили vovchick-78 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 24.01.2012, 22:36 | Сообщение # 67 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| vovchick-78, В секции meet НПС нужны параметры: close_snd_hello - звук приветствия close_snd_bye - звук прощания close_anim - анимация при приближении на расстояние менее close_distance close_victim - на какой объект смотрит close_distance - контрольное расстояние
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
nikitosparavoz | Дата: Сб, 28.01.2012, 20:25 | Сообщение # 68 |
Снайпер Штурмового Подразделения
Пользователи
Сообщений: 193
| Помогите как заспавнить Валета на локации Гардиния? Stalker Cop,SGM v2.1,патч 1.6_02,фикс 22.01.2012.
С какой целью? Чтобы на Юпитере было два Валета? denis2000
Сообщение отредактировал nikitosparavoz - Вс, 29.01.2012, 12:08 |
|
|
Эти 0 пользователя(ей) поблагодарили nikitosparavoz за это полезное сообщение: |
|
|
dmitry778 | Дата: Вс, 29.01.2012, 21:11 | Сообщение # 69 |
Советник «Свободы»
Свобода
Сообщений: 727
| Всем привет. Выполнил урок №1 и вот: [cut noguest=лог]Expression : no_assert Function : CXML_IdToIndex<class CCharacterInfo>::GetById File : d:\prog_repository\sources\trunk\xrserverentities\xml_str_id_loader.h Line : 112 Description : item not found, id Arguments : zat_sh_nikitka_skadovsk[/cut] В тут не так?
Игра не может найти character_id zat_sh_nikitka_skadovsk. Предполагаю, не подключены новые xml-файлы в system.ltx. XOBAH
Добавлено (29.01.2012, 21:11) --------------------------------------------- XOBAHQuote (dmitry778) Игра не может найти character_id zat_sh_nikitka_skadovsk. Предполагаю, не подключены новые xml-файлы в system.ltx. Да это я тупанул, после всех изменений не начал новую игру, а загрузил сэйв. Позже разберусь. У меня на данный момент другая проблема. Я хотел изменить стартовую позицию ГГ. Распаковал алл.спавн нашел в alife_zaton секцию: [cut noguest][0]
; cse_abstract properties section_name = actor name = zaton_actor position = 180.400360107422, 1.35496139526367, -194.810348510742 direction = -0.000963689119089395, -0.000128021812997758, -0.25700780749321 s_flags = 0x29 version = 128 script_version = 12
; cse_alife_object properties game_vertex_id = 292 distance = 38.5 level_vertex_id = 1405060 object_flags = 0xffffffbf
; cse_visual properties visual_name = actors\stalker_neutral\stalker_neutral_1
; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 1 dynamic_out_restrictions = dynamic_in_restrictions =
; cse_alife_trader_abstract properties money = 15000 trader_flags = 0 character_profile = actor cse_alife_trader_abstract__unk2_u8 = 1
; cse_ph_skeleton properties
; cse_alife_creature_actor properties
; se_actor properties upd:health = 1 upd:timestamp = 0xc2ba3333 upd:creature_flags = 0x99 upd:position = 256.240051269531, 19.8124237060547, 550.824279785156 upd:o_model = 0 upd:o_torso = 2.81339907646179, -0.0120869996026158, 0 upd:actor_radiation = 0 upd:actor_weapon = 255[/cut] И перенес ее в файл alife_pripyat далее запаковал алл.спавн обрато. Но ГГ всеравно спавнится на том-же месте на затоне. Что не так я сделал?
СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
Сообщение отредактировал dmitry778 - Вс, 29.01.2012, 21:12 |
|
|
Эти 0 пользователя(ей) поблагодарили dmitry778 за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 29.01.2012, 22:17 | Сообщение # 70 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| dmitry778, Разницы в каком файле секция - нет, если координаты спавна не ты фактически изменил! [cut] Менять нужно: position direction game_vertex_id level_vertex_id upd:position К тому-же (такое было в SGM1.7) ГГ скриптом телепортировался на другую точку в начале игры, вероятно в 2.1 это не изменилось. Code function on_new_game_load() sgm_world.spawn_objects() sgm_world.spawn_monsters() sgm_world.spawn_deadbodys() sgm_world.spawn_items() if r_mod_params("bool","create_mines_permition",true) then sgm_world.spawn_mines() end give_info("agreement_check_friend") if level.name()=="zaton" then db.actor:set_actor_position(vector():set(-317.301,19.267,602.204)) --Вот здесь координаты ГГ меняються в начале новой игры end sgm_battery.get_battery_manager():initialize() end [/cut]
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
dmitry778 | Дата: Чт, 02.02.2012, 08:12 | Сообщение # 71 |
Советник «Свободы»
Свобода
Сообщений: 727
| Quote (denis2000) level_vertex_id Подскажите где брать этот параметр? С остальными вроде разобрался. [cut] Добавлено (31.01.2012, 19:00) --------------------------------------------- Я изменил старт-позицию ГГ кроме параметра level_vertex_id и вылет. [cut noguest=лог]Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....t.a.l.k.e.r. trilogy\cop\gamedata\scripts\_g.script:1803: attempt to index field 'actor' (a nil value)[/cut] Думаю это из-за этого параметра т.к. жалуется на г.скрипт.
Посмотрите в КМБ, первые посты, там есть информация о получении координат ГГ (вместе с level_vertex). XOBAH
Добавлено (31.01.2012, 20:46) --------------------------------------------- XOBAH Ставлю скрипт для снятия координат из модостроя 6. Получаем координаты Способ №1
В файле: ui_main_menu.script Ищем следующую функцию:
function main_menu:OnButton_credits_clicked()
Заменяем ее содержимое на:
Code local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000)
Получаю вылеты. Может я не правильно делаю? Но я и под эту строку function main_menu:OnButton_credits_clicked() ставил скрипт вместо той которая под ней и вместо обоих этих function main_menu:OnButton_credits_clicked() game.start_tutorial("credits_seq") строк ставил, тоже вылет.
Добавлено (01.02.2012, 07:52) --------------------------------------------- XOBAH Quote (dmitry778) Посмотрите в КМБ, первые посты, там есть информация о получении координат ГГ (вместе с level_vertex) Я видел, но я не знаю что делать со скаченным *.пдф файлом т.к. он, как *.пдф не открывается. И как запустить игру в тестовом режиме тоже не знаю.[/cut]
1. В SGM в главном меню есть пункт Координировать! 2. Приведенный вами способ не подходит для SGM, поскольку пункт Тиры убран из игрового меню. 3. PDF открывается Acrobat Rider-ом или другими бесплатными программами - поиск рулит! denis2000
Добавлено (01.02.2012, 17:41) --------------------------------------------- Quote (dmitry778) В SGM в главном меню есть пункт Координировать! У меня нет данной кнопки в меню. (СГМ-2.1)
Значит у тебя не SGM. denis2000
Добавлено (02.02.2012, 08:12) --------------------------------------------- Quote (dmitry778) Значит у тебя не SGM. Да наверное "Супер Марио стоит" . А если серьезно то: СТАЛКЕР_ЗП_1.6.02 (ориг) + СГМ_2.1 + оба фикса. И кнопки координировать в главном меню у меня нет.
Когда найдешь кнопку тогда и посмеемся. denis2000
СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
Сообщение отредактировал dmitry778 - Вт, 31.01.2012, 21:23 |
|
|
Эти 0 пользователя(ей) поблагодарили dmitry778 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 02.02.2012, 13:46 | Сообщение # 72 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| dmitry778, У тебя однозначно стоит "Супер Марио" . Вот мое меню при таких-же входящих. [cut][/cut]
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
dmitry778 | Дата: Пт, 03.02.2012, 08:16 | Сообщение # 73 |
Советник «Свободы»
Свобода
Сообщений: 727
| [cut noguest=Архив поста. Плиз не удаляйте.]denis2000, [cut noguest=А вот мое Марио если не веришь. :)][/cut]
Хочешь немного магии? Смени разрешение в игре например на 1024х768 и увидишь скрытые тайны denis2000
Добавлено (02.02.2012, 21:23) --------------------------------------------- Хм... Попробую, но после. Сейчас проблема в другом. В тестовом режиме мне всетаки удалось снять координаты, прописываю новый старт ГГ в Припяти на Речном вокзале , а он в Пречечной стартует, и сколько я не менял координаты , где только их не снимал, а он полюбасу перед полковником спавнится. В чем может быть загвоздка может быть? Я менял : [cut]position game_vertex_id level_vertex_id upd:position А вот: direction в координатах небыло и я думаю что он особо и не нужен это наверное параметр направления взгляда ГГ, или я ошибаюсь?[/cut]
В скрипте отключал телепорт на стартовую точку? denis2000
Добавлено (02.02.2012, 22:26) --------------------------------------------- Нет, а где его искать?
Три поста тому назад. denis2000
Добавлено (02.02.2012, 23:03) --------------------------------------------- Ага. А если путь до скрипта подскажешь, то будет вообще шикарно.
sgm_callbacks.script denis2000[/cut]
Добавлено (03.02.2012, 08:16) --------------------------------------------- denis2000, Я поменял имя локи и координаты старта ГГ, но ГГ все равно стартует в прачечной перед Ковальским. Что еще нужно Что-бы мой ГГ стартанул на Речном вокзале? Я уже всю голову себе сломал.
СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
Сообщение отредактировал dmitry778 - Пт, 03.02.2012, 08:18 |
|
|
Эти 0 пользователя(ей) поблагодарили dmitry778 за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 03.02.2012, 12:21 | Сообщение # 74 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Quote (dmitry778) Я поменял имя локи и координаты старта ГГ, но ГГ все равно стартует в прачечной перед Ковальским. Тут тебя настигает другая проблема - срабатывают рестрикторы и телепортируют тебя к Ковальскому по главному сюжету. Их логика: pri_a15_sr_cutscene.ltx и pri_a15_sr_exit.ltx. Если у тебя новый сюжет то стоит полностью убрать эти рестрикторы.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
dmitry778 | Дата: Сб, 04.02.2012, 09:57 | Сообщение # 75 |
Советник «Свободы»
Свобода
Сообщений: 727
| denis2000, А где это воспроизвести?
Убери рестрикторы или почисти их логику. denis2000Добавлено (04.02.2012, 09:04) --------------------------------------------- denis2000, Вот такую строчку нашел в pri_a15_sr_exit.ltx : [sr_idle@wait_for_end] on_game_timer = 30 | sr_idle@nil %=enable_ui(true) =stop_postprocess(3009) +pri_a16_kovalski_start =spawn_corpse(sim_default_monolith_2:pri_a15_monolith_dead_stand:0)% тут про Ковальского, может это и является причиной, и мне стоит ее просто закоментировать? Добавлено (04.02.2012, 09:23) --------------------------------------------- А в pri_a15_sr_cutscene.ltx я какой-то телепорт нашел. [sr_idle@prestart] ;on_game_timer = 5 | sr_idle@give_info %=teleport_actor(pri_a15_actor_walk:pri_a15_actor_look)% ;затычка on_game_timer = 5 | sr_idle@start %=teleport_actor(pri_a15_actor_walk:pri_a15_actor_look)% Может просто все эти строки закоментировать? Добавлено (04.02.2012, 09:57) --------------------------------------------- Просто закоментировать телепорт не получилось, ведет к вылету: [cut noguest=лог]Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....k.e.r. trilogy\cop\gamedata\scripts\xr_logic.script:609: bad argument #1 to 'pairs' (table expected, got nil)[/cut] А вот просто закоментил оба файла : pri_a15_sr_cutscene.ltx и pri_a15_sr_exit.ltx то ГГ заспавнился там где мне нужно, но вопрос: как это может повлиять на основной сюжет? И как сделать так что-бы основной сюжет не испортить?
СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
|
|
|
Эти 0 пользователя(ей) поблагодарили dmitry778 за это полезное сообщение: |
|
|
|