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

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


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

На ЧН, как известно, самая деревянная система квестов.

 

Вопрос - как можно реализовать (с примером желательно, а то и вовсе готовую) систему разделения квестов на подквесты как в ТЧ/ЗП?

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

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

В ТЧ можно было спавнить и удалять предметы через стори ид и спавн ид.
 

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

function delete_pribor()
   local lc = alife():story_object(story_ids.dead_zapiska)
   alife():release(lc, true)
end

function spawn_pribor()
   local spawn_id = alife():spawn_id(spawn_story_ids.zapiska)
   alife():create(spawn_id)
end


В ЧН не работает.

Есть аналог какой?

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

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

Объект: Кордон, Сидорович, esc_trader, sid = 410, spawn_id = 3026.

Удаление по указанному выше шаблону: успешно.

Переспавн: нет реакции уже на стадии чтения spawn_id(sid). Более того, до перезагрузки сбиваются все последующие скрипты, привязанные на тот же триггер (в моем случае расход предмета).

При прямом вводе alife():create(3026) скрипты не сбиваются, но и спавна нет.

 

Проверка в ТЧ: story_id = 3, spawn_id = 2263, удаление успешно, переспавн работает только при прямом вводе значения spawn_id – при чтении spawn_id(sid) зависание скриптов.

 

Методы в ЧН точно не удалены и код в ТЧ/ЧН у них полностью одинаковый. Ждем следующего знатока…

Spoiler
[xrGame\alife_simulator_script.cpp]
void CALifeSimulator::script_register			(lua_State *L)
			.def("create",					&CALifeSimulator__create)
			
			.def("spawn_id",				&CALifeSimulator__spawn_id)
			

CSE_ALifeDynamicObject *CALifeSimulator__create	(CALifeSimulator *self, ALife::_SPAWN_ID spawn_id)
{
	const CALifeSpawnRegistry::SPAWN_GRAPH::CVertex	*vertex = ai().alife().spawns().spawns().vertex(spawn_id);
	THROW2								(vertex,"Invalid spawn id!");

	CSE_ALifeDynamicObject				*spawn = smart_cast<CSE_ALifeDynamicObject*>(&vertex->data()->object());
	THROW								(spawn);

	CSE_ALifeDynamicObject				*object;
	self->create						(object,spawn,spawn_id);

	return								(object);
}

ALife::_SPAWN_ID CALifeSimulator__spawn_id		(CALifeSimulator *self, ALife::_SPAWN_STORY_ID spawn_story_id)
{
	return								(((const CALifeSimulator *)self)->spawns().spawn_id(spawn_story_id));
}

 

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

Шпаргалка

Ссылка на комментарий
57 минут назад, Norman Eisenherz сказал:

spawn_id = 3026

Что подразумевает под собой в твоём видении spawn_id?

Ибо в оригинале не используется файл game_spawn_story_id.ltx

Может ты сам назначил его, не знаю. Мало ли.

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

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

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

@Norman Eisenherz ну я имел ввиду тот, что назначается вручную. Думаю в них есть разница. Или нет. Не знаю.

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

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

Вот старый пост, в котором указан порядок "номер в [all.spawn], строковое обозначение в [game_spawn_story_ids.ltx]": https://www.amk-team.ru/forum/topic/7450-spravochnik-po-funkciyam-i-klassam/page/23/#comment-803687

 

У тебя в обоих местах новые spawn_id прописаны?

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

Шпаргалка

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

@Norman Eisenherz я по этому посту и делал эти функции.

Как понять в обоих местах?
Я записал номер в game_spawn_story_ids.ltx и назначил его предмету через СДК. Собрал спавн, закинул в игру да и всё собственно.

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

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

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

В архиве и в конфиге; по описанию у тебя так и есть. Может, формат записи в конфиге неправильный? Процитируй [game_spawn_story_ids.ltx].

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

Шпаргалка

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

@Norman Eisenherz 
 

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

[spawn_story_ids]
    1 = "yan_pribor"

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

[spawn_story_ids]

    1 = "zapiska"

 

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

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

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

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

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

Шевроны "ранг" или "лого"? В любом случае, это общее окно [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 сказал:

"лого"

Лого.

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

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

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

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

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

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

Шпаргалка

Ссылка на комментарий
36 минут назад, Norman Eisenherz сказал:

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

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

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

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

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

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

 

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

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

Шпаргалка

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

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

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

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

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

 

Тот же тег 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

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

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

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

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

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

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

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

Войти

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

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

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