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

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


Rolan

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

  16.11.2017 в 17:11, dsh сказал:

т.к. для этой локации не указаны texture и bound_rect в game_maps_single.ltx

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

К слову, они в любом случае назначаются, даже если не указаны. Если не указаны, текстурой назначается пустышка ui_nomap2, а bound_rect как (-10000.0f,-10000.0f,10000.0f,10000.0f). Но нельзя назначать текстуру без bound_rect.

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


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

В скролл-баре (на ЧН) обнаружил некую особенность, что для широкоформатного разрешения габариты (ширина) этого самого бара и его подложки изменяются в конфиге текстуры только тогда, если она обозначена с окончанием на _16. В противном случае изменение размеров текстуры в конфиге изменений не внесет, похоже двиг их вообще в этом случае не считывает и применяет какие-то базовые. Я не про файл .xml который _16 и который цепляется автоматом на 16:9, а про указанное в нем название текстуры. И почему-то только для скролл-бара это происходит. И никак концы не найду, все перекопал. Кто-нибудь знает, что за чудеса?

 

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

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


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

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

  • Нравится 1

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


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

Поменять - легко, но придется возиться с перерисовыванием текстуры интерфейса под новые слоты.

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


Ссылка на сообщение
  08.12.2017 в 16:06, dsh сказал:

Вон там за деревом здоровая фигня до неба. Это растянутый труп. На вершине может быть, например, рука.

А в движке вертекстные координаты модели в short хранятся или во float переделаны (класс CSkeletonX_ext)? Если второе, то скорее всего из-за этого. Рекомендую обратно на short переделать, проблема наверняка исчезнет.

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

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


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

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

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

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


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

А причем тут движок? В zone_map.xml настраивается и по текстурам.

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


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

У меня класс CSE_ALifeInventoryItem под ЧН/ЗП переделан, а в модуле пакетов в net_cse_alife_inventory_item изменения я не внес... Сейчас модуль переделал, заработало. Тьфу-тьфу.

Там скорее всего не так как нужно пакеты писались и из-за этого сбоило (вообще не писались).

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


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

В НЛС 6 делали круглую карту и с круглой стаминой, и без движка (сорцов тогда и не было). Но да, в ЗП сама карта обрезается в круг движком (правда, все равно криво, ромбовидно), в ТЧ/ЧН вроде такого не сделать. Нужно попробовать в сторону WorkingArea копать (в ЗП), может там обрезается, точно не могу сказать.

А шумность/заметность в ЗП вообще никакого отношения к миникарте не имеет, они лишь аттачатся к ней, а сами по себе рисуются классом CUIMotionIcon, который, кстати, в ЗП значительно переделан.

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

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


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

А попробуй не спавнить еду и тут же применять к ней, а к примеру положить ее в ящик из своего инвентаря и применить пакет. В этом случае сразу изменится? У тебя может спавн клиентского объекта не успевает отработаться.

И попробуй принудительно после спавна вызывать из скриптов Level.net_Update(), предварительно экспортировав (возможно понадобится еще и Level.on_Frame и alife():update()).

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

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


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

Это лучше делать в ChangeCondition:

 

void  CInventoryItem::ChangeCondition(float fDeltaCondition)
{
 m_fCondition += fDeltaCondition;
 clamp(m_fCondition, 0.f, 1.f);

}

 

заменить на

 

void  CInventoryItem::ChangeCondition(float fDeltaCondition)
{
 m_fCondition += fDeltaCondition;
 clamp(m_fCondition, 0.f, 1.f);
 auto se_obj = object().alife_object();
 if (se_obj)
 {
  CSE_ALifeInventoryItem *itm = smart_cast<CSE_ALifeInventoryItem*>(se_obj);
  if (itm)
   itm->m_fCondition = m_fCondition;
 }
}

Тогда да, если у тебя там этого нет, дело было в этом. А net_Spawn трогать не желательно, иначе это лишние проверки и лишние тормоза. У тебя ведь set_condition после передачи пакета применяется?

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

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


Ссылка на сообщение
  31.12.2017 в 18:37, dsh сказал:

Пока я не сделал вышеописанное изменение, консервы в инвентаре создавались новенькими

