Модостроение. Спавн и логика
|
|
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 за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 19.11.2015, 00:10 | Сообщение # 1231 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер.
На Кордоне сделал непися, сидящего за "решеткой".
[cut=Логика сталкера][logic@esc_b1_stalker2_trader] active = animpoint@esc_b1_stalker2_trader suitable = {=check_npc_name(esc_b1_stalker2_trader)} true can_select_weapon = false level_spot = trader prior = 200
[animpoint@esc_b1_stalker2_trader] cover_name = esc_b6_plennic_animpoint meet = meet@trader combat_ignore_cond = true combat_ignore_keep_when_attacked = true invulnerable = true gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false on_actor_in_zone = esc_b1_trader_task_1 | walker@esc_b1_stalker2_trader on_info = {+esc_b1_stalker2_trader_svoboden} walker@esc_b1_stalker2_trader_2
[walker@esc_b1_stalker2_trader] path_walk = plennic_walk path_look = plennic_look meet = meet@trader combat_ignore_cond = true combat_ignore_keep_when_attacked = true invulnerable = true gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false on_actor_not_in_zone = esc_b1_trader_task_1 | animpoint@esc_b1_stalker2_trader on_info = {+esc_b1_stalker2_trader_svoboden} walker@esc_b1_stalker2_trader_2
[walker@esc_b1_stalker2_trader_2] path_walk = plennic_2_walk path_look = plennic_2_look meet = meet@trader combat_ignore_cond = true combat_ignore_keep_when_attacked = true invulnerable = true gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false
[meet@trader] abuse = false allow_break = false meet_on_talking = false trade_enable = false use = {!actor_has_weapon !actor_enemy !has_enemy} true, false snd_on_use = {=actor_has_weapon !actor_enemy} meet_hide_weapon, nil[/cut]
Рестриктор esc_b1_trader_task_1 имеет форму параллелепипеда и параллелен решетке. Подойдя к решетке на 1 метр, игрок оказывается в зоне рестриктора. Непись после этого должен покинуть анимпойнт и подойти к решетке. На точку plennic_walk. Вместо этого непись встает примерно посреди комнаты и смотрит на игрока. В результате с пленником нельзя поговорить.
Как подправить логику, чтобы непись не зависал в двух метрах от решетки?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Чт, 19.11.2015, 06:52 | Сообщение # 1232 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| sergej5500, может дело не в логике, а в отсутствии АИ-сетки вдоль решётки? Проверял?
Цитата sergej5500 ( ) Адаптировал на чистый Зов Припяти схему mob_companion из мода Припять - Точка Отсчёта. Схема написана для монстров, чтобы они, если не враги ГГ, то следовали за ГГ в качестве защитника, а если враги, то атаковали бы ГГ по всей локации.
Терпение...... И все получится!
Сообщение отредактировал makdm - Чт, 19.11.2015, 06:57 |
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 19.11.2015, 09:23 | Сообщение # 1233 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата makdm ( ) может дело не в логике, а в отсутствии АИ-сетки вдоль решётки? Проверял?
Анимпойнт я ставил в СДК. И точки walk тоже. Сетка там есть. В отношении этого непися пока вижу один вариант. Спавнить его как несквадового НПС с кастом-датой. Тогда он не "виснет". Но это нарушает "идеологию" Зова Припяти. Неписи "должны" быть сквадовыми.
Цитата makdm ( ) Схема написана для монстров
В вашем аддоне Припять - Точка Отсчета под этой схемой находится несколько НПС в Припяти. Логику я скопировал у одного из них.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Чт, 19.11.2015, 14:47 | Сообщение # 1234 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| sergej5500, попробуй в путях прописать номер работы. Вместо
path_walk = plennic_walk path_look = plennic_look
сделай точки
path_walk = plennic_1_walk path_look = plennic_1_look
Должно помочь.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
Shyr | Дата: Вс, 03.01.2016, 22:37 | Сообщение # 1235 |
Отмычка
Пользователи
Сообщений: 38
| Ребята, помогите, пожалуйста: пытаюсь создать и заспавнить своего непися на кордоне через скрипт (не алл. спавн_ом), однако ничего не выходит. Целый день убил, но так и не разобрался, как и что делать
|
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 03.01.2016, 23:02 | Сообщение # 1236 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Shyr,
Для начала выложите все свои правки, относящиеся к этому неписю. Версию Сталкера, спавн-секцию НПС, логику, скрипт спавна и т.д. И что именно не выходит. НПС не спавнится или инра вылетает?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Shyr | Дата: Вс, 03.01.2016, 23:21 | Сообщение # 1237 |
Отмычка
Пользователи
Сообщений: 38
| sergej5500, CoP, ver. 1.6.02, SGM 2.2. вот, создавал его с нуля с помощью "NPCcreator" [cut=igor.xml] <?xml version='1.0' encoding="windows-1251" ?> <xml> <specific_character id="igor" team_default = "1"> <name>Игорь</name> <icon>ui_inGame2_renegade_4</icon> <map_icon x="0" y="0"></map_icon> <bio>esc_wolf_bio</bio> <class>igor</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <money min="4000 " max="120000" infinitive="0"></money> <rank>100</rank> <reputation>0</reputation> <visual>actors\stalker_neutral\stalker_neutral_6_antigas\</visual> <snd_config>characters_voice\human_01\stalker\</snd_config> <crouch_type>-1</crouch_type> <panic_treshold>0</panic_treshold> <supplies> [spawn] \n wpn_pkm \n ammo_pkm_100 = 100 \n #include "gameplay\character_food.xml" </supplies> #include "gameplay\character_criticals_4.xml" #include "gameplay\character_undying.xml" <start_dialog>hello_dialog</start_dialog> </specific_character> </xml>[/cut]
[cut=igor_profile.xml] <?xml version='1.0' encoding="UTF-8"?> <xml> <character id="igor"> <class>igor</class> <specific_character>igor</specific_character> </character> </xml> [/cut] [cut=igor_spawn.ltx][igor_spawn]:stalker $spawn = "respawn\igor_spawn" character_profile = igor spec_rank = regular community = stalker [/cut] [cut=igor.script]function spawn_igor() alife():create("igor_spawn",vector():set(-164.01528930664,-25.436372756958,-350.54428100586),84137,1930) end [/cut] пробовал как отдельно документы по игровым папкам раскладывать, так и вписывать в уже существующие игровые файлы.
Сообщение отредактировал Shyr - Вс, 03.01.2016, 23:23 |
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 03.01.2016, 23:35 | Сообщение # 1238 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Shyr,
Каким образом вызывается функция спавна spawn_igor ?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Shyr | Дата: Вс, 03.01.2016, 23:44 | Сообщение # 1239 |
Отмычка
Пользователи
Сообщений: 38
| sergej5500, без понятия, я на моменте спавна и завис.
|
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 03.01.2016, 23:51 | Сообщение # 1240 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Shyr,
В ваших файлах именно функция spawn_igor обеспечивает появление непися на локации. Когда вы обеспечите её запуск, тогда непись и появится. Вариантов запуска масса. Непися можно заспавнить по горячей клавише, в диалоге и т.д.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Shyr | Дата: Вс, 03.01.2016, 23:54 | Сообщение # 1241 |
Отмычка
Пользователи
Сообщений: 38
| sergej5500, не скромный вопрос: а где я могу подсмотреть как обеспечить ее запуск?
|
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 04.01.2016, 00:07 | Сообщение # 1242 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Shyr,
Можете посмотреть этот урок.
Вместо кода
elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then local p=vector(),lv,gv p.x=db.actor:position().x+3 p.y=db.actor:position().y p.z=db.actor:position().z lv=db.actor:level_vertex_id() gv=db.actor:game_vertex_id() alife():create("zat_sh_nikitka_skadovsk",p,lv,gv)
можно написать
elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then igor.spawn_igor()
И нажать в игре ESC-F6-ESC. Это самый простой способ запустить скрипт.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Shyr | Дата: Вт, 05.01.2016, 19:05 | Сообщение # 1243 |
Отмычка
Пользователи
Сообщений: 38
| sergej5500, хорошо, спасибо, обязательно прсмотрю. Если что к вам можно будет в дальнейшем обратится за советом? Добавлено (05.01.2016, 19:05) --------------------------------------------- sergej5500, все сделал как в уроке было описано, но при попытке загрузить игру вылетает с логом: [cut=Лог]Loading DLL: xrRender_R1.dll Loading DLL: xrGame.dll ! Unable to find Software\GSC Game World\STALKER-COP\ in registry ! Player name registry key (InstallUserName) not found ! * [win32]: free[1974072 K], reserved[33128 K], committed[89888 K] * [ D3D ]: textures[0 K] * [x-ray]: crt heap[22129 K], process heap[2153 K], game lua[0 K], render[0 K] * [x-ray]: economy: strings[27625 K], smem[0 K] SOUND: OpenAL: enumerate devices... SOUND: OpenAL: EnumerationExtension Present dir[0]=D:\Games\S.T.A.L.K.E.R._S.N.I.P.E.R\bin\ dir[1]=D:\Games\S.T.A.L.K.E.R._S.N.I.P.E.R\ dir[2]=D:\Games\S.T.A.L.K.E.R._S.N.I.P.E.R\bin\ dir[3]=C:\WINDOWS\system32\ CleanDeviceSpecifierList CleanDeviceSpecifierList Generic Hardware devices Generic Hardware SOUND: OpenAL: system default SndDevice name is Generic Hardware SOUND: OpenAL: default SndDevice name set to Generic Software SOUND: OpenAL: All available devices: 1. Generic Software, Spec Version 1.1 (default) eax[0] efx[no] xram[no] 2. Generic Software, Spec Version 1.1 (default) eax[0] efx[no] xram[no] Executing config-script "d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\default_controls.ltx"... [d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\default_controls.ltx] successfully loaded. Executing config-script "user.ltx"... Executing config-script "d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\rspec_minimum.ltx"... ~ Invalid syntax in call to 'r__detail_density' ~ Valid arguments: float value in range [0.200,0.600] [d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\rspec_minimum.ltx] successfully loaded. Executing config-script "d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\default_controls.ltx"... [d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\default_controls.ltx] successfully loaded. ~ Invalid syntax in call to 'r2_aa_break' ~ Valid arguments: vector3 in range [0.000000e+000,0.000000e+000,0.000000e+000]-[1.000000e+000,1.000000e+000,1.000000e+000] ~ Invalid syntax in call to 'r2_aa_weight' ~ Valid arguments: vector3 in range [0.000000e+000,0.000000e+000,0.000000e+000]-[1.000000e+000,1.000000e+000,1.000000e+000] ~ Invalid syntax in call to 'sv_adm_menu_ban_time' ~ Valid arguments: ui_mp_am_10_minutes/ui_mp_am_30_minutes/ui_mp_am_1_hour/ui_mp_am_6_hours/ui_mp_am_1_day/ui_mp_am_1_week/ui_mp_am_1_month/ui_mp_am_3_monthes/ui_mp_am_forever [users\user.ltx] successfully loaded. SOUND: Selected device is Generic Software * sound: EAX 2.0 extension: absent * sound: EAX 2.0 deferred: absent * sound : cache: 32768 kb, 2428 lines, 13820 bpl Starting RENDER device... * GPU [vendor:10DE]-[device:A20]: NVIDIA GeForce GT 220 * GPU driver: 6.14.11.9621 * CREATE: DeviceREF: 1 * Vertex Processor: PURE HARDWARE * Texture memory: 995 M * DDI-level: 9.0 * GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30) * GPU vertex cache: recognized, 24 * NVidia MGPU: Logical(1), Physical(1) * Starting rendering as 2-GPU. * DVB created: 1536K * DIB created: 512K * distortion: used, dev(30),need(14) * color_mapping: used, dev(30),need(14) * SSample: 1280x1024 compiling shader postprocess compiling shader postprocess_d compiling shader postprocess_cm_pre * SSample: enabled compiling shader particle_distort compiling shader particle compiling shader particle - r__tf_aniso 1 - r1_tf_mipbias 0. compiling shader simple_color compiling shader portal compiling shader editor compiling shader sky2 compiling shader sky2 compiling shader clouds compiling shader clouds Starting engine... FATAL ERROR [error]Expression : false [error]Function : ParseFile [error]File : D:\prog_repository\sources\trunk\xrXMLParser\xrXMLParser.cpp [error]Line : 48 [error]Description : XML file[$game_config$] parsing failed. Can't find include file:[gameplay\character_undying.xml]
stack trace:
[/cut] Подскажите, пожалуйса, в чем проблема и как ее решить?
Сообщение отредактировал Shyr - Пн, 04.01.2016, 00:28 |
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 05.01.2016, 19:58 | Сообщение # 1244 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата Shyr ( ) Can't find include file:[gameplay\character_undying.xml] Не может найти указанный подключаемый файл.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Shyr | Дата: Вт, 05.01.2016, 23:58 | Сообщение # 1245 |
Отмычка
Пользователи
Сообщений: 38
| denis2000, но такого файла в игре нет, я специально даже переустановил игру (работает), но такого файла в ней не нашел. Т.е. выходит так: как только я внедряю игру файлы с новым НПС игра вылетает на стадии входа в нее; без внедрения нового НПС все работает отлично.
|
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
|