Overf1rst 1 490 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hunter 2 470 Опубликовано 1 января, 2023 bsanek628 если нулевая версия-то сразу четвертый. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AfterGlow 565 Опубликовано 1 января, 2023 Pepel а что мешает просто дать игроку черный экран через диалог и телепортнуть его на нужный левел чейнжер? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 1 января, 2023 Invincible мне хочется именно разобраться в том, почему у меня не получается так, как предлагает автор того тутора. А вторая причина - я не умею делать так как предлагаете Вы. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 1 января, 2023 Pepel телепортировать ГГ можно скриптом, функция находится в dialogs_aes.script или aes_dialogs.script например Дополнено 0 минут спустя а зачем надобность через скрипт спавнить? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 1 января, 2023 (изменено) imcrazyhoudini Вы путаете возможно. не ТЕЛЕПОРТИРОВАТЬ, а создать ПЕРЕХОД с локи на локу. Вот как ТУТ Дополнено 6 минуты спустя 8 минут назад, imcrazyhoudini сказал: Pepel телепортировать ГГ можно скриптом, функция находится в dialogs_aes.script или aes_dialogs.script например Дополнено 0 минут спустя а зачем надобность через скрипт спавнить? потому что не всегда хочется пересобирать аллспавн, а вторая причина - хочется понять почему у меня не получается сделать по тутору то что предлагает автор. Изменено 1 января, 2023 пользователем Pepel Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 2 января, 2023 Pepel почему нельзя через сдк сделать? Скриптами делали ещё в бородатые годы, а сейчас при всём инструментарии пользоваться скриптами... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 687 Опубликовано 2 января, 2023 (изменено) Pepel когда пишешь, что что-то сделал и не работает - прикладывай файлы (или код под спойлером), что именно делал, какие файлы ковырял, что в них добавлял. А также подробнее пиши, что именно не работает (не спавнится сам переход/спавнится, но не переходит или вылетает/только через диалог не работает и т.д.). Старожилы-телепаты уже давно отошли от модинга, а у новых еще не развились телепатические способности. Если не предоставляешь нормальную информацию - не жди нормальной помощи Изменено 2 января, 2023 пользователем M31 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
_mapkeg_ 0 Опубликовано 2 января, 2023 (изменено) Добрый вечер. Я тут пытался Новый Арсенал 2 на OGSR адаптировать... Вот вроде всё нормально сделал и тут вот: [error]Expression : FATAL ERROR [error]Function : CScriptEngine::lua_pcall_failed [error]File : D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\COMMON_AI\script_engine.cpp [error]Line : 46 [error]Description : [CScriptEngine::lua_pcall_failed]: invalid key to 'next' Искал что и из-за чего этот вылет, не нашёл. Наверно плохо искал. Изменено 2 января, 2023 пользователем _mapkeg_ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 2 января, 2023 _mapkeg_ чёт с диалогом походу Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Borovos 24 Опубликовано 2 января, 2023 Hello everybody, I'm posting here as old GSC forum & few others forums are closed or dead. I'm using acdc.pl v1.38 with folders config, levels, spawn and the game.graph file from a mod. I split all.spawn in level.spawn as I prefer to work on SDK. When I do it, I obtain a unrecognized_ways.game file (with way point) & a _level_unknown folder with a empty level.spawn file (0 ko). Regarding this, I prefer to decompile the all.spawn & check it before the split step. When I decompile the all.spawn. I obtain several unknown way in way__level_unknow.ltx. All of them have a wrong game_vertex and level vertex. I fixed some of this way points by updating the way_prefixes.ini. But few of them are still here & unknow (I don't find them in custom data logic, gulag or script) Why are they not recognize by the tool? How fix them? Thanks you in advance and happy new year Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 2 января, 2023 M31 спасибо за замечание! Позже всё тогда распишу и скину!🙂 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 687 Опубликовано 3 января, 2023 _mapkeg_ выше этих строчек причина должна быть Borovos try to ask there https://www.amk-team.ru/forum/topic/11568-universal-acdc-i-drugie-perl-skripty/ 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
_mapkeg_ 0 Опубликовано 3 января, 2023 Очередной непонятный вылет... [error]Expression : false [error]Function : CXml::Init [error]File : D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrCore\XML_Parser\xrXMLParser.cpp [error]Line : 80 [error]Description : XML file:text\rus\string_table_includes.xml value: errDescr:Error reading end tag. Я вот даже оригинальным файлом заменил, а до сих пор ошибку видит. Почему? Вот даже лог скинул: xray_Пользователь_03-01-23_11-56-13.log Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 687 Опубликовано 3 января, 2023 _mapkeg_ прописанные в string_table_includes.xml файлы тоже заменял оригинальными? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 3 января, 2023 _mapkeg_ если ласт версия движка огср, то она не прощает ошибку с не закрытыми тегами (оригинальные файлы тоже приходиться править) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 687 Опубликовано 3 января, 2023 imcrazyhoudini это можно отключить в external.ltx (skip_shoc_xml_errors). Но да, лучше исправить Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 3 января, 2023 В 02.01.2023 в 10:49, imcrazyhoudini сказал: Pepel почему нельзя через сдк сделать? Скриптами делали ещё в бородатые годы, а сейчас при всём инструментарии пользоваться скриптами... т.е. Вы хотите сказать что удобнее компилировать через сдк? Или что? Я только способ знаю кроме скриптов - через сдк. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 829 Опубликовано 3 января, 2023 (изменено) Pepel Просто поставьте level changer на своей локации и телепортируйте к нему актёра. Изменено 3 января, 2023 пользователем Paracetamol Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 3 января, 2023 Pepel через сдк всё гораздо удобнее, нежели скриптами пилить (только если разработка не на каком-то финишном этапе) а так человек выше сказал - прикладывайте файлы с изменениями Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 3 января, 2023 1 час назад, imcrazyhoudini сказал: Pepel через сдк всё гораздо удобнее, нежели скриптами пилить (только если разработка не на каком-то финишном этапе) сколько в среднем займет компилиляция оригинального кардона если я внесу только еще один переход с локации на локацию? Вот мое железо. Система win7x64 Мать: ASRock N68C-GS4 FX, Проц: AMD FX8300, ОЗУ: 16GB, Видеокарта: Radeon RX550/550 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 3 января, 2023 Pepel так вы поправите спавн, а не геометрию, поэтому манипуляция будет длиться пару секунд единственная заморочка будет с добавлением всех спавнов локаций (если локации все с оригинала будут), но в принципе проблем не должно возникнуть 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 4 января, 2023 (изменено) 9 часов назад, imcrazyhoudini сказал: единственная заморочка будет с добавлением всех спавнов локаций (если локации все с оригинала будут), но в принципе проблем не должно возникнуть Как думаете сколько времени это займет? Дополняю кодом проблему связанную с добавлением точки перехода на другую локацию через скрипт. Дополнено 23 минуты спустя Спойлер <?xml version="1.0" encoding="windows-1251" standalone="yes" ?> <game_dialogs> <dialog id="new_dialog_buriy"> <phrase_list> <phrase id="0"> <text>new_dialog_buriy_0</text> <next>1</next> </phrase> <phrase id="1"> <text>new_dialog_buriy_1</text> <next>2</next> </phrase> <phrase id="2"> <text>new_dialog_buriy_2</text> <next>3</next> </phrase> <phrase id="3"> <text>new_dialog_buriy_3</text> <action>_freeplay_sa.esc_yantar</action> <next>2</next> </phrase> </phrase_list> </dialog> </game_dialogs> Спойлер function create_level_changer( p_story_id, -- STORY_ID нового level_changer (понадобится нам позже) p_position, -- вектор, координаты точки, в которой будет располагаться центр нового level_changer p_lvertex_id, -- level_vertext_id - идентифицируют уровень, на котором будет создан level_changer p_gvertex_id, -- game_vertext_id p_dest_lv, -- level_vertex_id - идентифицируют уровень, на который level_changer будет перебрасывать игрока p_dest_gv, -- game_vertex_id p_dest_pos, -- координаты точки, в которой на новом уровне окажется игрок p_dest_dir, -- направрение взгляда игрока p_dest_level, -- название уровня, например "L11_Pripyat" p_silent -- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход) ) local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id) level.map_add_object_spot(obj.id, "level_changer", "") local packet = net_packet() obj:STATE_Write(packet) -- свойства cse_alife_object local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_u32() local level_vertex_id = packet:r_u32() local object_flags = packet:r_u32() local custom_data = packet:r_stringZ() local story_id = packet:r_u32() local spawn_story_id = packet:r_u32() -- свойства cse_shape local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then -- sphere local center = packet:r_vec3() local radius = packet:r_float() else -- box local axis_x_x = packet:r_float() local axis_x_y = packet:r_float() local axis_x_z = packet:r_float() local axis_y_x = packet:r_float() local axis_y_y = packet:r_float() local axis_y_z = packet:r_float() local axis_z_x = packet:r_float() local axis_z_y = packet:r_float() local axis_z_z = packet:r_float() local offset_x = packet:r_float() local offset_y = packet:r_float() local offset_z = packet:r_float() end end -- свойства cse_alife_space_restrictor local restrictor_type = packet:r_u8() -- свойства cse_level_changer local dest_game_vertex_id = packet:r_u16() local dest_level_vertex_id = packet:r_u32() local dest_position = packet:r_vec3() local dest_direction = packet:r_vec3() local dest_level_name = packet:r_stringZ() local dest_graph_point = packet:r_stringZ() local silent_mode = packet:r_u8() packet:w_begin(game_vertex_id) -- game_vertex_id packet:w_float(cse_alife_object__unk1_f32) packet:w_u32(cse_alife_object__unk2_u32) packet:w_u32(level_vertex_id) -- level_vertex_id packet:w_u32( bit_not(193) ) -- object_flags = -193 = 0xFFFFFF3E packet:w_stringZ(custom_data) packet:w_u32(p_story_id) -- story_id packet:w_u32(spawn_story_id) packet:w_u8(1) -- количество фигур -- packet:w_u8(0) -- тип фигуры: сфера -- packet:w_vec3(vector():set(0, 0, 0)) -- sphere_center -- packet:w_float(3.0) packet:w_u8(1) -- тип фигуры: box packet:w_float(2) -- axis_x_x packet:w_float(0) -- axis_x_y packet:w_float(0) -- axis_x_z packet:w_float(0) -- axis_y_x packet:w_float(4) -- axis_y_y packet:w_float(0) -- axis_y_z packet:w_float(0) -- axis_z_x packet:w_float(0) -- axis_z_y packet:w_float(4) -- axis_z_z packet:w_float(0) -- offset_x packet:w_float(0) -- offset_y packet:w_float(0) -- offset_z packet:w_u8(3) -- restrictor_type packet:w_u16(p_dest_gv) -- destination game_vertex_id packet:w_u32(p_dest_lv) -- destination level_vertex_id packet:w_vec3(p_dest_pos) -- destination position packet:w_vec3(p_dest_dir) -- destination direction (направление взгляда) packet:w_stringZ(p_dest_level) -- destination level name packet:w_stringZ("start_actor_99") -- some string, always const packet:w_u8(p_silent) -- 1 for silent level changing packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) -- news_manager.send_tip(db.actor, "LC creation finished", nil, nil, 30000) end function esc_yantar() create_level_changer(6006, vector():set(-241,-19,-116), 14486, 8, 1459, 136667, vector():set(194,5,-245), vector():set(189,5,-245), "l01_escape", 0) end Спойлер <!--тестовый переход с кордона на янтарь--> <info_portion id="esc_yantar"></info_portion> Спойлер ; дополнительные пути переходов 6006 = "esc_yantar" Спойлер -- esc_yantar (S6) obj = sim:story_object(6006) if obj then level.map_add_object_spot(obj.id, "level_changer", "to_yantar") ; end Спойлер <actor_dialog>new_dialog_buriy</actor_dialog> </specific_character> после проделанной магии вылетает ошибка Спойлер Expression : ai().game_graph().header().levels().end() != I Function : CALifeGraphRegistry::setup_current_level File : E:\stalker\sources\trunk\xr_3da\xrGame\alife_graph_registry.cpp Line : 91 Description : Graph point level ID not found! Урок смотрел ТУТ памагите :`| Изменено 4 января, 2023 пользователем Pepel Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 687 Опубликовано 4 января, 2023 Pepel проверь гейм вертексы, правильно ли вписал Дополнено 5 минуты спустя 5 часов назад, Pepel сказал: function esc_yantar() create_level_changer(6006, vector():set(-241,-19,-116), 14486, 8, 1459, 136667, Ощущение, будто местами перепутаны Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 4 января, 2023 (изменено) 55 минут назад, M31 сказал: Pepel проверь гейм вертексы, правильно ли вписал Дополнено 5 минуты спустя Ощущение, будто местами перепутаны исправил, но теперь вот такой вылет Expression : no_assert Function : CALifeStoryRegistry::add File : E:\stalker\sources\trunk\xr_3da\xrGame\alife_story_registry.cpp Line : 30 Description : Specified story object is already in the Story registry! Нагуглил вот такой ответ ТУТ, но всё равно что-то не сходится - сид у меня не повторяется, в алспавне тоже нет такого сида. Я специально пытаюсь без использования аллспавна забить переход таким способом, но что-то ничего не выходит. Спойлер Expression : no_assert Function : CALifeStoryRegistry::add File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_story_registry.cpp Line : 30 Description : Specified story object is already in the Story registry! Причина: Игра определила одинаковые story_id для двух и более объектов. Возникнуть это может в нескольких случаях: 1. Более явная причина: в all.spawn либо скриптом разным объектам присвоен один и тот же story_id; 2. При изменениях в спавне, т.е. добавлении или удалении секций, происходит переиндексация и секции, которые после добавленой/убавленной - получают иные индексы. В модах, в которых происходит спавн объектов по индексам из all.spawn'a (alife():create(индекс_из_all_spawn)), а это АМК, моды на его основе и не только, происходит ошибочное удаление (не того объекта) и соответственно дублированный спавн не удаленного объекта - вот вам и дублированный сид. Лечение: 1. Найти поиском дублированные сиды и сделать их разными; 2. Добавлять секции в all.spawn исключительно с индексами превышающими максимальный в принципе в all.spawn, а не в файле. В случае удаления ситуация сложнее. Если всё же нужно избавиться от объекта в all.spawn, удаляйте его скриптом, тем самым не нарушая последовательность индексации. Изменено 4 января, 2023 пользователем Pepel Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 4 января, 2023 Pepel час реального времени максимум попробуй число увеличить, я правда не уверен, что это поможет допустим с 6001 на 20000 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты