Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Спавн и логика
denis2000Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Спавн и логика

Создание объектов на локации и логика поведения этих объектов

Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
FREEM@NДата: Пт, 05.10.2012, 19:48 | Сообщение # 196
Легенда Зоны
Свобода
Сообщений: 1031
Награды: 8
Репутация: [ 271 ]

Такой вопрос: как на новой локации наладить спавн живности? ну там чтобы собаки бегали (например) и не так чтобы убил и всё, а чтобы убил и они через некоторое время опять там появились, короче э-лайф сделать на новой локе

Создавайте смарты с респавном монстров - подробности в КМБ. denis2000
 
FREEM@NДата: Пт, 05.10.2012, 19:58 | Сообщение # 197
Легенда Зоны
Свобода
Сообщений: 1031
Награды: 8
Репутация: [ 271 ]

Как добавить лагерь? Ну нормально обьясните-а то везде искал, нигде не написано ничего хорошего, обьясните по понятнее для чайника))
Лагерь добавить как например в СГМ - лагерь наёмников возле "Юпитера" чтобы как положено: чуваки там были, патруль ходил, анекдоты травили, у костра сидели и т.д.

Читайте КМБ! denis2000

Не нашёл я про спавн монстров. Может укажешь номер этого урока, где про это сказано?
FREEM@N


Об этом сказано в 3 и 4 уроках, в уроке 7 - квестовый монстр. denis2000


Сообщение отредактировал FREEM@N - Сб, 06.10.2012, 13:03
 
Reaper412Дата: Сб, 06.10.2012, 13:01 | Сообщение # 198
Гражданский
Пользователи
Сообщений: 10
Награды: 0
Репутация: [ 0 ]

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
 
OutfaterДата: Сб, 06.10.2012, 17:13 | Сообщение # 199
Гражданский
Пользователи
Сообщений: 23
Награды: 0
Репутация: [ 0 ]

Имею S.T.A.L.K.E.R COP с SG MOD 2.2, далее.. версия 1.6.02.
Подскажите как уменьшить (изменить) спавн в ящиках железных и деревянных, сейфах, пнях, холодильниках и т.д и т.п. а то уж слишком много шары. То подствол лежит, то прицел, а то аптечка крутая с гранатой к РПГ. Какой нафиг поиск артов, по локе пробежался и обеспечил себя не напрягаясь.

Спавн тайников в all.spawn описание в файлах типа secret_***.ltx.
denis2000


 
sergej5500Дата: Сб, 06.10.2012, 20:35 | Сообщение # 200
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

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-тайников
 
OutfaterДата: Сб, 06.10.2012, 21:13 | Сообщение # 201
Гражданский
Пользователи
Сообщений: 23
Награды: 0
Репутация: [ 0 ]

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?


 
sergej5500Дата: Сб, 06.10.2012, 21:21 | Сообщение # 202
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Outfater
Да, можно пойти и третьим путём. Уменьшайте вероятность и будет Вам счастье.
 
FREEM@NДата: Сб, 06.10.2012, 21:21 | Сообщение # 203
Легенда Зоны
Свобода
Сообщений: 1031
Награды: 8
Репутация: [ 271 ]

[error][ 87] : Параметр задан неверно.

Что за лог? тот вылет исправил, вот новый. Всё перепроверил, снорки должны правильно в Рыж лесу спавниться! захожу в игру, нажимаю новая игра и вылет. Могу если надо тут написать как я спавнил снорков через скрипт

Прочитайте последний абзац шапки темы и задайте вопрос. Пока что ответить вам конкретно не возможно. denis2000
 
FREEM@NДата: Сб, 06.10.2012, 21:21 | Сообщение # 204
Легенда Зоны
Свобода
Сообщений: 1031
Награды: 8
Репутация: [ 271 ]

Ладно-вот полная история моего вылета и касается она так сказать sergej5500, smile потому что я хотел адаптировать его мод "охотник" для чистой ЗП под свою сборочку на ЗП для которой я выдернул из СГМ 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
 
ДовакинДата: Пн, 08.10.2012, 16:00 | Сообщение # 205
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
Награды: 14
Репутация: [ 552 ]

Здравствуйте!У меня вопрос!Прохожу КМБ первый урок.Все сделал как надо.А игра не запускается.XrEngine менял.xRender_R3 менял.Бесполезно!Не запускается после чувачка какого я добавил.

 
sergej5500Дата: Пн, 08.10.2012, 16:57 | Сообщение # 206
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

___ToRReNT___
Видимо, Вы что-то сделали неправильно. Что показывает лог вылета?


Сообщение отредактировал sergej5500 - Пн, 08.10.2012, 16:57
 
ДовакинДата: Пн, 08.10.2012, 17:20 | Сообщение # 207
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
Награды: 14
Репутация: [ 552 ]

Просто вылетает ошибка с xrengine . Потом жучок.И все

 
sergej5500Дата: Пн, 08.10.2012, 17:29 | Сообщение # 208
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

___ToRReNT___
Смотрите шапку темы: "Как найти лог игры после вылета". Особо интересуют 25 последних строк после FATAL ERROR

FREEM@N
Тоже желателен лог вылета.
 
ДовакинДата: Пн, 08.10.2012, 17:36 | Сообщение # 209
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
Награды: 14
Репутация: [ 552 ]

Quote (sergej5500)
___ToRReNT___
Смотрите шапку темы: "Как найти лог игры после вылета". Особо интересуют 25 последних строк после FATAL ERROR


Извините,такой папки не присутствует.Только от sgm и ЧН.А у меня на ориг.зов припяти.


 
FREEM@NДата: Пн, 08.10.2012, 17:50 | Сообщение # 210
Легенда Зоны
Свобода
Сообщений: 1031
Награды: 8
Репутация: [ 271 ]

Quote (sergej5500)
Тоже желателен лог вылета.

Я же писал? вот он:
[cut]stack trace:

0023:084E2A71 xrGame.dll, CDialogHolder::CDialogHolder()

[error][ 87] : Параметр задан неверно.[/cut]
 
Поиск: