Пример рабочего смарттеррейна в ЧН |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Пример рабочего смарттеррейна в ЧН |
05.01.2017, 10:00
Сообщение
#1
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Посоны, я решительно не могу создать работающий смарттеррейн в ЧН. Игра валится со знаменитой жалобой на _G.script:973, и я даже не могу понять, что делаю не так.
Если закомментировать строку, на которую вылезает ругань, то игра запустится, но никаких неписей в ней не появится. Если после этого добавить на карту уникального НПС, то он уйдёт бродить по локации, не подчиняясь смарту. Внимание, вопрос: каков минимальный набор ИИ-сущностей для запуска респавна в игре? У меня есть голая карта с одним Сидоровичем на ней, но он не считается, т.к. на классе монстра и сталкирским схемам не подчиняется. ИИ-сетка и графпойнты есть. ИИ-сетка скомпилирована командой xrAI.exe -f map, спавн скомпилирован командой xrAI.exe -s escape -no_separator_check Что я делаю: 1) добавляю смарттеррейн, настройки не трогаю 2) в кастомдату пишу следующее: Код [smart_terrain] targets = esc_st_test sim_type = territory sim_value = 2 squad_capacity = 3 squad_id = 3 sim_avail = true def_restr = esc_st_village_sr_defense att_restr = esc_st_village_sr_attack respawn_sector = stalker surge_hide_avaliable = true [exclusive] wolf = escape\esc_wolf.ltx 3) накрываю смарттеррейн двумя рестрикторами (со стандартными настройками) — esc_st_village_sr_defense и esc_st_village_sr_attack 4) делаю аналогичный рестриктор esc_st_test рядом, ему в targets указываю esc_st_village 5) экспортирую спавн, собираю спавн, запускаю игру, получаю описанное сверху Что не так, чего не хватает? -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
|
|
05.01.2017, 12:44
Сообщение
#2
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
973 строка это из скриптовой функции abort(), то-есть скрипты сознательно крашат игру т.к ты неправильно что то настроил.
После такого вылета ты должен открыть лог (целиком) и чуть выше FATAL ERROR будет собственно сам текст ошибки (Начинаться с "ERROR:" ) Единственное что - в ТЧ в релизной версии движка текст ошибки в лог не выводился (т.к сама функция не была экспортирована корректно), но вроде как в ЧН с этим порядок. Если никакого текста с ошибкой нету, то попробуй в _g.script поменять местами строки 973 (assert) и 974 (error_log). Сообщение отредактировал Shoкer - 05.01.2017, 12:46 -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
05.01.2017, 13:18
Сообщение
#3
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
В том и дело, что ошибка не пишется в лог.
лог * Detected CPU: AuthenticAMD , F15/M2/S0, 3991.00 mhz, 45-clk 'rdtsc' * CPU Features: RDTSC, MMX, SSE, SSE2 Initializing File System... using fs-ltx fsgame.ltx FS: 27061 files cached 0 archives, 3828Kb memory used. Init FileSystem 0.829917 sec 'xrCore' build 3795, Jun 25 2009 Initializing Engine... Starting INPUT device... Loading DLL: xrRender_R2.dll Loading DLL: xrRender_R3.dll refCount:m_pAdapter 1 command line -start server(escape/single/alife) -ltx user_r3_high.ltx -hq -smap4096 -ss_tga -silent_error_mode Executing config-script "user_r3_high.ltx"... [x:\_appdata_\user_r3_high.ltx] successfully loaded. Loading DLL: xrRender_R2.dll Loading DLL: xrGame.dll * [win32]: free[4077540 K], reserved[44440 K], committed[72260 K] * [ D3D ]: textures[0 K] * [x-ray]: crt heap[6947 K], process heap[676 K], game lua[0 K], render[0 K] * [x-ray]: economy: strings[1498 K], smem[0 K] SOUND: OpenAL: enumerate devices... SOUND: OpenAL: EnumerationExtension Present 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 "user_r3_high.ltx"... Executing config-script "x:\gamedata\configs\rspec_extreme.ltx"... [x:\gamedata\configs\rspec_extreme.ltx] successfully loaded. [x:\_appdata_\user_r3_high.ltx] successfully loaded. SOUND: Selected device is Generic Software * sound: EAX 2.0 extension: absent * sound: EAX 2.0 deferred: absent * sound : cache: 65537 kb, 4856 lines, 13820 bpl Starting RENDER device... * GPU [vendor:10DE]-[device:1189]: NVIDIA GeForce GTX 670 * GPU driver: 10.18.13.6175 * CREATE: DeviceREF: 1 * Vertex Processor: PURE HARDWARE * Texture memory: 4014 M * DDI-level: 9.0 * GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30) * GPU vertex cache: unrecognized, 16 * NVidia MGPU: Logical(1), Physical(1) * Starting rendering as 2-GPU. * DVB created: 1536K * DIB created: 512K ! Renderer doesn't support blender 'effects\shadow_world' * NULLRT supported * ...and used * HWDST/PCF supported and used * NV-DBT supported and used - r__tf_aniso 16 - r2_tf_mipbias 0. Starting engine... Loading DLL: xrGameSpy.dll * DVB created: 1536K * DIB created: 512K - r__tf_aniso 16 - r2_tf_mipbias 0. * GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30) * GPU vertex cache: unrecognized, 16 * NVidia MGPU: Logical(1), Physical(1) * Starting rendering as 2-GPU. *** RESET [1133 ms] bin\xrengine.exe -start server(escape/single/alife) -ltx user_r3_high.ltx -hq -smap4096 -ss_tga -silent_error_mode * phase time: 0 ms * phase cmem: 91492 K Кэширование объектов... Loading objects... Loading models... * [prefetch] time: 182 ms * [prefetch] memory: 0Kb * phase time: 221 ms * phase cmem: 91492 K Сервер: Старт... * phase time: 85 ms * phase cmem: 91975 K Сервер: Загрузка симуляции жизни... * Cannot find saved game x:\savedgames\escape.sav * phase time: 1 ms * phase cmem: 91975 K Создание новой игры... * Creating new game... * Loading spawn registry... * 149 spawn points are successfully loaded FATAL ERROR [error]expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp [error]Line : 180 [error]Description : <no expression> [error]Arguments : LUA error: x:\gamedata\scripts\_g.script:973: bad argument #2 to 'format' (string expected, got nil) stack trace: _g.script: CODE -- крешнуть игру (после вывода сообщения об ошибке в лог) function abort(fmt, ...) local reason = string.format(fmt, ...) assert("ERROR: " .. reason) log("ERROR: " .. reason) log(string.format("%s",nil)) -- 973 строка end Строки менял местами, толку ноль. Всегда ругается на log(string.format("%s",nil)) -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
05.01.2017, 15:08
Сообщение
#4
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
|
 
