Zagolski 74 Опубликовано 17 Ноября 2017 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. Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 17 Ноября 2017 (изменено) В скролл-баре (на ЧН) обнаружил некую особенность, что для широкоформатного разрешения габариты (ширина) этого самого бара и его подложки изменяются в конфиге текстуры только тогда, если она обозначена с окончанием на _16. В противном случае изменение размеров текстуры в конфиге изменений не внесет, похоже двиг их вообще в этом случае не считывает и применяет какие-то базовые. Я не про файл .xml который _16 и который цепляется автоматом на 16:9, а про указанное в нем название текстуры. И почему-то только для скролл-бара это происходит. И никак концы не найду, все перекопал. Кто-нибудь знает, что за чудеса? Изменено 17 Ноября 2017 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 17 Ноября 2017 Сегодня разобрался с проблемой в скроллбаре. Там никакой фантастики оказывается не было, просто как оказалось, эти две текстуры уже были определены в конфиге, т.е. читались те, которые определены выше, а не те, которые я изменял. Вот что значит с уставшей головой сидеть... Мда. 1 Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 7 Декабря 2017 Поменять - легко, но придется возиться с перерисовыванием текстуры интерфейса под новые слоты. Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 8 Декабря 2017 А как выглядит этот феномен? Никогда не встречал. Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 9 Декабря 2017 (изменено) 08.12.2017 в 16:06, dsh сказал: Вон там за деревом здоровая фигня до неба. Это растянутый труп. На вершине может быть, например, рука. А в движке вертекстные координаты модели в short хранятся или во float переделаны (класс CSkeletonX_ext)? Если второе, то скорее всего из-за этого. Рекомендую обратно на short переделать, проблема наверняка исчезнет. Изменено 9 Декабря 2017 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 30 Декабря 2017 (изменено) В дебаг-режиме прогнал модуль, вроде все корректно пишется, судя по логам. И да, в кастомдату и пишется корректно и читается оттуда, в этом проблем нет. Проблемы с изменением кондиции, например, у артефактов или еды. В двигле эти классы я не затрагивал. Есть тут спецы по этому модулю нет-пакетов, кроме самого Артоса? Изменено 30 Декабря 2017 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 30 Декабря 2017 А причем тут движок? В zone_map.xml настраивается и по текстурам. Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 31 Декабря 2017 У меня класс CSE_ALifeInventoryItem под ЧН/ЗП переделан, а в модуле пакетов в net_cse_alife_inventory_item изменения я не внес... Сейчас модуль переделал, заработало. Тьфу-тьфу. Там скорее всего не так как нужно пакеты писались и из-за этого сбоило (вообще не писались). Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 31 Декабря 2017 В НЛС 6 делали круглую карту и с круглой стаминой, и без движка (сорцов тогда и не было). Но да, в ЗП сама карта обрезается в круг движком (правда, все равно криво, ромбовидно), в ТЧ/ЧН вроде такого не сделать. Нужно попробовать в сторону WorkingArea копать (в ЗП), может там обрезается, точно не могу сказать. А шумность/заметность в ЗП вообще никакого отношения к миникарте не имеет, они лишь аттачатся к ней, а сами по себе рисуются классом CUIMotionIcon, который, кстати, в ЗП значительно переделан. В общем говоря, если хочется использовать круглую миникарту, то нет никаких проблем закрыть квадрат круглой текстурой-окантовкой. А движковым путем вряд ли легко получится. А квадратную в ЗП - текстурой и конфигом. Там все равно круг останется, но он настолько прозрачен, что и заметно-то не будет. Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 31 Декабря 2017 (изменено) А попробуй не спавнить еду и тут же применять к ней, а к примеру положить ее в ящик из своего инвентаря и применить пакет. В этом случае сразу изменится? У тебя может спавн клиентского объекта не успевает отработаться. И попробуй принудительно после спавна вызывать из скриптов Level.net_Update(), предварительно экспортировав (возможно понадобится еще и Level.on_Frame и alife():update()). Изменено 31 Декабря 2017 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 31 Декабря 2017 (изменено) Это лучше делать в 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 после передачи пакета применяется? Изменено 31 Декабря 2017 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 3 Января 2018 (изменено) 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; т.е. мы два раза делаем одно и то же. Разве нет? Изменено 3 Января 2018 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 3 Января 2018 03.01.2018 в 18:57, dsh сказал: Похоже, что нет. В net_Spawn() передается CSE_Abstract, а в нем нет измененного condition, там 1.0. Я же и пишу, что кто-то пытался сделать, но то-ли даже не проверял, то-ли проверил и не осилил сделать рабочее. Не, вру. У меня на нлс-шной скриптовой базе такая же ерунда, что и у тебя. Сейчас более подробно все проверил. Но там применяются кое-какие скриптовые костыли, чтоб все нормально было. И которые, кстати, мало того, что вешают постоянный апдейт, так и еще в момент обработки фризят игру до 150-200 мс. А ты же сейчас открыл быстрый движковый способ, за что большое спасибо! 03.01.2018 в 19:33, Zander_driver сказал: но не кажется ли вам, что вы в этой теме люто оффтопите? Хоть и оффтоп, зато полезный оффтоп. Нужно заканчивать, главное важную инфу не затереть и не потерять. Куда-то в более подходящую тему перенести. Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 19 Февраля 2018 (изменено) Случайно тут узнал, что раньше в билдах до 2004 года было отображение главной иконки предметов в меню в 3D (еще и вращалась). А потом разрабы это вырезали (зачем?). Может кто-то в курсе, какой класс там использовался? Может в ТЧ движке что-то и по сей день осталось. Хотя я там ничего подобного не находил. Изменено 19 Февраля 2018 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 28 Февраля 2018 (изменено) 19.02.2018 в 19:27, Zagolski сказал: Случайно тут узнал, что раньше в билдах до 2004 года было отображение главной иконки предметов в меню в 3D (еще и вращалась). А потом разрабы это вырезали (зачем?). Может кто-то в курсе, какой класс там использовался? Может в ТЧ движке что-то и по сей день осталось. Хотя я там ничего подобного не находил. В движке все с корнями разрабы вырезали. Но я этот класс восстановил (CUI3dStatic), он работает, но только на статике. На динамике никак не получается заставить его работать. Оно и понятно, ведь разрабатывался он в районе 2004 года, когда динамики еще в помине не было. Вот .h и .cpp файлы этого класса: Показать #pragma once #include "UIWindow.h" class CGameObject; class CUI3dStatic : public CUIWindow { typedef CUIWindow inherited; private: // Fmatrix matrix; public: CUI3dStatic(); virtual ~CUI3dStatic(); void SetRotate(float x, float y, float z) { m_x_angle = x; m_y_angle = y; m_z_angle = z; } void SetGameObject(CGameObject* pItem); //прорисовка окна virtual void Init(float x, float y, float width, float height); virtual void Draw(); protected: float m_x_angle, m_y_angle, m_z_angle; float dist, viewport_near; //перевод из координат экрана в координаты той плоскости //где находиться объект void FromScreenToItem(int x_screen, int y_screen, float& x_item, float& y_item); CGameObject* m_pCurrentItem; }; Показать #include "stdafx.h" #include "UI3dStatic.h" #include "../gameobject.h" #include "../HUDManager.h" #include "../../Include/xrRender/RenderVisual.h" #include "../../device.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CUI3dStatic::CUI3dStatic() { m_x_angle = m_y_angle = m_z_angle = 0; dist = 0.210; viewport_near = 0.2; //Enable(false); } CUI3dStatic::~CUI3dStatic() { } //расстояние от камеры до вещи, перед глазами #define DIST (VIEWPORT_NEAR + 0.1f) void CUI3dStatic::FromScreenToItem(int x_screen, int y_screen, float& x_item, float& y_item) { int x = x_screen; int y = y_screen; //Msg("start FromScreenToItem x_screen-%f y_screen-%f",x,y); int halfwidth = Device.dwWidth/2; int halfheight = Device.dwHeight/2; float size_y = viewport_near * tanf( deg2rad(60.f) * 0.5f); float size_x = size_y / (Device.fASPECT); float r_pt = float(x-halfwidth) * size_x / (float) halfwidth; float u_pt = float(halfheight-y) * size_y / (float) halfheight; x_item = r_pt * dist / viewport_near; y_item = u_pt * dist / viewport_near; //Msg("start FromScreenToItem x_item-%f y_item-%f",x_item,y_item); } void CUI3dStatic::Init(float x, float y, float width, float height) { //Msg(" init in CUI3dStatic"); dist = pSettings->r_float("dist_3d_static", "dist"); viewport_near = pSettings->r_float("dist_3d_static", "viewport_near"); inherited::Init(x, y, width, height); } //прорисовка void CUI3dStatic::Draw() { if(m_pCurrentItem) { //Msg("Start draw 3d model"); Frect rect; GetAbsoluteRect(rect); Fmatrix translate_matrix; translate_matrix.identity(); Fmatrix scale_matrix; scale_matrix.identity(); Fmatrix rx_m; rx_m.identity(); Fmatrix ry_m; ry_m.identity(); Fmatrix rz_m; rx_m.identity(); Fmatrix matrix; matrix.identity(); //поместить объект в центр сферы translate_matrix.translate( - m_pCurrentItem->Visual()->getVisData().sphere.P.x, - m_pCurrentItem->Visual()->getVisData().sphere.P.y, - m_pCurrentItem->Visual()->getVisData().sphere.P.z); matrix.mulA_44(translate_matrix); rx_m.rotateX(m_x_angle); ry_m.rotateY(m_y_angle); rz_m.rotateZ(m_z_angle); matrix.mulA_44(rx_m); matrix.mulA_44(ry_m); matrix.mulA_44(rz_m); float x1, y1, x2, y2; FromScreenToItem(rect.left, rect.top, x1, y1); FromScreenToItem(rect.right, rect.bottom, x2, y2); float normal_size; normal_size =_abs(x2-x1)<_abs(y2-y1)?_abs(x2-x1):_abs(y2-y1); float radius = m_pCurrentItem->Visual()->getVisData().sphere.R; float scale = normal_size/(radius*2); scale_matrix.scale( scale, scale,scale); matrix.mulA_44(scale_matrix); float right_item_offset, up_item_offset; /////////////////////////////// FromScreenToItem(rect.left + iFloor(GetWidth()/2),rect.top + iFloor(GetHeight()/2), right_item_offset, up_item_offset); translate_matrix.identity(); translate_matrix.translate(right_item_offset,up_item_offset,dist); matrix.mulA_44(translate_matrix); Fmatrix camera_matrix; camera_matrix.identity(); camera_matrix = Device.mView; camera_matrix.invert(); matrix.mulA_44(camera_matrix); ::Render->set_Transform(&matrix); ::Render->add_Visual(m_pCurrentItem->Visual()); } else { //Msg("not item for draw"); } //inherited::Draw (); } void CUI3dStatic::SetGameObject(CGameObject* pItem) { m_pCurrentItem = pItem; //if(m_pCurrentItem){Msg("set item for 3d static");}else{Msg("not set item for 3d static");} } Есть тут спецы, кто подскажет, в чем может быть причина неработоспособности на динамике? Давайте покумекаем. Фишка то классная. Изменено 28 Февраля 2018 пользователем Zagolski 1 Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 16 Апреля 2018 (изменено) Если меняешь сам диалог, то сразу, а если прописываешь его неписю в его профиле, то с НИ. Изменено 16 Апреля 2018 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 13 Августа 2018 (изменено) Посмотри в 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); Изменено 13 Августа 2018 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 10 Октября 2018 (изменено) Вот вам загадка. Каждые 1000 кадров происходит фриз на 0.2 сек. Проблема в движке, не в скриптах. В какой степи копать? Изменено 10 Октября 2018 пользователем Zagolski 1 Поделиться этим сообщением Ссылка на сообщение
Zagolski 74 Опубликовано 1 Ноября 2018 (изменено) У тебя не сделана библиотека lua.JIT.1.1.4.lib, она либо где-то в коде прописана ее включение через #pragma comment(lib, "lua.JIT.1.1.4.lib"), либо в свойствах проекта компилятор/ввод. Исправь название на свою новую библиотеку, на lua.JIT.1.1.8.lib или что ты там собрал. Изменено 1 Ноября 2018 пользователем Zagolski Поделиться этим сообщением Ссылка на сообщение