РЕКОМЕНДУЕТСЯ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ GCOMM | КРАСНЫМ ЦВЕТОМ ВЫДЕЛЕНЫ НАИБОЛЕЕ ИСПОЛЬЗУЕМЫЕ МАКРОСЫ | СВОИ ДОПОЛНЕНИЯ ПРИСЫЛАТЬ НА GP@UPLANET.RU
                      последнее обновление             
04.01.02 17:32:02

подписка на рассылку 

gcomm.mac cо всеми макросами (zip)

статья "О рациональном использовании макросов"

Последнее обновление на странице

Добавлен полезный фильтр для почтовика The Bat!


COL

Показывает количество кола на карте

(использование макроса - на карте Alt+N , затем col)

Необходим для оптимальной рассылки транспортов

SIZE

Показывает размеры планет на карте

(использование макроса - на карте Alt+N , затем size)

Удобен при разделе планет

 

ФИЛЬТР ДЕЙСТВИЕ ПРОПИСАТЬ В gcomm.mac ПРИСЛАЛ
1 visi Будешь по нему получать в списке рас только те расы, у которых
ты видишь корабли или планеты либо проставлен коммент.
Macro visi;
begin
result:=(visibleships>0 or visibleplanets>0 or comment<>'');
end;

Кварц
2 HideRIP убирает мёртвые расы /* применять в таблице рас, как фильтр Alt+L */
Macro
HideRIP;
begin
result:=StrPos("_RIP",Name)=0;
end;
Millennium
3 PopGD естественный прирост населения на планетах, где оно может вырасти, с
учетом размера планеты
/* там же, по Alt+U */
Macro
PopGD;
var i,pp,rsp,R;
begin
i:=0;
pp:=0;
rsp:=0;
R:=Name;
for i:=0 to Planet.count do
Planet.current(i);
if Planet.Race=R then
rsp:=Planet.Pop*1.08;
if rsp-Planet.Size<=0 then
pp:=Planet.Pop*0.08;
endif;
if rsp-Planet.Size>0 then
pp:=Planet.Size-Planet.Pop;
endif;
result:=result+pp;
endif;
endfor;
end;
Millennium
4 IndGD то же, для промышленности. Производство планеты отличное от Capital не
учитывается, но это не сложно сделать.
Macro IndGD;
var i,pp,rsp,R;
begin
i:=0;
pp:=0;
rsp:=0;
R:=Name;
for i:=0 to Planet.count do
Planet.current(i);
if Planet.Race=R and Planet.Production="Capital" then
rsp:=Planet.Pop-Planet.Ind;
if rsp>0 then
pp:=(Planet.L+Planet.Mat/Planet.Res)/(5+1/Planet.Res);
if rsp<pp then
pp:=rsp;
endif;
result:=result+pp;
endif;
endif;
endfor;
end;
Millennium
5 SMass(x)

вес кораблей с трюмом меньше 2 и скоростью меньше "x". (Выловить
вес статики)

использовать в списке рас, в отдельной колонке

/* Статика и полустатика, параметр максимальная скорость для нее*/
Macro
SMass(stat);
var n, i;
begin
n:=Name;
result:=0;
for i:=0 to ShipGroup.count do
ShipGroup.current(i);
if ShipGroup.Race=n then
if ShipGroup.Speed<=stat then
result:=result+ShipGroup.#*ShipGroup.Weight;
endif;
endif;
endfor;
end;
Millennium
6 TMass показывает суммарный вес транспортов в таблице рас /* грузовые корабли */
Macro
TMass;
var n, i;
begin
n:=Name;
result:=0;
for i:=0 to ShipGroup.count do
ShipGroup.current(i);
if ShipGroup.Race=n then
if ShipGroup.Cargo>2 then
result:=result+ShipGroup.#*ShipGroup.Weight;
endif;
endif;
endfor;
end;
Millennium
7 WMass показывает суммарный вес боевых флотов в таблице рас /* просто корабли */
Macro
WMass;
var n, i;
begin
n:=Name;
result:=0;
for i:=0 to ShipGroup.count do
ShipGroup.current(i);
if ShipGroup.Race=n then
if ShipGroup.C<2 then
result:=result+ShipGroup.#*ShipGroup.Weight;
endif;
endif;
endfor;
end;
Millennium
8 progon Фильтруешь список кораблей по progon (если, конечно, он прописан в файле макросов), и видишь все свои группы, которые находятся в hyperspace и запущенные, которые не долетают за один ход. Я обычно в конце рулежки всегда смотрю на этот список - если там только коловозки, пусть летят. А если дроны или что-нибудь посерьезнее - как правило, надо приказ корректировать.
macro progon;
begin
result := (race=me and ((state ="Launched" and speed<=r) or (state="In_Space")));
end;
GrayLord
9 war

