Скачали, тестируем. Вроде бы пока что работает. Удалось даже запустить макрос dulo, в такой вот редакции: proc dulo * new procedure * enter your code below ! Макрос проставляет подписи под планетами, где ! замечены Большие Дула или Непробивашка ! в скобочках {} прописывается максимальная защита на планете ! без скобочек максимальная атака, имеющаяся на планете. dim aDulo as array dim aNepr as array dim aPlanet as array dim aPlanet1 as map dim aGr as map ! цвет предупреждения sWarnColor = "RedLT" !н0рмальный цвет sNormColor = "WaitLT" select Num from planets to PlanetList i = 0 loop readnext aPlanet1 from PlanetList else break if aPlanet1["Num"] > i then i = aPlanet1["Num"] repeat i = i+1 ! инициализация for k = 1 to i k1 = k - 1 aPlanet[k] = "#":k1 aDulo[k] = 0 aNepr[k] = 0 next k ! Параметры ! Если у корабля защита больше iNepr, то он считается непробивашкой iNepr = 1 ! Если у корабля атака больше чем iDulo, то он считается дулом! iDulo = 1
! Пройти по списку групп select * from groups to aGroupList where {Count} > 0 loop readnext aGr from aGroupList else break iAtt = aGr["Attack"] iShl = aGr["Defence"] k1 = aGr["#Destination"] k1 = k1 + 1 ! Если найдено, то найти наибольший if ((k1<=i) && (k1>0)) then if ((iAtt > iDulo) && (aDulo[k1] < iAtt)) then aDulo[k1] = iAtt end if ((iShl > iNepr) && (aNepr[k1] < iShl)) then aNepr[k1] = iShl end end repeat ! Расставим подписи. for k = 1 to i newcolor = sNormColor if ((aDulo[k] > 0) && (aDulo[k] < aNepr[k]/4)) then newcolor = sWarnColor end newcom = " " if (aDulo[k] > 0) then newcom = newcom : aDulo[k] end if (aNepr[k] > 0) then newcom = newcom : "{" : aNepr[k] : "}" end update "commentary" aPlanet[k]: " " :newcom update "color" aPlanet[k]: " ":newcolor next k
|