Окно делится на 4 части. Левый верхний угол содержит список функций, которые можно использовать в макросах, список переменных, и список имеющихся макросов. Правый верхний - консоль, в которую идет вывод из макросов и ввод с клавиатуры. Можете попробовать набрать в строчке cocerel и посмотреть окно карты - в нем должны появится подписи под планетами (подробности можно посмотреть выбрав в левом углу макрос и почитать описание в правом нижнем разделе). Для сброса надписей надо выполнить макрос clear. В левом нижнем разделе описан контекст данных батл-симулятора.
Попробуем написать простейший макрос. Нажимаем правую кнопку мышки в списке макросов, и в появившемся меню выбираем пункт "New proc". В этом же меню можно создать функцию, которую можно использовать в макросе, удалить исходный код макроса, или удалить сам макрос. Вводим имя макроса (для переименования достаточно щелкнуть мышкой по нужному имени). После ввода имени в правом нижнем разделе появляется код-пустышка макроса (сделайте двойной щелчок).
proc test0 * new procedure * enter your code belowВводим нижеследующий код макроса. Макрос подписывает планетки, указывая массу вашего флота, массу флота рас, к которым у вас мир, и массу флота враждебных рас. Если нет желания писать макрос, можете скачать и скопировать его в каталог макросов программы (обычно C:\Program Files\DataArt\GVNG\Macro\). После ввода макроса вызываем контекстное меню в правом нижнем разделе и дважды компилируем код. После этого в окне консоли набираем test0, дожидаемся окончания выполнения, переключаемся на окно карты и наслаждаемся результатом.
Напомню, что выполнение макроса можно назначить на комбинацию клавиш (хоткей): выбираем File->Options->Hotkeys. Через контекстное меню (правая кнопка мышки) добавляем новый пункт. Ставим Destination = CurrentGame, в поле Action ручками вводим наименование макроса. Выбираем поле Hotkey, и нажимаем нужную комбинацию клавиш. Как видно на картинке, я назначил на Control+Insert - макрос Clear, на Control+Home - test0.
Для корректной работы макроса необходима версия ГВНГ от 27.08.2009 и позднее.
proc test0 * объявление массивов. Тип array это обычный массив, тип map - массив с текстовыми ключами (ассоциативный). dim aRace as map dim aPlanets as map dim aMass1 as map dim aMass2 as map dim aMass3 as map dim aGr as map dim aPeace as map * для начала подсчитаем число планет на карте. allpl = 0 * команда запрашивает все поля из таблицы planets в массив PlanetsList select * from planets to PlanetsList loop * считываем очередную планету из массива, до тех пор пока они есть readnext aPlanets from PlanetsList else break allpl = allpl+1 repeat * считываем отношение нашей расы к всем остальным расам select * from races to RacesList loop readnext aRace from RacesList else break race = aRace["Name"]; aPeace[aRace["Name"]] = aRace["Status"] repeat * считываем все группы select * from groups to aGroupList loop readnext aGr from aGroupList else break * статус из таблицы рас (-, war, peace) status = aPeace[aGr["Owner"]] * номер планеты, на которой расположена группа source = aGr["#Source"] * в aMass1 считаем массу своих кораблей на очередной планете if (status=="-") then aMass1[source]=aMass1[source]+aGr["Mass"] end * в aMass2 считаем массу нейтральных кораблей на очередной планете if (status=="Peace") then aMass2[source]=aMass2[source]+aGr["Mass"] end * в aMass3 считаем массу враждебных кораблей на очередной планете if (status=="War") then aMass3[source]=aMass3[source]+aGr["Mass"] end repeat * теперь подписываем все планеты for i=0 to allpl newCom = "" * цвет подписи на планетах, где больше наших кораблей зеленый newColor = "GreenLT" * цвет подписи на планетах, где больше нейтральных кораблей желтый if (aMass2[i]>aMass1[i] && aMass2[i]>aMass3[i]) then newColor = "Yellow" * цвет подписи на планетах, где больше враждебных кораблей красный if (aMass3[i]>aMass1[i] && aMass3[i]>aMass2[i]) then newColor = "RedLT" * операция ":" выполняет конкатенацию текстовых строк (если i=100 мы получим строчку "#100") pl = "#":i * округлим выводимую массу функцией round() newCom = round(aMass1[i]):":":round(aMass2[i]):":":round(aMass3[i]) * апдейтим поле камент к планете update "commentary" pl: " " :newCom * апдейтим цвет камента на планете update "color" pl: " ":newColor next i