использовать в

list of ships

(* WAR *)

macro war;
begin
result:=weight*#>4&(attack>1|cargo=0);
end;

Константин Костюченко AKA WildCats
10 Drones Показывает дронов, готовых к отправке на разведку (* Показывает дронов, готовых к отправке на разведку :) *)
macro Drones;
begin
result:=(dest^.Race=me)&(Race=me)&(State='In_Orbit')&(Speed>0)&(Weight=1);
end;
Константин Костюченко AKA WildCats
11 DecBomb Показывает на карте ослабление бомбинга для планет (* Показывает на карте ослабление бомбинга для планет *)
Macro DecBomb;
var RS;
begin
if (Race<>'Unidentified')&(Race<>'Uninhabited') then
WithRace Name^.Race as 'mytbl' do
RS:=mytbl.Shld;
EndWith;
result:="";
result:=result+#NL+FloatToStr(sqrt(RS*1000/(Name^.Size)));
else
Result:=""+#NL;
endif;
end;
Константин Костюченко AKA WildCats
12 FleetsMass(m)

На карте нажимаешь Alt+n , набираешь, например, FleetsMass(100) и жмешь Enter -- на карте подписываются только те планеты, над которыми масса флота больше той что в скобках (в данном случае -- больше 100). От остальных планет остаются только точки. Первое число в подписи -- масса твоего флота, второе -- масса флотов рас к которым у тебя стоит мир, третье -- масса флотов рас, к которым у тебя война.

крайне полезен

(* Показывать массу своих и чужих флотов массой свыше m графически на карте *)
(* (для подписи планет) *)
Macro FleetsMass(m);
begin
result:="";
if YourFleet>m or FriendFleet+AlienFleet>m then
result:=result+#NL+Round(YourFleet)
+"/"+Round(FriendFleet)
+"/"+Round(AlienFleet);
endif;
end;
Константин Костюченко AKA WildCats
13

ShipsProduced(BegT,FinT)

 

 

 

 

 

 

ShipsNL(BegT,FinT)

 

 

 

 

 

 

ShipsProduced(<BegT>,<EndT>)
Макрос для вычисления примерной массы флота, построенного расой начиная с
BegT по EndT ход. Работает только в окне RaceHistory.
Не учитывается:
- терраформинг
- апгрейд
- движение планет
- турбонауки
- ограничение по технологиям
- оверкилл ;-)
В данных случаях макрос будет считать, что вместо указанных случаев были
произведены корабли.

Погрешности
- нет учета затрат на произодство MAT
- на случай бомбинга введено дополнительное условие, которое позволяет
оценить произведенную массу, но с некоторой погрешностью
- учет вывоза CAP есть, но он "срабатывает" только если макрос использовать
в большом диапазоне ходов (когда CAP была произведена и когда она была
выгружена на колонию).

Благодаря этому погрешности могут достигать 10-20%. Но часто это вполне
удовлетворительное условие.

Макрос НЕ РАБОТАЕТ при нелинейных технологиях и в слепых партиях.

ShipsNL(<BegT>,<EndT>)
Абсолютно идентичен предыдущему макросу с той разницей, что используется при
нелинейных техах.

(использование макроса - используется для гадания на кофейной гуще о возможностях врага)

(*** Добавления (C) GrayGhost ***)

