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

Худ


Serafim12

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

Стрелку от дозиметра на худе ЧН в ТЧ не выйдет перенести. Я ещё работая с Русей это хотел сделать. Причина та же что и в проблеме с вертикальным инвентарём - двигло ТЧ не умеет крутить текстуры.

Ай неправда :)

Для начала компас на миникарте как-то крутится. Хотя я не в курсе как :) ну суть не в том

На худой конец можно же скриптами ворочать... вывод одной из набора по-разному повернутых текстур помоему достаточно прост.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

А существует ли скриптовый метод, подобный этому

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

Создать окно на худе можно с помощью кастом-статиков, вывести туда текст - с их же помощью. Подробнее:

 

<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.

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


Ссылка на сообщение
Да, и еще в этом-же вопросе - можно ли применять этот метод для статиков, изначально присутствующих на худе ? А то попадалось здесь же на форумах, что мол их удалить с худа нельзя, а только задав заведомо большие координаты, загнать за край худа.

Чепуха это. В моем же примере, как ты сам видишь, статики объявляются заранее в 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.

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


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

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

Советую почитать:

Там про все эти свойства написано.

Примеры:

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.

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


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

Callisto

У меня как то была такая идея, сделать для широкоформатников худ без растяжки текстур - сами элементы, (кнопки, окна и пр.) делать того же размера как и в варианте 4: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.

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


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

AndreySol

Вопросы уже совсем скриптовые, им более подобает быть в "Скриптовании" :)

как отловить\получить, к примеру, событие смены оружия любым способом в первом слоте

К инвентарю отношения не имеет :)

local wpn = db.actor:item_in_slot(2)
local sect = wpn:section()
-- или
local wpnid = wpn:id()

получаем объект в слоте у актора, смотрим его секцию или ид. Если вдруг поменяется - значит в слоте сменилось оружие.

Для отслеживания изменения сохранить значение в отдельную переменную, и в апдейте старое значение с текущим.

Впрочем, все это можно вычитать в описании класса game_object, что в справочнике malandrinus-а. Я ведь ссылку давал...

 

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

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

Оружие в слоте может быть сменено путем кликов/перетаскиваний в инвентаре. А может быть изменено скриптом с помощью удаления/спавна. А еще может измениться после подбора оружия с земли / получении от нпс. Если в слоте было "ничего" а что-то появилось - это ведь тоже изменение.

А по поводу WinAPI - понимаю, отлавливать то что хочется "событиями" удобно. Но в один прекрасный момент всегда приходится столкнуться с тем, что на нужные вам изменения виртуальной реальности - готовых обработчиков событий не заготовлено, и надо их отлавливать самостоятельно. Если вы когда-то пробовали написать свою игру или движок для игры, то наверняка с этим сталкивались.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

End223

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

Понятия не имею :crazy: Порядок тех слоев худа, которые выводятся скриптами (а текстуры шлемов\противогазов, так же как и часы, к этому семейству относятся) - зависит только от того, в каком порядке эти самые скрипты различные элементы на экран выводят.

Если познания в скриптах у вас поверхностны, то, что могу посоветовать... выясните названия функций которые занимаются выводом соответственно противогаза и часов, (у меня щас нету чистого амк-мода на руках так что подсказать не смогу). И в конец функции вывода противогаза, поставьте вызов обновления часов.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

End223, Что ты хочешь чтобы тебе сказали? Файл, в котором расписано "статик костюма = 1", "статик часов = 2", "статик здоровья = 3", Так чтоли?

В таком случае ответом будет: Ни в каком. Не существует ни в каком файле записей такого рода, и не может существовать, если только скриптер не напишет некой системы, которая будет выводить статики на худ руководствуясь подобной информацией. Но в АМК такого не делали.

В скриптах для вывода статиков на худ используется функция get_hud():AddDialogToRender(статик). Вызываться могут откуда угодно - из апдейта, из обработчиков событий, да хоть из диалога. Тот статик, чья функция вывода была вызвана позже прочих, и будет поверх других. До тех пор пока не будет выведено еще что-то - каждый такой скриптовый вывод статика, рисует статик на худе поверх всего того, что было на нем нарисовано ранее.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

MIshKA13,

local console = get_console()
local hdist = console:get_bool("hud_crosshair_dist")
console:execute("hud_crosshair_dist off")
console:execute("hud_crosshair_dist on")

Это консольные команды, использовать можно в любом файле скрипта.

А так, состояние этой опций в файлах сохранений записывается, мне так думается.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


Ссылка на сообщение
MIshKA13 тогда вам надо этими самыми консольными командами "родной" дальномер выключать. И делать свой, скриптовый, располагая его где понравится, какого хотите цвета и размера, с помощью метода
get_hud():AddDialogToRender(свой_статик)

примеры применения можно найти во многих модах.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

ну так надо сначала текущее состояние оружия получать. Это как бы скрипт а не конфиг.

object:condition()

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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 пользователей

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