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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Чт, 11.10.2012, 19:40 | Сообщение # 226
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

FREEM@N, Ну наконец то вы отреагировали на мою просьбу и даже добровольно признались, что не все так гладко с добавленной локацией:
1. Приведите в порядок all.spawn правильно сконфигурировав компилятор/декомпилятор он должен правильно компилировать и декомпилировать без потерь и искажения информации (возможны искажения в числах с плавающей запятой в младших и не значящих разрядах).
2. Секции из alife-файлов могут значительно отличаться в разных версиях декомпилятора (например секция smart_terrain может выглядеть по другому в вашей версии), поэтому за образец нужно брать именно вид секции вашего декомпилятора, подставив свои параметры.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
9vova8Дата: Пт, 12.10.2012, 21:32 | Сообщение # 227
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

Что это за ошибка?
[cut]FATAL ERROR

[error]Expression : false
[error]Function : CXml::Load
[error]File : D:\prog_repository\sources\trunk\xrXMLParser\xrXMLParser.cpp
[error]Line : 87
[error]Description : XML file:gameplay\sh_dialogs.xml value: errDescr:Error reading end tag.[/cut]

Скачайте Сборник модостроения ЗП v10.10.11 (автор: XOBAH) и ознакомитесь с распространенными сообщениями об ошибке. denis2000

Спасибо)


 
LazurДата: Сб, 13.10.2012, 17:28 | Сообщение # 228
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Подскажите, из за чего может быть вылет при спавне отряда "симуляционных" сталкеров? (В стартовой позиции simulation.ltx)

На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
sergej5500Дата: Сб, 13.10.2012, 18:27 | Сообщение # 229
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Lazur,
Где-то ошибка в файлах. Приведите лог вылета и конфиги "добавленных" сквадов, тогда ответ будет более точным.
 
vanka_mifistoДата: Сб, 13.10.2012, 21:17 | Сообщение # 230
Гражданский
Пользователи
Сообщений: 18
Награды: 0
Репутация: [ -20 ]

Всем привет,А в файл ui_mod_spanwner.script можно прописать нпс чтобы в игре они в спавнере для sgm 2.1 были?
 
LazurДата: Вс, 14.10.2012, 06:40 | Сообщение # 231
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

sergej5500, ЛОГа как такового нет, точнее он на движковом уровне:
[cut=Вот он:]stack trace:

001B:079FE8B3 xrGame.dll, CDialogHolder::CDialogHolder()
001B:079FFB45 xrGame.dll, CDialogHolder::CDialogHolder()
001B:02842EA3 lua.JIT.1.1.4.dll, luaopen_io()[/cut]

Сквады не добавлял, брал stalker_sim_squad_novice, он часто на Затоне прописывается, а значит, работоспособный.


На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
sergej5500Дата: Вс, 14.10.2012, 09:14 | Сообщение # 232
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Lazur
То есть Вы дописывали сквад stalker_sim_squad_novice в файл simulation.ltx? Я правильно понял? Так делать нельзя. В simulation.ltx прописывают только уникальные сквады, например Сыч, Борода, Спартак, которые существуют с начала новой игры. Сквад sim_squad_novice
прописывается в конфигах смартов в файлах zat_sim_* в папке gamedata\configs\scripts\zaton\smart строками
[cut=вида][smart_terrain];zat_sim_29
squad_id = 57
max_population = 1
respawn_only_smart = true
respawn_params = respawn@zat_sim_b29

[respawn@zat_sim_b29]
spawn_stalker@novice
spawn_stalker@advanced
spawn_stalker@master

[spawn_stalker@novice]
spawn_squads = stalker_sim_squad_novice
spawn_num = {+zat_a1_simulation_start -zat_b28_heli_3_searched -zat_b100_heli_2_searched -zat_b101_heli_5_searched} 4, 0

[spawn_stalker@advanced]
spawn_squads = stalker_sim_squad_novice, stalker_sim_squad_advanced
spawn_num = {+jup_b218_pripyat_group_gathering} 0, {+zat_a1_simulation_start +zat_b28_heli_3_searched} 4, {+zat_a1_simulation_start +zat_b100_heli_2_searched} 4, {+zat_a1_simulation_start +zat_b101_heli_5_searched} 4, 0

[spawn_stalker@master]
spawn_squads = stalker_sim_squad_advanced, stalker_sim_squad_advanced, stalker_sim_squad_veteran
spawn_num = {+zat_a1_simulation_start +jup_b218_pripyat_group_gathering} 4, 0[/cut]
На Затоне на 29-м смарте до обследования вертолётов спавнятся новички, до похода в Припять - ветераны, после сбора отряда - мастера. Я привёл конфиг смарта из "чистого" Зова Припяти. Если хотите добавить новичков, прописывайте их в конфиги смартов.


Сообщение отредактировал sergej5500 - Вс, 14.10.2012, 09:29
 
denis2000Дата: Вс, 14.10.2012, 16:48 | Сообщение # 233
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Quote (sergej5500)
То есть Вы дописывали сквад stalker_sim_squad_novice в файл simulation.ltx? Я правильно понял? Так делать нельзя.

Вы ошибаетесь! Симуляционный сквад или нет, его можно, как и все другие, прописать на стартовой позиции в файле simulation.ltx.
[cut=Вот пример из оригинального ЗП]
Code
[start_position_zaton]
...
stalker_sim_squad_novice = zat_stalker_base_smart
stalker_sim_squad_novice = zat_stalker_base_smart
...
stalker_sim_squad_novice = zat_sim_11
stalker_sim_squad_novice = zat_sim_12
...
[/cut]


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LazurДата: Пн, 15.10.2012, 12:01 | Сообщение # 234
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