(* Macros for calculating estimate mass of producing ships *)
(* from <BegT> turn for <FinT> turn *)
(* Doesn't work with terraforming, turbosciences, planetmoving *)
(* if upgrade and bombing happen then calculate with some errors *)

Macro ShipsProduced(BegT,FinT);
Var LOld,IOld,DInd,TechOld,DTech,i;
begin
result := 0;
for i := (BegT+1) to (FinT+1) do
LOld := sum((0.25*Pop+0.75*Ind)*(Turn=(i-1)));
IOld := sum(Ind*(Turn=(i-1)));
TechOld := sum((Drv+Wpn+Shld+Crg)*(Turn=(i-1)));
DInd := sum(Ind*(Turn=i)) - IOld;
if DInd < 0 then
LOld := LOld + DInd;
DInd := 0;
endif;
DTech := sum((Drv+Wpn+Shld+Crg)*(Turn=i)) - TechOld;
result:=result+(LOld-DInd*5-DTech*5000)/10;
endfor;
end;

(* The same macros with previous. Must be used with nonlinear technologies *)
(* from <BegT> turn for <FinT> turn *)
(* Doesn't work with terraforming, turbosciences, planetmoving *)
(* if upgrade and bombing happen then calculate with some errors *)

Macro ShipsNL(BegT,FinT);
Var LOld,IOld,DInd,DrvOld,WpnOld,ShldOld,CrgOld,LTD,LTW,LTS,LTC,LTech,i;
begin
result := 0;
for i := (BegT+1) to (FinT+1) do
LOld := sum((0.25*Pop+0.75*Ind)*(Turn=(i-1)));
IOld := sum(Ind*(Turn=(i-1)));
DrvOld := sum(Drv*(Turn=(i-1)));
WpnOld := sum(Wpn*(Turn=(i-1)));
ShldOld := sum(Shld*(Turn=(i-1)));
CrgOld := sum(Crg*(Turn=(i-1)));
LTD := 3000*(exp((sum(Drv*(Turn=i))-1)*ln(2))-exp((DrvOld-1)*ln(2)));
LTW := 3000*(exp((sum(Wpn*(Turn=i))-1)*ln(2))-exp((WpnOld-1)*ln(2)));
LTS := 3000*(exp((sum(Shld*(Turn=i))-1)*ln(2))-exp((ShldOld-1)*ln(2)));
LTC := 3000*(exp((sum(Crg*(Turn=i))-1)*ln(2))-exp((CrgOld-1)*ln(2)));
LTech := LTD+LTW+LTS+LTC;
DInd := sum(Ind*(Turn=i)) - IOld;
if DInd < 0 then
LOld := LOld + DInd;
DInd := 0;
endif;
result:=result+(LOld-DInd*5-LTech)/10;
endfor;
end;

 

Gray

Ghost

Ardan

14 DecBomb Считает коэффициэнт ослабления бомбинга для заданной планеты. Использовать
лучше всего следующим образом:
- Открыть окно Planets
- Нажать Alt-U (Custom Column)
- Ввести туда DecBomb
- Любоваться на значение ослабления бомбинга для каждой планеты.

Как правило, сам коэффициэнт мало чего дает, поэтому в Custom Column лучше
смотреть его производные величины - DecBomb*Size, DecBomb*Pop или
DecBomb*Ind

(макрос decbomb от Wildcats выполняет такую же ф-ю, Даже называется точно так же, только немножко по-другому работает - он сразу на карте в названия добавляет, данный же только считает и надо его либо в Planet List использовать, либо прямо на карте подписи ставить )

(* Коэффициэнт ослабления бомбинга *)

Macro DecBomb;
Var RName,PSize;
begin
RName := Race;
PSize := Size;
if Race <> 'Unidentified' then
WithRace RName as 'RTable' do
result := sqrt(RTable.Shld*1000/PSize);
EndWith;
else
result := 1;
endif;
end;

Gray

Ghost

Ardan

 
Макросы от Еlric'a
;Чтобы макросы заработали нужно их просто скопировать в ваш файл gcomm.mac.
;Применение каждого макроса описано перед ним.

;Описание: показывает только раскачанные планеты. Удобен
;при выставлении производства.
;Применение: в списке планет Alt+L, вводим "Prod", Enter.
macro Prod;
begin
   result:=POP=Size and Ind>0.95*Size;
end;

;Описание: показывает только недокачанные планеты. Удобен
;при выставлении производства.
;Применение: в списке планет Alt+L, вводим "UnProd", Enter.
macro UnProd;
begin
   result:=Ind<0.95*Size;
end;

;Описание: применим только для Саргоны. Показывает только живые расы.
;Применение: в списке рас Alt+L, вводим "RIP", Enter.
macro RIP;
begin
   result:=StrPos("_RIP",Name)=0;
end;

;Описание: отдельным столбцом показывает стоимость апгрейда кораблей
;до значений T1-T4. Удобен при выборе кораблей для апгрейда.
;Применение: в списке кораблей Alt+U, потом вводим "Upg(T1,T2,T3,T4)",
;причём вместо Т1-Т4 вписываем значания техов, до которых мы хотим
;проапгрейдить корабли, Enter.
macro Upg(T1,T2,T3,T4);
begin
   result:=#*((1-Drv/T1)*10*D+(1-Wpn/T2)*10*(W*Gun+W)/2+(1-Shld/T3)*10*S+(1-Crg/T4)*10*C);
end;

;Описание: показывает только те корабли противника, которые долетают
;до указанной планеты за 1 ход. Незаменимый макрос при расчёте боевых
;действий. Позволяет оценить свои шансы в защите или нападении на конкретных
;планетах
;Применение: в списке кораблей нужной расы Alt+L, потом вводим "st(Numb)",
;причём вместо Numb вписываем такую бяку "#Nomer", где Nomer - номер
;планеты, Enter.
;Найдена ошибка,
;если свои корабли находятся в статусе in_launch и находятся в ходе
;лёта от искомой планеты, то макрос ошибочно
;их заносит в корабли которые могут долететь до данной планеты
macro st(Numb);
begin
   result:=warship and ESpeed>PlanetDest(Dest,Numb);
end;

;Описание: показывает только те корабли противника, которые долетают
;до указанной планеты за 2 хода. Незаменимый макрос при расчёте боевых
;действий. Позволяет оценить свои шансы в защите или нападении на конкретных
;планетах
;Применение: в списке кораблей нужной расы Alt+L, потом вводим "st(Numb)",
;причём вместо Numb вписываем такую бяку "#Nomer", где Nomer - номер
;планеты, Enter.
;Найдена ошибка,
;если свои корабли находятся в статусе in_launch и находятся в ходе
;лёта от искомой планеты, то макрос ошибочно
;их заносит в корабли которые могут долететь до данной планеты
macro st2(Numb);
begin
   result:=warship and 2*ESpeed>PlanetDest(Dest,Numb);
end;

;Описание: модификация встроенного в GComm макроса warship. В отличие
;от него показывает только корабли нападения (отсекает летающую статику)
;Применение: в списке кораблей Alt+L, вводим WS, Enter.
macro WS;
begin
   result:=warship and D>0.30*Weight;
end;

;Описание: отдельным столбцом показывает производственные потенциалы рас
;Применение: в списке рас Alt+U, вводим L, Enter.
macro L;
begin
  result:=(Pop+3*Ind)/4;
end;

;Описание: отдельным столбцом показывает количество кола на планетах
;на следующем ходу. Помогает разослать транспорты для загрузки по
;планетам
;Применение: в списке планет Alt+U, вводим COL1, Enter.
macro COL1;
begin
  result:=COL+(POP*1.08-Size)/8;
  If result<0 then result:=0;
  endif;
end;

;Описание: показывает только летающую прикрышку расы.
;Применение: в списке кораблей Alt+L, вводим Cover, Enter.
Macro Cover;
begin
    result:=Weight<5 and #>1 and speed>0;
end;

;Описание: показывает только террористов расы. Удобен для рассылки своих
;терроров
;Применение: в списке кораблей Alt+L, вводим terror, Enter.
Macro terror;
begin
    result:=Speed>10 and weight<24 and cargo<=1.1*Crg and gun>0;
end;

;Описание: показывает только основные корабли расы. Удобен при заточке
;своего флота против флота противника.
;Применение: в списке кораблей Alt+L, вводим basic, Enter.
Macro basic;
begin
    result:=warship&Weight;>30&D;>0.3*Weight;
end;

;Описание: заменяет названия планет пятью цифрами: 1-3) массами
;вашего, дружественного, вражеского флотов, 4) производственный
;потенциал, 5) степень защиты единицы L на планете. Удобен при
;планировании военных действий, позволяет наглядно представить
;весь расклад сил.
;Применение: на карте Alt+N, ns, Enter.
Macro ns;
begin
    result:= FloatToStr(YourFleet/100)*100+"_"+FloatToStr(FriendFleet/100)*100+"_"+FloatToStr(AlienFleet/100)*100+#NL+FloatToStr(L/100)*100+"_";
    If L=0 then result:= result+"0";
       else result:= result+FloatToStr(AlienFleet/L*100,1,2)/100;
    endif;