Вообще странно. У меня никаких проблем на старом коде нет, так что дело скорее всего в чем-то другом. Может у тебя с CSE_ALifeItemEatable что-то не так?

 

Да и новоиспеченный код

	auto se_obj = object().alife_object();
	if ( se_obj ) {
		CSE_ALifeInventoryItem *itm = smart_cast<CSE_ALifeInventoryItem*>( se_obj );
		if ( itm ) {
			m_fCondition = itm->m_fCondition;
		}
	}

по сути соответствует

CSE_ALifeInventoryItem			*pSE_InventoryItem = smart_cast<CSE_ALifeInventoryItem*>(e);
	if (!pSE_InventoryItem)			return TRUE;

	//!!!
	m_fCondition = pSE_InventoryItem->m_fCondition;

т.е. мы два раза делаем одно и то же. Разве нет?

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

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


Ссылка на сообщение
  03.01.2018 в 18:57, dsh сказал:

Похоже, что нет. В net_Spawn() передается CSE_Abstract, а в нем нет измененного condition, там 1.0. Я же и пишу, что кто-то пытался сделать, но то-ли даже не проверял, то-ли проверил и не осилил сделать рабочее.

Не, вру. У меня на нлс-шной скриптовой базе такая же ерунда, что и у тебя. Сейчас более подробно все проверил. Но там применяются кое-какие скриптовые костыли, чтоб все нормально было. И которые, кстати, мало того, что вешают постоянный апдейт, так и еще в момент обработки фризят игру до 150-200 мс. А ты же сейчас открыл быстрый движковый способ, за что большое спасибо!

 

  03.01.2018 в 19:33, Zander_driver сказал:

но не кажется ли вам, что вы в этой теме люто оффтопите?

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

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


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

Случайно тут узнал, что раньше в билдах до 2004 года было отображение главной иконки предметов в меню в 3D (еще и вращалась). А потом разрабы это вырезали (зачем?). Может кто-то в курсе, какой класс там использовался? Может в ТЧ движке что-то и по сей день осталось. Хотя я там ничего подобного не находил.

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

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


Ссылка на сообщение
  19.02.2018 в 19:27, Zagolski сказал:

Случайно тут узнал, что раньше в билдах до 2004 года было отображение главной иконки предметов в меню в 3D (еще и вращалась). А потом разрабы это вырезали (зачем?). Может кто-то в курсе, какой класс там использовался? Может в ТЧ движке что-то и по сей день осталось. Хотя я там ничего подобного не находил.

В движке все с корнями разрабы вырезали. Но я этот класс восстановил (CUI3dStatic), он работает, но только на статике. На динамике никак не получается заставить его работать. Оно и понятно, ведь разрабатывался он в районе 2004 года, когда динамики еще в помине не было.

 

Вот .h и .cpp файлы этого класса:

  Показать
  Показать

 

Есть тут спецы, кто подскажет, в чем может быть причина неработоспособности на динамике? Давайте покумекаем. Фишка то классная.

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

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


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

Если меняешь сам диалог, то сразу, а если прописываешь его неписю в его профиле, то с НИ.

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

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


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

Посмотри в bool CUIActorMenu::ToSlot(CUICellItem* itm, bool force_place, u16 slot_id)

 

вот это:

 

        if ( slot_id == PISTOL_SLOT && m_pActorInvOwner->inventory().CanPutInSlot(iitem, RIFLE_SLOT))
            return ToSlot(itm, force_place, RIFLE_SLOT);

        if ( slot_id == RIFLE_SLOT && m_pActorInvOwner->inventory().CanPutInSlot(iitem, PISTOL_SLOT))
            return ToSlot(itm, force_place, PISTOL_SLOT);

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

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


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

Вот вам загадка. Каждые 1000 кадров происходит фриз на 0.2 сек. Проблема в движке, не в скриптах. В какой степи копать?

Изменено пользователем Zagolski
  • Полезно 1

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


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

У тебя не сделана библиотека lua.JIT.1.1.4.lib, она либо где-то в коде прописана ее включение через #pragma comment(lib, "lua.JIT.1.1.4.lib"), либо в свойствах проекта компилятор/ввод. Исправь название на свою новую библиотеку, на lua.JIT.1.1.8.lib или что ты там собрал.

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

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


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

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