|
|
05.01.2017, 16:52
Сообщение
#5
|
|
Почти Игроман Репутация: 106 Группа: Забанен Сообщений: 611 Награды: 3 Регистрация: 23.08.2010 |
Если закомментировать строку, на которую вылезает ругань, то игра запустится, но никаких неписей в ней не появится. Если после этого добавить на карту уникального НПС, то он уйдёт бродить по локации, не подчиняясь смарту. В ЧН НПС-я подчинены faction_название_группировки, отдельно они не спамятся, а спамятся на смартах, которые находятся в разделе [start_position], где описаны начальные отряды и точки спавна, попробуй внеси свой смарт в этот список и запустить игру по новому. Добавлю, что уникальные НПС должны иметь свою логику, если ее не будет, то НПС-я захватит A-life и пустит во все тяжкие в пределах локации. Сообщение отредактировал ZeeK - 05.01.2017, 17:01 -------------------- |
 
|
|
05.01.2017, 16:58
Сообщение
#6
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Строки менял местами, толку ноль. Всегда ругается на log(string.format("%s",nil)) Команды log, assert отрублены в релизе. Попробуй добавить перед 973 строкой: Код local s = string.gsub(reason, "%s", "_") get_console():execute("load "..s) CODE Сервер: Старт... * phase time: 63 ms * phase cmem: 91959 K Сервер: Загрузка симуляции жизни... * Cannot find saved game x:\savedgames\escape.sav * phase time: 1 ms * phase cmem: 91959 K Создание новой игры... * Creating new game... * Loading spawn registry... * 153 spawn points are successfully loaded ! Cannot find saved game there_is_no_kamp_path_in_smart[esc_st_village] FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp [error]Line : 180 [error]Description : <no expression> [error]Arguments : LUA error: x:\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil) stack trace: Надо было писать kamp, а не camp. В команде сталкир ЧН явно был немец. ZeeK, да, я в курсе. Проблема лишь в отладке. -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
05.01.2017, 17:37
Сообщение
#7
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
А на что может указывать такой вылет?
CODE Сервер: Старт... Появляется после добавления sim_faction с кастомдатой* phase time: 76 ms * phase cmem: 91975 K Сервер: Загрузка симуляции жизни... * Cannot find saved game x:\savedgames\escape.sav * phase time: 1 ms * phase cmem: 91975 K Создание новой игры... * Creating new game... * Loading spawn registry... * 149 spawn points are successfully loaded FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp [error]Line : 180 [error]Description : <no expression> [error]Arguments : LUA error: x:\gamedata\scripts\smart_terrain.script:76: bad argument #1 to 'pairs' (table expected, got nil) stack trace: Код [faction] faction_stalker:name = stalker base_smart = esc_st_village settings = misc\faction_stalker.ltx CODE [settings] squad_descr.ltx:;Количество дополнительных отрядов, в зависимости от числа захваченных территориальных точек glory_0 = 0 [spawn_by_resource] ;Какие профили спаунить в зависимости от уровня ресурсов группировки 0 = sim_default_stalker_0, 80, sim_default_stalker_1, 20 1 = sim_default_stalker_0, 50, sim_default_stalker_1, 30, sim_default_stalker_2, 20 2 = sim_default_stalker_1, 50, sim_default_stalker_2, 30, sim_default_stalker_3, 20 3 = sim_default_stalker_2, 50, sim_default_stalker_3, 30, sim_default_stalker_4, 20 [spawn_by_level] escape = sim_default_stalker_0, 40, sim_default_stalker_1, 30, sim_default_stalker_2, 15, sim_default_stalker_3, 10, sim_default_stalker_4, 5 [expansion_0] ;Цели группировки на текущем левеле развития base_squad_number = 0 precondition_power = 0 [secondary_targets] [start_position] esc_st_village_stalker_2_squad_01 = esc_st_village Код [esc_st_village_stalker_2_squad_01]
faction = stalker npc = sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_1 target_smart = esc_st_village -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
05.01.2017, 19:07
Сообщение
#8
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
|
 
|
|
05.01.2017, 23:27
Сообщение
#9
|
|
Почти Игроман Репутация: 106 Группа: Забанен Сообщений: 611 Награды: 3 Регистрация: 23.08.2010 |
squad_descr.ltx Не знаю насчет squad_descr.ltx, но в игре каждая локация имеет свой отдельный "squad_descr_название_локации" с именными отрядами, а в базовом файле только отряды для симуляции записаны аля [sim_stalker_squad_2]:online_offline_group и #include "squad_descr_название_локации.ltx". Мб стоит зарегистрировать [esc_st_village_stalker_2_squad_01] в отдельном squad_descr_название_локации? -------------------- |
 
|
|
06.01.2017, 02:52
Сообщение
#10
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
abramcumner, скрипт:
все скрипты (это ЧН 1.5.10, правлен только _g.script по твоему рецепту): ZeeK, вообще-то у меня так и сделано, инклюженый файл я не стал здесь указывать для упрощения восприятия. По идее движку всё равно, откуда читать конфиг: сразу из system.ltx, из инклюда в system.ltx, из инклюда в инклюд в system.ltx... -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
06.01.2017, 15:22
Сообщение
#11
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
smart_terrain.script:76
Код for k,v in pairs(jobs) do вместо списка работ передали nil. Скорее всего рекурсивный вызов из: Код 83. -- Это работа-кластер или работа-описание. 84. if v.job_id == nil then 85. -- Вызываем рекурсивно себя для списка работ кластера 86. selected_job_id, current_job_prior, selected_job_link = job_iterator(v.jobs, npc_data, selected_job_prior, smart) Ты что-нибудь знаешь про работы-кластеры или работы-описания? |
 
