
 ýòîì ðóêîâîäñòâå ìû ðàññìîòðèì áàçîâûé ôóíêöèîíàë äåðìû. Ôóíêöèè:
vgui.Create()
PANEL:DoClick()
PANEL:Paint()
Âàæíàÿ èíôà - ðåñóðñ èíôîðìàöèè! Î÷åíü ÷àñòî ëþäè ñïðàøèâàþò, â òîì ÷èñëå è ÿ ðàíüøå ñïðàøèâàë, ãäå âçÿòü íàçâàíèå ôóíêöèé, è ïðîñòî ïî÷èòàòü î GLua. Òàê âîò, Ãàððè Íüþìàí ñîçäàë îòäåëüíûé ñàéò, ïîñâÿùåííûé âèêè îá ýòîì ÿçûêå. Âîò ññûëêà:
wiki.garrysmod.com
êàê ñîçäàâàòü îáúåêòû Äåðìû Äëÿ ñîçäàíèÿ ðàçëè÷íûõ 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. Âñ¸ ïðîñòî!)
Ôóíêöèÿ RoundedBox( ñèëà îêðóãëåíèÿ ïðÿìîóãîëüíèêà, îòñòóï ïî Èêñó, îòñòóï ïî Èãðåêó, Øèðèíà, Âûñîòà, Öâåò â RGB ).
 ïåðâîì ñëó÷àå ìû çàðèñîâûâàåì ÂѨ îêíî ò¸ìíî-ïðîçðà÷íûì êâàäðàòîì.
Âî âòîðîì æå ñëó÷àå, ìû çàðèñîâûâàåì ñàìóþ âåðõóøêó îêíà àáñîëþòíî íå ïðîçðà÷íûì, áåëûì öâåòîì.
Ñîáñòâåííî, âîò òàê îíî è ðàáîòàåò. Áèáëèîòåêà Derma áûëà ñîçäàíà â äàëåêèõ 2009õ ãîäàõ, êîãäà GM áûë åùå î÷åíü ìîëîäîé èãðîé. È â òî âðåìÿ òàêîãî êîëè÷åñòâà íîâîðîòîâ òàì íå áûëî. Òàê ÷òî ñåé÷àñ, íàì îñòàåòñÿ äîâîëüñòâîâàòüñÿ ïëîäàìè òðóäà ìíîãèõ ôàíàòîâ èãðû!
Ñïàñèáî òåì, êòî ïðî÷åë ðóêîâîäñòâî äî êîíöà. Ïðîñüáà îò ìåíÿ - ëàéêíè ðóêîâîäñòâî, áðî! Ýòî òàê ïðîñòî, êàê íàæàòü íà êíîïêó íà ñîçäàííîì òîáîþ îêîøêå íà Äåðìå! ß ñòàðàëñÿ, è âëîæèë êóñîê äóøè â ýòîò òåêñò.