end;

;Описание: показывает только транспорты расы. Удобен при рассылке
;транспортов.
;Применение: в списке кораблей Alt+L, вводим furgon, Enter.
Macro furgon;
begin
    result:= transport and race=me;
end;

;Описание: показывает только статику расы. Удобен при оценке общей
;массы защитного флота расы
;Применение: в списке кораблей Alt+L, вводим static, Enter.
Macro static;
begin
    result:= Speed=0 and Defence>0;
end;

;Описание: показывает только летающую статику расы. Удобен при оценке общей
;массы защитного флота расы
;Применение: в списке кораблей Alt+L, вводим lstatic, Enter.
Macro lstatic;
begin
    result:= D<=0.39*Weight and Defence>0 and Speed<>0;
end;

 

Избранная выборка фильтров из gcomm.mac
Фильтр
Действие
Составляющая фильтра

Макросы для классификации типов кораблей по классам

(фильтры для list of ships)

Orbital
X
D<0.1*Weight
Transport ESpeed>1.1*CSpeed
Colonizer Transport and Cpty<6
Cruiser W>=16
Turret Gun>=4 and W>=4 and W<16
Perforator Gun>=10 and W<4
Cover Weight<5
Drone D=Weight
Shield S=Weight;
HDrone D+S=Weight and D>0 and S>0
Fort Orbital and Weight>=20
.
Warship

показывает боевые флоты рас

.
WaitLW(m) Группа кораблей готовых к запуску общей массой более m WaitL and (#*Weight>m)
WaitLC(m) Группа кораблей готовых к запуску с массой трюма больше m WaitL and C>m
eta

Кол-во оставшихся ходов полёта

(использование макроса- необходим для проверки одновременного прибытия всех групп на планету)

Ships(Race), Fleet(Race) Масса флота расы, на орбите планете (параметр срока)
BestETA через сколько ходов прилетит на планету наблюдатель. Имеет значение 0, при наличии наблюдателя и -1, при отсутствии летящих кораблей на данную планету
Battle

Размер битвы на планете, если битвы не было, то значение 0

(использование макроса- 1.сортировка столбца битв 2.выделение планеты 3.центрирование планеты (shift+F2) 4.просмотр битвы )

"bomb"

(или bomb*# для группы)

Для сортировки кораблей по бомбингу

(использование макроса - необходим при планировании ковра, используется при подборе оптимального бомбинга планеты)

Макросы для подписи планет и фильтры для карты
Identified('R')

Планета наблюдаема расой R

(использование макроса - определение планет на каких не висят дроны предполагаемого противника)

Race=R or Ships(R)>0
Observed Показывает планеты которые ты мог в какой-то момент наблюдать в
течении этого хода
Identified(me) or Battle>0
.
col>m

показывает скопления кол'а

(использование макроса -планеты с больщим запасом колом, являются приоритетными при атаке)

mat>m показывает залежи маты
$>m показывает скопление капы
L>m

показывает планеты с производственным потенциалом больше m

(использование макроса - необходим при планировании ковра (пример - выделение всех планет с размером больше 400 с последующей одновременной атакой)

Size=Ind показывает раскаченные планеты
.
ShowFleets(m) показывать имя планеты и массы своих и чужих флотов массой свыше m (для подписи планет)
YourFleet>m or FriendFleet+AlienFleet>m
.
PopFull Вычисляет количество ходов, необходимых для заселения планеты
(без учета подвоза)
IndFull Вычисляет количество ходов, необходимых для индустриализации планеты
(без учета подвоза и запаса материалов)
Макросы для таблицы рас
Tech

Сумма технологий

(использование макроса -определение самых технологически развитых рас)

Drv+Wpn+Shld+Crg
Q Усредненная технология (предварительный вариант) (Drv+Wpn+Shld+Crg)/4;
IQ Industry Quality (C) Galaxy Mind (GT#43) Ind*Q;
DMass Оценка прироста массы кораблей за этот ход (Pro*DTurn-(0.75*DPop+0.25*DInd)-5000*(DDrv+DWpn+DShld+DCrg)-5*DInd)/10;
PlanetsCount

Количество видимых планет расы

(использование макроса - используется при дополнительных рассылках дронов)

PlanetsSize

Суммарный размер видимых планет расы

(использование макроса - необходим при оценке внешней угрозы, при использовании сравните сум.размер планет с заселённостью планет)

GroupsMass

Суммарная масса видимых групп расы

(использование макроса - необходим при оценке внешней угрозы)

COL

Показывает количество кола на карте

(использование макроса - на карте Alt+N , затем col)

Необходим для оптимальной рассылки транспортов

SIZE

Показывает размеры планет на карте

(использование макроса - на карте Alt+N , затем size)

Удобен при разделе планет

Radius('R')

Размер империи расы R (среднее расстояние между видимыми планетами)
.
VisiblePlanets равно 1, если Вы видите, хотя бы одну планету данной расы, иначе 0
VisibleShips

равно 1, если Вы видите, хотя бы один корабль данной расы, иначе 0

 

 

Примеры комбинирования фильтров

Speed>35 and Weight*#>5 and Not(State="Launched")

Просмотр не отосланных
кораблей. Скорость и минимальный вес естественно в зависимости от ситуации.
Not Cover and Weight<6 and Weight>1 and Speed>35
Для управления террористами
D+S or gun>=1 and weight>=1 and weight<15 and speed>35
Для управления террористами с прикрышкой

 

3.

S>>> Пару раз замечал что GCOMM неправильно считал массу кораблей .
S>>> Как это можно исправить ?
M>> Где и когда?
S> В killed groups .

Есть такое дело. Считаются еще и выжившие корабли.
решается легко.
1. Жмешь Alt+U
В окошке пишешь Weight*#
В появившемся столбике у тебя вес погибших групп.
Alt+Q
пишешь Sum(Expression)
если надо по отдельным планетам или расам, делаешь соответствующий Select
2. Жмешь Alt+Q
Пишешь Sum(Weight*#)
Select по вкусу.

С уважением Millennium

 

4.

Расчёт производства на планете с учётом бомбинга

1.Открываете ship calculator

2.Находите графы Planet Industry,Planet Population *

2.Вписываете в Planet Industry "- сум.бомбинг" *

3.затем тоже значение вписываем в Planet Population

 

Пример для тысячника, с учётом бомбинга = 35.56

1000-35.56

^^^^^^^^^

*Если планета полностью раскачена, то значение вписываем в графу Planet Size

Дополнение:

Еще нужно вписать количество маты равное бомбингу, или равное
Planet Industry, при Planet Industry < бомбинга.
Таким образом, для некоторых соотношений бомбинг/размер
планеты/ресурсы может произвестись больше массы, чем без бомбинга.
Конкретно: ресурсы меньше еденицы, бомбинг меньше L/11, L -- размер
планеты.

--
Gordjelin

 

 


Shraik