|
|
06.01.2017, 15:44
Сообщение
#12
|
|
Опытный Геймер Репутация: 50 Группа: Участник Сообщений: 157 Награды: 2 Регистрация: 20.03.2014 |
По поводу функции abort (только для ЧН / ЗП), то можно ещё так (в логе, перед fatal error, будет: ! [LUA][ERROR] ...):
Код function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end А по смарту, ты добавлял пути(работы) для него? По типу (доступные перечислены в gulag_general.script, к комменту выше): ... esc_my_smart_walker_1_look esc_my_smart_walker_1_walk ... и т.д. |
 
|
|
09.01.2017, 11:48
Сообщение
#13
|
|
Почти Игроман Репутация: 106 Группа: Забанен Сообщений: 611 Награды: 3 Регистрация: 23.08.2010 |
Удалось создать смарт_террейн рабочий в итоге?
-------------------- |
 
|
|
09.01.2017, 12:24
Сообщение
#14
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Пока не пробовал. Как (если) попробую — отпишу
esc_my_smart_walker_1_look Если имя обязательно должно соответствовать шаблону way_имясмарта_walker_номер_look, то нет, не добавлял.
esc_my_smart_walker_1_walk -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
09.01.2017, 13:35
Сообщение
#15
|
|
Почти Игроман Репутация: 106 Группа: Забанен Сообщений: 611 Награды: 3 Регистрация: 23.08.2010 |
Если имя обязательно должно соответствовать шаблону way_имясмарта_walker_номер_look, то нет, не добавлял. Если в смарте нет уникальной работы, например для квестов, то создавать way_ и look_ не требуется, игра (ЧН\ЗП) сама подхватит НПСей в стандартные работы: сидеть у костра, анекдоты, гитара и т.д. -------------------- |
 
|
|
10.01.2017, 16:40
Сообщение
#16
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
Разве в targets можно указывать рестрикотры? Как я помню то там указываются соседние смарты не рестрикоры я в недоумении как я понял esc_st_test это рестриктор или нет?
Сообщение отредактировал Stalker_Monolit - 10.01.2017, 16:41 -------------------- |
 
|
|
10.01.2017, 16:42
Сообщение
#17
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
st — smart_terrain
sr — space_restrictor esc_st_test — это смарттеррейн -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
10.01.2017, 17:01
Сообщение
#18
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
-------------------- |
 
|
|
05.02.2017, 15:57
Сообщение
#19
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Благодаря abramcumner'у симуляцию удалось запустить. По крайней мере, симуляцию кампа: сталкеры сидят вокруг точки _kamp_1 и делают вид, что рассказывают анекдоты у костра.
Вылет был потому, что скрипты требуют ещё и путь _kamp_1_task О необходимости пути _task в доках не указано, но он учитывается в скриптах и есть в пысовских локациях. Возможно, _task как-то используется скриптами проводников. ЗЫ Параметру targets можно не присваивать значение: Код targets = Параметр sim_type может быть типа base (об этом единожды упоминается Код sim_type = base
-------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
12.03.2017, 09:39
Сообщение
#20
|
|
Почти Игроман Репутация: 106 Группа: Забанен Сообщений: 611 Награды: 3 Регистрация: 23.08.2010 |
Параметру targets можно не присваивать значение: Если не будет Таргетов, то сталкеры никуда не уйдут с смарт-террейна и никогда на него не придут новые, потому что сквады в ЧН идут по таргетам. В оригинале вообще неприятная ситуация, когда вся жизнь на локациях замирает в связи с тем, что отряду нада пройти на точку на другом смарте, а на пути смарт, занятый нейтральной группировкой. В ОГСМ это исправили вроде бы. Во Fraction Commander выкидывается предупреждение, что отряд никуда не пойдет ибо смарты впереди переполнены. Сообщение отредактировал ZeeK - 12.03.2017, 09:40 -------------------- |
 
|
|
Текстовая версия | Сейчас: 26.04.2024, 14:57 |