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

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

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

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

стоит отойти немного в сторону, и выясняются какие-то особенности

Разумеется, это всегда и везде так.

Иначе все было бы легким и простым. А так - интересно что-то делать.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Типовой конфиг статьи с описанием задания содержит какое-то неизвестное значение: article_type=task group="task_id/???".

 

Во всех действующих примерах значение после task_id = 0.
Если создать в описании задания ссылки на несколько статей с конфигом group="task_id/0", …/1, …/2, то вне зависимости от активной задачи выводится только статья, указанная для задачи 0.
Если убрать это значение совсем или указать число в несколько знаков, или указать строку "текст1/текст2/текст3", эффект тот же: статья полностью определяется через article_id без учета group – даже task_id указывать необязательно.
В классе SGameTaskObjective есть метод set_article_key(str), который вроде бы ссылается на это значение, но ни одного живого примера нет, а ввод чисел или строк таким методом никак не меняет статью в описании задания.
В движке есть вот такие действия при выводе статьи вида "описание задания" в КПК:

Spoiler
[xr_3da\xrGame\ui\UIEventsWnd.cpp]
void CUIEventsWnd::ShowDescription			(CGameTask* t, int idx)
	
		SGameTaskObjective& o		= t->Objective(0);
		
			if(o.article_key.size())
			{
				sprintf_s(need_group, "%s/%s", *t->m_ID, *o.article_key);		-- task_id/str
			}else
			{
				sprintf_s(need_group, "%s/%d", *t->m_ID, idx);				-- task_id/num
			}

			

					if( strstr(group.c_str(), need_group)== group.c_str() )
					{
						u32 sz			= xr_strlen(need_group);
						if ( group.size()== sz || group.c_str()[sz]=='/' )
							m_UITaskInfoWnd->AddArticle(&A);

 

 

Что это за значение и как его применять?

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

Шпаргалка

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

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

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

@DarkSnowder 
Какой стоит класс?
stalker или stalker_trader?
Нужен второй.

Так же - в логике вписал максимальный переносимый вес для него?

  • Полезно 2

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

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

@DarkSnowder , вот тут ещё посмотри: тынц, тынц. Параметры через "движок" работают.

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

всем прива

 

слушайте, а вынос логики гулага в отдельный файл с сылкой на него (как логика у НПС) не работает чтоль?

 

прописал гулагу вот такую логику

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

[logic]
cfg = scripts\logic_gulags\chernobyl\chern_lager_town.ltx

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

 

вроде как помню в слитом билде АМКII вся логика выносилась вне спавна, да и в ЧН/ЗП вся логика гулагов вне спавна была. Может не правильно логику указал?

 

Лучше сделать мод с 0, чем пытаться залатать багованный.

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

@DarkSnowder работает, но как-то не так регаешь, логика для гулагов в ltx файле регается в gulag_tasks.ltx

 

Если я конечно тебя правильно понял.

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

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

@imcrazyhoudini я про такую логику имею ввиду (точнее это не логика, а настройка)

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

[smart_terrain]
type = chern_lager_town
capacity = 19
communities = stalker

тута все параметры типа численности, группировки населения, тип лагеря, прочие функции..

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

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

@DarkSnowder такое в конфиг не вынести.

  • Нравится 1

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

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

Создал новую группировку по этому гайду http://stalkerin.gameru.net/wiki/index.php?title=Создание_новой_группировки#.D0.9F.D1.80.D0.BE.D0.B4.D0.B2.D0.B8.D0.BD.D1.83.D1.82.D1.8B.D0.B9_.D1.83.D1.80.D0.BE.D0.B2.D0.B5.D0.BD.D1.8C

При диалоге с раненым НПС такой вылет:

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

[error]Expression    : !phrase_dialog->m_PhraseVector.empty()
[error]Function      : CPhraseDialog::SayPhrase
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\PhraseDialog.cpp
[error]Line          : 140
[error]Description   : No available phrase to say, dialog[dm_hello_dialog]

Подскажите, пожалуйста, как пофиксить

Нашел: в config/misc файл dialog_manager. Добавил новый dm_intro_help для новой группировки

Изменено пользователем Twin peaks
  • Нравится 1
Ссылка на комментарий

Парни, привет. Возникла одна очень неприятная проблема при создании меню - когда я в конфиге ui_mm_load_dlg (меню загрузки сохранений) хочу изменить "x" на отрицательное число, то кнопки (btn_load, btn_delete,  btn_cancel), которые я перемещаю соотвественно влево, перестают работать. На них ничего не реагирует. Ни один клик. Прошу помощи у вас, господа. Что это за такое явление, как с ним бороться, что можно сделать с ним? По интернету и форуму лазил, ничего не нашел. Буду благодарен за ответ. Кусочек из конфига прилагаю к сообщению. Можете сами проверить в игре. 

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

        <btn_load x="-320" y="230" width="157" height="48">
            <texture>ui_button_main01</texture>
            <text font="graffiti22">ui_mm_load</text>
            <text_color>
                <e r="227" g="199" b="178"/> <t r="180" g="153" b="155"/> <d r="106" g="95" b="91"/> <h r="0" g="0" b="0"/>
            </text_color>
        </btn_load>
        
        <btn_delete x="-320" y="185" width="157" height="48">
            <texture>ui_button_main01</texture>
            <text font="graffiti22">ui_mm_delete</text>
            <text_color>
                <e r="227" g="199" b="178"/> <t r="180" g="153" b="155"/> <d r="106" g="95" b="91"/> <h r="0" g="0" b="0"/>
            </text_color>
        </btn_delete>
        
        <btn_cancel x="-320" y="275" width="157" height="48">
            <texture>ui_button_main01</texture>            
            <text font="graffiti22">ui_mm_cancel</text>
            <text_color>
                <e r="227" g="199" b="178"/> <t r="180" g="153" b="155"/> <d r="106" g="95" b="91"/> <h r="0" g="0" b="0"/>
            </text_color>
        </btn_cancel>    

 

"нᴀᴄᴛ᧐ящиʍ ʍ᧐дʍᴇйᴋᴇᴩ᧐ʍ ʍ᧐жᴇᴛ ᴄᴛᴀᴛь ᴛ᧐ᴧьᴋ᧐ ᴨ᧐иᴄᴛинᴇ ɸᴀнᴀᴛ ᴧюбиʍ᧐й иᴦᴩы." ©

xgeVogt.png

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

@CiberZold спасибо за пояснение! А есть метод, как с этим бороться? Или кнопки можно оставить только на x=0? Если есть какая-то лазейка, буду признателен за твою помощь.

"нᴀᴄᴛ᧐ящиʍ ʍ᧐дʍᴇйᴋᴇᴩ᧐ʍ ʍ᧐жᴇᴛ ᴄᴛᴀᴛь ᴛ᧐ᴧьᴋ᧐ ᴨ᧐иᴄᴛинᴇ ɸᴀнᴀᴛ ᴧюбиʍ᧐й иᴦᴩы." ©

xgeVogt.png

Ссылка на комментарий
25 минут назад, Dalarcsis сказал:

А есть метод, как с этим бороться?

а зачем бороться? поставь плюсовые координаты например 100, 100 и посмотри где у тебя кнопка, точнее область нажатия окажется и потом подгоняй её на свою текстуру кнопки на экране.

  • Согласен 1
Ссылка на комментарий
11 часов назад, CiberZold сказал:

поменяв в секции нужного нпс параметр биолог вид существа вместо species = human,

Мдаа... а теперь думаем, а где и для чего species используется. И на возможные последствия. И на цель наших телодвижений.

Хотим бессмертного NPC? Действуем.

 

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

@CiberZold Эхх... Так мне надо конкретно кнопку передвинуть максимально влево, чтобы она была на границе экрана (именно для этого я и юзал отрицательный x). В случае, если я указывают положительные координаты, кнопка просто уходит за экран с правой стороны. Я думал, что если указать больший x, то кнопка вытолкается слева, но такого не получилось. Она просто исчезает из поля зрения игрока. Есть какие-либо идеи или мой вопрос нереализуем?

"нᴀᴄᴛ᧐ящиʍ ʍ᧐дʍᴇйᴋᴇᴩ᧐ʍ ʍ᧐жᴇᴛ ᴄᴛᴀᴛь ᴛ᧐ᴧьᴋ᧐ ᴨ᧐иᴄᴛинᴇ ɸᴀнᴀᴛ ᴧюбиʍ᧐й иᴦᴩы." ©

xgeVogt.png

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

@Dalarcsis , в данном случае:

Скрытый текст
   <!-- родительский фрейм (окно) -->
    <!-- x,у,- его положение относительно 0,0 координат экрана -->
    <form x="415" y="168" width="560" height="460">
      <!-- смещение текстуры этого окна относительно его геометрической позиции -->
      <texture_offset x="..." y="..."/>
      <!-- сама текстура -->
      <texture>ui_menu_options_dlg</texture>
    ...
    <!-- положение всех дочерних элементов отсчитывается уже от этих координат "внутри" окна. -->
    <!-- вот тут и будем изменять их позицию -->
        <btn_load x="65" y="427" width="157" height="48">
            <texture>ui_button_main01</texture>
            <text font="graffiti22">ui_mm_load</text>
            <text_color>
                <e r="227" g="199" b="178"/> <t r="180" g="153" b="155"/> <d r="106" g="95" b="91"/> <h r="0" g="0" b="0"/>
            </text_color>
        </btn_load>
    ...    
    </form>

 

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

02.jpg

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

  • Спасибо 1
  • Нравится 1
  • Полезно 1
Ссылка на комментарий
5 часов назад, Dalarcsis сказал:

Так мне надо конкретно кнопку передвинуть максимально влево, чтобы она была на границе экрана (именно для этого я и юзал отрицательный x)

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

Поэтому ЛЮБЫЕ элементы, для которых вы хотите сохранить возможность взаимодействия, надо сохранять в рамках их родительских элементов. Если у вас сам родительский фрейм слишком справа, то его и двигать влево, а не кнопку.

  • Полезно 3

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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