Romann 619 Опубликовано 20 Ноября 2017 Поделиться Опубликовано 20 Ноября 2017 (изменено) Доброго времени суток. Ув. двигоправы, такой вопрос: вот мы имеем в гл.меню статическую картинку/заставку, в конфиге выглядит так: <background x="0" y="0" width="1024" height="768"> <auto_static x="0" y="0" width="1024" height="768" stretch="1"> <texture x="0" y="0" width="1920" height="1080">ui\ui_background_new</texture> </auto_static> </background> Вместо текстуры стоит видео(ogm) на весь экран, вот xотелось бы "впилить" сюда <random>, ну т.е. чтоб использовать на подобии, как рандомная музыка в гл.меню, что-то на подобии этого: <background x="0" y="0" width="1024" height="768"> <auto_static x="0" y="0" width="1024" height="768" stretch="1" random="0"> <texture x="0" y="0" width="1920" height="1080">ui\ui_background_new_0</texture> <texture x="0" y="0" width="1920" height="1080">ui\ui_background_new_1</texture> <texture x="0" y="0" width="1920" height="1080">ui\ui_background_new_2</texture> </auto_static> </background> Что-то вроде "динамической смены заставки гл.меню". Как я понял - надо смотреть в "xrGame\ui\UIXmlInit.cpp" функция: Скрытый текст void CUIXmlInit::InitAutoStaticGroup(CUIXml& xml_doc, LPCSTR path, int index, CUIWindow* pParentWnd) { XML_NODE* _stored_root = xml_doc.GetLocalRoot(); xml_doc.SetLocalRoot (xml_doc.NavigateToNode(path,index)); XML_NODE* curr_root = xml_doc.GetLocalRoot(); if(!curr_root) curr_root = xml_doc.GetRoot(); XML_NODE* node = curr_root->IterateChildren(NULL); int cnt_static = 0; int cnt_frameline = 0; int cnt_text = 0; string512 buff; while(node) { LPCSTR node_name = node->Value(); if(0==stricmp(node_name,"auto_static")) { CUIStatic* pUIStatic = xr_new<CUIStatic>(); InitStatic (xml_doc, "auto_static", cnt_static, pUIStatic); xr_sprintf (buff,"auto_static_%d", cnt_static); pUIStatic->SetWindowName (buff); pUIStatic->SetAutoDelete (true); pParentWnd->AttachChild (pUIStatic); ++cnt_static; }else if(0==stricmp(node_name,"auto_frameline")) { CUIFrameLineWnd* pUIFrameline = xr_new<CUIFrameLineWnd>(); InitFrameLine (xml_doc, "auto_frameline", cnt_frameline, pUIFrameline); xr_sprintf (buff,"auto_frameline_%d", cnt_frameline); pUIFrameline->SetWindowName (buff); pUIFrameline->SetAutoDelete (true); pParentWnd->AttachChild (pUIFrameline); ++cnt_frameline; }else if(0==stricmp(node_name,"auto_text")) { ++cnt_text; } node = curr_root->IterateChildren(node); } xml_doc.SetLocalRoot (_stored_root); } Или в другом месте копать? А то я тут не соображу, как сюда "внедрить" этот <random="0">.. П.С.: платформа ЗП(CoC_1.5_R6). Изменено 20 Ноября 2017 пользователем Romann Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий
Graff46 598 Опубликовано 21 Ноября 2017 Поделиться Опубликовано 21 Ноября 2017 В скрипте m_netpk.script используется система каллбеков для отлеживания появления объекта в онлайне раньше его биндера, для возможности работы с net_abstract пакетами. У меня вопрос, а нельзя ли ловить появление объекта через level.client_spawn_manager():add(sobj.id, 0 ... ? Ссылка на комментарий
drksnc 14 Опубликовано 21 Ноября 2017 Поделиться Опубликовано 21 Ноября 2017 (изменено) В 17.11.2017 в 06:06, drksnc сказал: Клиент получает её один раз, просто сталкеров было двое . С позицией и поворотами разобрался. Теперь косяк с анимацией - на клиенте после вызова PlayCycle, даже с включеным лупом, анимка останавливается на последнем кадре (вроде), причем на сервере с такими же параметрами все замечательно пашет. Еще есть animation().update(), но результат его работы оставляет желать лучшего Изменено 21 Ноября 2017 пользователем drksnc Ссылка на комментарий
dsh 3 824 Опубликовано 21 Ноября 2017 Поделиться Опубликовано 21 Ноября 2017 @Graff46 откуда взялось про онлайн? Насколько я помню, вызов коллбека ставится в STATE_Read. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
WinCap 316 Опубликовано 21 Ноября 2017 Поделиться Опубликовано 21 Ноября 2017 @Romann Если я не ошибаюсь, в оригинальном ЗП инициализация главного меню происходит в скрипте "ui_main_menu.script". Там можно и реализовать выбор заставки. S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Romann 619 Опубликовано 21 Ноября 2017 Поделиться Опубликовано 21 Ноября 2017 3 часа назад, WinCap сказал: Там можно и реализовать выбор заставки. Неа, пробовал скриптом, не выходит. Да и движком эстетичней, что ли, будет. Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий
WinCap 316 Опубликовано 21 Ноября 2017 Поделиться Опубликовано 21 Ноября 2017 @Romann Если в движке, тогда нужно править функцию InitStatic в файле xrGame\ui\UIXmlInit.cpp. А конкретно строчку: InitTexture(xml_doc, path, index, pWnd); В ней используется переданный в функцию параметр index. Нужно добавить проверку на наличие атрибута "random" и при его наличии генерировать новый index, а при отсутствии использовать переданный. 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
mortan 143 Опубликовано 28 Ноября 2017 Поделиться Опубликовано 28 Ноября 2017 (изменено) подскажите а что делает функция iCeil? Я так понимаю она отличается от стандартной ceil функции. Вот её код - P.S. я в математике не особо силён) ICF int iCeil(float x) { int a = (*(const int*)(&x)); int exponent = (127 + 31) - ((a >> 23) & 0xFF); int r = (((u32)(a) << 8) | (1U << 31)) >> exponent; exponent += 31 - 127; { int imask = (!(((((1 << (exponent))) - 1) >> 8)&a)); exponent -= (31 - 127) + 32; exponent >>= 31; a = ~((a - 1) >> 31); /* change sign */ r -= (imask&a); r &= exponent; r ^= a; r = -r; /* change sign */ } return r; /* r = (int)(ceil(f)) */ } Изменено 28 Ноября 2017 пользователем mortan Ссылка на комментарий
AndreySol 215 Опубликовано 28 Ноября 2017 Поделиться Опубликовано 28 Ноября 2017 Я в теме "С++" задавал вопрос по табуляции при форматировании текста, подсказали насчет \t, мол должно работать. Попробовал использовать это в отображении защиты броников в инвентаре(ф-ция CUIOutfitInfo::SetItem) - толку ноль. Может я чего не так делал: _sz += sprintf_s(_buff+_sz,sizeof(_buff)-_sz,"%s \t%+3.0f%%", (_val_outfit>0.0f)?"%c[green]":"%c[red]", _val_outfit*100.0f); Подскажите... Ссылка на комментарий
WinCap 316 Опубликовано 28 Ноября 2017 Поделиться Опубликовано 28 Ноября 2017 @AndreySol Табуляция не работает на HUD'е игры. Попробуй использовать модификатор ширины, результат будет не очень, но это лучшее, что можно сделать в единой строке. Если хочется добиться идеальной таблицы нужно использовать отдельные статики для каждого столбца. S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
AndreySol 215 Опубликовано 28 Ноября 2017 Поделиться Опубликовано 28 Ноября 2017 28 минут назад, WinCap сказал: Табуляция не работает на HUD'е игры. Наверное, все же не на HUD'е, а в UI-классах не реализована ? Может кто делал реализацию ? Ссылка на комментарий
AndreySol 215 Опубликовано 2 Декабря 2017 Поделиться Опубликовано 2 Декабря 2017 Спрошу тута: в окне инвентаря, окно описания выделенного предмета, к примеру ствол - сначала идут индикаторы параметров ствола, затем его текстовое описание. Вопрос: отступ текстового описания, чтоб индикаторы поместились, где прописан - в движке или в конфиге ? Ткните носом, кто знает куда... Ссылка на комментарий
Winsor 177 Опубликовано 4 Декабря 2017 Поделиться Опубликовано 4 Декабря 2017 (изменено) В 29.11.2017 в 01:10, AndreySol сказал: Может кто делал реализацию ? да, делал. Нормальное выравнивание можно получить только при использовании CUIListItem. альтернативный вариант - использовать в тексте   -это пробел, но за счет разной ширины символов все равно не получить ровных стоблцов. В 02.12.2017 в 18:00, AndreySol сказал: отступ текстового описания если речь идет о классе CUIItemInfo - то там все параметры отсnупов и иже с ними загружаются с xml конфигов. В 29.11.2017 в 00:41, WinCap сказал: отдельные статики для каждого столбца можно переопределить CUIListItem , и уже в нем делать специальные колонки, например, для иконок. Изменено 4 Декабря 2017 пользователем Winsor Ссылка на комментарий
Winsor 177 Опубликовано 4 Декабря 2017 Поделиться Опубликовано 4 Декабря 2017 Уважаемые знающие - есть ли возможность реализации какой либо анимации без ее наличия в худе оружия, например - удар прикладом. Делать к каждому стволу в моде такое - это ж устанешь... Как то же НПС бьются прикладом, и без этой анимации в худе? разъясните пожалуйста. Ссылка на комментарий
AndreySol 215 Опубликовано 4 Декабря 2017 Поделиться Опубликовано 4 Декабря 2017 (изменено) 4 часа назад, Winsor сказал: альтернативный вариант - использовать в тексте   -это пробел, но за счет разной ширины символов все равно не получить ровных стоблцов. А как насчет моноширинных шрифтов ? Есть реализации для Сталкера ? Цитата да, делал. А что именно - восстановление табуляции или переход на CUIListItem ? Изменено 4 Декабря 2017 пользователем AndreySol Ссылка на комментарий
Winsor 177 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 16 часов назад, AndreySol сказал: переход на CUIListItem вот это. 16 часов назад, AndreySol сказал: моноширинных шрифтов если дружите с графическими пакетами - можете нарисовать свой шрифт. моноширинного в ТЧ я не видел. Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 (изменено) 20 часов назад, Winsor сказал: Как то же НПС бьются прикладом, и без этой анимации в худе? НПСы используют мировую модель оружия, а не худовою + каждый НПС использует библиотеку анимаций stalker_animation.omf, там и есть эта анимация удара (norm_facer_ ) для разных типов оружия(без оружия, пистолеты, дробовики, автоматы, тяжелое). Конечно такой себе вариант, но можешь попробовать сделать универсальную анимацию удара по типу раскачки оружия из ЛА. Изменено 5 Декабря 2017 пользователем TIGER_VLAD 1 Ссылка на комментарий
BFG 7 582 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 (изменено) 41 минуту назад, TIGER_VLAD сказал: Конечно такой себе вариант, но можешь попробовать сделать универсальную анимацию удара по типу раскачки оружия из ЛА. Поскольку Winsor является на текущий момент главным разработчиком мода ОП-2.1 (после ухода Proper70) и учитывая что в этом моде полтыщщи разных стволов, то выглядеть подобная "универсальная" анимка будет отвратно если повесить её на всё. Плюс. удар прикладом надо ещё настраивать вроде в схеме АИ, если не ошибаюсь. @Winsor Пора бы уже прекратить обращать внимания на подобные пожелалки юзеров, как "удар прикладом", тем более у вас через пару недель релиз вроде предновогодний, как обещал ваш самый главный тестер. Это не совет, нет, просто в качестве пожелания. Зачем тебе , спецу по движку, забивать в данный момент голову подобным барахлом, есть наверно и поважнее дела. Изменено 5 Декабря 2017 пользователем BFG 3 1 1 "Кругом зомби.....у меня кончаются патроны...." Ссылка на комментарий
Winsor 177 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 Скрытый текст 1 час назад, BFG сказал: тем более у вас через пару недель релиз вроде предновогодний, как обещал ваш самый главный тестер никто не обещал... О_О Вот НИ тестерам с нового года обещали - это да, слишком много изменений накопилось для этого. Это не пожелалки тестеров - удар прикладом как самый простой вариант. Меня интересует сама возможность создания анимации, не привязанной к модели. Ссылка на комментарий
Romann 619 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 10 минут назад, Winsor сказал: Меня интересует сама возможность создания анимации, не привязанной к модели. Я думаю стоит спросить у Шокера, у них там была анимка поднятия ствола(сомневаюсь, что делали анимку каждому стволу), при приближении к препятствию, но правда там на ЗП, т.е. раздельные руки, но возможно можно как-то использовать. Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти