Макросы для СС2
Название | Башня Стены Города |
Автор | Morgan Olden |
Команда | citywalltower |
Описание | Изображает зубчатые башни в стиле макроса "Стена Города 5". Можно выбрать количество сторон и городской стиль крыши.
|
Инструкции | Этот макрос предоставляет богатые возможности выбора - 1. Цвет парапета (стандарт - темно-серый) 2. Цвет плоской крыши (стандарт - светло-серый) 3. Количество сторон (стандарт 4; выберите "0" для круглой башни) 4. Плоская или покатая крыша 5. Стиль покатой крыши (стандартный или городской - для городского необходим установленный "City Designer 2") 6. Название городского стиля (просто набейте название стиля, как "House Settings" в "House" диалоге) 7. Ширина прохода между покатой крышей и парапетом.
В макрос включен файл скрипта с кодом (смотри вложение). Для работы скрипта просто запустите его из СС2.
|
Код
macro CityWallTower
ecoff
rdoff
point 10001,10001;
golayer
MacroConstruction
scriptm #CityWallTower-vars.scr
ifdef
mcoCityWallTowerVarsOK mcoDoneVarCheck
:mcoDefineVars
gv mcoColDS 14
gv
mcoColLS 251
gcol mcoColDS ^DParapet colour? (14)
gcol mcoColLS ^DFlat
roof colour? (251)
gv mcoTowerSides 4
gn mcoTowerSides ^DHow many sides?
(0=circle)
ifz mcoTowerSides-1 mcoCleanup
ifz mcoTowerSides-2
mcoCleanup
gv mcoRS 1
gv mcoRS ^DFlat or Peaked roof? (0=flat,
1=peaked,default)
ifz mcoRS mcoSkipRoofVars
gv mcoRoofStyle 0
gv
mcoRoofStyle ^DRoof style? (0=default 1=CD House style) (0)
ifz mcoRoofStyle
mcoSkipCDHouseStyle
houseload ^DCityDesigner House
style?
:mcoSkipCDHouseStyle
gv mcoWW 0
gv mcoWW ^D Walkway Width:
(0)
:mcoSkipRoofVars
gw mcoCityWallTowerVarsOK OK
savevars
CityWallTower-vars
go mcoStart
:mcoDoneVarCheck
gv mcoUseDefault
1
gv mcoUseDefault ^DUse saved settings? (1=yes - default - click)
(0=no)
ifz mcoUseDefault mcoDefineVars
:mcoStart
selbyp
gv mcoBLeg
0
gv mcoFirstTime 0
gv mcoColDR 11
gv mcoColLR 10
color
mcoColLS
lwidth 0
lstyle solid
fstyle solid
gp mcoCP
10001,10001
gp mcoCP ^DTower centre:
gdist mcoTestDist 10001,10001
mcoCP
ifz mcoTestDist mcoCleanup
ifz mcoTowerSides
mcodrawcircletower
rpoly mcoTowerSides mcoCP ^DTower size and
orientation:
color 0
gp mcoOP @0,0
gdist mcoTestDist mcoCP mcoOP
ifz
mcoTestDist mcoCleanup
gdist mcoOD mcoCP mcoOP
gbrng mcoOrient mcoCP
mcoOP
gv mcoAngle 360/mcoTowerSides
gp mcoP1 mcoOP
gp mcoP2 ref mcoCP
gdist mcoD12 mcoP1 mcoP2
GBRNG mcoB12 mcoP1
mcoP2
gp mcoP1L ref mcoP1 gp mcoP1LC ref mcoP1
gp mcoFirstPoint mcoP1
gp mcoFirstPointL mcoP1L
gp
mcoFirstPointLC mcoP1LC
gv mcoFirstBrng mcoB12
gp mcoP3 ref mcoCP
gdist mcoD23 mcoP2 mcoP3
gv mcoSideCount
3
:mcoloop
GBRNG mcoB12 mcoP1 mcoP2
GBRNG mcoB23 mcoP2 mcoP3
gcos
mcowcs 90-((mcoB12-mcoB23-180)/2)
gv mcoaw 1/mcowcs*(1.5)
gv mcoawCren
1/mcowcs*(1.25)
gp mcoP2L ref mcoP2 <(mcoB12+mcoB23)/2-90,mcoaw
gp
mcoP2LC ref mcoP2 <(mcoB12+mcoB23)/2-90,mcoawCren
lwidth 0
poly mcoP1L
mcoP2L mcoP2 mcoP1;
changec2 mcoColDS
lwidth 2.5
gdist mcoD12LC mcoP1LC
mcoP2LC
ifz mcoD12LC-7.5 mcoDoneCrenLoop
gn mcoLoopCount
(mcoD12LC-11.25)/7.5
ifz mcoFirstTime mcoControl1
gn mcoLoopCount
(mcoD12LC-12.5)/7.5
path ref mcoP1LC :mcoControl1
changec2 mcoColDS
ifz mcoLoopCount
mcoDoneCrenLoop
ifn mcoLoopCount mcoDoneCrenLoop
gv mcoCrenDist
(mcoD12LC-11.25)/mcoLoopCount
gv mcoCurLen 6.25
ifz mcoFirstTime
mcoCrenLoop
gv mcoCrenDist (mcoD12LC-12.5)/mcoLoopCount
gv mcoCurLen
7.5
:mcoCrenLoop
line ref mcoP1LC changec2 mcoColDS
gv mcoCurLen
mcoCurLen+mcoCrenDist
gv mcoLoopCount mcoLoopCount-1
ifp mcoLoopCount
mcoCrenLoop
:mcoDoneCrenLoop
lwidth 0
ifz mcoSideCount-mcoTowerSides
mcoDone
gv mcoSideCount mcoSideCount+1
gp mcoP4 ref mcoCP
gdist mcoD34 mcoP3
mcoP4
gp mcoP1 mcoP2
gp mcoP2 mcoP3
gp mcoP3 mcoP4
gp mcoP1L
mcoP2L
gp mcoP2L mcoP3L
gp mcoP1LC mcoP2LC
gp mcoP2LC mcoP3LC
gv
mcoBLeg mcoB12
gv mcoFirstTime 1
goto mcoloop
:mcoDone
gp mcoP1
mcoP2
gp mcoP2 mcoP3
gp mcoP3 mcoFirstPoint
gp mcoP1L mcoP2L
gp
mcoP2L mcoP3L
gp mcoP1LC mcoP2LC
gp mcoP2LC mcoP3LC
gv mcoBLeg
mcoB12
GBRNG mcoB12 mcoP1 mcoP2
GBRNG mcoB23 mcoP2 mcoP3
gcos mcowcs
90-((mcoB12-mcoB23-180)/2)
gv mcoaw 1/mcowcs*(1.5)
gv mcoawCren
1/mcowcs*(1.25)
gp mcoP2L ref mcoP2 <(mcoB12+mcoB23)/2-90,mcoaw
gp
mcoP2LC ref mcoP2 <(mcoB12+mcoB23)/2-90,mcoawCren
lwidth 0
poly mcoP1L
mcoP2L mcoP2 mcoP1;
changec2 mcoColDS
lwidth 2.5
gdist mcoD12LC mcoP1LC
mcoP2LC
ifz mcoD12LC-7.5 mcoDoneCrenLoop3
gn mcoLoopCount
(mcoD12LC-12.5)/7.5
path ref mcoP1LC changec2 mcoColDS
ifz mcoLoopCount mcoDoneCrenLoop3
ifn
mcoLoopCount mcoDoneCrenLoop3
gv mcoCrenDist
(mcoD12LC-12.5)/mcoLoopCount
gv mcoCurLen 7.5
:mcoCrenLoop3
line ref
mcoP1LC changec2 mcoColDS
gv mcoCurLen
mcoCurLen+mcoCrenDist
gv mcoLoopCount mcoLoopCount-1
ifp mcoLoopCount
mcoCrenLoop3
:mcoDoneCrenLoop3
gp mcoP1 mcoP2
gp mcoP2 mcoP3
gp
mcoP3 mcoP4
gp mcoP1L mcoP2L
gp mcoP2L mcoP3L
gp mcoP1LC mcoP2LC
gp
mcoP2LC mcoP3LC
gv mcoBLeg mcoB12
GBRNG mcoB12 mcoP1 mcoP2
GBRNG mcoB23
mcoFirstBrng
gcos mcowcs 90-((mcoB12-mcoB23-180)/2)
gv mcoaw
1/mcowcs*(1.5)
gv mcoawCren 1/mcowcs*(1.25)
gp mcoP2L ref mcoP2
<(mcoB12+mcoB23)/2-90,mcoaw
gp mcoP2LC ref mcoP2
<(mcoB12+mcoB23)/2-90,mcoawCren
lwidth 0
poly mcoP1L mcoP2L mcoP2
mcoP1;
changec2 mcoColDS
lwidth 2.5
gdist mcoD12LC mcoP1LC
mcoP2LC
ifz mcoD12LC-7.5 mcoDoneCrenLoop4
gn mcoLoopCount
(mcoD12LC-12.5)/7.5
path ref mcoP1LC changec2 mcoColDS
ifz mcoLoopCount mcoDoneCrenLoop4
ifn
mcoLoopCount mcoDoneCrenLoop4
gv mcoCrenDist
(mcoD12LC-12.5)/mcoLoopCount
gv mcoCurLen 7.5
:mcoCrenLoop4
line ref
mcoP1LC changec2 mcoColDS
gv mcoCurLen
mcoCurLen+mcoCrenDist
gv mcoLoopCount mcoLoopCount-1
ifp mcoLoopCount
mcoCrenLoop4
:mcoDoneCrenLoop4
lwidth 2.5
path ref mcoP2LC
changec2
mcoColDS
:mcoRoofConstruction
ifz mcoRS mcoCleanup
gcos mcoCOS
mcoAngle/2
gv mcoCOS 1/mcoCOS
gv mcoID mcoOD-(mcoWW*mcoCOS)
ifz
mcoRoofStyle-1 mcoCleanup
gv mcoC 0
lwidth 0;fstyle solid;lstyle
solid;color 0
poly
mcoCP
:mcoRoofLoop1
ref mcoCP
gv mcoC mcoC+1
ifp
.5-(mcoC/mcoTowerSides) mcoRoofLoop1
changec2
mcoColDR
poly
mcoCP
ref mcoCP
:mcoRoofLoop2
ref mcoCP
gv mcoC mcoC+1
ifp
mcoTowerSides-mcoC+1 mcoRoofLoop2
changec2 mcoColLR
lwidth 1
gv
mcoC 1
:mcoR
idgeLoop1
line mcoCP ref mcoCP
changec2 mcoColDR
gv mcoC
mcoC+1
ifp .5-(mcoC/mcoTowerSides) mcoRidgeLoop1
changec2
mcoColLR
:mcoRidgeLoop2
line mcoCP ref mcoCP
changec2 mcoColLR
gv mcoC
mcoC+1
ifp mcoTowerSides-mcoC+1 mcoRidgeLoop2
changec2 mcoColLR
lwidth
0
rpoly mcoTowerSides mcoCP ref mcoCP
changec2 mcoColLR
go
mcoCleanup
:mcodrawcircletower
cirp mcoCP ^DTower diameter:
gp
mcoOP @0,0
gdist mcoTestDist mcoCP mcoOP
ifz mcoTestDist
moAbort
erase
gv mcoTW mcoTestDist*2
lwidth 0;color mcoColLS;fstyle
solid;cird mcoTW mcoCP;
lwidth 1.5;color 0;cird mcoTW mcoCP;
changec2
mcoColDS
gv mcoOutsideTW mcoTW+.75
gn mcoOutsideCirc
mcoOutsideTW*3.1416/7.5
gv mcoOneArcUnit 360/mcoOutsideCirc/7.5
gv
mcocurrentangle 0
:mcocirccrenloop
lwidth 2.5;color 0;fstyle solid
arcr
mcoCP mcoOutsideTW/2 mcocurrentangle
(mcocurrentangle+(mcoOneArcUnit*5))
|changec2 mcoColDS
gv mcocurrentangle
(mcocurrentangle+(mcoOneArcUnit*7.5))
ifp mcocurrentangle-360
mcodonecirccrenloop
go mcocirccrenloop
:mcodonecirccrenloop
ifz mcoRS
mcoCleanup
ifz mcoRoofStyle mcoDefaultCircRoof
gv mcoTowerSides 15
gv
mcoAngle 360/mcoTowerSides
gv mcoOrient 90
gv mcoOD mcoTW/2
gcos mcoCOS
mcoAngle/2
gv mcoCOS 1/mcoCOS
gv mcoID mcoOD-(mcoWW*mcoCOS)
go
mcoCleanup
:mcoDefaultCircRoof
lwidth 0;fstyle solid
color
mcoColLR;cird mcoTW-(mcoWW*2) mcoCP;
color mcoColDR
arcw mcoCP
(mcoTW-(mcoWW*2))/2 200 350
|color 0;fstyle hollow;cird mcoTW-(mcoWW*2)
mcoCP;
go mcoCleanup
:mcoCleanup
lwidth 0
selbyl
changel
MacroConstruction
like
10001,10001
selbyp
group
ifz mcoRoofStyle
mcoAbort
:mcoCDHouseStyle
gv mcoC 0
housem 8
:mcoCDRoofLoop
ref
mcoCP gv mcoC mcoC+1
ifn
mcoC-mcoTowerSides mcoCDRoofLoop
mcoCP;
:mcoabort
selby1
keep
10001,10001
erase
10001,10001
selrest
rdon
econ
endm
Copyright © AD&Den`s Lair Все права защищены.