Данная тема является справочником, содержащем примеры готовых скриптов. Скрипты, выкладываемые здесь, должны быть хорошо прокомментированы, хорошо структурированы, а также не быть банальными. Использование команд
UN:C,
SN:E и
SN:К приветствуется.
В качестве примера возьму скрипт, найденный на просторах этого форума, и доработанный мной. Суть скрипта - поиск наиболее короткого маршрута от одного гекса до другого в бою, суть моей поправки - раньше скрипт
всегда считал замковые ворота препятствием, но теперь это не так. Решение проблемы заключалось в отказе от BU:О и использовании вместо этой команды SN:E4625904[...].
Узнать расстояние между двумя гексами на поле боя:
- ** Автор: Algor, обновил: Raistlin
- ** получение пройденного расстояния между двумя гексами
- ** по алгоритму, который привел в FizMiG'е AlexSpl
- ** FU8888-FU8891
- !?FU8888;
- !!BU:Ex1/?y1;
- !!VRy2:Sx1;
- !!VRy2&y1>=0/y1<21/x3=2:+1;
- !!VRy2&y1>20/x3=2:-1;
- !!DO8889/0/186/1:Px3;
- !!SN:W^alg%X1^/0 W^alg%Y2^/0;
- !!DO8890/1/30/1:Px2;
- !!SN:W^alg%X2^/?x4;
- !?FU8889;
- !!BU:Ex16/?y1;
- !!UN:C6919200/4/?y50;
- !!SN:E4625904/2/y50/x16;
- !!VRy2:Sv1 *2;
- !!VRy3:Sx16 %17;
- !!VRy5:S0;
- !!VRy5|y1>=0/y2=2/y3=0/y3=16:S2;
- !!if&x1=2/y5<2:;
- !!VRy4:Sx16 -1;
- !!BU:Ey4/?y1;
- !!SN:E4625904/2/y50/y4;
- !!VRy2:Sv1 *2;
- !!VRy3:Sy4 %17;
- !!VRy5|y1>=0/y2=2/y3=0/y3=16:+1;
- !!VRy4:Sx16 +1;
- !!BU:Ey4/?y1;
- !!SN:E4625904/2/y50/y4;
- !!VRy2:Sv1 *2;
- !!VRy3:Sy4 %17;
- !!VRy5|y1>=0/y2=2/y3=0/y3=16:+1;
- !!en:;
- !!SN&y5<2:W^alg%X16^/-1;
- !!SN&y5>=2/x16<>96:W^alg%X16^/-2;
- !!SN&x16=96/v1=1:W^alg%X16^/-2;
- !?FU8890;
- !!SN:W^alg%X1^/?y1;
- !!FU&y1>=0:E;
- !!DO8891/1/185/1:P;
- !?FU8891;
- !!SN:W^alg%X16^/?y1;
- !!FU&y1<>-1:E;
- !!VRy1:Sx16 :17 %2;
- !!VRy10:S100;
- !!VRy2:Sx16 -1;
- !!SN:W^alg%Y2^/?y9;
- !!VRy10&y9<y10/y9>=0:Sy9;
- !!VRy2:Sx16 +1;
- !!SN:W^alg%Y2^/?y9;
- !!VRy10&y9<y10/y9>=0:Sy9;
- !!VRy2:Sx16 -17 -y1;
- !!SN&y2>=0:W^alg%Y2^/?y9;
- !!VRy10&y2>=0/y9<y10/y9>=0:Sy9;
- !!VRy2:Sx16 -16 -y1;
- !!SN&y2>=0:W^alg%Y2^/?y9;
- !!VRy10&y2>=0/y9<y10/y9>=0:Sy9;
- !!VRy2:Sx16 +17 -y1;
- !!SN&y2<187:W^alg%Y2^/?y9;
- !!VRy10&y2<187/y9<y10/y9>=0:Sy9;
- !!VRy2:Sx16 +18 -y1;
- !!SN&y2<187:W^alg%Y2^/?y9;
- !!VRy10&y2<187/y9<y10/y9>=0:Sy9;
- !!VRy10&y10<100:+1;
- !!SN&y10<100:W^alg%X16^/y10;
- !?CM4;
- !!BG:N?y1;
- !!BMy1:P?y4 F?y5;
- !!VRy5:&1 +1;
- !!CM:D?y3 S?y2;
- !!FU&y2<>14:E;
- !!FU8888:Py4/y3/y5/?y6;
- !!IF:M^Расстояние: %Y6 (%Y4 -> %Y3, %Y5-hex)^;
Также приведу пример из моего собственного кода.
Реализация абилки Астральных Элементалей из WoG UE:
Астральные Элементали - улучшенные Магические Элементали - имеют свойство вызывать собственных клонов в начале каждого раунда битвы.
- !?BR&v997>0;
- !!re v10/0/41:;
- !!BMv10:T?y1;
- !!if&y1=251:;
- !!BMv10:F?y2;
- !!VRy2:&8388608;
- !!co&y2<>0:;
- !!BMv10:N?y3;
- !!co&y3=0:;
- !!BMv10:P?y4;
- !!UN:C6919200/4/?y5;
- !!VRy6&v10<21:S21692;
- !!VRy6&v10>20:S21696;
- !!UN:Cy5/y6/4/?y7;
- !!SN&y7<20:E5926784/2/y5/y4/50;
- !!en:;
- !!en:;