Zander_driver 10 334 Опубликовано 2 Ноября 2011 Поделиться Опубликовано 2 Ноября 2011 А существует ли скриптовый метод, подобный этому cps = hud:GetCustomStatic("название_кастомстатика") Только не для кастом, а для базовых статиков худа. Чтобы узнать, отображается ли статик сейчас, и в зависимости от этого скрыть/показать свой кастом-статик. Как пример - скрывать кастом-статики во время прицеливания через оптику, т.к. худ в это время скрывается. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
AndreySol 215 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 Помогите с таким вопросом - необходимо на худе разместить новое окошко, в которое буду выводить некую текстовую информацию. Отсюда вопросы: - как создать окно и отрегулировать его положение; - как отслеживать видимость\невидимость окна - т.е. как хранить его состояние; - как устанавливать в этом окошке нужный текст; - как отслеживать общее состояние худа - к примеру переход в режим прицеливания через оптику, что-бы соответстенно этому скрывать\показывать свое окошко. Ссылка на комментарий
Zander_driver 10 334 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 AndreySol Создать окно на худе можно с помощью кастом-статиков, вывести туда текст - с их же помощью. Подробнее: <hud_patron_load_1 x="10" y="30" width="8" height="40" stretch="1" complex_mode="1"> <texture>twoteam\p3</texture> </hud_patron_load_1> Добавив в файл такую запись, мы добавим туда новый элемент. В данном случае это текстура из файла gamedata\textures\twoteam\p3.dds, что указано в теге текстуры. Укажешь текстуру своего окошка и все. local hud = get_hud() -- получаем худ local cps = hud:GetCustomStatic("hud_patron_load_1") -- получаем кастом-статик if cps == nil then hud:AddCustomStatic("hud_patron_load_1", true) -- рисуем на худе, если вдруг его нету end hud:RemoveCustomStatic("hud_patron_load_1") -- стираем кастом-статик с экрана. <th_weather_text x="920" y="25" width="60" height="18"> <text align="l" complex_mode="0" font="letterica16" r="255" g="150" b="10" a="220">Ammo</text> </th_weather_text> Добавляем в файл такую запись - добавляется элемент с возможностью вывода текста. Тут же задается размер, вид и цвет шрифта. Как получить кастом-статик в скрипте - см. выше. Задать текст вот так: cps:wnd():SetText("твой текст") А вот на 4-й вопрос я сам хотел бы ответ узнать. Мой пост выше - с вопросом как раз об этом. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
dragunof 3 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 AndreySol, по прицеливанию: if db.actor:accuracy()*1000 < 1 then -- action end ▲ ▲ ▲ Ссылка на комментарий
Marafon6540 757 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 dragunof, а можно чуть подробнее? А если не затруднит, то вообще подробно. Трилогия Апокалипсис. Упавшая звезда. Честь наемника. v. 1.2 УЗЧН v.1.3 + ОГСРх64 Последний сталкер v. 1.2 ПС v. 1.3 + ОГСРх64 Ссылка на комментарий
AndreySol 215 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 (изменено) dragunof, а можно чуть подробнее? А если не затруднит, то вообще подробно. Присоединяюсь. RemoveCustomStatic - это единственная ф-ция удаления окна(статика) с худа, или есть что-то типа ShowCustomStatic \ HideCustomStatic ? Да, и еще в этом-же вопросе - можно ли применять этот метод для статиков, изначально присутствующих на худе ? А то попадалось здесь же на форумах, что мол их удалить с худа нельзя, а только задав заведомо большие координаты, загнать за край худа. complex_mode="1" - за что отвечает этот параметр ? Изменено 4 Ноября 2011 пользователем AndreySol Ссылка на комментарий
dragunof 3 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 (изменено) Marafon6540, AndreySol, Если хотите удалить статик в время прицеливания: function bla_bla() local hud = get_hud() local static = hud:GetCustomStatic("Ваш_статик") if db.actor:accuracy()*1000 < 1 then if static ~= nil then hud:RemoveCustomStatic("Ваш_статик") end end end И всё это дело на update актора. Только вот в ТЧ по моему это не работает там нужно проверять изменение fov, не помню но по моему так: local fov = device().fov if fov<35 then -- action end Поправьте если не так. Изменено 5 Ноября 2011 пользователем dragunof ▲ ▲ ▲ Ссылка на комментарий
Wookie 7 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 Можно как-нибудь отследить - открыт инвентарь или нет? https://www.youtube.com/embed/U0no-6tCxhU Канал на "Трубе" Ссылка на комментарий
dragunof 3 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 (изменено) Wookie, по моему: if has_alife_info("ui_inventory") then -- action end Изменено 5 Ноября 2011 пользователем dragunof ▲ ▲ ▲ Ссылка на комментарий
AndreySol 215 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 (изменено) device().fov а что это ? И все-же - дабы скрыть статик с худа, его нужно только удалять и соответственно затем добавлять на худ вновь, или все-же есть ф-ции скрытия\показа статиков ? Есть-ли какая-то ф-ция "энумератор" имеющихся на худе статиков ? И еще - вопросы по работе с инвентарем и КПК сюда можно задавать, ведь это то-же похоже на работу с худом ? Изменено 5 Ноября 2011 пользователем AndreySol Ссылка на комментарий
dragunof 3 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 (изменено) AndreySol, а что это ? Получение fov актора. есть ф-ции скрытия\показа статиков ? К сожалению нет. И еще - вопросы по работе с инвентарем и КПК сюда можно задавать, ведь это то-же похоже на работу с худом ? Разумеется. Изменено 5 Ноября 2011 пользователем dragunof ▲ ▲ ▲ Ссылка на комментарий
Zander_driver 10 334 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 Да, и еще в этом-же вопросе - можно ли применять этот метод для статиков, изначально присутствующих на худе ? А то попадалось здесь же на форумах, что мол их удалить с худа нельзя, а только задав заведомо большие координаты, загнать за край худа. Чепуха это. В моем же примере, как ты сам видишь, статики объявляются заранее в xml-файле. И затем добавляются-удаляются в любой момент времени. за что отвечает complex_mode, не помню, поэкспериментируй сам. dragunof Спасибо огромное, буду пробовать Добавлено через 25 мин.: Так и есть. device().fov у меня вернул в обычном режиме (когда гг никуда не целится) 61, при прицеливании через пистолет 41, при взгляде через бинокль 5.625. Как я понимаю, это зависит от степени зума. Однако бывают ведь оптические прицелы малой кратности, 1.6х скажем. Так что подбор конкретных значений, от которых распознавать оптика или нет, лучше делать исходя из конкретного набора стволов-биноклей в конкретном моде. Могут быть расхождения. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Desertir 202 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 К сожалению нет. Как это нету. local wnd = CUIStatic() --или получаем свой статик. wnd:Show(true/false) Fov это угол обзора в градусах. Соответственно чем больше значение, том больше видно в стороны, но мелко, а если меньше, то по сторонам видно мало, но зато очень близко. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Wookie 7 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 В общем вот такой вопрос - Как можно вывести скриптовое окно, при котором можно было бы пользоваться ПДА или инвентарем? https://www.youtube.com/embed/U0no-6tCxhU Канал на "Трубе" Ссылка на комментарий
AndreySol 215 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 (изменено) Есть-ли какой-то параметр для описания статиков в ui_custom_msgs.xml например, что-бы размер статика автоматически менялся в соответствии с размером текста, который на него выводится ? В этом-же вопросе - можно-ли динамически (скриптово) менять размеры и положение статика ? По инвентарю - в каких файлах он описывается ? Добавлено через 5 мин.: Desertir, спасибо за инфу. А как насчет Есть-ли какая-то ф-ция "энумератор" имеющихся на худе статиков ? ну типа EnumWindows\EnumChildWindows из WinAPI ? Соответственно чем больше значение, том больше видно в стороны, но мелко, а если меньше, то по сторонам видно мало, но зато очень близко таким образом реализовано приближение для бинокля и оптики ? Изменено 5 Ноября 2011 пользователем AndreySol Ссылка на комментарий
Desertir 202 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 таким образом реализовано приближение для бинокля и оптики ? Не знаю, наверное, но на сколько я помню, изменение fov до 75 градусов есть в Солянке, но это все устанавливается в движке (xrGame.dll). В этом-же вопросе - можно-ли динамически (скриптово) менять размеры и положение статика ? Да, можно. Цитата из справочника // установить положение верхнего левого угла окна относительно родительского void SetWndPos(float x, float y); // вариант ТЧ void SetWndPos(vector2*); // вариант ЗП vector2* GetWndPos(CUIWindow*); // только ЗП, получить положение окна // установить размеры окна void SetWndSize(float w, float h); // вариант ТЧ void SetWndSize(vector2); // вариант ЗП // установить положение и размеры окна void SetWndRect(Frect); void SetWndRect(float x, float y, float width, float height); // только ТЧ void SetHeight(float h); // только ТЧ, установить высоту окна float GetHeight(); // получить высоту окна void SetWidth(float w); // только ТЧ, установить ширину окна float GetWidth(); // получить ширину окна PS: советую прочесть. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
AndreySol 215 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 Desertir, еще раз спасибо. Уже есть с чего начинать ! Еще вопросы: 1) Динамическое отображение уровней здоровья и др. на худе и в инвентаре - это встроено в движок и к этому скриптеру не добраться, или-же где-то крутится callback-функция и к ней есть доступ ? Если второй вариант, то где искать ? 2) К примеру, требуется отобразить на худе свой статик. И хочется этот статик хранить в отдельном dds-файле и описать его параметры в отдельном xml-файле - как это правильно сделать, чтоб он был виден движку ? Доступ к худу local hud = get_hud() А как сделать то-же самое, но для инвентаря и КПК ? Дрючим все тот-же пример добавления часов на худ: local hud = get_hud() local cs = hud:GetCustomStatic("hud_show_time") if cs == nil then hud:AddCustomStatic("hud_time_static", true) hud:AddCustomStatic("hud_show_time", true) cs = hud:GetCustomStatic("hud_show_time") end local time_h = level.get_time_hours() local time_m = level.get_time_minutes() local msg = string.format("%02d:%02d", time_h, time_m) if cs ~= nil then cs:wnd():SetText(msg) cs:wnd():SetTextColor(100,250,10,10) -- цвет устанавливается нормально cs:wnd():Show(false) -- может здесь ошибка ? end в результате имеем циферки красного цвета, а Show(false) или тупо игнорируется движком, или я опять чего-то не понял ? Ссылка на комментарий
Zander_driver 10 334 Опубликовано 6 Ноября 2011 Поделиться Опубликовано 6 Ноября 2011 AndreySol И чем тебе ненравятся методы удалить/добавить статик? их можно применять сколько угодно раз, и работают они стабильно без причуд. А вот почему у тебя cs:wnd():Show(false) неработает, я понятия не имею Сам никогда этим методом не пользовался. Ну и по твоим вопросам. 1) Это базовый статик, его отображением занимается движок. Но можно этот статик убрать (унести за пределы худа/инвентаря) и нарисовать свой, который уже от скрипта будет работать. Узнать здоровье гг из скрипта проблем не составляет. 2)Ну файл dds-текстуры ты и так в описании статика указываешь. Чтобы еще и xml-файл был отдельный, полагаю надо инклуды применять #include "относительный путь к твоему файлу" На остальные вопросы ответов не знаю... чем смог, тем помог. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
AndreySol 215 Опубликовано 6 Ноября 2011 Поделиться Опубликовано 6 Ноября 2011 Узнать здоровье гг из скрипта проблем не составляет. Ну подскажите уж примерчиком, а заодно и остальные параметры - пси-здоровье и радиоактивность. К примеру такая ситуевина - нужно динамически убрать базовый статик с худа, т.е. не в его описании в .xml-файле, а по необходимости, в процессе игры. Как сие сделать ? Как мне думалось, наиболее правильно использовать CUIWindow:Show(false), однако облом, похоже. Ссылка на комментарий
Zander_driver 10 334 Опубликовано 6 Ноября 2011 Поделиться Опубликовано 6 Ноября 2011 AndreySol Советую почитать: Там про все эти свойства написано. Примеры: db.actor.health = -0.28 db.actor.power = -(db.actor.power / 2) local h = db.actor.health local p = db.actor.power Это здоровье и выносливость. динамически убрать базовый статик с худа Я таких способов не знаю. Есть способ такой: убираете базовый статик за кадр в xml-файле, раз и навсегда. А на его месте рисуете свой кастом-статик, как две капли воды похожий на базовый. Ну или неочень похожий И его можете удалять или являть взору игрока когда угодно. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти