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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

[CS] Ковыряемся в файлах


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

@Norman Eisenherz 
 

Скрытый текст

[spawn_story_ids]
    1 = "yan_pribor"

Скрытый текст

[spawn_story_ids]

    1 = "zapiska"

 

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

Кто знает, где указываются шевроны для группировки?

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

Шевроны "ранг" или "лого"? В любом случае, это общее окно [configs\ui\talk_character.xml] с движковым наполнением:

Spoiler
[xrGame\ui\UICharacterInfo.cpp]
void CUICharacterInfo::InitCharacterInfo(Fvector2 pos, Fvector2 size, CUIXml* xml_doc)
	…
	Init_IconInfoItem( *xml_doc, "rank_icon",           eRankIcon     );
	…
	Init_IconInfoItem( *xml_doc, "commumity_icon",      eCommunityIcon     );

void CUICharacterInfo::InitCharacter(u16 id)
	…
	if ( m_icons[eRankIcon        ] ) { m_icons[eRankIcon        ]->InitTexture( chInfo.Rank().id().c_str() ); }
	…
		if ( m_icons[eCommunityIcon   ] ) { m_icons[eCommunityIcon   ]->InitTexture( community1 ); }
		…
			strcat_s( community1, sizeof(community1), "_icon" );
			…
			strcat_s( community2, sizeof(community2), "_wide" );

 

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

1 час назад, Norman Eisenherz сказал:

"лого"

Лого.

То бишь я не смогу актёру дать своё лого без правок движка?

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

Да. В пределах группировки иконки для всех одинаковые. Дальше или делать новую группировку, или выводить свой статик поверх имеющегося в диалоге и инвентаре.

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

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

36 минут назад, Norman Eisenherz сказал:

или выводить свой статик поверх имеющегося в диалоге и инвентаре.

В ГГ его и нет. Лишь если он вступит в группировку.

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

Если картинка постоянная, то в своем инвентаре ее можно вывести поверх движковой иконки тегом auto_static.

С диалогом сложнее: описание окна используется для обоих участников – тут только ссылаться на активный диалог и ставить свое окно поверх.

 

Еще раз, в чем задача: выводить постоянную картинку вместо лого группировки или выводить картинку действующей группировки, но с вензелями?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

@Norman Eisenherz выводить лого группировки для группировки ГГ,
Поясняю:
ГГ состоит в своей группировке (actor), у него нет своего лого. Я хочу чтобы у него было лого одиночек. Якобы он так же одиночка, но тем не менее не состоит в группировке stalker.

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

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

 

Тот же тег auto_static, привязка к базовому окну или первой текстуре и наложение движкового окна community_icon поверх, если ГГ вступил в какую-либо группировку.

Для расчета координат было бы проще использовать вложенные окна actor_ch_info, но в них (и еще много где) тег auto_static не учитывается.

 

Ниже код для конфигов 5:4, в 16:9 править аналогично. Иконки какие надо подставишь.

Spoiler
• инвентарь
[configs\ui\actor_menu.xml]
  <main x="0" y="0" width="1024" height="768">
    <auto_static x="299" y="0" width="725" height="768">
      <texture>ui_inGame2_inventory_back</texture>
    </auto_static>
(+) координаты actor_ch_info + community_big_icon
	<auto_static x="751" y="59" width="106" height="46" stretch="1" >
		<texture> ui\new_logo_wide </texture>
	</auto_static>

• диалог
[…\talk.xml]
	<right_character_icon x="803" y="0" width="224" height="197">
		<texture>ui_actor_back</texture>
(+) координаты community_icon из [talk_character.xml]
		<auto_static x="15" y="73" width="48" height="48" stretch="1" >
			<texture> ui\new_logo </texture>
		</auto_static>

• статистика
[…\pda_ranking.xml]
	<background x="35" y="89" width="955" height="620" vertical="1">
		<texture>ui_pda2_fr2</texture>
(+) координаты actor_ch_info + community_big_icon - background (и ширина чуть меньше)
		<auto_static x="181" y="51" width="118" height="56" stretch="1" >
			<texture> ui\new_logo_wide </texture>
		</auto_static>

• исходные иконки для справки
[…\textures_descr\ui_pda2_noice.xml]
community _wide		125x54
community _icon		56x54

 

 

  • Спасибо 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

@Norman Eisenherz исходя из кода под спойлером могу предположить такое:
Движок берёт название группировки (dolg например), ищет в xml _icon и _wide + название группировки и отображает картинку, верно?

А почему в ГГ такого нет?

У него судя по всему так же есть подобное:

ui_pda2_noice.xml:
 

Скрытый текст

    <texture id="dolg_wide"      x="1"   y="793" width="125" height="54" />

    <texture id="merc_wide"      x="1"   y="956" width="125" height="54" />
    <texture id="killer_wide"    x="1"   y="956" width="125" height="54" />
    
    <texture id="freedom_wide"   x="128" y="956" width="125" height="54" />
    <texture id="stalker_wide"   x="255" y="956" width="125" height="54" />
    <texture id="trader_wide"    x="255" y="956" width="125" height="54" />
    
    <texture id="bandit_wide"    x="382" y="956" width="125" height="54" />
    <texture id="csky_wide"      x="509" y="956" width="125" height="54" />
    <texture id="renegade_wide"  x="636" y="956" width="125" height="54" />
    <texture id="monolith_wide"  x="751" y="847" width="125" height="54" />
    <texture id="army_wide"      x="889" y="847" width="125" height="54" />
    <texture id="ecolog_wide"    x="889" y="781" width="125" height="54" />
    <!--temp -->
    <texture id="actor_wide"     x="255" y="956" width="125" height="54" />
   
    <!-- communities -->
    <texture id="dolg_icon"      x="36"  y="793" width="56" height="54" />

    <texture id="merc_icon"      x="36"  y="956" width="56" height="54" />
    <texture id="killer_icon"    x="36"  y="956" width="56" height="54" />
    
    <texture id="freedom_icon"   x="162" y="956" width="56" height="54" />
    <texture id="stalker_icon"   x="289" y="956" width="56" height="54" />
    <texture id="trader_icon"    x="289" y="956" width="56" height="54" />
    
    <texture id="bandit_icon"    x="416" y="956" width="56" height="54" />
    <texture id="csky_icon"      x="543" y="956" width="56" height="54" />
    <texture id="renegade_icon"  x="670" y="956" width="56" height="54" />
    <texture id="monolith_icon"  x="785" y="847" width="56" height="54" />
    <texture id="army_icon"      x="922" y="847" width="56" height="54" />
    <texture id="ecolog_icon"    x="923" y="781" width="56" height="54" />
    <!--temp -->
    <texture id="actor_icon"     x="289" y="956" width="56" height="54" />


При чём со сталкерами одинаковое, но не отображает чего-то.

P.S. Хочется по нормальному сделать, ибо авто-статиками малость кривовато выходит.

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

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

2 hours ago, imcrazyhoudini said:

кривовато выходит

При правильных координатах новое окно должно полностью перекрываться движковыми иконками.

 

Для иконок ГГ в движке есть проверка "группировка / actor" с отметкой "не равно", хотя именно сам код должен вернуть true при совпадении значений – здесь без лога неясно, как выглядит первое значение и почему проверка открывает все иконки, кроме actor_:

