Перейти к содержанию

Рекомендуемые сообщения

 
 

bsanek628 если нулевая версия-то сразу четвертый.

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel а что мешает просто дать игроку черный экран через диалог и телепортнуть его на нужный левел чейнжер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Invincible мне хочется именно разобраться в том, почему у меня не получается так, как предлагает автор того тутора. А вторая причина - я не умею делать так как предлагаете Вы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel телепортировать ГГ можно скриптом, функция находится в dialogs_aes.script или aes_dialogs.script например


Дополнено 0 минут спустя

а зачем надобность через скрипт спавнить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

imcrazyhoudini Вы путаете возможно. не ТЕЛЕПОРТИРОВАТЬ, а создать ПЕРЕХОД с локи на локу. Вот как ТУТ


Дополнено 6 минуты спустя
8 минут назад, imcrazyhoudini сказал:

Pepel телепортировать ГГ можно скриптом, функция находится в dialogs_aes.script или aes_dialogs.script например


Дополнено 0 минут спустя

а зачем надобность через скрипт спавнить?

потому что не всегда хочется пересобирать аллспавн, а вторая причина - хочется понять почему у меня не получается сделать по тутору то что предлагает автор.

Изменено пользователем Pepel

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel почему нельзя через сдк сделать?

Скриптами делали ещё в бородатые годы, а сейчас при всём инструментарии пользоваться скриптами...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel когда пишешь, что что-то сделал и не работает - прикладывай файлы (или код под спойлером), что именно делал, какие файлы ковырял, что в них добавлял. А также подробнее пиши, что именно не работает (не спавнится сам переход/спавнится, но не переходит или вылетает/только через диалог не работает и т.д.). Старожилы-телепаты уже давно отошли от модинга, а у новых еще не развились телепатические способности. Если не предоставляешь нормальную информацию - не жди нормальной помощи

Изменено пользователем M31
  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Добрый вечер.
Я тут пытался Новый Арсенал 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'

Искал что и из-за чего этот вылет, не нашёл. Наверно плохо искал.

Изменено пользователем _mapkeg_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

_mapkeg_ чёт с диалогом походу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

M31 спасибо за замечание! Позже всё тогда распишу и скину!🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

_mapkeg_ выше этих строчек причина должна быть

Borovos try to ask there  https://www.amk-team.ru/forum/topic/11568-universal-acdc-i-drugie-perl-skripty/

  • Мастер! 1
  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Очередной непонятный вылет...
[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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

_mapkeg_ прописанные в string_table_includes.xml файлы тоже заменял оригинальными?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

_mapkeg_ если ласт версия движка огср, то она не прощает ошибку с не закрытыми тегами (оригинальные файлы тоже приходиться править)

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

imcrazyhoudini это можно отключить в external.ltx (skip_shoc_xml_errors). Но да, лучше исправить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 02.01.2023 в 10:49, imcrazyhoudini сказал:

Pepel почему нельзя через сдк сделать?

Скриптами делали ещё в бородатые годы, а сейчас при всём инструментарии пользоваться скриптами...

т.е. Вы хотите сказать что удобнее компилировать через сдк? Или что? Я только способ знаю кроме скриптов - через сдк.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel Просто поставьте level changer на своей локации и телепортируйте к нему актёра.

Изменено пользователем Paracetamol

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel через сдк всё гораздо удобнее, нежели скриптами пилить (только если разработка не на каком-то финишном этапе)

 

а так человек выше сказал - прикладывайте файлы с изменениями

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, imcrazyhoudini сказал:

Pepel через сдк всё гораздо удобнее, нежели скриптами пилить (только если разработка не на каком-то финишном этапе)

сколько в среднем займет компилиляция оригинального кардона если я внесу только еще один переход с локации на локацию?

Вот мое железо. Система win7x64 Мать: ASRock N68C-GS4 FX, Проц: AMD FX8300, ОЗУ: 16GB, Видеокарта: Radeon RX550/550

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel так вы поправите спавн, а не геометрию, поэтому манипуляция будет длиться пару секунд

 

единственная заморочка будет с добавлением всех спавнов локаций (если локации все с оригинала будут), но в принципе проблем не должно возникнуть

  • Аплодисменты 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
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!

 

Урок смотрел ТУТ

памагите :`|

Изменено пользователем Pepel

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel проверь гейм вертексы, правильно ли вписал


Дополнено 5 минуты спустя
5 часов назад, Pepel сказал:

function esc_yantar()
        create_level_changer(6006, vector():set(-241,-19,-116), 14486, 8,
            1459,
            136667,

Ощущение, будто местами перепутаны

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
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, удаляйте его скриптом, тем самым не нарушая последовательность индексации.

 

Изменено пользователем Pepel

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel час реального времени максимум

 

попробуй число увеличить, я правда не уверен, что это поможет

 

допустим с 6001 на 20000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу