Модостроение. Спавн и логика
|
|
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 за это полезное сообщение: |
|
|
FREEM@N | Дата: Пт, 05.10.2012, 19:48 | Сообщение # 196 |
Легенда Зоны
Свобода
Сообщений: 1031
| Такой вопрос: как на новой локации наладить спавн живности? ну там чтобы собаки бегали (например) и не так чтобы убил и всё, а чтобы убил и они через некоторое время опять там появились, короче э-лайф сделать на новой локе
Создавайте смарты с респавном монстров - подробности в КМБ. denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили FREEM@N за это полезное сообщение: |
|
|
FREEM@N | Дата: Пт, 05.10.2012, 19:58 | Сообщение # 197 |
Легенда Зоны
Свобода
Сообщений: 1031
| Как добавить лагерь? Ну нормально обьясните-а то везде искал, нигде не написано ничего хорошего, обьясните по понятнее для чайника)) Лагерь добавить как например в СГМ - лагерь наёмников возле "Юпитера" чтобы как положено: чуваки там были, патруль ходил, анекдоты травили, у костра сидели и т.д.
Читайте КМБ! denis2000
Не нашёл я про спавн монстров. Может укажешь номер этого урока, где про это сказано? FREEM@N
Об этом сказано в 3 и 4 уроках, в уроке 7 - квестовый монстр. denis2000
Сообщение отредактировал FREEM@N - Сб, 06.10.2012, 13:03 |
|
|
Эти 0 пользователя(ей) поблагодарили FREEM@N за это полезное сообщение: |
|
|
Reaper412 | Дата: Сб, 06.10.2012, 13:01 | Сообщение # 198 |
Гражданский
Пользователи
Сообщений: 10
| denis2000 Не думаю, прошу раскрыть мне подробности.
Тогда скачайте автомобильный мод для 1.602. В нем будет патченый файл xrGame.dll и просто адаптируйте мод для SGM 2.2 это думаю будет не сложно. denis2000
Добавлено (06.10.2012, 13:01) --------------------------------------------- denis2000 xrGame.dll имеется с автомодом, но дело в том, что меня выкидывает с ошибкой при попытке заспавнить авто. Пробовал и создать своё SPAWN меню, делал как полагается, но тут бум....... и при нажатии на привязанную к спавн меню кнопку меня выкинуло.
Если вам не трудно, опишите пожалуйста способы адаптации.
Без правок и лога вылета вам никто не поможет! Об адаптации модов сказано в КМБ Инструкция 2. denis2000
Сообщение отредактировал Reaper412 - Сб, 06.10.2012, 13:01 |
|
|
Эти 0 пользователя(ей) поблагодарили Reaper412 за это полезное сообщение: |
|
|
Outfater | Дата: Сб, 06.10.2012, 17:13 | Сообщение # 199 |
Гражданский
Пользователи
Сообщений: 23
| Имею S.T.A.L.K.E.R COP с SG MOD 2.2, далее.. версия 1.6.02. Подскажите как уменьшить (изменить) спавн в ящиках железных и деревянных, сейфах, пнях, холодильниках и т.д и т.п. а то уж слишком много шары. То подствол лежит, то прицел, а то аптечка крутая с гранатой к РПГ. Какой нафиг поиск артов, по локе пробежался и обеспечил себя не напрягаясь.
Спавн тайников в all.spawn описание в файлах типа secret_***.ltx. denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили Outfater за это полезное сообщение: |
|
|
sergej5500 | Дата: Сб, 06.10.2012, 20:35 | Сообщение # 200 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Outfater Ящики, пни, сейфы с инвентарем прописаны в all.spawn и зарегистрированы в файле sgm_supply в gamedata\scripts. На Кордоне [cut=53 таких ящика]escape = {variable = 1, supply_boxs = "esc_inventory_box_1,esc_inventory_box_2,esc_inventory_box_3,esc_inventory_box_4,esc_inventory_box_5,esc_inventory_box_6,esc_inventory_box_7 ,esc_inventory_box_8,esc_inventory_box_9,esc_inventory_box_10,esc_inventory_box_11,esc_inventory_box_12,esc_inventory_box_13,esc_inventory_b ox_14,esc_inventory_box_15,esc_inventory_box_16,esc_inventory_box_17,esc_inventory_box_18,esc_inventory_box_19,esc_inventory_box_20,esc_inve ntory_box_21,esc_inventory_box_22,esc_inventory_box_23,esc_inventory_box_24,esc_inventory_box_25,esc_inventory_box_26,esc_inventory_box_27,e sc_inventory_box_28,esc_inventory_box_29,esc_inventory_box_30,esc_inventory_box_31,esc_inventory_box_32,esc_inventory_box_33,esc_inventory_b ox_34,esc_inventory_box_35,esc_inventory_box_36,esc_inventory_box_37,esc_inventory_box_38,esc_inventory_box_39,esc_inventory_box_40,esc_inve ntory_box_41,esc_inventory_box_42,esc_inventory_box_43,esc_inventory_box_44,esc_inventory_box_45,esc_inventory_box_46,esc_inventory_box_47,e sc_inventory_box_48,esc_inventory_box_49,esc_inventory_box_50,esc_inventory_box_51,esc_inventory_box_52,esc_inventory_box_53"},[/cut] Спавн в них задается функцией flip_supply_item в файле sgm_place в папке gamedata\scripts [cut=Фрагменты файла]Фрагмент функцииflip_supply_items: function flip_supply_items(parent_id,variable) if variable==nil then function flip_supply_items(parent_id,variable) if variable==nil then variable=1 end end (ссылка на variable=1)
Фрагмент функции variable=1: function flip_supply_variable_1(parent_id) local rnd_medicaments=math.random(1,2) local rnd_drugs=math.random(1,2) local rnd_ammo=math.random(1,6) local rnd_addons=math.random(1,3) fill_random_item(0.20,set_medicaments_2,parent_id) fill_random_item(0.20,set_medicaments_3,parent_id) if rnd_medicaments==1 then fill_random_item(0.25,set_medicaments_1_1,parent_id) else fill_random_item(0.16,set_medicaments_1_2,parent_id) end
Функция спавна медикаментов (set_medicaments_2): set_medicaments_2={"psy_complex","antirad"}
В верхней части файла в строках вида: set_detectors_1={"detector_simple","detector_advanced"} set_detectors_2={"detector_advanced","detector_elite"} set_detectors_3={"detector_elite","detector_scientific"} set_detectors_4={"detector_scientific","detector_omega"}
прописаны предметы, которые спавнятся в ящиках.[/cut]
Чтобы уменьшить спавн, можно пойти двумя путями: 1. В all.spawn убрать ящики (секции inventory_box) [cut=типичная секция][85]
; cse_abstract properties section_name = inventory_box name = esc_treasure_5 position = -106.922302246094, 19.9464263916016, 278.149047851563 direction = 0, -1.69019997119904, 0 version = 124 script_version = 8
; cse_alife_object properties game_vertex_id = 2070 distance = 0 level_vertex_id = 25 object_flags = 0xffffff3b custom_data = <<END [story_object] story_id = esc_inventory_box_2 [logic] cfg = scripts\SGM\escape\inventory_boxs\esc_inventory_box.ltx END
; cse_visual properties visual_name = dynamics\equipment_cache\equipment_rucksack_01_case
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut] Нужно будет убрать соответствующие секции так же из файла sgm_supply. 2. Отредактировать список спавнящихся предметов в файле sgm_place. Этот список предметов также используется при наполнении стандартных SGM-тайников
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Outfater | Дата: Сб, 06.10.2012, 21:13 | Сообщение # 201 |
Гражданский
Пользователи
Сообщений: 23
| Quote (sergej5500) 2. Отредактировать список спавнящихся предметов в файле sgm_place.
unction bonus_rank_3_items(parent_id) fill_random_item(0.08,set_device_boxs,parent_id) Спасибо за ответ. Я так понял 0.08 это вероятность появления.А я могу пойти третим путем - 0.08 заменить на 0.001?
|
|
|
Эти 0 пользователя(ей) поблагодарили Outfater за это полезное сообщение: |
|
|
sergej5500 | Дата: Сб, 06.10.2012, 21:21 | Сообщение # 202 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Outfater Да, можно пойти и третьим путём. Уменьшайте вероятность и будет Вам счастье.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
FREEM@N | Дата: Сб, 06.10.2012, 21:21 | Сообщение # 203 |
Легенда Зоны
Свобода
Сообщений: 1031
| [error][ 87] : Параметр задан неверно.
Что за лог? тот вылет исправил, вот новый. Всё перепроверил, снорки должны правильно в Рыж лесу спавниться! захожу в игру, нажимаю новая игра и вылет. Могу если надо тут написать как я спавнил снорков через скрипт
Прочитайте последний абзац шапки темы и задайте вопрос. Пока что ответить вам конкретно не возможно. denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили FREEM@N за это полезное сообщение: |
|
|
FREEM@N | Дата: Сб, 06.10.2012, 21:21 | Сообщение # 204 |
Легенда Зоны
Свобода
Сообщений: 1031
| Ладно-вот полная история моего вылета и касается она так сказать sergej5500, потому что я хотел адаптировать его мод "охотник" для чистой ЗП под свою сборочку на ЗП для которой я выдернул из СГМ 2.2 локу рыжий лес, чтобы понять как создана лока (СДК не освоил) и заспавнить на ней монстров. С аномалиями всё получилось а вот монстры увы... Его мод добавляет новые квады монстров в игру. Хотел потренирроваться на снорках и вот что вышло: [error][ 87] : Параметр задан неверно. [cut=Как я добавлял монстров в игру] Заходим в alife_red_forest (новую локу зарегестрировал) перед этим конечно же распаковал all.spawn. в файл вписываю: [46684432345] ; cse_abstract properties section_name = smart_terrain name = oxota_snork_smart position = -13,-0,-334 direction = 0,0,0
; cse_alife_object properties game_vertex_id = 2142 distance = 0 level_vertex_id = 79236 object_flags = 0xffffff3e custom_data = <<END [smart_terrain] cfg = scripts\red_forest\smart\oxota_snork_smart.ltx END
; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2
; cse_alife_space_restrictor properties restrictor_type = 3
; se_smart_terrain properties
Далее захожу по адресу: gamedata/configs/misc/simulation_objects_props.ltx Там пишу в самом конце: [oxota_snork_squad]:default_squad sim_avail = true И потом иду в: squad_descr_red_forest (всё в той же папке этот документ я зарегестрировал) Пишу там: [oxota_snork_squad]:online_offline_group faction = monster npc = snork_normal, snork_normal, snork_normal, snork_normal, snork_strong, snork_strong, snork_strong target_smart = oxota_snork_smart story_id = oxota_snork_squad И наконец захожу в: configs/scripts/red_forest/(не регестрировал, помоему не надо)smart И создаём там файл ltx: oxota_snork_smart В нём написал: [smart_terrain];oxota_snork_smart squad_id = 315 max_population = 2
respawn_params = respawn@oxota_snork_smart
[respawn@oxota_snork_smart] snork
[snork] spawn_squads = oxota_snork_squad spawn_num = 1 Не могу понять-что сдесь неправильно? [/cut] Версия моего ЗП: 1.6.2
Как и где регистрировал squad_descr_red_forest.ltx denis2000
Тут: squad_descr Вписал: ; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции. #include "squad_descr_pripyat.ltx" #include "squad_descr_jupiter.ltx" #include "squad_descr_zaton.ltx" #include "squad_descr_labx8.ltx" #include "squad_descr_underpass.ltx" #include "squad_descr_red_forest.ltx"
Сообщение отредактировал FREEM@N - Пн, 08.10.2012, 15:11 |
|
|
Эти 0 пользователя(ей) поблагодарили FREEM@N за это полезное сообщение: |
|
|
Довакин | Дата: Пн, 08.10.2012, 16:00 | Сообщение # 205 |
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
| Здравствуйте!У меня вопрос!Прохожу КМБ первый урок.Все сделал как надо.А игра не запускается.XrEngine менял.xRender_R3 менял.Бесполезно!Не запускается после чувачка какого я добавил.
|
|
|
Эти 0 пользователя(ей) поблагодарили Довакин за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 08.10.2012, 16:57 | Сообщение # 206 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| ___ToRReNT___ Видимо, Вы что-то сделали неправильно. Что показывает лог вылета?
Сообщение отредактировал sergej5500 - Пн, 08.10.2012, 16:57 |
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Довакин | Дата: Пн, 08.10.2012, 17:20 | Сообщение # 207 |
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
| Просто вылетает ошибка с xrengine . Потом жучок.И все
|
|
|
Эти 0 пользователя(ей) поблагодарили Довакин за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 08.10.2012, 17:29 | Сообщение # 208 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| ___ToRReNT___ Смотрите шапку темы: "Как найти лог игры после вылета". Особо интересуют 25 последних строк после FATAL ERROR
FREEM@N Тоже желателен лог вылета.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Довакин | Дата: Пн, 08.10.2012, 17:36 | Сообщение # 209 |
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
| Quote (sergej5500) ___ToRReNT___ Смотрите шапку темы: "Как найти лог игры после вылета". Особо интересуют 25 последних строк после FATAL ERROR
Извините,такой папки не присутствует.Только от sgm и ЧН.А у меня на ориг.зов припяти.
|
|
|
Эти 0 пользователя(ей) поблагодарили Довакин за это полезное сообщение: |
|
|
FREEM@N | Дата: Пн, 08.10.2012, 17:50 | Сообщение # 210 |
Легенда Зоны
Свобода
Сообщений: 1031
| Quote (sergej5500) Тоже желателен лог вылета. Я же писал? вот он: [cut]stack trace:
0023:084E2A71 xrGame.dll, CDialogHolder::CDialogHolder()
[error][ 87] : Параметр задан неверно.[/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили FREEM@N за это полезное сообщение: |
|
|
|