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

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


Rolan

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

1 час назад, Winsor сказал:

... UIItemInfo.cpp.

Знаю.

2 часа назад, Winsor сказал:

броня CUIOutfitParams

Поиском в 1.0007rc1 такой класс не найден.

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


Ссылка на сообщение

Ладно, отбой...

Я уже понял, что ничего конкретного я не увижу. Всем спасибо....

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


Ссылка на сообщение
6 часов назад, Winsor сказал:

Движок не делает сдвиг элементов UI , вся разметка описана в конфигах xml.

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

 

В том самом CUIItemInfo::Init имеем:

if(uiXml.NavigateToNode("descr_list",0)) <--- это и есть тот самый конфиг UI-контрола описания предметов, выделенных кликом в инвентаре ?
{
  UIWpnParams = xr_new<CUIWpnParams>();
  UIArtefactParams = xr_new<CUIArtefactParams>();
  UIWpnParams->InitFromXml (uiXml);
  UIArtefactParams->InitFromXml (uiXml);
  
  UIDesc = xr_new<CUIScrollView>();
  AttachChild (UIDesc);
  UIDesc->SetAutoDelete (true);
  m_desc_info.bShowDescrText = !!uiXml.ReadAttribInt("descr_list",0,"only_text_info", 1);
  xml_init.InitScrollView (uiXml, "descr_list", 0, UIDesc);
  xml_init.InitFont (uiXml, "descr_list:font", 0, m_desc_info.uDescClr, m_desc_info.pDescFont);
}

в  CUIItemInfo::InitItem:

if(UIDesc)
{
	UIDesc->Clear(); VERIFY (0==UIDesc->GetSize());

	TryAddWpnInfo (pInvItem->object().cNameSect());
	TryAddArtefactInfo (pInvItem->object().cNameSect());

	if(m_desc_info.bShowDescrText)
	{
		CUIStatic* pItem = xr_new<CUIStatic>();
        pItem->SetTextColor (m_desc_info.uDescClr);
        pItem->SetFont (m_desc_info.pDescFont);
        pItem->SetWidth (UIDesc->GetDesiredChildWidth());
        pItem->SetTextComplexMode (true);
        pItem->SetText (*pInvItem->ItemDescription());
        pItem->AdjustHeightToText ();
      	UIDesc->AddWindow (pItem, true);
    }
  
  	UIDesc->ScrollToBegin();
}

В конфиге "config\ui\inventory_item.xml"(конкретно для инвентаря) смотрим:

 <descr_list x="12" y="223" width="298" height="140" always_show_scroll="0" left_ident="16">
   <font font="letterica16" r="240" g="217" b="182"/>
</descr_list>

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

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


Ссылка на сообщение
32 минуты назад, abramcumner сказал:

CScrollView - располагает элементы друг под другом.

Ага...

Добавил у себя(1.0007rc1) индикаторы для брони - сделал по образу и подобию оружейных. Все нормально, за исключением - при клике на бронике, текст описания налагается поверх индикаторов. Что я мог скопипастить из оружейных классов\ui-конфигов не так ? Уже неделю заглядываю в код и никак не соображу, чем добавленный мной код не гож движку...

Цитата

Смещение внутри CUIScrollView

Подскажите, в какой именно ф-ции ? Смотрел там уже ранее, не увидел. Здравой логикой понимаю(или надеюсь ?), что метод смещения должен быть универсален и не зависеть от того, что добавлено - т.е. в коде класса CUIScrollView не должно быть каких-то прямых проверок, что добавлено что-то связанное именно с CUIWpnParams или CUIArtefactParams ?

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


Ссылка на сообщение
20 минут назад, dsh сказал:

может ты как-нибудь не так добавляешь?

я ж написил, что было все сделано по образу и подобию оружейных индикаторов. Один в один, за исключением естественно названия класса и его наполнения, ну и в ui-конфиге чуток поправил под другое кол-во индикаторов.

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


Ссылка на сообщение
1 час назад, abramcumner сказал:

или в xml не тот размер прописал

Во, оно!

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

 

  • Сочувствую 1

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


Ссылка на сообщение
(изменено)

Два вопроса:

1). в xr_src\xrCore\_color.h

IC SelfRef lerp(SelfCRef c1, SelfCRef c2, T t)
{
	T invt = 1.f-t;
	r = c1.r*invt + c2.r*t;
	g = c1.g*invt + c2.g*t;
	b = c1.b*invt + c2.b*t;
	a = c1.a*invt + c2.a*t;
	return *this;
}

Пример использования:

void CUIProgressBar::UpdateProgressBar()
{
	..........................
	if(m_bUseColor)
	{
		Fcolor curr;
		curr.lerp(m_minColor,m_maxColor,fCurrentLength);
		m_UIProgressItem.GetStaticItem()->SetColor(curr);
	}
}

Что делает эта ф-ция? Если я правильно понял - это уменьшение яркости полоски прогресса при приближении к мин. значению ?

 

2). А что это ?

  UI()->PushScissor(rect);
  m_UIBackgroundItem.Draw();
  UI()->PopScissor();

В чем смысл ?

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

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


Ссылка на сообщение

Подскажите, кто в курсе для ТЧ 1.0007rc1: для оружия, откуда брать боеприпасы для зарядки\перезарядки - это где-то в базовом классе прописано или раскидано по разным классам. Где конкретно ?

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


Ссылка на сообщение

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

  • Согласен 1

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


Ссылка на сообщение
13 часов назад, Капрал Хикс сказал:

Параметр telepatic_protection (пси-защита) в конфигах брони движком не используется?

CWound* CEntityCondition::ConditionHit(SHit* pHDS)
{
....
....
case ALife::eHitTypeTelepatic:
        hit_power *= m_HitTypeK[pHDS->hit_type];
        ChangePsyHealth(-hit_power);
        bAddWound = false;
        break;

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

  • Спасибо 1

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


Ссылка на сообщение
(изменено)
В 02.03.2018 в 10:33, Капрал Хикс сказал:

Возможно ли динамическая смена иконки ГГ

Если править движок - все возможно...

 

И че не так в моем ответе, с учетом названия раздела форума ? 

Изменено пользователем AndreySol
  • Нравится 1
  • Не нравится 1

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


Ссылка на сообщение

@_ХоЗаР_ 

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

Насчет введения в движок "объема" для рюкзака - тут уже будет посложнее добавления слота...

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


Ссылка на сообщение

Такой вопросец: как из движковой ф-ции в скрипты вернуть как результат работы этой ф-ции луашную таблицу? Если можно, пример кода...

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


Ссылка на сообщение
(изменено)

@abramcumner 

А если нужно более мудреную таблицу ? Ну типа:

lua_table[1] = {float, string, float, string, string}

lua_table[2] = {float, string, float, string, string}

....

lua_table[10] = {float, string, float, string, string}

или

lua_table[string] = {float, string, float, string, string}

lua_table[string] = {float, string, float, string, string}

....

lua_table[string] = {float, string, float, string, string}

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

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


Ссылка на сообщение
(изменено)

@Graff46 

Фрагмент из оригинала:

<!---------------------------MONOLIT SPECNAZ---------------------->
  <specific_character id="aes_Monolit_specnaz" team_default = "1">

...

...

        <start_dialog>hello_dialog</start_dialog>
        <actor_dialog>esc_stalker_talk_level</actor_dialog>
  </specific_character>

Что не так ? Или я не правильно вопрос понял ?

 

Теперь такой вопрос: подключить к ТЧ 1.0007rc1 более новый рендер, к примеру DX10.

Во всяких модах попадаются кроме xrRender_R1.dll и xrRender_R2.dll библиотеки с большей цифрой, это как раз и есть более современные рендеры ? Если взять эту готовую библиотеку и внести в исходники все необходимое для ее подключения - это сложно или как ? Каков порядок действий, кому не лень, подскажите...

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

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


Ссылка на сообщение

@Suhar_, В ТЧ, в  EntityCondition.h есть переменная

    CEntityAlive    *m_object;

Из названия, думаю, понятно для чего она. В коде можно проверить

    if (m_object->ID() == 0)

объект с ID'ом "0" у нас всегда один - актер. Думаю в ЗП эта переменная осталась...

  • Спасибо 1

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


Ссылка на сообщение
22 минуты назад, Den “Angry Wolf” Koslov сказал:

Вопрос такой: как инициализировать эти "идентификаторы"?

Где нить в начале UIActorMenu.cpp попробовать добавить

#include "string_table.h"

Цитата

В файле Inventory.cpp есть такая переменная

Это функция...

gamedata\scripts\xr_corpse_detection.script - Открыть этот скрипт-файл на 337 строке и разбираться с кодом.

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


Ссылка на сообщение
8 часов назад, AndreySol сказал:

gamedata\scripts\xr_corpse_detection.script - Открыть этот скрипт-файл на 337 строке и разбираться с кодом.

 

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


Ссылка на сообщение
В 04.06.2018 в 20:07, Graff46 сказал:

+ X-Ray extensions

Я не шарю в этом вопросе и видимо предложу глупость, но может стоит попробовать пропатчить движок до той версии X-Ray extensions, что у Вас используется, но под Win10(и лучше той сборки, что у тестера).

 

У меня такой вопрос: кто подскажет, в каком классе(классах) смотреть то, что касается взаимодействия актера с шейпами объектов(с аномалиями\рестрикторами\переходами) ?

 

 

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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