SteamDB

GMOD DERMA

Derma - большая библиотека в GLua. Используется для создания разных оконных программ и скриптов.
В этом руководстве мы рассмотрим базовый функционал дермы. Функции:

vgui.Create()
PANEL:DoClick()
PANEL:Paint()

Важная инфа - ресурс информации! Очень часто люди спрашивают, в том числе и я раньше спрашивал, где взять название функций, и просто почитать о GLua. Так вот, Гарри Ньюман создал отдельный сайт, посвященный вики об этом языке. Вот ссылка:
http://wiki.garrysmod.com/page/VGUI_Element_List

как создавать объекты Дермы Для создания различных VGUI элементов используется функция библиотеки vgui - vgui.Create('название элемента', парент)

Рассмотрим пример кода для создания обыкновенного окна с кнопкой по центру, и измененным дизайном.

local Frame = vgui.Create('DFrame') Frame:SetSize(500, 500) Frame:Center() Frame:SetTitle('Окно!') Frame:MakePopup() local Btn = vgui.Create('DButton', Frame) Btn:SetSize(150, 30) Btn:SetText('Кнопка!') Btn:Center() function Btn:DoClick() chat.AddText( Color(255, 255, 255), 'Привет, ', LocalPlayer() ) end function Frame:Paint(w, h) draw.RoundedBox(1, 0, 0, w, h, Color(50, 50, 50, 50)) draw.RoundedBox(0, 0, 0, w, 25, Color(255,255,255)) end
И так, начнем.

Создание и расположение Окна
local Frame = vgui.Create('DFrame') - функция создания графического, функционального элемента.
В данном случае мы создали обыкновенное окно. Такое простое, не измененное окно используются ВЕЗДЕ и ПОВСЕМЕСТНО, во всех гейммодах и на любых серверах. Многие могли заметить его на DarkRP, в разных меню. Но чаще всего разработчики модов изменяют дизайн окна, что бы оно выглядело более приятно.

Frame:SetSize(500, 500) - установка размера окна. Первое число - размер окна по Иксу, второе - по Игреку. (т.к. окно двумерное, и расположено оно на экране, то координаты две, что и логично, правда? )

Frame:Center() - точное расположение окна по центру экрана. Ничего сложного )

Frame:SetTitle('Окно!') - подпись окна в верхнем левом углу. Принимает любой текст.

Frame:MakePopup() - выводит окно на первый план.

Создание и расположение Кнопки
local Btn = vgui.Create('DButton', Frame) - создание графического элемента "кнопка". Способна нажиматься :D

Btn:SetSize(150, 30) - размер кнопки. 150 х 30 пикселей.

Btn:SetText('Кнопка!') - текст, отображаемый на кнопке. Принимает любой текст.

Btn:Center() - расположение кнопки по центру окна.
Важное замечание: при создании граф. элемента в функции указывается его родительский объект, к которому он будет присоединен (припаренчен). Функция :Center() центрирует элемент относительно родительского объекта Derma, это важно!

Функция нажатия на Кнопку
function Btn:DoClick() - функция, выполняющаяся при нажатии на кнопку. Открывается она этим кодом <-, а закрывается Луашным тегом end.

chat.AddText( Color(255, 255, 255), 'Привет, ', LocalPlayer() ) - выводит в чат сообщение по типу: "Привет, <НИК ИГРОКА>". Примечание: Слово "Привет" будет белого цвета (255, 255, 255), а ник игрока будет в цвет группы, в которой он находится на сервере.

Функция изменения дизайна Окна - Paint Примечание: эта функция способна изменить дизайн большинства графических элементов Дермы.

function Frame:Paint(w, h) - инициализация функции Пэйнт, или же окраски. В нашем случае, эта функция изменяет отрисовку окна.
- в качестве аргументов функции у нас 2 числовых значения - w (Width), и h (Height). Эти параметры зависят от размера элемента, который будет окрашен. (В нашем случае, у окна размер 500 x 500 - значит w и h будут равны 500. А если бы мы окрашивали кнопку - w была бы равна 150, а h - 30. Всё просто!)

draw.RoundedBox(1, 0, 0, w, h, Color(50, 50, 50, 50)) draw.RoundedBox(0, 0, 0, w, 25, Color(255,255,255)) - тут мы рисуем 2 прямоугольника на окне. Рассмотрим первый:
Функция RoundedBox( сила округления прямоугольника, отступ по Иксу, отступ по Игреку, Ширина, Высота, Цвет в RGB ).
В первом случае мы зарисовываем ВСЁ окно тёмно-прозрачным квадратом.
Во втором же случае, мы зарисовываем самую верхушку окна абсолютно не прозрачным, белым цветом.

Собственно, вот так оно и работает. Библиотека Derma была создана в далеких 2009х годах, когда GM был еще очень молодой игрой. И в то время такого количества новоротов там не было. Так что сейчас, нам остается довольствоваться плодами труда многих фанатов игры!

Спасибо тем, кто прочел руководство до конца. Просьба от меня - лайкни руководство, бро! Это так просто, как нажать на кнопку на созданном тобою окошке на Дерме! Я старался, и вложил кусок души в этот текст.
скачать dle 10.6фильмы бесплатно