denis2000, sergej5500, Вопрос снимаю, вылечил путём убирания exclusive на смарте.

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


На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
World_StalkerДата: Вс, 21.10.2012, 18:34 | Сообщение # 235
Гражданский
Пользователи
Сообщений: 9
Награды: 0
Репутация: [ 0 ]

Добрый вечер. Проблема в локации болото, распакованный аллспавн в файле alife_marsh.ltx прописал свои координаты. Загружаю игру, Гг смотрит в противоположном направлении(когда координаты замерял, смотрел в другом направлении)
Как можно исправить это?

Правильно задать параметр direction. denis2000
 
9vova8Дата: Вс, 21.10.2012, 20:39 | Сообщение # 236
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

Доброго времени суток. Что такое "game_vertex_id" и "level_vertex_id",в файле"way_****", и чему оно должно равняться?

game_vertex_id и level_vertex_id - идентификаторы узлов "сетки координат" в разрезе соответственно игрового пространства и пространства отдельной локации. Именно game_vertex_id задает локацию, ну а level_vertex_id приблизительно ту часть локации где будет лежать точка (это конечно несколько утрировано, но я специально не поднимаю вопрос о геймграфе). Значение этих параметров вы получаете при снятии координат. denis2000

Добавлено (21.10.2012, 20:39)
---------------------------------------------
Спасибо


 
World_StalkerДата: Вс, 21.10.2012, 21:27 | Сообщение # 237
Гражданский
Пользователи
Сообщений: 9
Награды: 0
Репутация: [ 0 ]

denis2000, поясните что неправильного в файле alife_marsh.ltx координаты писал правильно.
[cut noguest=alife_marsh.ltx][6463]
; cse_abstract properties
section_name = breakable_object
name = meshes\brkbl#0.ogf
position = 26.3756866455078,3.04760122299194,-241.157653808594
direction = 0.536080479621887,0,0.844166874885559

; cse_alife_object properties
game_vertex_id = 936
distance = 0
level_vertex_id = 152435
object_flags = 0xffffffba

; cse_visual properties
visual_name = meshes\brkbl#0

; cse_alife_object_breakable properties
health = 1

[6464]
; cse_abstract properties
section_name = actor
name = zaton_actor
position = 26.3756866455078,3.04760122299194,-241.157653808594
direction = 0.536080479621887,0,0.844166874885559
s_flags = 0x29

; cse_alife_object properties
game_vertex_id = 936
distance = 38.5
level_vertex_id = 152435
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 =

upd:health = 1
upd:timestamp = 0xc2ba3333
upd:creature_flags = 0x99
upd:position = 26.3756866455078,3.04760122299194,-241.157653808594
upd:o_model = 0
upd:o_torso = 2.81339907646179,-0.0120869996026158,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0

; cse_alife_trader_abstract properties
money = 15000
trader_flags = 0
character_profile = actor
cse_alife_trader_abstract__unk1_u8 = 1

; cse_ph_skeleton properties

; cse_alife_creature_actor properties

upd:actor_state = 0
upd:actor_accel_header = 0
upd:actor_accel_data = 0
upd:actor_velocity_header = 0
upd:actor_velocity_data = 0
upd:actor_radiation = 0
upd:actor_weapon = 215
upd:num_items = 0

; se_actor properties

[/cut]

[cut noguest=Координаты ГГ]Название уровня : marsh
GameVertex ID(вертекс игры): 936
levelVertex ID(вертекс уровня): 152435
Position(Позиция) = 26.375686645508,3.0476012229919,-241.15765380859
Direction(Поворот) = 0.53608047962189,0,0.84416687488556[/cut]

координаты снимал с модом от Сталкера 56

Добавлено (21.10.2012, 21:27)
---------------------------------------------
секция [6463] как я понял, это кусок стекла


Сообщение отредактировал World_Stalker - Вс, 21.10.2012, 21:46
 
denis2000Дата: Вс, 21.10.2012, 23:24 | Сообщение # 238
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

World_Stalker, direction в all.spawn и Direction(Поворот) Сталкера 56 разные вещи. Обрати внимание, что второе значение в векторе Direction(Поворот) практически всегда равно нулю или около него, в спавне-же второй параметр это поворот по оси Y в радианах и именно от него зависит ориентация ГГ или другого объекта в горизонтальной плоскости.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Вт, 23.10.2012, 22:42 | Сообщение # 239
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Всем Добрый Вечер.
Возник вопрос насчёт прописывания пачек патронов в all.spawn Зова Припяти. В секции пачки патронов ammo_7.62x54_7h1 внизу имеется абзац:

; cse_alife_item_ammo properties
ammo_left = 10
upd:ammo_left = 10

Что редактирует параметр ammo_left? По умолчанию он равен стандартному числу патронов в соответствующей пачке патронов. К примеру, у патронов 5.45х39 он равен 60. Для эксперимента поменял ammo_left для 7.62х54 на 1000, собрал all.spawn, начал новую игру. Результат нулевой. Как было 10 патронов в 1 пачке (стандартное число), так и осталось.
Зачем нужен ammo_left? Заранее благодарен за подсказки.

А не пробовал его ставить между 0 и максимумом в пачке? denis2000
 
9vova8Дата: Пн, 29.10.2012, 11:44 | Сообщение # 240
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

Доброго времени суток.
что это за ошибка?
FATAL ERROR

[error]Expression : !m_error_code
[error]Function : raii_guard::~raii_guard
[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line : 748
[error]Description : ...e.r. - Зов Припяти\gamedata\scripts\sim_board.script:226: attempt to index local 'spawn_smart' (a nil value)

stack trace:




Сообщение отредактировал 9vova8 - Пн, 29.10.2012, 11:46
 
Поиск: