
Âñòóïëåíèå
Ïðèâåòñòâóþ, ÷èòàòåëü.  ýòîì ðóêîâîäñòâå ÿ áû õîòåë ðàññêàçàòü òåáå îáî âñåì, ÷òî êàñàåòñÿ ñîçäàíèÿ ãîëîãðàìì â Ãàððèñ ìîäå. ß ïîêàæó âñå ôóíêöèè, êîòîðûå ó÷àñòâóþò â ñîçäàíèè ãîëîãðàìì, à òàêæå ïðîäåìîíñòðèðóþ íåáîëüøîé ïðèìåð ñîçäàíèÿ ìèíèãàíà, êîòîðûé áóäåò çàìåíÿòü íàì ôèçãàí (íó íå ñîâñåì çàìåíÿòü, íî îá ýòîì ïîçæå :D).-------------------------Åñëè êòî-òî íå çíàåò, êàê îòêðûòü Expression 2---------------------------------------Äëÿ íà÷àëà íàì ïîíàäîáèòñÿ ñêà÷àòü èç âîðêøîïà àääîí Wiremod: http://steamcommunity.com/sharedfiles/filedetails/?id=160250458.  ýòîò àääîí âêëþ÷åí Expression 2, ÿçûê ïðîãðàììèðîâàíèÿ, ñ ïîìîùüþ êîòîðîãî ìû è áóäåì ñîçäàâàòü ãîëîãðàììû.Ïîñëå òîãî, êàê àääîí ñêà÷àí, íåîáõîäèìî çàïóñòèòü èãðó, îòêðûòü Q-ìåíþ, ñïðàâà ñâåðõó âûáðàòü âêëàäêó "Wire", äàëåå íàéòè ïàïêó "Chips, Gates" è óæå âûáðàòü ïóíêò "Expression 2". Äàëåå ñïðàâà íàæèìàåì êíîïêó New Expression.
×òî òàêîå, ñ ÷åì åäÿò?
Ñîáñòâåííî, ãîëîãðàììû - ýòî îáúåêòû, êîòîðûå ìîæíî óâèäåòü, íî íåëüçÿ ïîòðîãàòü. Ó íèõ íåò ôèçèêè, ïîýòîìó åñëè ïðîñòî ñîçäàòü ãîëîãðàììó, îíà îñòàíåòñÿ âèñåòü â âîçäóõå. Åñëè õî÷åòñÿ, íàïðèìåð, ñîçäàòü ôèçèêó ïàäåíèÿ, ïðèäåòñÿ ïðîïèñûâàòü ýòî â êîäå îòäåëüíî. Ãîëîãðàììû ìîæíî ïðèêðåïëÿòü ê äðóãèì ãîëîãðàììàì, ïðîïàì, äàæå èãðîêàì (ìèíèãàí â êîíöå êàê ðàç è áóäåò ïðèìåðîì).
Ñïèñîê ôóíêöèé
Èòàê, âîò ñïèñîê ôóíêöèé ñ èõ ïîäðîáíûì îïèñàíèåì:
| Ôóíêöèÿ | Âîçâðàùàåò çíà÷åíèå | Îïèñàíèå |
|---|---|---|
| holoEntity(N) | Ýíòèòè | Âîçâðàùàåò ýíòèòè ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoIndex(E) | ×èñëî | Âîçâðàùàåò èíäåêñ ãîëîãðàììû ïî óêàçàííîé ýíòèòè ãîëîãðàììû |
| holoCanCreate() | ×èñëî | Âîçâðàùàåò 1, êîãäà holoCreate() óñïåøíî ñîçäàëà íîâóþ ãîëîãðàììó, äî òåõ ïîð, ïîêà íå äîñòèãíóò ëèìèò ãîëîãðàìì íà ñåðâåðå. Çàìåíÿåò holoRemainingSpawns() |
| holoRemainingSpawns() | ×èñëî | Âîçâðàùàåò êîëè÷åñòâî ãîëîãðàìì, êîòîðûå èãðîê åùå ìîæåò ñîçäàòü |
| holoCreate(N,V,V,A,V,S) | Ýíòèòè | Ñîçäàåò íîâóþ ãîëîãðàììó ñ ïàðàìåòðàìè: Èíäåêñ, Ïîçèöèÿ, Ðàçìåð, Óãîë, Öâåò, Ìîäåëü. Åñëè ìîäåëü óêàçàíà íåïðàâèëüíî èëè íå óêàçàíà âîâñå, òî óñòàíàâëèâàåòñÿ äåôîëòíàÿ ìîäåëü - êóá |
| holoCreate(N,V,V,A,V) | Ýíòèòè | Ñîçäàåò íîâóþ ãîëîãðàììó ñ ïàðàìåòðàìè: Èíäåêñ, Ïîçèöèÿ, Ðàçìåð, Óãîë, Öâåò |
| holoCreate(N,V,V,A) | Ýíòèòè | Ñîçäàåò íîâóþ ãîëîãðàììó ñ ïàðàìåòðàìè: Èíäåêñ, Ïîçèöèÿ, Ðàçìåð, Óãîë |
| holoCreate(N,V,V) | Ýíòèòè | Ñîçäàåò íîâóþ ãîëîãðàììó ñ ïàðàìåòðàìè: Èíäåêñ, Ïîçèöèÿ, Ðàçìåð |
| holoCreate(N,V) | Ýíòèòè | Ñîçäàåò íîâóþ ãîëîãðàììó ñ ïàðàìåòðàìè: Èíäåêñ, Ïîçèöèÿ |
| holoCreate(N) | Ýíòèòè | Ñîçäàåò íîâóþ ãîëîãðàììó ñ ïàðàìåòðîì: Èíäåêñ |
| holoDelete(N) | - | Óäàëÿåò ãîëîãðàììó ñ óêàçàííûì èíäåêñîì |
| holoDeleteAll() | - | Óäàëÿåò âñå ãîëîãðàììû âëàäåëüöà ÷èïà |
| holoScale(N,V) | - | Óñòàíàâëèâàåò ðàçìåðû ãîëîãðàììû ñ çàäàííûì èíäåêñîì ïî çàäàííîìó âåêòîðó |
| holoScale(N) | Âåêòîð | Âîçâðàùàåò ðàçìåðû ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoScaleUnits(N,V) | - | Óñòàíàâëèâàåò ðàçìåðû ãîëîãðàììû ñ çàäàííûì èíäåñêîì ïî çàäàííîìó âåêòîðó â åäèíèöàõ Ãàððèñ Ìîäà |
| holoScaleUnits(N) | Âåêòîð | Âîçâðàùàåò ðàçìåðû ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoPos(N,V) | - | Óñòàíàâëèâàåò ïîçèöèþ ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoColor(N,V,N) | - | Óñòàíàâëèâàåò öâåò è ïðîçðà÷íîñòü ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoColor(N,V) | - | Óñòàíàâëèâàåò ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoAlpha(N,N) | - | Óñòàíàâëèâàåò ïðîçðà÷íîñòü ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoShadow(N,N) | - | Ðåãóëèðóåò îòîáðàæåíèå òåíè ãîëîãðàììû: 0 - îòêëþ÷èòü îòáðàñûâàíèå òåíè, 1 - âêëþ÷èòü |
| holoAng(N,A) | - | Óñòàíàâëèâàåò óãîë ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoModel(N,S,N) | - | Óñòàíàâëèâàåò ìîäåëü, à òàêæå íîìåð ñêèíà ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoModel(N,S) | - | Óñòàíàâëèâàåò ìîäåëü ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoSkin(N,N) | - | Ìåíÿåò ñêèí ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoMaterial(N,S) | - | Óñòàíàâëèâàåò ìàòåðèàë ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoBodygroup(N,N,N) | - | Óñòàíàâëèâàåò îñíîâíóþ è ïîáî÷íóþ ãðóïïû ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoBodygroups(N,N) | ×èñëî | Âîçâðàùàåò êîëè÷åñòâî ïîáî÷íûõ ãðóïï óêàçàííîé îñíîâíîé ãðóïïû ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoDisableShading(N,N) | - | Îòêëþ÷àåò/Âêëþ÷àåò øåéäèíã ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoRenderFX(N,N) | - | Óñòàíàâëèâàåò ðåæèì îòîáðàæåíèÿ ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoParent(N,N) | - | Ïðèâÿçûâàåò ãîëîãðàììó ñ ïåðâûì èíäåêñîì ê ãîëîãðàììå ñî âòîðûì èíäåêñîì |
| holoParent(N,E) | - | Ïðèâûçûâàåò ãîëîãðàììó ñ óêàçàííûì èíäåêñîì ê ýíòèòè |
| holoParentAttachment(N,E,S) | Ýíòèòè | Ïðèâûçûâàåò ãîëîãðàììó ñ óêàçàííûì èíäåêñîì ê óêàçàííîé ÷àñòè ýíòèòè |
| holoUnparent(N) | - | Ñíèìàåò ëþáûå ïðèâÿçêè ñ ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoClipEnabled(N,N) | - | Âêëþ÷àåò/âûêëþ÷àåò âîçìîæíîñòü ðàçðåçà ãîëîãðàììû ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoClipEnabled(N,N,N) | - | Àíàëîãè÷íî ïðåäûäóùåé ôóíêöèè, íî â äàííîì ñëó÷àå åñòü âîçìîæíîñòü ìàíèïóëèðîâàíèÿ ðàçíûì êîëè÷åñòâîì ðàçðåçîâ |
| holoClip(N,V,V,N) | - | Îïðåäåëÿåò, êàê áóäåò ðàçðåçàòüñÿ ãîëîãðàììà. Ïåðâûé âåêòîð - ïîçèöèÿ ðàçðåçà, âòîðîé - íàïðàâëåíèå. ×åòâåðòûé ïàðàìåòð îïðåäåëÿåò, áóäåò ëè ðàçðåç îòíîñèòåëüíî ãëîáàëüíûõ èëè ëîêàëüíûõ âåêòîðîâ |
| holoClip(N,N,V,V,N) | - | Àíàëîãè÷íî ïðåäûäóùåé ôóíêöèè, íî ýòà ôóíêöèÿ ïîçâîëÿåò âûáèðàòü îïðåäåëåííûé ðàçðåç äëÿ ãîëîãðàììû (âòîðîé ïàðàìåòð) |
| holoClipsAvailable() | ×èñëî | Âîçâðàùàåò êîëè÷åñòâî âîçìîæíûõ ðàçðåçîâ ãîëîãðàììû ñ óêàçàííûì èíäåêñîì |
| holoVisible(N,E,N) | - | Âêëþ÷àåò/Âûêëþ÷àåò îòîáðàæåíèå ãîëîãðàììû ñ óêàçàííûì èíäåêñîì äëÿ óêàçàííîãî ýíòèòè |
| holoVisible(N,R,N) | - | Âêëþ÷àåò/Âûêëþ÷àåò îòîáðàæåíèå ãîëîãðàììû ñ óêàçàííûì èíäåêñîì äëÿ óêàçàííîãî âñåõ èãðîêîâ â ìàññèâå R |
Ñïèñîê ìîäåëåé äëÿ ãîëîãðàìì
Çäåñü óêàçàíû áàçîâûå ìîäåëè ãîëîãðàìì ñ èõ íàçâàíèÿìè, êîòîðûå íóæíî áóäåò âñòàâèòü â ôóíêöèè holoCreate() èëè holoModel().
Íèçêîïîëèãîíàëüíûå ãîëîãðàììû:
Âûñîêîïîëèãîíàëüíûå ãîëîãðàììû:
Íåêîòîðûå ðàçúÿñíåíèÿ
Áàçîâûå ïàðàìåòðû ãîëîãðàììû:
- Áàçîâûé âèä ãîëîãðàììû - áåëûé êóá, ìîäåëü "cube".
- Áàçîâîå ïîëîæåíèå - ïîçèöèÿ ÷èïà, ïîðîäèâøåãî ãîëîãðàììó.
- Óãîë ãîëîãðàììû ñîîòâåòñòâóåò óãëó ÷èïà, ïîä êîòîðûì îí íàõîäèëñÿ â ìîìåíò ñîçäàíèÿ èëè îáíîâëåíèÿ.
Ñîçäàåì ìèíèãàí
 äàííîì óðîêå ÿ ñîçäàì ìèíèãàí, êîòîðûé íàø ïåðñîíàæ áóäåò äåðæàòü â ðóêàõ, êîãäà îí äåðæèò ôèçãàí, è êîòîðûé áóäåò âèñåòü çà ñïèíîé, åñëè âûáðàíî äðóãîå îðóæèå. ß èñïîëüçóþ ïî÷òè âñå ôóíêöèè, óêàçàííûå â ðóêîâîäñòâå, òàê ÷òî âàì áóäåò ëåã÷å ïîíÿòü íà ïðàêòèêå ðàáîòó êàæäîé èç ýòèõ ôóíêöèé. Íà÷íåì:
@name minigun@persist [E O Base Pivot]:entity I NumHolo Hold T Roll
Äëÿ íà÷àëà îáúÿâèì íåîáõîäèìûå íàì ïåðåìåííûå:E - íàø Å2 ÷èïO - âëàäåëåö ÷èïà, òî åñòü ìûBase - áàçîâàÿ ãîëîãðàììà, ê êîòîðîé áóäóò êðåïèòüñÿ îñòàëüíûåPivot - ãîëîãðàììà, êîòîðàÿ áóäåò êðåïèòüñÿ ê ðóêàì íàøåãî ïåðñîíàæàI - ñ÷åò÷èêNumHolo - êîëè÷åñòâî íàøèõ ãîëîãðàììHold - ïðîâåðêà íà òî, êàêîå îðóæèå ó íàñ â ðóêàõT - ïåðåìåííàÿ, íåîáõîäèìàÿ íàì äëÿ âû÷åòà óãëà âðàùåíèÿRoll - ïðîâåðêà íà íàæàòèå ÏÊÌrunOnTick(1)if(first()){ E=entity() O=owner() Pivot=holoCreate(0) holoParent(0,E) holoAlpha(0,0) Base=holoCreate(1,E:pos(),vec(0.75,0.75,4),ang(90,0,0),vec(200),"hq_tube") holoParent(1,0) I = 2 NumHolo = 15 Hold=1
Ìû ñîçäàëè ïåðâûå äâå ãîëîãðàììû. Ïåðåìåííîé Pivot ïðèñâîèëè ýíòèòè íóëåâîé ãîëîãðàììû, ÷òîáû ïîòîì çàêðåïèòü åå òàì, ãäå íàì áóäåò óäîáíî. Âûñòàâèëè çíà÷åíèå ïðîçðà÷íîñòè â 0, ïîòîìó ÷òî åå âèäèìîñòü íàì íå íóæíà. Âòîðàÿ ãîëîãðàììà,íàîáîðîò, âèäíà íàì è èìååò ìîäåëü òðóáû. Ïî ýòîé ãîëîãðàììå ìû áóäåì âûðàâíèâàòü îñòàëüíûå. Ïðèâÿçàëè åå ê íóëåâîé ãîëîãðàììå. Äàëåå âûñòàâèëè çíà÷åíèÿ ïåðåìåííûõ, êîòîðûå áóäóò ó÷àñòâîâàòü â ñîçäàíèè ïîñëåäóþùèõ ãîëîãðàìì. function entity holoStyle(Index,Position:vector,Scale:vector,Angle:angle,Colour:vector,Model:string) { holoPos(Index,Position) holoScale(Index,Scale) holoAng(Index,Angle) holoColor(Index,Colour) holoModel(Index,Model) return holoEntity(Index) }}
Çäåñü ÿ îáúÿâèë ïîëüçîâàòåëüñêóþ ôóíêöèþ, êîòîðàÿ, êàê ìîæíî çàìåòèòü, ïî êîíñòðóêöèè èäåíòè÷íà holoCreate(). ß ñäåëàë òàê, ïîòîìó ÷òî íèæå áóäåò ïðîâåðÿòüñÿ êîëè÷åñòâî ãîëîãðàìì, êîòîðûå ÿ ìîãó ñîçäàòü, à äëÿ ýòîãî ÿ ïðîñòî ñîçäàì ãîëîãðàììû áåç èõ ñòèëèçàöèè.elseif(I <= NumHolo & holoCanCreate() & I > 0){ holoCreate(I) holoScale(I,vec()) I++ }
Ñîáñòâåííî, ïðîâåðêà íà êîëè÷åñòâî âîçìîæíûõ ñîçäàâàåìûõ ãîëîãðàìì.elseif(I > NumHolo & I > 0){ holoStyle(2,Base:toWorld(vec(0,6,0)),vec(0.1,0.1,4),Base:toWorld(ang()),vec(150),"hq_tube") holoStyle(3,Base:toWorld(vec(0,-6,0)),vec(0.1,0.1,4),Base:toWorld(ang()),vec(150),"hq_tube") holoStyle(4,Base:toWorld(vec(6,0,0)),vec(0.1,0.1,4),Base:toWorld(ang()),vec(150),"hq_tube") holoStyle(5,Base:toWorld(vec(-6,0,0)),vec(0.1,0.1,4),Base:toWorld(ang()),vec(150),"hq_tube") holoStyle(6,Base:toWorld(vec(4,4,0)),vec(0.1,0.1,4),Base:toWorld(ang()),vec(150),"hq_tube") holoStyle(7,Base:toWorld(vec(4,-4,0)),vec(0.1,0.1,4),Base:toWorld(ang()),vec(150),"hq_tube") holoStyle(8,Base:toWorld(vec(-4,4,0)),vec(0.1,0.1,4),Base:toWorld(ang()),vec(150),"hq_tube") holoStyle(9,Base:toWorld(vec(-4,-4,0)),vec(0.1,0.1,4),Base:toWorld(ang()),vec(150),"hq_tube") holoStyle(10,Base:toWorld(vec(0,0,-18)),vec(1.2,1.2,0.75),Base:toWorld(ang()),vec(150),"hq_cylinder") holoStyle(11,Base:toWorld(vec(0,0,20)),vec(1.3,1.3,1),Base:toWorld(ang()),vec(150),"hq_cylinder") holoStyle(12,Base:toWorld(vec(-3,-10,23)),vec(0.1,0.1,0.5),Base:toWorld(ang(0,0,90)),vec(150),"hq_cylinder") holoStyle(13,Base:toWorld(vec(-2,0,25)),vec(0.25,0.25,1.75),Base:toWorld(ang(30,0,0)),vec(150),"cube") holoStyle(14,Base:toWorld(vec(2,0,28)),vec(0.2,0.2,0.2),Base:toWorld(ang(0,0,90)),vec(150),"hq_torus") holoStyle(15,Base:toWorld(vec(2,0,28)),vec(0.05,0.05,0.1),Base:toWorld(ang(-60,0,0)),vec(150),"cube")
Çäåñü ÿ ïðîñòî íà÷àë ñîçäàâàòü è âûðàâíèâàòü ãîëîãðàììû. Ïî ñóòè ìèíèãàí óæå ñäåëàí, íî ìû íå ìîæåì åãî åùå äåðæàòü â ðóêàõ. for(I=2,9){ holoParent(I,10) } for(I=10,NumHolo){ holoParent(I,Base) } I=0
Ïðèêðåïëÿåì ãîëîãðàììû äðóã ê äðóãó. ß ñäåëàë äâà îòäåëüíûõ öèêëà, ïîòîìó ÷òî ìû ïîçæå ñäåëàåì òàê, ÷òîáû ìèíèãàí áûë íå ïðîñòî ìîäåëüêîé, íî è âïîëíå ðàáîòàþùèì è î÷åíü îïàñíûì îðóæèåì :D}elseif(I==0){ if(O:weapon():type()=="weapon_physgun"){ O:weapon():setAlpha(0) Hold=0 } else{ Hold=1 O:weapon():setAlpha(255) }
Òóò ìû ïðîñòî äåëàåì ïðîçðà÷íûì íàø ôèçãàí, ÷òîáû îí íå ïîðòèë âèä, à çàîäíî äåëàåì ïðîâåðêó íà íîøåíèå íåîáõîäèìîãî íàì îðóæèÿ. if($Hold){ if(Hold==0){ holoPos(0,O:attachmentPos("anim_attachment_RH")) holoAng(0,O:attachmentAng("anim_attachment_RH")) holoParentAttachment(0,O,"anim_attachment_RH") holoAng(1,Pivot:toWorld(ang(80,-12,180))) holoPos(1,Pivot:toWorld(vec(28,-6,7))) } elseif(Hold==1){ holoPos(0,O:attachmentPos("chest")) holoAng(0,O:attachmentAng("chest")) holoParentAttachment(0,O,"chest") holoAng(1,Pivot:toWorld(ang(0,0,0))) holoPos(1,Pivot:toWorld(vec(-16,0,0))) } }}
 ýòîì áëîêå ìû ïðèâÿçûâàåì íàø ìèíèãàí ê íàøèì ðóêàì, åñëè ñåé÷àñ ó íàñ èñïîëüçóåòñÿ ôèçãàí, èëè ê ãðóäè, åñëè èñïîëüçóåòñÿ ëþáîå äðóãîå îðóæèå.T=(T+10)%360Roll=O:keyAttack2()if(Roll&!Hold){ holoAng(10,holoEntity(10):toWorld(ang(0,T,0)))#ifdef entity:shootTo(vector,vector,number,number,number,string)holoEntity(10):shootTo(holoEntity(10):pos()-holoEntity(10):forward()*5,O:aimPos()-holoEntity(2):pos()-vec(0,0,30),0,0,0,"toolTracer")#endif holoEntity(10):soundPlay(1,0.3,"weapons/minigun/gunfire/minigun_fire.wav")}
Çäåñü ìû ïðîïèñûâàåì êîä ñòðåëüáû è âðàùåíèÿ ñòâîëîâ íàøåãî ìèíèãàíà. KeyAttack2 - ýòî êëàâèøà ÏÊÌ.*ÂÍÈÌÀÍÈÅ* Äëÿ èñïîëüçîâàíèÿ ôóíêöèè ShootTo âàì íåîáõîäèì Health Core èëè æå àääîí E2Power. Åñëè òàêîâûõ íåò, òî ïðîñòî çàêîììåíòèðóéòå ýòó ôóíêöèþ.  ýòîì ñëó÷àå ìèíèãàí ïðîñòî íå áóäåò ñòðåëÿòü. Ïîäâåäåì èòîãè
 äàííîì ðóêîâîäñòâå ìû ðàññìîòðåëè âñå ôóíêöèè, ïîçâîëÿþùèå íàì ñîçäàòü ãîëîãðàììû â Garry's Mod'å, óâèäåëè èõ ïðàêòè÷åñêîå ïðèìåíåíèå. Åñëè âàì ÷òî-òî îêàçàëîñü ñëîæíûì, ëèáî âû íå çíàåòå êàêèõ-òî ôóíêöèé, èñïîëüçîâàííûõ â ñîçäàíèè ìèíèãàíà, ïèøèòå â êîììåíòàðèè èëè â ëè÷êó, âñå ðàññêàæó è ïîêàæó. Ïðîøó âàñ òàêæå óêàçàòü íà êàêèå-òî îøèáêè, äîïóùåííûå â ðóêîâîäñòâå, èëè íà îøèáî÷íûé ïåðåâîä.Òàáëèöà ôóíêöèé è êàðòèíêè áàçîâûõ ìîäåëåé âçÿòû ñ îôèöèàëüíîé âèêè Wiremod: http://wiki.wiremod.com/wiki/Expression_2Äîáàâëÿéòå ðóêîâîäñòâî â èçáðàííîå, ÷òîáû èìåòü â èãðå áûñòðûé äîñòóï ê ôóíêöèÿì ñîçäàíèÿ ãîëîãðàìì.