Spoiler
	if ( CUICharacterInfo::get_actor_community( &our_comm, &enemy ) )
	{
		if ( xr_strcmp( our_comm, "actor" ) ) // !=
		{
			strcpy_s( community1, sizeof(community1), our_comm.c_str() );
			strcat_s( community1, sizeof(community1), "_icon" );

 

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

@Norman Eisenherz есть варик как на движковом уровне поправить это?
Или хотя бы куда копать - я бы передал это своему человеку.

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

В движке надо заткнуть эту проверку и сразу переходить к выводу иконок.

 

Попроси человека сначала вывести в лог значения our_comm и xr_strcmp для пустой группировки и любой другой: по коду получается "вывести иконку, если our_comm совпадает с actor" (xr_strcmp = true), а по результату работы как раз наоборот – я не вижу, где делается инверсия.

 

Почитал чуть выше: можно сократить проверку "если объект не ГГ и не требуется исключать группировку", а весь код ниже убрать – иконки будут выведены одним способом для всех сталкеров.

    if ( Actor()->ID() != m_ownerID && !ignore_community( comm_id ) )

    if ( !ignore_community( comm_id ) )

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

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

20 часов назад, Norman Eisenherz сказал:

Почитал чуть выше: можно сократить проверку "если объект не ГГ и не требуется исключать группировку", а весь код ниже убрать – иконки будут выведены одним способом для всех сталкеров.

    if ( Actor()->ID() != m_ownerID && !ignore_community( comm_id ) )

    if ( !ignore_community( comm_id ) )

Оказывается, всё намного проще. Достаточно было удалить/закомментировать эту проверку.image.png
Ну, и через Msg отлавливается название иконки актора, которая будет использоваться.image.png
В итоге, мы видим иконку группировки actor(которая не принадлежит ни к какой другой группировке, но ей по дефолту прописана иконка вольных). Можно для остальных группировок actor_*community_name* назначать свои иконки.image.png
Если кто упустил, как вообще включить показ иконки без правок движка, то в ноде actor_ch_info и/или partner_ch_info прописываем строку:

<commumity_icon      x="13" y="73" width="40" height="48" stretch="1"/>

Координаты и размеры задаём произвольные. Удачи!)

Изменено пользователем Hrust
Уменьшил цитату.
4 hours ago, Hrust said:

всё намного проще

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

Spoiler
	if ( Actor()->ID() != m_ownerID && !ignore_community( comm_id ) )
	{
		if ( m_icons[eCommunityIcon   ] ) { m_icons[eCommunityIcon   ]->InitTexture( community1 ); }
		if ( m_icons[eCommunityBigIcon] ) { m_icons[eCommunityBigIcon]->InitTexture( community2 ); }
		return;
	}

не прочитает иконки сразу для всех сталкеров, включая ГГ, если удалить проверку Actor()->ID() != m_ownerID? По-моему, при комментировании проверки if ( xr_strcmp( our_comm, "actor" ) ) получается повторное чтение иконок: сначала только для NPC, потом только для ГГ.

 

4 hours ago, Hrust said:

включить показ иконки без правок движка

Скопировал <community_big_icon>, переименовал в <community_icon> при тех же координатах – пустое место по умолчанию как в инвентаре, так и в статистике.

В диалоге иконка как раз квадратная и один шаблон окна на двоих – там такой способ не годится, хотя именно в диалоге добавление второй иконки через блок <community_big_icon> работает.

 

 

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

@Norman Eisenherz, ну, без правки движка возможно лишь для партнёра оформить показ иконки группировки, а для актора, к сожалению, нет. Насчёт комментирования одной строки - будет полезно для врезчиков.

Цитата

получается повторное чтение иконок: сначала только для NPC, потом только для ГГ.

Тут не чтение происходит, а установка соответствующей текстуры, и с мною предложенным вариантом, будет для обоих участников разговора ставится, а не для одного партнёра, как это было ранее. Всё же, ещё подумаем насчёт этого при проблемах с производительностью. Хотя, UI изменения зачастую не дают каких-либо проблем с этим.
Делал как-то рофло-аддон, где апдейт всех параметров актора происходил постоянно, три кадра потерял всего лишь.:biggrin:

Каким образом можно назначить квесты принеси-подай обычному НПС или как каким должен быть НПС чтобы у него появились такие квесты?
В ЧН они были например у лидеров отряда - принести каменный цветок, ПМ наградной, и подобное.

Я прописал в tm_yantar.ltx такое:
 

Скрытый текст

[yan_recover_item_1]   ;глаз плоти
type = recover_item
task_type = additional
name = yan_recover_item_1_name
text = yan_recover_item_1_text
distanse = 100
prior = 2
faction = ecolog
target_cond = {=actor_on_level(l01_yantar) -yan_recover_item_1_done} true, false
on_init = %+yan_recover_item_1_done%
requested_items = mutant_flesh_eye
community_relation_delta_complete = 300
reward_money = {~20} 1500, {~50} 1250, 1000
auto_faction = true

Но квест не появился.

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

• название карты yantar (в ТЧ был формат l#_name, но даже так номер не тот);
• нет записи target_npc_or_box_name = … (любой контейнер, можно повторить уже задействованный);
• со сталкерами после исправлений работает, с Сахаровым нет (у него в целом нет диалога о подработке)

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

8 часов назад, Norman Eisenherz сказал:

• название карты yantar (в ТЧ был формат l#_name, но даже так номер не тот);

У меня такой же формат карт, и название локации верное.

 

8 часов назад, Norman Eisenherz сказал:

нет записи target_npc_or_box_name = … (любой контейнер, можно повторить уже задействованный);

С этим соглашусь, нужно указывать цель как выяснилось.
Для этого типа более подойдёт bring_item, но в таком случае нет уникального описания диалога.

8 часов назад, Norman Eisenherz сказал:

с Сахаровым нет (у него в целом нет диалога о подработке)

В ЧН выдают такие квесты лишь командиры отрядов.

Научился спавнить НПС в смартах, Сахаров стал лидером, квест уникальный появился, но потом выяснилось что НПС может выдать квест лишь один раз, что не подходит.
Уровень циклических квестов с ТЧ здесь не повторить как понимаю.

То сделал подобие цикличек через диалоги.

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

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

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

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

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

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

Войти

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

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

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