Случайная подборка модов
AMK 1.4.1
4.2
R.M.A mod 1.1.5
4.2
«В аду… Псы»
3.6
OGSE 0.6.9.2
4.1
Холодная кровь
3.4
Old Good Stalker Mod v2.4 Gold
4.2
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 1
  • 1
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » [COP] GUI Окна поверх стандартных (Использование AddDialogToRender() и RemoveDialogToRender())
[COP] GUI Окна поверх стандартных
Украина  alex1197
Вторник, 28.11.2017, 19:50 | Сообщение # 1
Статус:
Отмычка:
Сообщений: 160
Награды: 8
Регистрация: 09.03.2014

GUI и Окна поверх стандартных


Доброго времени суток, господа. И так, знаю, много кто любит играться с GUI-интерфейсами. Но все наверняка знают что можно вывести скриптами какой-то свой элемент интерфейса на экран.
Естественно это - AddCustomStatic(string,bool) и RemoveCustomStatic(string):
Код

function staticToScreen()
local hud = get_hud()
local elementGUI = hud:GetCustomStatic("element_name")
if(lemenetGUI == nil) then
    hud:AddCustomStatic("element_name",true)
end
if(not db.actor:alive) then
    hud:RemoveCustomStatic("element_name")
end
end

Но беда в том что, все эти элементы будут под оригинальным интерфейсом с точки зрения "иерархии" элементов на экране, в самом низу. И с этаким элементом-статиком сильно не поиграешься.

- Что же делать тогда?
- Вариант есть!

Можно воспользоваться функциями AddDialogToRender(wnd) и RemoveDialogToRender(wnd) из класса CUIGameCustom использовав метод get_hud()

Схема предельно простая:
Код

local hud = get_hud() -- Объявляем переменную которая ссылается на класс худа
local window = MyWindowDialog() -- Может быть любое ваше название класса CUIScriptWnd

hud:AddDialogToRender(window) -- Добавляет окно поверх интерфейса

hud:RemoveDialogToRender(window) -- Удаляет окно

-- Дальше можно вызывать функции из этого окна
window:ShowDialog(false/true) -- Показать окно, скрыв попутно интерфейс (true/false)
window:HideDialog() -- Скрывает окно
window:ВашаФункция() -- и так любая функция в этом окне


Допустим, Вам надо вывести прогресс бар в инвентаре, не знаю, может вы захотели отображать вес не в цифрах, а в виде шкалы которая заполняется и т.д. в зависимости от ваших желаний.
И тогда как мы поступим:





Теперь, после всех этапов, когда мы запустим игру, при открытии инвентаря, над значением веса будет зелёный прогресс бар, заполненный на все 100%.

Внимание: После того как сделаете элемент, не забывайте удалять его из переменной которая хранит окно, дабы избежать вылета при следующей загрузке игры.
Сообщение отредактировал alex1197 - Понедельник, 22.01.2018, 21:29
  Злобная реклама
Вторник, 28.11.2017, 19:50
Статус:
Сообщений: 666
Регистрация: 09.03.2014
Украина  AngryWolf
Суббота, 16.12.2017, 16:09 | Сообщение # 2
Статус:
Гость:
Сообщений: 55
Награды: 1
Регистрация: 16.11.2017

Привет, возможно я не там задаю свой вопрос, но хотелось бы узнать как реализовать интерфейс на 3d модели. Допустим, как ПДА в gunslinger mod. Либо допустим как сделать цифровые часы, и на экране выводить игровое время с помощью специально выбранного шрифта. Спасибо.
Сообщение отредактировал AngryWolf - Суббота, 16.12.2017, 16:36
  Злобная реклама
Суббота, 16.12.2017, 16:09
Статус:
Сообщений: 666
Регистрация: 16.11.2017
Российская Федерация  atanda
Четверг, 21.12.2017, 13:28 | Сообщение # 3
Статус:
Бывалый:
Сообщений: 672
Награды: 7
Регистрация: 12.07.2017

Хм, интересно. Вот только одно замечание носящее теоретический характер.
Цитата alex1197 ()
Можно воспользоваться функциями AddDialogToRender(wnd) и RemoveDialogToRender(wnd) из класса get_hud()

get_hud() это не класс, а метод из глобального пространства имён.
Как по мне, лучше было выразится:


Не надо вводить людей в заблуждение.
Сообщение отредактировал buffy - Четверг, 21.12.2017, 13:29
  Злобная реклама
Четверг, 21.12.2017, 13:28
Статус:
Сообщений: 666
Регистрация: 12.07.2017
Украина  alex1197
Понедельник, 22.01.2018, 21:27 | Сообщение # 4
Статус:
Отмычка:
Сообщений: 160
Награды: 8
Регистрация: 09.03.2014

buffy, писал в спешке, по-этому путаница возможна была между методами\функциями\классами\параметрами, в голове каша из разных языков и разные термины лезут в одно целое. Исправил.

Добавлено (22.01.2018, 21:27)
---------------------------------------------
AngryWolf, ковырять движок видимо.
Сообщение отредактировал alex1197 - Понедельник, 22.01.2018, 21:31
  Злобная реклама
Понедельник, 22.01.2018, 21:27
Статус:
Сообщений: 666
Регистрация: 09.03.2014
Российская Федерация  atanda
Пятница, 02.02.2018, 16:46 | Сообщение # 5
Статус:
Бывалый:
Сообщений: 672
Награды: 7
Регистрация: 12.07.2017

Цитата alex1197 ()
ковырять движок видимо

могу и ошибаться, но аналогично сделаны детекторы.
  Злобная реклама
Пятница, 02.02.2018, 16:46
Статус:
Сообщений: 666
Регистрация: 12.07.2017
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » [COP] GUI Окна поверх стандартных (Использование AddDialogToRender() и RemoveDialogToRender())
  • Страница 1 из 1
  • 1
Поиск: