Случайная подборка модов
Хроники Кайдана. Вторая серия
4.0
G.L.A.D.I.A.T.O.R. II Время Альянса
3.4
Зона обр.2010г.
3.1
Контракт на плохую жизнь: Эффект бабочки
3.7
Тайный путь
3.6
The Second Sun
2.9
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 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
Поиск: