Перейти к контенту
Rolan

Редактирование движка X-Ray

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

0023:0835392D xrRender_R4.dll

[error][ 298] : Слишком много попыток занесения события для семафора.

На все эти описания можно смело забивать - это выводится результат работы последней вызванной WinApi функции. Движок при своей работе не вызывает winapi. Конкретно эта ошибка вообще могла остаться еще со старта игры от проверки запуска нескольких копий.
  • Спасибо 2
  • Полезно 2

Подарки

  • Ссылка на комментарий

    Гм, а может кто-нибудь, у кого все под руками, глянет, как именно, по каким условиям, неписи забывают своего best_enemy() ? Ну и best_danger() ?

     

    в смысле, не просто поменять одного на другого, а вообще забыть ?

    Или "какой-нибудь враг найдется всегда" ?

    Изменено пользователем Dennis_Chikin
    Ссылка на комментарий

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

     

    Подробное изложение вопроса:

     

     

    Здесь идет считывание <phrase_list> или <init_func>.

    void CPhraseDialog::load_shared	(LPCSTR)
            ...
    	//заполнить граф диалога фразами
    	data()->m_PhraseGraph.clear();
    
    	XML_NODE* phrase_list_node = pXML->NavigateToNode(dialog_node, "phrase_list", 0);
    	if(NULL == phrase_list_node){
    		LPCSTR func = pXML->Read(dialog_node, "init_func", 0, "");
    
    		luabind::functor<void>	lua_function;
    		bool functor_exists = ai().script_engine().functor(func ,lua_function);
    		THROW3(functor_exists, "Cannot find precondition", func);
    		lua_function	(this);
    		return;
    	}
            ...
    

    Вызывается эта функцию отсюда:

    void CPhraseDialog::Load(shared_str dialog_id)
    {
    	m_DialogId = dialog_id;
    	inherited_shared::load_shared(m_DialogId, NULL);
    }
    

    Эта в свою очередь отсюда:

    bool CPhraseDialogManager::AddAvailableDialog(shared_str dialog_id, CPhraseDialogManager* partner)
    {
    //	PHRASE_DIALOG_INDEX dialog_index =  CPhraseDialog::IdToIndex(dialog_id);
    	if(std::find(m_CheckedDialogs.begin(), m_CheckedDialogs.end(), dialog_id) != m_CheckedDialogs.end())
    		return false;
    	m_CheckedDialogs.push_back(dialog_id);
    
    	DIALOG_SHARED_PTR phrase_dialog(xr_new<CPhraseDialog>());
    	phrase_dialog->Load(dialog_id);
            ...
    

    Она в свою очередь: 

    void   CActor::UpdateAvailableDialogs	(CPhraseDialogManager* partner)
    

    Могу и далее расписать стек вызовов, но смысла не вижу, т.к. сам ничего не нашел... Суть в том что, граф фраз строится один раз, и дальше обновляются все фразы в этом графе на доступность для произношения. Вопрос: Каким образом можно обновлять и граф фраз?

     

     

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

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

     

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

    Изменено пользователем Карлан
    Ссылка на комментарий

    Всем привет. В ЗП у ПДА есть такая возможность - если закрыть его и открыть снова, то будет открыта последняя вкладка. Что именно отвечает за это?

    И вопрос вдогонку - как принудительно активировать определенную вкладку?

    К20

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

    Всем привет, я тут на просторах интернета нашел статейку повествующую о некотором билде Метро 2033 заделаном на модифицированном X-Ray'ее, даже ссылка на билд есть и

    есть. Интересно из него можно что полезного получить?
    • Нравится 1
    Ссылка на комментарий

    @Дизель, Я сам архив с билдом не качал, но просматривал его содержимое на Яндекс диске, структура файлов в папке content аналогична геймдате в сталкере, только в папке anims есть неизвестные мне файлы с форматом *trk

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

    @Дизель, это не микс, это почти чистый X-Ray, приблизительно между 1.0007 и 1.5. Так сказать, 1.3. Даже эффекты почти совпадают.

    Солидарен с @Earth2Space - там нет ничего интересного.

    Добавлено RayTwitty,

    Движок метро имеет очень отдаленное отношение к сталкерскому, говорить что это "почти чистый х-рей" в корне неправильно.

    • Не согласен 2
    Ссылка на комментарий

    Всем привет. В ЗП у ПДА есть такая возможность - если закрыть его и открыть снова, то будет открыта последняя вкладка. Что именно отвечает за это?

    И вопрос вдогонку - как принудительно активировать определенную вкладку?

    Вопрос закрыл. За это отвечает проверка

    if ( !m_pActiveDialog ) в UIPdaWnd.cpp

    • Полезно 2

    К20

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

    Такой вопрос у меня появился. Известно, что X-RAY считывает некоторые ресурсы (XML, текстуры и др.) в самом начале запуска программы (когда мы видим заставки), а некоторые другие ресурсы при загрузке уровня. Так вот если, мы хотим изменить некоторые ресурсы или их параметры в "горячем режиме" (во время "работы" игры) которые прогружаються с запуском программы, то что бы увидеть изменения в игре нам понадобиться полностью выйти из игры и зайти снова притом всякие действия вида: vid_restart 1 или перезагрузка локации нам не помогут. Возможно ли движковыми правками сделать перечитывание игрой оных ресурсов не выходя из игры, например скриптовой ф-цией (и) или консольной командой?


     

     

    если руки прямые.
    Вот в этом главная проблема... Изменено пользователем Graff46
    Добавлено RayTwitty,

    Ну текстуры перезагружать научились ведь, так что остальное тоже можно, если руки прямые.

    • Полезно 1
    Ссылка на комментарий

    @Graff46, да, вполне возможно, и скорость кстати говоря выше ожидаемой, я себе сделал несколько функций которые перегружает и ltx и xml, местами сделал нормально, но что-бы все сделать по хорошему надо там подольше посидеть, а мне без острой надобности пока. Я тут, к примеру, когда-то писал о пространстве для работы со строками, которое я себе добавил, вот по аналогии можно с чем угодно поступить в подобном роде. Но в некоторых местах это будет весьма нетривиальное занятие.


    вот тут кое-что можно прочесть http://pastebin.com/dXjwaFLv, в принципе по вектору развития не много прибавилось, сейчас в основном работаю над оптимизацией того что есть, то есть убираю все уродские скриптовые костыли с помощью движка, количество ВСЕХ скриптов уже сейчас меньше чем в среднестатистическом глобальнике, то есть вся обвязка уже достаточно ясно видна, хоть и есть еще около 10 кандидатов на ликвидацию :).

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

     

     

    Причину бага с глитчами камеры в ЗП я так найти не смог.

    Такова селяви.

     

    И глитчится она, к слову, не только при перезарядке, это если тебе скажут еще к чему-нибудь ее прикрутить ;).

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

     

     

    И глитчится она, к слову, не только при перезарядке, это если тебе скажут еще к чему-нибудь ее прикрутить

    Баг происходит, когда заканчивается один эффектор при активности другого. Т.е. если минимум два эффектора активны.

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

    Я стесняюсь спросить о напрашивающемся выводе. В своем время поимел дивных впечатлений от этих камэффектов которые глитчили камеру так что было ощущение что я в аномалию попал.

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

     

    Проверить баг просто: перезаряжаемся и стрефимся

    Да уже поднадоело это передёргивание камеры при перезарядке. Может и вправду уже кто-то исправил?

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

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

    Комментарии могут оставлять только зарегистрированные пользователи

    Создать аккаунт

    Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

    Зарегистрировать новый аккаунт

    Войти

    Есть аккаунт? Войти.

    Войти
    • Недавно просматривали   0 пользователей

      Ни один зарегистрированный пользователь не просматривает эту страницу.

    AMK-Team.ru

    ×
    ×
    • Создать...