<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Wake of Gods Forum | Форум Во Имя Богов - Скрипты]]></title>
		<link>http://wforum.heroes35.net/</link>
		<description><![CDATA[Wake of Gods Forum | Форум Во Имя Богов - http://wforum.heroes35.net]]></description>
		<pubDate>Tue, 26 May 2026 02:50:34 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Все артефакты - сборные]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=6905</link>
			<pubDate>Sun, 22 Oct 2023 23:07:11 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=6905</guid>
			<description><![CDATA[Одна из проблем игры на больших сгенерированных картах является накопление большого количества артефактов.<br />
<br />
Предлагаю сделать возможность объединять два одинаковых артефакта в один с чуть более улучшенными характеристиками, новые артефакты также объединять, и так далее, а на пятом, финальном объединении уже будут уникальные свойства.<br />
<br />
1 уровень объединения = 2 артефакта<br />
2 = 4<br />
3 = 8<br />
4 = 16<br />
5 = 32]]></description>
			<content:encoded><![CDATA[Одна из проблем игры на больших сгенерированных картах является накопление большого количества артефактов.<br />
<br />
Предлагаю сделать возможность объединять два одинаковых артефакта в один с чуть более улучшенными характеристиками, новые артефакты также объединять, и так далее, а на пятом, финальном объединении уже будут уникальные свойства.<br />
<br />
1 уровень объединения = 2 артефакта<br />
2 = 4<br />
3 = 8<br />
4 = 16<br />
5 = 32]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Исправление скрипта "capture mills and gardens"]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=6904</link>
			<pubDate>Fri, 13 Oct 2023 16:23:12 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=6904</guid>
			<description><![CDATA[Прошу помощи в исправлении скрипта 879.<br />
Нужно запретить захватывать мельницы и сады союзников.<br />
Самому, к сожалению, не получилось исправить.<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">ZVSE
ERMS_ScriptDate=22.9(September).2012
_WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!
ERMS_PoweredBy=ERM Scripter v. 2004.10.5.945
** Author orig.  : DracoLich
** Name          : Capture the mills and leprechaun's gardens
** Name rus.     : Захват мельниц и садов лепрекона
** Changes rus.  : [Algor&#93; вынос опции в отдельный файл для мода ERA, построчные комментарии
**                 [Algor&#93; вынос текстов в ert-файл
**                 [Algor&#93; технология быстрого поиска для UN:U
**                 [Algor&#93; Замена TM100 на "стандартный" TM51, перенумерация функций/переменных и пр.
** Options       : 879
** Dialogs       : -
** Variables     : -
** Tmp variables : v1-v3, z1
** Timers        : TM51 (standard)
** Functions     : FU7934
** PO-values     : V0,V1 (mills and leprechaun's gardens squares)

** дублирование стандартных триггеров
!#TM99:S1/999/1/255;          [каждый день для всех игроков&#93;

!?OB109;                      [посещение Водяной мельницы игроком-человеком&#93;
!!UN:P879/?y1;                [проверяем включена ли опция в y1&#93;
!!FU&#x26;y1=0:E;                  [выход, если опция не включена&#93;
!!PO998:O?y1;                 [y1 - хозяин объекта&#93;
!!OW:C?y2;                    [y2 - текущий игрок&#93;
!!OB998:R;                    [разрешаем посещение объекта всем игрокам&#93;
!!PO998:Oy2;                  [меняем владельца мельницы&#93;
!!WM998&#x26;y1=-1:B?y3 B0;        [y3 - количество золота на мельнице, если мельница ничейная&#93;
!!VRy3&#x26;y1=-1:*500;            [...&#93;
!!OW&#x26;y1=-1:R-1/6/dy3;         [увеличиваем игроку золото, если мельница была ничейной&#93;
!!PO998&#x26;y1=-1:V0/6 V1/y3;     [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки&#93;
!!FU&#x26;-1000:E;                 [выход, если игрок ИИ&#93;
!!OB998:S;                    [запрещаем посещение объекта всем игрокам&#93;
!!VRz1&#x26;y1=y2:Sz179072;        [сообщение, если игрок уже получал золото&#93;
!!IF&#x26;y1=y2:M^%Z1^;            [...&#93;
!!VRz1&#x26;y1=-1:Sz179073;        [сообщение о захвате и получении ресурсов&#93;
!!IF&#x26;y1=-1:Q2/6/y3/1^%Z1^;    [...&#93;
!!VRz1&#x26;y1<>y2/y1>-1:Sz179074; [сообщение о захвате мельницы&#93;
!!IF&#x26;y1<>y2/y1>-1:M^%Z1^;     [...&#93;

!?OB112;                      [посещение Ветряной мельницы&#93;
!!UN:P879/?y1;                [проверяем включена ли опция в y1&#93;
!!FU&#x26;y1=0:E;                  [выход, если опция не включена&#93;
!!PO998:O?y1;                 [y1 - хозяин объекта&#93;
!!OW:C?y2;                    [y2 - текущий игрок&#93;
!!OB998:R;                    [разрешаем посещение объекта всем игрокам&#93;
!!PO998:Oy2;                  [меняем владельца мельницы&#93;
!!ML998&#x26;y1=-1:B?y3/?y4 Bd/0;  [y3/y4 - тип/количество ресурса на мельнице, если мельница ничейная&#93;
!!OW&#x26;y1=-1:R-1/y3/dy4;        [увеличиваем игроку ресурсы, если мельница была ничейной&#93;
!!PO998&#x26;y1=-1:V0/y3 V1/y4;    [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки&#93;
!!FU&#x26;-1000:E;                 [выход, если игрок ИИ&#93;
!!OB998:S;                    [запрещаем посещение объекта всем игрокам&#93;
!!VRz1&#x26;y1=y2:Sz179075;        [сообщение, если игрок уже получал ресурсы&#93;
!!IF&#x26;y1=y2:M^%Z1^;            [...&#93;
!!VRz1&#x26;y1=-1:Sz179076;        [сообщение о захвате и получении ресурсов&#93;
!!IF&#x26;y1=-1:Q2/y3/y4/1^%Z1^;   [...&#93;
!!VRz1&#x26;y1<>y2/y1>-1:Sz179077; [сообщение о захвате мельницы&#93;
!!IF&#x26;y1<>y2/y1>-1:M^%Z1^;     [...&#93;

!?OB55;                       [посещение Сада лепрекона&#93;
!!UN:P879/?y1;                [проверяем включена ли опция в y1&#93;
!!FU&#x26;y1=0:E;                  [выход, если опция не включена&#93;
!!PO998:O?y1;                 [y1 - хозяин объекта&#93;
!!OW:C?y2;                    [y2 - текущий игрок&#93;
!!OB998:R;                    [разрешаем посещение объекта всем игрокам&#93;
!!PO998:Oy2;                  [меняем владельца мельницы&#93;
!!GD998:B?y3; B0;              [y3/y4 - тип/количество ресурса в саду, если сад ничейный&#93;
!!VRy4&#x26;y3<>6:S5;              [...&#93;
!!VRy4&#x26;y3=6:S500;             [...&#93;
!!OW&#x26;y1=-1:R-1/y3/dy4;        [увеличиваем игроку ресурсы, если сад был ничейным&#93;
!!PO998&#x26;y1=-1:V0/y3 V1/y4;    [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки&#93;
!!FU&#x26;-1000:E;                 [выход, если игрок ИИ&#93;
!!OB998:S;                    [запрещаем посещение объекта всем игрокам&#93;
!!VRz1&#x26;y1=y2:Sz179078;        [сообщение, если игрок уже получал ресурсы&#93;
!!IF&#x26;y1=y2:M^%Z1^;            [...&#93;
!!VRz1&#x26;y1=-1:Sz179079;        [сообщение о захвате и получении ресурсов&#93;
!!IF&#x26;y1=-1:Q2/y3/y4/1^%Z1^;   [...&#93;
!!VRz1&#x26;y1<>y2/y1>-1:Sz179080; [сообщение о захвате сада&#93;
!!IF&#x26;y1<>y2/y1>-1:M^%Z1^;     [...&#93;

!?CM0;                        [информация по ПКМ на карте/объекте&#93;
!!UN:P879/?y1;                [проверяем включена ли опция в y1&#93;
!!CM:F?y2;                    [тип клика 512-ПКМ&#93;
!!FU|y1=0/y2<>512:E;          [выход, если опция не включена или не ПКМ&#93;
!!CM:P?v2/?v3/?v4;            [v2-v4 - координаты клика&#93;
!!FU420000:P;                 [корректировка координат&#93;
!!OB2:T?y1;                   [y1 - тип объекта&#93;
!!FU&#x26;y1<>112/y1<>109/y1<>55:E;[выход если клик не на мельнице/садке&#93;
!!CM:R0;                      [отключаем стандартное ПКМ-действие&#93;
!!PO2:O?y2;                   [y2 - владелец объекта&#93;
!!OW:C?y3;                    [y3 - текущий игрок&#93;
!!UN:P36/?y9;                 [y9 - проверка скрипта Mithril Enhancements&#93;
!!PO2&#x26;y9>0:N?y10;             [y10 - пользовательское число, если Mithril Enhancements активен (см. скрипт 42wog)&#93;
!!VRz1&#x26;y2<>y3/y1=112/y2=-1:Sz179081;[сообщение "ничейная возд. мельница"&#93;
!!VRz1&#x26;y2<>y3/y1=112/y2>-1:Sz179084;[сообщение "чужая возд. мельница"&#93;
!!VRz1&#x26;y2=y3/y1=112:Sz179088; [сообщение "своя ветряная мельница"&#93;
!!VRz1&#x26;y2<>y3/y1=112/y2=-1/y10<4/y10>1:Sz179651;[сообщение "ничейная улучшенная возд. мельница"&#93;
!!VRz1&#x26;y2<>y3/y1=112/y2>-1/y10<4/y10>1:Sz179652;[сообщение "чужая улучшенная возд. мельница"&#93;
!!VRz1&#x26;y2=y3/y1=112/y10<4/y10>1:Sz179653; [сообщение "своя улучшенная ветряная мельница"&#93;
!!VRz1&#x26;y2<>y3/y1=109/y2=-1:Sz179082;[сообщение "ничейная водн. мельница"&#93;
!!VRz1&#x26;y2<>y3/y1=109/y2>-1:Sz179085;[сообщение "чужая водн. мельница"&#93;
!!VRz1&#x26;y2=y3/y1=109:Sz179650; [сообщение "своя водн. мельница"&#93;
!!VRz1&#x26;y2<>y3/y1=109/y2=-1/y10<4/y10>1:Sz179654;[сообщение "ничейная улучшенная водн. мельница"&#93;
!!VRz1&#x26;y2<>y3/y1=109/y2>-1/y10<4/y10>1:Sz179655;[сообщение "чужая улучшенная водн. мельница"&#93;
!!VRz1&#x26;y2=y3/y1=109/y10<4/y10>1:Sz179656; [сообщение "своя улучшенная водн. мельница"&#93;
!!VRz1&#x26;y2<>y3/y1=55/y2=-1:Sz179083;[сообщение "ничейный сад"&#93;
!!VRz1&#x26;y2<>y3/y1=55/y2>-1:Sz179086;[сообщение "чужой сад"&#93;
!!VRz1&#x26;y2=y3/y1=55:Sz179087;  [сообщение "свой сад"&#93;
!!PO2&#x26;y2=y3:V0/?y4 V1/?y5;    [y4/y5 - тип и количество принесенных ресурсов, если объект свой&#93;
!!IF&#x26;y2=-1:Q2/-1/-1/4/z1;     [вывод сообщения "ничейный"&#93;
!!IF&#x26;y3<>y2/y2>-1:Q2/10/y2/4/z1;[вывод сообщения "чужой"&#93;
!!IF&#x26;y3=y2:Q2/y4/y5/4/z1;     [вывод сообщения "свой"&#93;

!?TM99;                       [поставка ресурсов владельцам мельниц/садов каждый первый день недели, начиная с 8го дня&#93;
!!UN:P879/?y1;                [проверяем включена ли опция в y1&#93;
!!FU&#x26;y1=0:E;                  [выход, если опция не включена&#93;
!!VRy1:Sc; !!FU&#x26;y1<2:E;       [автосбор отключен в первый день&#93;
!!VRy1:%7; !!FU&#x26;y1<>1:E;      [автосбор ресурсов по понедельникам&#93;
!!OW:C?y1;                    [y1 - текущий игрок&#93;
!!UN:U112/-1/?y2;             [y2 - количество Ветряных мельниц&#93;
!!VRv1:S-1;                   [инициализация v1 для быстрого поиска&#93;
!!DO7934/1/y2/1:Py1/112;      [для каждого объекта передаем ресурсы владельцу&#93;
!!UN:U109/-1/?y2;             [y2 - количество Водных мельниц&#93;
!!VRv1:S-1;                   [инициализация v1 для быстрого поиска&#93;
!!DO7934/1/y2/1:Py1/109;      [для каждого объекта передаем ресурсы владельцу&#93;
!!UN:U55/-1/?y2;              [y2 - количество Садов лепрекона&#93;
!!VRv1:S-1;                   [инициализация v1 для быстрого поиска&#93;
!!DO7934/1/y2/1:Py1/55;       [для каждого объекта передаем ресурсы владельцу&#93;

!?FU7934;                     [x1 - текущий игрок, x2 - тип объекта&#93;
!!UN:Ux2/-1/-1/1;             [получаем координаты объекта в v1-v3&#93;
!!PO1:O?y1;                   [y1 - владелец объекта&#93;
!!FU&#x26;y1<>x1:E;                [выход, если текущий игрок не владелец&#93;
!!UN:P36/?y9;                 [y9 - проверка скрипта Mithril Enhancements&#93;
!!PO1&#x26;y9>0:N?y10;             [y10 - пользовательское число, если Mithril Enhancements активен (см. скрипт 42wog)&#93;
!!ML1&#x26;x2=112:B?y2/?y3 By2/0;  [y2/y3 - тип/количество текущих ресурсов объекта. обнуляем количество&#93;
!!VRy3&#x26;x2=112/y9>0/y10<4/y10>1:*2; [*2 количества ресурсов за апгрейд&#93;
!!WM1&#x26;x2=109:B?y3 B0;         [...&#93;
!!VRy3&#x26;x2=109:*500;           [...&#93;
!!VRy2&#x26;x2=109:S6;             [...&#93;
!!VRy3&#x26;x2=109/y9>0/y10<4/y10>1:*2; [х2 количества денег за апгрейд&#93;
!!GD1&#x26;x2=55:B?y2;             [...&#93;
!!VRy3&#x26;x2=55/y2<>6:S5;        [...&#93;
!!VRy3&#x26;x2=55/y2=6:S500;       [...&#93;
!!PO1:V0/y2 V1/y3;            [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки&#93;
!!OW:Rx1/y2/dy3;              [увеличиваем ресурсы игрока&#93;

!?FU420000;                   Координаты объекта в v2/v3/v4 обновляются на правильные (желтый квадрат). Автор: gamecreator
; v2/v3/v4 - coords
!!UN:C6919480/4/?y1;          0x699538
!!VRy1:+130112;               0x1FC40
!!UN:Cy1/4/?y2;               y2 = map tiles
!!VRy1:+4;
!!UN:Cy1/4/?y3;               y3 = map size
!!VRy5:Sv4 *y3 +v3 *y3 +v2 *38 +y2; this object, 0x26 is tile size
!!VRv2:C0/0/0;                reuse vars
**SN:E4239120/2/?v2/y5/0/0;   thiscall 0x40AF10 (map tile, screenX?, screenY?) for struct{0,0,0}
!!SN:E5230832/2/y5; !!VRv1&#x26;v1<1:Sy5; [(c) igrik&#93;
; v1 = yellow tile
!!VRv1:-y2 :38;               object index
!!VRv2:Sv1 %y3;               x
!!VRv3:Sv1 :y3 %y3;           y
!!VRv4:Sv1 :y3 :y3;           l

** end

</script></div>
<br />
#	Text resource for "option 879 - capture mills and gardens.erm"		<br />
179072	{Водяная Мельница}<br />
<br />
На этой неделе Водяная мельница уже отсылала золото. <br />
Новое будет только на следующей неделе.		<br />
179073	{Водяная Мельница}<br />
<br />
Вы захватили Водяную мельницу под свой контроль. <br />
Теперь каждую неделю Водяная мельница будет приносить Вам золото. <br />
Сейчас она Вам отдает:		<br />
179074	{Водяная Мельница}<br />
<br />
Вы захватили Водяную мельницу под свой контроль. <br />
Теперь каждую неделю Водяная мельница будет приносить Вам золото.		<br />
179075	{Ветряная Мельница}<br />
<br />
На этой неделе Ветряная мельница уже отсылала ресурсы. <br />
Новые будут только на следующей неделе.		<br />
179076	{Ветряная Мельница}<br />
<br />
Вы захватили Ветряную мельницу под свой контроль. <br />
Теперь каждую неделю Ветряная мельница будет приносить Вам ресурсы. <br />
Сейчас она Вам отдает:		<br />
179077	{Ветряная Мельница}<br />
<br />
Вы захватили Ветряную мельницу под свой контроль. <br />
Теперь каждую неделю Ветряная мельница будет приносить Вам ресурсы.		<br />
179078	{Мистический сад}<br />
<br />
На этой неделе Мистический сад уже отсылал ресурсы. <br />
Новые будут только на следующей неделе.		<br />
179079	{Мистический сад}<br />
<br />
Вы захватили Мистический сад под свой контроль. <br />
Теперь каждую неделю Мистический сад будет приносить Вам ресурсы. <br />
Сейчас он Вам отдает:		<br />
179080	{Мистический сад}<br />
<br />
Вы захватили Мистический сад под свой контроль. <br />
Теперь каждую неделю Мистический сад будет приносить Вам ресурсы.		<br />
179081	{Ветряная Мельница}<br />
<br />
Никому не принадлежит.		<br />
179082	{Водяная Мельница}<br />
<br />
Никому не принадлежит.		<br />
179083	{Мистический сад}<br />
<br />
Никому не принадлежит.		<br />
179084	{Ветряная Мельница}<br />
<br />
Принадлежит игроку:		<br />
179085	{Водяная Мельница}<br />
<br />
Принадлежит игроку:		<br />
179086	{Мистический сад}<br />
<br />
Принадлежит игроку:		<br />
179087	{Мистический сад}<br />
<br />
На этой неделе мистический сад принес:		<br />
179088	{Ветряная Мельница}<br />
<br />
На этой неделе ветряная мельница принесла:		<br />
179650	{Водяная Мельница}<br />
<br />
На этой неделе водяная мельница принесла:		<br />
179651	{Улучшенная Ветряная Мельница}<br />
<br />
Никому не принадлежит.		<br />
179652	{Улучшенная Ветряная Мельница}<br />
<br />
Принадлежит игроку:		<br />
179653	{Улучшенная Ветряная Мельница}<br />
<br />
На этой неделе ветряная мельница принесла:		<br />
179654	{Улучшенная Водяная Мельница}<br />
<br />
Никому не принадлежит.		<br />
179655	{Улучшенная Водяная Мельница}<br />
<br />
Принадлежит игроку:		<br />
179656	{Улучшенная Водяная Мельница}<br />
<br />
На этой неделе водяная мельница принесла:		<br />
179657]]></description>
			<content:encoded><![CDATA[Прошу помощи в исправлении скрипта 879.<br />
Нужно запретить захватывать мельницы и сады союзников.<br />
Самому, к сожалению, не получилось исправить.<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">ZVSE
ERMS_ScriptDate=22.9(September).2012
_WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!
ERMS_PoweredBy=ERM Scripter v. 2004.10.5.945
** Author orig.  : DracoLich
** Name          : Capture the mills and leprechaun's gardens
** Name rus.     : Захват мельниц и садов лепрекона
** Changes rus.  : [Algor] вынос опции в отдельный файл для мода ERA, построчные комментарии
**                 [Algor] вынос текстов в ert-файл
**                 [Algor] технология быстрого поиска для UN:U
**                 [Algor] Замена TM100 на "стандартный" TM51, перенумерация функций/переменных и пр.
** Options       : 879
** Dialogs       : -
** Variables     : -
** Tmp variables : v1-v3, z1
** Timers        : TM51 (standard)
** Functions     : FU7934
** PO-values     : V0,V1 (mills and leprechaun's gardens squares)

** дублирование стандартных триггеров
!#TM99:S1/999/1/255;          [каждый день для всех игроков]

!?OB109;                      [посещение Водяной мельницы игроком-человеком]
!!UN:P879/?y1;                [проверяем включена ли опция в y1]
!!FU&y1=0:E;                  [выход, если опция не включена]
!!PO998:O?y1;                 [y1 - хозяин объекта]
!!OW:C?y2;                    [y2 - текущий игрок]
!!OB998:R;                    [разрешаем посещение объекта всем игрокам]
!!PO998:Oy2;                  [меняем владельца мельницы]
!!WM998&y1=-1:B?y3 B0;        [y3 - количество золота на мельнице, если мельница ничейная]
!!VRy3&y1=-1:*500;            [...]
!!OW&y1=-1:R-1/6/dy3;         [увеличиваем игроку золото, если мельница была ничейной]
!!PO998&y1=-1:V0/6 V1/y3;     [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки]
!!FU&-1000:E;                 [выход, если игрок ИИ]
!!OB998:S;                    [запрещаем посещение объекта всем игрокам]
!!VRz1&y1=y2:Sz179072;        [сообщение, если игрок уже получал золото]
!!IF&y1=y2:M^%Z1^;            [...]
!!VRz1&y1=-1:Sz179073;        [сообщение о захвате и получении ресурсов]
!!IF&y1=-1:Q2/6/y3/1^%Z1^;    [...]
!!VRz1&y1<>y2/y1>-1:Sz179074; [сообщение о захвате мельницы]
!!IF&y1<>y2/y1>-1:M^%Z1^;     [...]

!?OB112;                      [посещение Ветряной мельницы]
!!UN:P879/?y1;                [проверяем включена ли опция в y1]
!!FU&y1=0:E;                  [выход, если опция не включена]
!!PO998:O?y1;                 [y1 - хозяин объекта]
!!OW:C?y2;                    [y2 - текущий игрок]
!!OB998:R;                    [разрешаем посещение объекта всем игрокам]
!!PO998:Oy2;                  [меняем владельца мельницы]
!!ML998&y1=-1:B?y3/?y4 Bd/0;  [y3/y4 - тип/количество ресурса на мельнице, если мельница ничейная]
!!OW&y1=-1:R-1/y3/dy4;        [увеличиваем игроку ресурсы, если мельница была ничейной]
!!PO998&y1=-1:V0/y3 V1/y4;    [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки]
!!FU&-1000:E;                 [выход, если игрок ИИ]
!!OB998:S;                    [запрещаем посещение объекта всем игрокам]
!!VRz1&y1=y2:Sz179075;        [сообщение, если игрок уже получал ресурсы]
!!IF&y1=y2:M^%Z1^;            [...]
!!VRz1&y1=-1:Sz179076;        [сообщение о захвате и получении ресурсов]
!!IF&y1=-1:Q2/y3/y4/1^%Z1^;   [...]
!!VRz1&y1<>y2/y1>-1:Sz179077; [сообщение о захвате мельницы]
!!IF&y1<>y2/y1>-1:M^%Z1^;     [...]

!?OB55;                       [посещение Сада лепрекона]
!!UN:P879/?y1;                [проверяем включена ли опция в y1]
!!FU&y1=0:E;                  [выход, если опция не включена]
!!PO998:O?y1;                 [y1 - хозяин объекта]
!!OW:C?y2;                    [y2 - текущий игрок]
!!OB998:R;                    [разрешаем посещение объекта всем игрокам]
!!PO998:Oy2;                  [меняем владельца мельницы]
!!GD998:B?y3; B0;              [y3/y4 - тип/количество ресурса в саду, если сад ничейный]
!!VRy4&y3<>6:S5;              [...]
!!VRy4&y3=6:S500;             [...]
!!OW&y1=-1:R-1/y3/dy4;        [увеличиваем игроку ресурсы, если сад был ничейным]
!!PO998&y1=-1:V0/y3 V1/y4;    [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки]
!!FU&-1000:E;                 [выход, если игрок ИИ]
!!OB998:S;                    [запрещаем посещение объекта всем игрокам]
!!VRz1&y1=y2:Sz179078;        [сообщение, если игрок уже получал ресурсы]
!!IF&y1=y2:M^%Z1^;            [...]
!!VRz1&y1=-1:Sz179079;        [сообщение о захвате и получении ресурсов]
!!IF&y1=-1:Q2/y3/y4/1^%Z1^;   [...]
!!VRz1&y1<>y2/y1>-1:Sz179080; [сообщение о захвате сада]
!!IF&y1<>y2/y1>-1:M^%Z1^;     [...]

!?CM0;                        [информация по ПКМ на карте/объекте]
!!UN:P879/?y1;                [проверяем включена ли опция в y1]
!!CM:F?y2;                    [тип клика 512-ПКМ]
!!FU|y1=0/y2<>512:E;          [выход, если опция не включена или не ПКМ]
!!CM:P?v2/?v3/?v4;            [v2-v4 - координаты клика]
!!FU420000:P;                 [корректировка координат]
!!OB2:T?y1;                   [y1 - тип объекта]
!!FU&y1<>112/y1<>109/y1<>55:E;[выход если клик не на мельнице/садке]
!!CM:R0;                      [отключаем стандартное ПКМ-действие]
!!PO2:O?y2;                   [y2 - владелец объекта]
!!OW:C?y3;                    [y3 - текущий игрок]
!!UN:P36/?y9;                 [y9 - проверка скрипта Mithril Enhancements]
!!PO2&y9>0:N?y10;             [y10 - пользовательское число, если Mithril Enhancements активен (см. скрипт 42wog)]
!!VRz1&y2<>y3/y1=112/y2=-1:Sz179081;[сообщение "ничейная возд. мельница"]
!!VRz1&y2<>y3/y1=112/y2>-1:Sz179084;[сообщение "чужая возд. мельница"]
!!VRz1&y2=y3/y1=112:Sz179088; [сообщение "своя ветряная мельница"]
!!VRz1&y2<>y3/y1=112/y2=-1/y10<4/y10>1:Sz179651;[сообщение "ничейная улучшенная возд. мельница"]
!!VRz1&y2<>y3/y1=112/y2>-1/y10<4/y10>1:Sz179652;[сообщение "чужая улучшенная возд. мельница"]
!!VRz1&y2=y3/y1=112/y10<4/y10>1:Sz179653; [сообщение "своя улучшенная ветряная мельница"]
!!VRz1&y2<>y3/y1=109/y2=-1:Sz179082;[сообщение "ничейная водн. мельница"]
!!VRz1&y2<>y3/y1=109/y2>-1:Sz179085;[сообщение "чужая водн. мельница"]
!!VRz1&y2=y3/y1=109:Sz179650; [сообщение "своя водн. мельница"]
!!VRz1&y2<>y3/y1=109/y2=-1/y10<4/y10>1:Sz179654;[сообщение "ничейная улучшенная водн. мельница"]
!!VRz1&y2<>y3/y1=109/y2>-1/y10<4/y10>1:Sz179655;[сообщение "чужая улучшенная водн. мельница"]
!!VRz1&y2=y3/y1=109/y10<4/y10>1:Sz179656; [сообщение "своя улучшенная водн. мельница"]
!!VRz1&y2<>y3/y1=55/y2=-1:Sz179083;[сообщение "ничейный сад"]
!!VRz1&y2<>y3/y1=55/y2>-1:Sz179086;[сообщение "чужой сад"]
!!VRz1&y2=y3/y1=55:Sz179087;  [сообщение "свой сад"]
!!PO2&y2=y3:V0/?y4 V1/?y5;    [y4/y5 - тип и количество принесенных ресурсов, если объект свой]
!!IF&y2=-1:Q2/-1/-1/4/z1;     [вывод сообщения "ничейный"]
!!IF&y3<>y2/y2>-1:Q2/10/y2/4/z1;[вывод сообщения "чужой"]
!!IF&y3=y2:Q2/y4/y5/4/z1;     [вывод сообщения "свой"]

!?TM99;                       [поставка ресурсов владельцам мельниц/садов каждый первый день недели, начиная с 8го дня]
!!UN:P879/?y1;                [проверяем включена ли опция в y1]
!!FU&y1=0:E;                  [выход, если опция не включена]
!!VRy1:Sc; !!FU&y1<2:E;       [автосбор отключен в первый день]
!!VRy1:%7; !!FU&y1<>1:E;      [автосбор ресурсов по понедельникам]
!!OW:C?y1;                    [y1 - текущий игрок]
!!UN:U112/-1/?y2;             [y2 - количество Ветряных мельниц]
!!VRv1:S-1;                   [инициализация v1 для быстрого поиска]
!!DO7934/1/y2/1:Py1/112;      [для каждого объекта передаем ресурсы владельцу]
!!UN:U109/-1/?y2;             [y2 - количество Водных мельниц]
!!VRv1:S-1;                   [инициализация v1 для быстрого поиска]
!!DO7934/1/y2/1:Py1/109;      [для каждого объекта передаем ресурсы владельцу]
!!UN:U55/-1/?y2;              [y2 - количество Садов лепрекона]
!!VRv1:S-1;                   [инициализация v1 для быстрого поиска]
!!DO7934/1/y2/1:Py1/55;       [для каждого объекта передаем ресурсы владельцу]

!?FU7934;                     [x1 - текущий игрок, x2 - тип объекта]
!!UN:Ux2/-1/-1/1;             [получаем координаты объекта в v1-v3]
!!PO1:O?y1;                   [y1 - владелец объекта]
!!FU&y1<>x1:E;                [выход, если текущий игрок не владелец]
!!UN:P36/?y9;                 [y9 - проверка скрипта Mithril Enhancements]
!!PO1&y9>0:N?y10;             [y10 - пользовательское число, если Mithril Enhancements активен (см. скрипт 42wog)]
!!ML1&x2=112:B?y2/?y3 By2/0;  [y2/y3 - тип/количество текущих ресурсов объекта. обнуляем количество]
!!VRy3&x2=112/y9>0/y10<4/y10>1:*2; [*2 количества ресурсов за апгрейд]
!!WM1&x2=109:B?y3 B0;         [...]
!!VRy3&x2=109:*500;           [...]
!!VRy2&x2=109:S6;             [...]
!!VRy3&x2=109/y9>0/y10<4/y10>1:*2; [х2 количества денег за апгрейд]
!!GD1&x2=55:B?y2;             [...]
!!VRy3&x2=55/y2<>6:S5;        [...]
!!VRy3&x2=55/y2=6:S500;       [...]
!!PO1:V0/y2 V1/y3;            [устанавливаем тип/количество текущих ресурсов в V0/V1 значения клетки]
!!OW:Rx1/y2/dy3;              [увеличиваем ресурсы игрока]

!?FU420000;                   Координаты объекта в v2/v3/v4 обновляются на правильные (желтый квадрат). Автор: gamecreator
; v2/v3/v4 - coords
!!UN:C6919480/4/?y1;          0x699538
!!VRy1:+130112;               0x1FC40
!!UN:Cy1/4/?y2;               y2 = map tiles
!!VRy1:+4;
!!UN:Cy1/4/?y3;               y3 = map size
!!VRy5:Sv4 *y3 +v3 *y3 +v2 *38 +y2; this object, 0x26 is tile size
!!VRv2:C0/0/0;                reuse vars
**SN:E4239120/2/?v2/y5/0/0;   thiscall 0x40AF10 (map tile, screenX?, screenY?) for struct{0,0,0}
!!SN:E5230832/2/y5; !!VRv1&v1<1:Sy5; [(c) igrik]
; v1 = yellow tile
!!VRv1:-y2 :38;               object index
!!VRv2:Sv1 %y3;               x
!!VRv3:Sv1 :y3 %y3;           y
!!VRv4:Sv1 :y3 :y3;           l

** end

</script></div>
<br />
#	Text resource for "option 879 - capture mills and gardens.erm"		<br />
179072	{Водяная Мельница}<br />
<br />
На этой неделе Водяная мельница уже отсылала золото. <br />
Новое будет только на следующей неделе.		<br />
179073	{Водяная Мельница}<br />
<br />
Вы захватили Водяную мельницу под свой контроль. <br />
Теперь каждую неделю Водяная мельница будет приносить Вам золото. <br />
Сейчас она Вам отдает:		<br />
179074	{Водяная Мельница}<br />
<br />
Вы захватили Водяную мельницу под свой контроль. <br />
Теперь каждую неделю Водяная мельница будет приносить Вам золото.		<br />
179075	{Ветряная Мельница}<br />
<br />
На этой неделе Ветряная мельница уже отсылала ресурсы. <br />
Новые будут только на следующей неделе.		<br />
179076	{Ветряная Мельница}<br />
<br />
Вы захватили Ветряную мельницу под свой контроль. <br />
Теперь каждую неделю Ветряная мельница будет приносить Вам ресурсы. <br />
Сейчас она Вам отдает:		<br />
179077	{Ветряная Мельница}<br />
<br />
Вы захватили Ветряную мельницу под свой контроль. <br />
Теперь каждую неделю Ветряная мельница будет приносить Вам ресурсы.		<br />
179078	{Мистический сад}<br />
<br />
На этой неделе Мистический сад уже отсылал ресурсы. <br />
Новые будут только на следующей неделе.		<br />
179079	{Мистический сад}<br />
<br />
Вы захватили Мистический сад под свой контроль. <br />
Теперь каждую неделю Мистический сад будет приносить Вам ресурсы. <br />
Сейчас он Вам отдает:		<br />
179080	{Мистический сад}<br />
<br />
Вы захватили Мистический сад под свой контроль. <br />
Теперь каждую неделю Мистический сад будет приносить Вам ресурсы.		<br />
179081	{Ветряная Мельница}<br />
<br />
Никому не принадлежит.		<br />
179082	{Водяная Мельница}<br />
<br />
Никому не принадлежит.		<br />
179083	{Мистический сад}<br />
<br />
Никому не принадлежит.		<br />
179084	{Ветряная Мельница}<br />
<br />
Принадлежит игроку:		<br />
179085	{Водяная Мельница}<br />
<br />
Принадлежит игроку:		<br />
179086	{Мистический сад}<br />
<br />
Принадлежит игроку:		<br />
179087	{Мистический сад}<br />
<br />
На этой неделе мистический сад принес:		<br />
179088	{Ветряная Мельница}<br />
<br />
На этой неделе ветряная мельница принесла:		<br />
179650	{Водяная Мельница}<br />
<br />
На этой неделе водяная мельница принесла:		<br />
179651	{Улучшенная Ветряная Мельница}<br />
<br />
Никому не принадлежит.		<br />
179652	{Улучшенная Ветряная Мельница}<br />
<br />
Принадлежит игроку:		<br />
179653	{Улучшенная Ветряная Мельница}<br />
<br />
На этой неделе ветряная мельница принесла:		<br />
179654	{Улучшенная Водяная Мельница}<br />
<br />
Никому не принадлежит.		<br />
179655	{Улучшенная Водяная Мельница}<br />
<br />
Принадлежит игроку:		<br />
179656	{Улучшенная Водяная Мельница}<br />
<br />
На этой неделе водяная мельница принесла:		<br />
179657]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Скрипт&#93; Запрет тактики «ударил и сбежал»]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=6882</link>
			<pubDate>Mon, 03 Jul 2023 14:45:33 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=6882</guid>
			<description><![CDATA[Если использовалось заклинание, то сбежать до действия следующего отряда не получится.<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">ZVSE2
; Name:     Forbid Hit'n'Run
; Author:   Berserker aka EtherniDee
; Engine:   ERM 2.0+
; Requires: ERA 3.9+, Era Erm Framework

; AI will not be able to retreat or surrender until the next stack turn if any spell was casted.
; Humans will not be able to retreat or surrender until the next round if any spell was casted.

!?FU(OnBeforeBattleUniversal)&#x26;(ERM_FLAG_REAL_BATTLE);
!!VRi^pm.isActionRedirection^:S(FALSE);

!?FU(OnBeforeBattleAction)&#x26;i^battle_round^>=(FIRST_NON_TACTICS_ROUND);
!!BG:A?(battleAction:y) Q?(actingSide:y);

!!VR(isRetreatOrSurrender:y):S(FALSE);
!!VR(isRetreatOrSurrender)|(battleAction)=(BATTLE_ACTION_RETREAT)/(battleAction)=(BATTLE_ACTION_SURRENDER):S(TRUE);

!!if&#x26;(isRetreatOrSurrender);
  !!BH(actingSide):M?(hasCasted:y);

  !!if&#x26;i^battle_human_%(actingSide)^/(hasCasted);
    !!IF:M^%T(pm.hit_and_run_warning)^;
    !!BG:A(BATTLE_ACTION_CANCEL);
  !!en;
!!el&#x26;i^battle_ai_%(actingSide)^/i^battle_hero_%(actingSide)^<>(NO_HERO);
  !!if&#x26;i^pm.isActionRedirection^;
    !!VRi^pm.isActionRedirection^:S(FALSE);
    !!BG:A(BATTLE_ACTION_HERO_CAST) Si^pm.actionSpell^ Di^pm.actionDestination^;
  !!el&#x26;(battleAction)=(BATTLE_ACTION_HERO_CAST);
    !!VRi^pm.isActionRedirection^:S(TRUE);
    !!BG:A(BATTLE_ACTION_CANCEL) S?i^pm.actionSpell^ D?i^pm.actionDestination^;
  !!en;
!!en;</script></div>]]></description>
			<content:encoded><![CDATA[Если использовалось заклинание, то сбежать до действия следующего отряда не получится.<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">ZVSE2
; Name:     Forbid Hit'n'Run
; Author:   Berserker aka EtherniDee
; Engine:   ERM 2.0+
; Requires: ERA 3.9+, Era Erm Framework

; AI will not be able to retreat or surrender until the next stack turn if any spell was casted.
; Humans will not be able to retreat or surrender until the next round if any spell was casted.

!?FU(OnBeforeBattleUniversal)&(ERM_FLAG_REAL_BATTLE);
!!VRi^pm.isActionRedirection^:S(FALSE);

!?FU(OnBeforeBattleAction)&i^battle_round^>=(FIRST_NON_TACTICS_ROUND);
!!BG:A?(battleAction:y) Q?(actingSide:y);

!!VR(isRetreatOrSurrender:y):S(FALSE);
!!VR(isRetreatOrSurrender)|(battleAction)=(BATTLE_ACTION_RETREAT)/(battleAction)=(BATTLE_ACTION_SURRENDER):S(TRUE);

!!if&(isRetreatOrSurrender);
  !!BH(actingSide):M?(hasCasted:y);

  !!if&i^battle_human_%(actingSide)^/(hasCasted);
    !!IF:M^%T(pm.hit_and_run_warning)^;
    !!BG:A(BATTLE_ACTION_CANCEL);
  !!en;
!!el&i^battle_ai_%(actingSide)^/i^battle_hero_%(actingSide)^<>(NO_HERO);
  !!if&i^pm.isActionRedirection^;
    !!VRi^pm.isActionRedirection^:S(FALSE);
    !!BG:A(BATTLE_ACTION_HERO_CAST) Si^pm.actionSpell^ Di^pm.actionDestination^;
  !!el&(battleAction)=(BATTLE_ACTION_HERO_CAST);
    !!VRi^pm.isActionRedirection^:S(TRUE);
    !!BG:A(BATTLE_ACTION_CANCEL) S?i^pm.actionSpell^ D?i^pm.actionDestination^;
  !!en;
!!en;</script></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Скрипт&#93; Мгновенная тактическая растановка]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=6881</link>
			<pubDate>Mon, 03 Jul 2023 14:44:21 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=6881</guid>
			<description><![CDATA[Позволяет быстро расставлять отряды мышкой без анимации передвижения.<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">ZVSE2
; Name:     Instant Tactical Alignment
; Author:   Berserker aka EtherniDee
; Engine:   ERM 2.0+
; Requires: ERA 3.9+, Era Erm Framework

; Troops are selected by LMB in tactics phase and are placed in the desired position instantly wihout moving.

; TODO: Allow LMB on active stack, allow to place wide stack [here&#93;[W&#93;[W&#93; and provide better acting side check for hot seat (non-real multiplayer)
; introduce mouse_owner

!?FU(pm_GetTacticsRange);
; Returns tactics range. Must be called only in battle.
!#VA(result:x);

!!VR(result):S0;

!!BH0:N?(leftHero:y);
!!BH1:N?(rightHero:y);

!!HE(leftHero):S(SKILL_TACTICS)/?(leftHeroTactics:y);
!!VR(rightHeroTactics:y):S0;
!!HE(rightHero)&#x26;(rightHero)>=(HERO_FIRST):S(SKILL_TACTICS)/?(rightHeroTactics);

!!VR(result):S(leftHeroTactics) -(rightHeroTactics) *2;
!!VR(result)&#x26;(result)<0:*-1;

!?FU(pm_SetStackPos);
!#VA(stackId:x);
!#VA(newPos:x);

!!BM(stackId):P(newPos);

!?FU(OnBattleScreenMouseClick)
  &#x26;i^battle_round^<(FIRST_NON_TACTICS_ROUND)
  /i^mouse_action^=(MOUSE_LMB_PRESSED)/i^mouse_flags^=(NO_MOUSE_FLAGS)
  /i^mouse_battleHex^>=(BATTLE_HEX_FIRST)/i^mouse_battleHex^<=(BATTLE_HEX_LAST)
  /i^battle_current_stack^<>(NO_STACK);

!!OW:C?t/?(thisPcPlayer:y);
!!FU&#x26;i^battle_owner_%i(battle_current_side)^<>(thisPcPlayer):E;

!!VR(hexY:y):Si^mouse_battleHex^ :(BATTLE_HEXES_PER_ROW);
!!VR(hexX:y):Si^mouse_battleHex^ %(BATTLE_HEXES_PER_ROW);

; Ignore 0-th and 16-th colums, they cannot be used for placing stacks
!!VR(edgeX:y):S(BATTLE_HEXES_PER_ROW) -1;
!!FU|(hexX)=0/(hexX)=(edgeX):E;

!!CM:R(FALSE);

!!BU:Ei^mouse_battleHex^/?(stackAtMouse:y);
!!BG:N?(currentStack:y) Q?(currentSide:y);

!!if&#x26;(stackAtMouse)<>(NO_STACK);
  !!BM(stackAtMouse):F?(stackFlags:y);
  !!VR(stackFlags):&#x26;(MON_FLAG_SIEGE_WEAPON);
  !!FU&#x26;(stackFlags)<>0:E;

  !!VR(stackSide:y):S(stackAtMouse) :(BATTLE_STACKS_PER_SIDE);
  !!FU&#x26;(stackSide)<>(currentSide):E;

  !!FU(BattleStack_MakeActive):P(stackAtMouse);
  !!FU(BattleStack_MakeActive):D(stackAtMouse);
!!el;
  !!FU(pm_GetTacticsRange):P?(tacticsRange:y);
  !!VR(newX:y):S(hexX);

  ; Compensate position offset for wide stacks: -1 for left, +1 for right
  !!BM(currentStack):F?(stackFlags:y);
  !!VR(stackFlags):&#x26;(MON_FLAG_WIDE);

  !!VR(posOffset:y):S0;
  !!VR(posOffset)&#x26;(stackFlags)<>0:S(currentSide) -1 *2 +1;
  !!VR(newX):+(posOffset);

  !!if&#x26;(currentSide)=(BATTLE_LEFT);
    !!VR(maxX:y):S1 +(tacticsRange) +(posOffset);
    !!FU|(newX)<1/(newX)>(maxX):E;
  !!el;
    !!VR(minX:y):S15 -(tacticsRange) +(posOffset);
    !!FU|(newX)<(minX)/(newX)>15:E;
  !!en;

  !!VR(newPos:y):Si^mouse_battleHex^ +(posOffset);
  !!BM(currentStack):P(newPos);
  !!FU(pm_SetStackPos):D(currentStack)/(newPos);
!!en;</script></div>]]></description>
			<content:encoded><![CDATA[Позволяет быстро расставлять отряды мышкой без анимации передвижения.<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">ZVSE2
; Name:     Instant Tactical Alignment
; Author:   Berserker aka EtherniDee
; Engine:   ERM 2.0+
; Requires: ERA 3.9+, Era Erm Framework

; Troops are selected by LMB in tactics phase and are placed in the desired position instantly wihout moving.

; TODO: Allow LMB on active stack, allow to place wide stack [here][W][W] and provide better acting side check for hot seat (non-real multiplayer)
; introduce mouse_owner

!?FU(pm_GetTacticsRange);
; Returns tactics range. Must be called only in battle.
!#VA(result:x);

!!VR(result):S0;

!!BH0:N?(leftHero:y);
!!BH1:N?(rightHero:y);

!!HE(leftHero):S(SKILL_TACTICS)/?(leftHeroTactics:y);
!!VR(rightHeroTactics:y):S0;
!!HE(rightHero)&(rightHero)>=(HERO_FIRST):S(SKILL_TACTICS)/?(rightHeroTactics);

!!VR(result):S(leftHeroTactics) -(rightHeroTactics) *2;
!!VR(result)&(result)<0:*-1;

!?FU(pm_SetStackPos);
!#VA(stackId:x);
!#VA(newPos:x);

!!BM(stackId):P(newPos);

!?FU(OnBattleScreenMouseClick)
  &i^battle_round^<(FIRST_NON_TACTICS_ROUND)
  /i^mouse_action^=(MOUSE_LMB_PRESSED)/i^mouse_flags^=(NO_MOUSE_FLAGS)
  /i^mouse_battleHex^>=(BATTLE_HEX_FIRST)/i^mouse_battleHex^<=(BATTLE_HEX_LAST)
  /i^battle_current_stack^<>(NO_STACK);

!!OW:C?t/?(thisPcPlayer:y);
!!FU&i^battle_owner_%i(battle_current_side)^<>(thisPcPlayer):E;

!!VR(hexY:y):Si^mouse_battleHex^ :(BATTLE_HEXES_PER_ROW);
!!VR(hexX:y):Si^mouse_battleHex^ %(BATTLE_HEXES_PER_ROW);

; Ignore 0-th and 16-th colums, they cannot be used for placing stacks
!!VR(edgeX:y):S(BATTLE_HEXES_PER_ROW) -1;
!!FU|(hexX)=0/(hexX)=(edgeX):E;

!!CM:R(FALSE);

!!BU:Ei^mouse_battleHex^/?(stackAtMouse:y);
!!BG:N?(currentStack:y) Q?(currentSide:y);

!!if&(stackAtMouse)<>(NO_STACK);
  !!BM(stackAtMouse):F?(stackFlags:y);
  !!VR(stackFlags):&(MON_FLAG_SIEGE_WEAPON);
  !!FU&(stackFlags)<>0:E;

  !!VR(stackSide:y):S(stackAtMouse) :(BATTLE_STACKS_PER_SIDE);
  !!FU&(stackSide)<>(currentSide):E;

  !!FU(BattleStack_MakeActive):P(stackAtMouse);
  !!FU(BattleStack_MakeActive):D(stackAtMouse);
!!el;
  !!FU(pm_GetTacticsRange):P?(tacticsRange:y);
  !!VR(newX:y):S(hexX);

  ; Compensate position offset for wide stacks: -1 for left, +1 for right
  !!BM(currentStack):F?(stackFlags:y);
  !!VR(stackFlags):&(MON_FLAG_WIDE);

  !!VR(posOffset:y):S0;
  !!VR(posOffset)&(stackFlags)<>0:S(currentSide) -1 *2 +1;
  !!VR(newX):+(posOffset);

  !!if&(currentSide)=(BATTLE_LEFT);
    !!VR(maxX:y):S1 +(tacticsRange) +(posOffset);
    !!FU|(newX)<1/(newX)>(maxX):E;
  !!el;
    !!VR(minX:y):S15 -(tacticsRange) +(posOffset);
    !!FU|(newX)<(minX)/(newX)>15:E;
  !!en;

  !!VR(newPos:y):Si^mouse_battleHex^ +(posOffset);
  !!BM(currentStack):P(newPos);
  !!FU(pm_SetStackPos):D(currentStack)/(newPos);
!!en;</script></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Новые свойства для бланковых артефактов WoG]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=6405</link>
			<pubDate>Mon, 01 Nov 2021 00:24:40 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=6405</guid>
			<description><![CDATA[Доброго всем дня!<br />
Я являюсь давним поклонником игры WoG версии 3.58f и по совету друзей решил обратиться к вам за помощью. <br />
Дело в том, что в игре есть 10 пустых артефактов и у меня появилась идея их «оживить».<br />
Почитав help по ERM и прошерстив форумы я нашел много полезной информации и скриптов,<br />
Которые мне сильно помогли для осуществления идеи. Я увлекаюсь программированием в Delphi и C++, но скрипты еще не писал, поэтому меня это заинтересовало вдвойне. <br />
По замыслу артефакты должны иметь следующие названия и свойства:<br />
161 – Шлем Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Лазурного дракона. Стоимость 35000 золота.<br />
162 – Меч Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Барона Ада. Стоимость 35000 золота.<br />
163 – Щит Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Духу Погребального Костра. Стоимость 35000 золота.<br />
164 – Перстень Тамплиера. Дает + 5 ко всем параметрам героя и максимальную удачу герою. Стоимость 35000 золота. <br />
165 – Кольцо Тамплиера. Дает + 5 ко всем параметрам героя и максимальный боевой дух. Стоимость 35000 золота.<br />
166 – Ожерелье Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Драколича. Стоимость 35000 золота.<br />
167 – Кираса Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Громовержца. Стоимость 35000 золота.<br />
168 – Сюрко Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Кошмарную Гидру. Стоимость 35000 золота.<br />
169 – Сабатоны Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Верховного Архангела. Стоимость 35000 золота.<br />
170 – Призывный Рог Тамплиера. Дает + 5 ко всем параметрам героя. В начале недели дает + 5 ко всем ресурсам и 10000 золота. Стоимость 35000 золота.<br />
В дальнейшем есть идея, чтобы они собирались в сборный артефакт «Доспехи Тамплиера», который будет давать герою эксперта всех стихий и в начале каждой битвы кастовать на врага<br />
Яд, страх, болезнь и кислотную атаку. <br />
Пока что удалось увеличивать параметры героя и частично получилось реализовать прирост существ у героя в начале каждой недели.<br />
Не могу разобраться почему не дают существ 167(Кираса) и 168(Сюрко) артефакты. Там какая-то ерунда с командой !!OW: I-1/?v10; Если везде ставить I-1, то ошибку выдает сразу после WoGификации, если чередовать I-1 и I-0, то работает, но не всех существ дает.<br />
Таймер ставлю в конце скрипта, где идет описание последнего артефакта, иначе существа каждый день прибавляются.<br />
Помогите разобраться в чем причина?<br />
<div class="notranslate"><div class="spoiler_header">Скрипт прилагается: <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1&#93;.style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1&#93;.style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1&#93;.style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none; border: 1px dotted #0F5C8E;">
<div style="background-color: #fff"><script type="erm" id="erm0">ZVSE 
AUTO_PoweredBy=ERM Script Editor v.1.2.6.32 
!#VRz10:S^Шлем Тамплиера^; 
!#VRz11:S^{Шлем Тамплиера} 
Приносит по 1 Лазурному Дракону в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A161/1/35000; 
!#UN:A161/3/16; 
!#UN:A161/9/10; 
!#UN:A161/10/11; 
!#VRv20:S1*65536+132; 
!!OW:I-1/?v10; 
!!VRv11:S0; 
!!DO10/0/155/1&#x26;v10=0:P; 
!?FU10; 
!!HEv11:A2/161/d/?v12; 
!!HEv11&#x26;v12=1:C2/132/1/0; 
!!HEv11&#x26;v12=1:O?v13; 
!!OW&#x26;v12=1:Iv13/?v14; 
!!HEv11&#x26;v12=1/v14=0:B0/?z10; 
!!IF&#x26;v12=1/v14=0:Q1/21/v20/1^К герою по имени %Z10 присоединяется Лазурный Дракон, благодаря Шлему Тамплиера.^; 
!!VRv11:Sd1; 
!?AE1&#x26;v998=161; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&#x26;v998=161; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz30:S^Меч Тамплиера^; 
!#VRz31:S^{Меч Тамплиера} 
Приносит по 1 Барону Ада в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A162/1/35000; 
!#UN:A162/3/16; 
!#UN:A162/9/30; 
!#UN:A162/10/31; 
!#VRv21:S1*65536+153; 
!!OW:I-0/?v30; 
!!VRv31:S0; 
!!DO11/0/155/1&#x26;v30=0:P; 
!?FU11; 
!!HEv31:A2/162/d/?v32; 
!!HEv31&#x26;v32=1:C2/153/1/0; 
!!HEv31&#x26;v32=1:O?v33; 
!!OW&#x26;v32=1:Iv33/?v34; 
!!HEv31&#x26;v32=1/v34=0:B0/?z30; 
!!IF&#x26;v32=1/v34=0:Q1/21/v21/1^К герою по имени %Z30 присоединяется Барон Ада, благодаря Мечу Тамплиера.^; 
!!VRv31:Sd1; 
!?AE1&#x26;v998=162; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&#x26;v998=162; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz40:S^Щит Тамплиера^; 
!#VRz41:S^{Щит Тамплиера} 
Приносит по 1 Духу Погребального Костра в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A163/1/35000; 
!#UN:A163/3/16; 
!#UN:A163/9/40; 
!#UN:A163/10/41; 
!#VRv22:S1*65536+158; 
!!OW:I-1/?v40; 
!!VRv41:S0; 
!!DO12/0/155/1&#x26;v40=0:P; 
!?FU12; 
!!HEv41:A2/163/d/?v42; 
!!HEv41&#x26;v42=1:C2/158/1/0; 
!!HEv41&#x26;v42=1:O?v43; 
!!OW&#x26;v42=1:Iv43/?v44; 
!!HEv41&#x26;v42=1/v44=0:B0/?z40; 
!!IF&#x26;v42=1/v44=0:Q1/21/v22/1^К герою по имени %Z40 присоединяется Дух Погребального Костра, благодаря Щиту Тамплиера.^; 
!!VRv41:Sd1; 
!?AE1&#x26;v998=163; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&#x26;v998=163; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz60:S^Сюрко Тамплиера^; 
!#VRz61:S^{Сюрко Тамплиера} 
Приносит по 1 Кошмарной Гидре в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A168/1/35000; 
!#UN:A168/3/16; 
!#UN:A168/9/60; 
!#UN:A168/10/61; 
!#VRv24:S1*65536+157; 
!!OW:I-0/?v60; 
!!VRv61:S0; 
!!DO14/0/155/1&#x26;v60=0:P; 
!?FU14; 
!!HEv61:A2/168/d/?v62; 
!!HEv61&#x26;v62=1:C2/157/1/0; 
!!HEv61&#x26;v62=1:O?v63; 
!!OW&#x26;v62=1:Iv63/?v64; 
!!HEv61&#x26;v62=1/v64=0:B0/?z60; 
!!IF&#x26;v62=1/v64=0:Q1/21/v24/1^К герою по имени %Z60 присоединяется Кошмарная Гидра, благодаря Сюрко Тамплиера.^; 
!!VRv61:Sd1; 
!?AE1&#x26;v998=168; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&#x26;v998=168; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz70:S^Сабатоны Тамплиера^; 
!#VRz71:S^{Сабатоны Тамплиера} 
Приносит по 1 Верховному Архангелу в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A169/1/35000; 
!#UN:A169/3/16; 
!#UN:A169/9/70; 
!#UN:A169/10/71; 
!#VRv25:S1*65536+150; 
!!OW:I-1/?v70; 
!!VRv71:S0; 
!!DO15/0/155/1&#x26;v70=0:P; 
!?FU15; 
!!HEv71:A2/169/d/?v72; 
!!HEv71&#x26;v72=1:C2/150/1/0; 
!!HEv71&#x26;v72=1:O?v73; 
!!OW&#x26;v72=1:Iv73/?v74; 
!!HEv71&#x26;v72=1/v74=0:B0/?z70; 
!!IF&#x26;v72=1/v74=0:Q1/21/v25/1^К герою по имени %Z70 присоединяется Верховный Архангел, благодаря Сабатонам Тамплиера.^; 
!!VRv71:Sd1; 
!?AE1&#x26;v998=169; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&#x26;v998=169; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz80:S^Ожерелье Тамплиера^; 
!#VRz81:S^{Ожерелье Тамплиера} 
Приносит по 1 Драколичу в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A166/1/35000; 
!#UN:A166/3/16; 
!#UN:A166/9/80; 
!#UN:A166/10/81; 
!#VRv26:S1*65536+196; 
!!OW:I-1/?v80; 
!!VRv81:S0; 
!!DO16/0/155/1&#x26;v80=0:P; 
!?FU16; 
!!HEv81:A2/166/d/?v82; 
!!HEv81&#x26;v82=1:C2/196/1/0; 
!!HEv81&#x26;v82=1:O?v83; 
!!OW&#x26;v82=1:Iv83/?v84; 
!!HEv81&#x26;v82=1/v84=0:B0/?z80; 
!!IF&#x26;v82=1/v84=0:Q1/21/v26/1^К герою по имени %Z80 присоединяется Драколич, благодаря Ожерелью Тамплиера.^; 
!!VRv81:Sd1; 
!?AE1&#x26;v998=166; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&#x26;v998=166; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz700:S^Кираса Тамплиера^; 
!#VRz710:S^{Кираса Тамплиера} 
Приносит по 1 Громовержцу в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A167/1/35000; 
!#UN:A167/3/16; 
!#UN:A167/9/700; 
!#UN:A167/10/710; 
!#VRv27:S1*65536+152; 
!#TM10:S1/999/7/255; 
!?TM10; 
!!OW:I-1/?v700; 
!!VRv710:S0; 
!!DO17/0/155/1&#x26;v700=0:P; 
!?FU17; 
!!HEv710:A2/170/d/?v720; 
!!HEv710&#x26;v720=1:C2/152/1/0; 
!!HEv710&#x26;v720=1:O?v730; 
!!OW&#x26;v720=1:Iv730/?v740; 
!!HEv710&#x26;v720=1/v740=0:B0/?z700; 
!!IF&#x26;v720=1/v740=0:Q1/21/v27/1^К герою по имени %Z700 присоединяется Громовержец, благодаря Кирасе Тамплиера.^; 
!!VRv710:Sd1; 
!?AE1&#x26;v998=167; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&#x26;v998=167; 
!!HE-1:Fd-5/d-5/d-5/d-5;</script></div></div></div>]]></description>
			<content:encoded><![CDATA[Доброго всем дня!<br />
Я являюсь давним поклонником игры WoG версии 3.58f и по совету друзей решил обратиться к вам за помощью. <br />
Дело в том, что в игре есть 10 пустых артефактов и у меня появилась идея их «оживить».<br />
Почитав help по ERM и прошерстив форумы я нашел много полезной информации и скриптов,<br />
Которые мне сильно помогли для осуществления идеи. Я увлекаюсь программированием в Delphi и C++, но скрипты еще не писал, поэтому меня это заинтересовало вдвойне. <br />
По замыслу артефакты должны иметь следующие названия и свойства:<br />
161 – Шлем Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Лазурного дракона. Стоимость 35000 золота.<br />
162 – Меч Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Барона Ада. Стоимость 35000 золота.<br />
163 – Щит Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Духу Погребального Костра. Стоимость 35000 золота.<br />
164 – Перстень Тамплиера. Дает + 5 ко всем параметрам героя и максимальную удачу герою. Стоимость 35000 золота. <br />
165 – Кольцо Тамплиера. Дает + 5 ко всем параметрам героя и максимальный боевой дух. Стоимость 35000 золота.<br />
166 – Ожерелье Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Драколича. Стоимость 35000 золота.<br />
167 – Кираса Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Громовержца. Стоимость 35000 золота.<br />
168 – Сюрко Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Кошмарную Гидру. Стоимость 35000 золота.<br />
169 – Сабатоны Тамплиера. Дает + 5 ко всем параметрам героя. В начале каждой недели дает 1 Верховного Архангела. Стоимость 35000 золота.<br />
170 – Призывный Рог Тамплиера. Дает + 5 ко всем параметрам героя. В начале недели дает + 5 ко всем ресурсам и 10000 золота. Стоимость 35000 золота.<br />
В дальнейшем есть идея, чтобы они собирались в сборный артефакт «Доспехи Тамплиера», который будет давать герою эксперта всех стихий и в начале каждой битвы кастовать на врага<br />
Яд, страх, болезнь и кислотную атаку. <br />
Пока что удалось увеличивать параметры героя и частично получилось реализовать прирост существ у героя в начале каждой недели.<br />
Не могу разобраться почему не дают существ 167(Кираса) и 168(Сюрко) артефакты. Там какая-то ерунда с командой !!OW: I-1/?v10; Если везде ставить I-1, то ошибку выдает сразу после WoGификации, если чередовать I-1 и I-0, то работает, но не всех существ дает.<br />
Таймер ставлю в конце скрипта, где идет описание последнего артефакта, иначе существа каждый день прибавляются.<br />
Помогите разобраться в чем причина?<br />
<div class="notranslate"><div class="spoiler_header">Скрипт прилагается: <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none; border: 1px dotted #0F5C8E;">
<div style="background-color: #fff"><script type="erm" id="erm0">ZVSE 
AUTO_PoweredBy=ERM Script Editor v.1.2.6.32 
!#VRz10:S^Шлем Тамплиера^; 
!#VRz11:S^{Шлем Тамплиера} 
Приносит по 1 Лазурному Дракону в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A161/1/35000; 
!#UN:A161/3/16; 
!#UN:A161/9/10; 
!#UN:A161/10/11; 
!#VRv20:S1*65536+132; 
!!OW:I-1/?v10; 
!!VRv11:S0; 
!!DO10/0/155/1&v10=0:P; 
!?FU10; 
!!HEv11:A2/161/d/?v12; 
!!HEv11&v12=1:C2/132/1/0; 
!!HEv11&v12=1:O?v13; 
!!OW&v12=1:Iv13/?v14; 
!!HEv11&v12=1/v14=0:B0/?z10; 
!!IF&v12=1/v14=0:Q1/21/v20/1^К герою по имени %Z10 присоединяется Лазурный Дракон, благодаря Шлему Тамплиера.^; 
!!VRv11:Sd1; 
!?AE1&v998=161; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&v998=161; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz30:S^Меч Тамплиера^; 
!#VRz31:S^{Меч Тамплиера} 
Приносит по 1 Барону Ада в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A162/1/35000; 
!#UN:A162/3/16; 
!#UN:A162/9/30; 
!#UN:A162/10/31; 
!#VRv21:S1*65536+153; 
!!OW:I-0/?v30; 
!!VRv31:S0; 
!!DO11/0/155/1&v30=0:P; 
!?FU11; 
!!HEv31:A2/162/d/?v32; 
!!HEv31&v32=1:C2/153/1/0; 
!!HEv31&v32=1:O?v33; 
!!OW&v32=1:Iv33/?v34; 
!!HEv31&v32=1/v34=0:B0/?z30; 
!!IF&v32=1/v34=0:Q1/21/v21/1^К герою по имени %Z30 присоединяется Барон Ада, благодаря Мечу Тамплиера.^; 
!!VRv31:Sd1; 
!?AE1&v998=162; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&v998=162; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz40:S^Щит Тамплиера^; 
!#VRz41:S^{Щит Тамплиера} 
Приносит по 1 Духу Погребального Костра в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A163/1/35000; 
!#UN:A163/3/16; 
!#UN:A163/9/40; 
!#UN:A163/10/41; 
!#VRv22:S1*65536+158; 
!!OW:I-1/?v40; 
!!VRv41:S0; 
!!DO12/0/155/1&v40=0:P; 
!?FU12; 
!!HEv41:A2/163/d/?v42; 
!!HEv41&v42=1:C2/158/1/0; 
!!HEv41&v42=1:O?v43; 
!!OW&v42=1:Iv43/?v44; 
!!HEv41&v42=1/v44=0:B0/?z40; 
!!IF&v42=1/v44=0:Q1/21/v22/1^К герою по имени %Z40 присоединяется Дух Погребального Костра, благодаря Щиту Тамплиера.^; 
!!VRv41:Sd1; 
!?AE1&v998=163; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&v998=163; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz60:S^Сюрко Тамплиера^; 
!#VRz61:S^{Сюрко Тамплиера} 
Приносит по 1 Кошмарной Гидре в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A168/1/35000; 
!#UN:A168/3/16; 
!#UN:A168/9/60; 
!#UN:A168/10/61; 
!#VRv24:S1*65536+157; 
!!OW:I-0/?v60; 
!!VRv61:S0; 
!!DO14/0/155/1&v60=0:P; 
!?FU14; 
!!HEv61:A2/168/d/?v62; 
!!HEv61&v62=1:C2/157/1/0; 
!!HEv61&v62=1:O?v63; 
!!OW&v62=1:Iv63/?v64; 
!!HEv61&v62=1/v64=0:B0/?z60; 
!!IF&v62=1/v64=0:Q1/21/v24/1^К герою по имени %Z60 присоединяется Кошмарная Гидра, благодаря Сюрко Тамплиера.^; 
!!VRv61:Sd1; 
!?AE1&v998=168; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&v998=168; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz70:S^Сабатоны Тамплиера^; 
!#VRz71:S^{Сабатоны Тамплиера} 
Приносит по 1 Верховному Архангелу в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A169/1/35000; 
!#UN:A169/3/16; 
!#UN:A169/9/70; 
!#UN:A169/10/71; 
!#VRv25:S1*65536+150; 
!!OW:I-1/?v70; 
!!VRv71:S0; 
!!DO15/0/155/1&v70=0:P; 
!?FU15; 
!!HEv71:A2/169/d/?v72; 
!!HEv71&v72=1:C2/150/1/0; 
!!HEv71&v72=1:O?v73; 
!!OW&v72=1:Iv73/?v74; 
!!HEv71&v72=1/v74=0:B0/?z70; 
!!IF&v72=1/v74=0:Q1/21/v25/1^К герою по имени %Z70 присоединяется Верховный Архангел, благодаря Сабатонам Тамплиера.^; 
!!VRv71:Sd1; 
!?AE1&v998=169; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&v998=169; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz80:S^Ожерелье Тамплиера^; 
!#VRz81:S^{Ожерелье Тамплиера} 
Приносит по 1 Драколичу в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A166/1/35000; 
!#UN:A166/3/16; 
!#UN:A166/9/80; 
!#UN:A166/10/81; 
!#VRv26:S1*65536+196; 
!!OW:I-1/?v80; 
!!VRv81:S0; 
!!DO16/0/155/1&v80=0:P; 
!?FU16; 
!!HEv81:A2/166/d/?v82; 
!!HEv81&v82=1:C2/196/1/0; 
!!HEv81&v82=1:O?v83; 
!!OW&v82=1:Iv83/?v84; 
!!HEv81&v82=1/v84=0:B0/?z80; 
!!IF&v82=1/v84=0:Q1/21/v26/1^К герою по имени %Z80 присоединяется Драколич, благодаря Ожерелью Тамплиера.^; 
!!VRv81:Sd1; 
!?AE1&v998=166; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&v998=166; 
!!HE-1:Fd-5/d-5/d-5/d-5; 
 
 
!#VRz700:S^Кираса Тамплиера^; 
!#VRz710:S^{Кираса Тамплиера} 
Приносит по 1 Громовержцу в неделю, прибавляет ко всем первичным навыкам по 5.^; 
!#UN:A167/1/35000; 
!#UN:A167/3/16; 
!#UN:A167/9/700; 
!#UN:A167/10/710; 
!#VRv27:S1*65536+152; 
!#TM10:S1/999/7/255; 
!?TM10; 
!!OW:I-1/?v700; 
!!VRv710:S0; 
!!DO17/0/155/1&v700=0:P; 
!?FU17; 
!!HEv710:A2/170/d/?v720; 
!!HEv710&v720=1:C2/152/1/0; 
!!HEv710&v720=1:O?v730; 
!!OW&v720=1:Iv730/?v740; 
!!HEv710&v720=1/v740=0:B0/?z700; 
!!IF&v720=1/v740=0:Q1/21/v27/1^К герою по имени %Z700 присоединяется Громовержец, благодаря Кирасе Тамплиера.^; 
!!VRv710:Sd1; 
!?AE1&v998=167; 
!!HE-1:Fd5/d5/d5/d5; 
!?AE0&v998=167; 
!!HE-1:Fd-5/d-5/d-5/d-5;</script></div></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Fnord's 3.59 WoG Scripts]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=6392</link>
			<pubDate>Sun, 10 Oct 2021 10:13:39 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=6392</guid>
			<description><![CDATA[Скрипты писались под ВоГ 3.59, но так и не вышли в свет.<br />
Скачать: <a href="https://mods.hmm35.ru/fnord_359_wog_scripts.zip" target="_blank">https://mods.hmm35.ru/fnord_359_wog_scripts.zip</a>]]></description>
			<content:encoded><![CDATA[Скрипты писались под ВоГ 3.59, но так и не вышли в свет.<br />
Скачать: <a href="https://mods.hmm35.ru/fnord_359_wog_scripts.zip" target="_blank">https://mods.hmm35.ru/fnord_359_wog_scripts.zip</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Panda™ UN:C to BIN конвертер]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=6006</link>
			<pubDate>Sat, 22 May 2021 12:43:46 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=6006</guid>
			<description><![CDATA[Простые наборы UN:C-команд можно преобразовать в bin-патч онлайн, воспользовавшись <a href="https://tools.hmm35.ru/unc-to-bin/index.html" target="_blank">следующим сервисом</a>.<br />
<br />
От создателей нашумевшего антивируса и одноимённых сборок Эры.]]></description>
			<content:encoded><![CDATA[Простые наборы UN:C-команд можно преобразовать в bin-патч онлайн, воспользовавшись <a href="https://tools.hmm35.ru/unc-to-bin/index.html" target="_blank">следующим сервисом</a>.<br />
<br />
От создателей нашумевшего антивируса и одноимённых сборок Эры.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Сложные скрипты (справочник)]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5972</link>
			<pubDate>Sun, 11 Apr 2021 13:06:01 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5972</guid>
			<description><![CDATA[Данная тема является справочником, содержащем примеры готовых скриптов. Скрипты, выкладываемые здесь, должны быть хорошо прокомментированы, хорошо структурированы, а также не быть банальными. Использование команд <span style="font-weight: bold;">UN:C</span>, <span style="font-weight: bold;">SN:E</span> и <span style="font-weight: bold;">SN:К </span> приветствуется.<br />
<br />
<br />
В качестве примера возьму скрипт, найденный на просторах этого форума, и доработанный мной. Суть скрипта - поиск наиболее короткого маршрута от одного гекса до другого в бою, суть моей поправки - раньше скрипт <span style="font-weight: bold;">всегда </span>считал замковые ворота препятствием, но теперь это не так. Решение проблемы заключалось в отказе от BU:О и использовании вместо этой команды SN:E4625904[...&#93;.<br />
<br />
<span style="font-size: large;"><span style="text-decoration: underline;"><span style="color: red;">Узнать расстояние между двумя гексами на поле боя</span>:</span></span><br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">** Автор: Algor, обновил: Raistlin
** получение пройденного расстояния между двумя гексами
** по алгоритму, который привел в FizMiG'е AlexSpl
** FU8888-FU8891
!?FU8888;                              [получение пройденного расстояния между двумя гексами&#93;
; x1 - исходный гекс (1..185)
; x2 - целевой гекс (1..185)
; x3 - ширина существа (1..2)
; x4 - расстояние или -1(гекс не доступен) или -2 (гекс занят/за полем)
!!BU:Ex1/?y1;                          [номер отряда в исходной позиции&#93;
!!VRy2:Sx1;                            [для одногексового отряда 2й исходный гекс совпадает с первым&#93;
!!VRy2&#x26;y1>=0/y1<21/x3=2:+1;            [y2 - 2й исходный гекс для атакующего двугексового существа&#93;
!!VRy2&#x26;y1>20/x3=2:-1;                  [y2 - 2й исходный гекс для защищающегося двугексового существа&#93;
!!DO8889/0/186/1:Px3;                  [инициализация сетки значениями -1(не определено) и -2 (не доступно)&#93;
!!SN:W^alg%X1^/0 W^alg%Y2^/0;          [инициализация исходных гексов (расстояние 0)&#93;
!!DO8890/1/30/1:Px2;                   [расчет значений сетки (30 итераций)&#93;
!!SN:W^alg%X2^/?x4;                    [возврат в x4 значения целевого гекса&#93;

!?FU8889;                              [установка значения -1(не определено) или -2 (не доступно) для гекса x16&#93;
!!BU:Ex16/?y1;                         [y1/y2 - отряд/препятствие в гексе&#93;
!!UN:C6919200/4/?y50;                  [менеджер Битвы&#93;
!!SN:E4625904/2/y50/x16;               [вызов функции IsHexNotFree&#93;
!!VRy2:Sv1 *2;                         [y2=2, если на позиции препятствие&#93;
!!VRy3:Sx16 %17;                       [y3 = 0 или 16 если гекс за пределами поля&#93;
!!VRy5:S0;
!!VRy5|y1>=0/y2=2/y3=0/y3=16:S2;       [y5=2 для недоступного гекса&#93;
!!if&#x26;x1=2/y5<2:;                       [для двугексовых существ определяем доступность еще и по соседним гексам&#93;
  !!VRy4:Sx16 -1;                      [y4 - номер левого гекса&#93;
  !!BU:Ey4/?y1;                        [y1/y2 - отряд/препятствие в гексе&#93;
  !!SN:E4625904/2/y50/y4;              [вызов функции IsHexNotFree&#93;
  !!VRy2:Sv1 *2;                       [y2=2, если на позиции препятствие&#93;
  !!VRy3:Sy4 %17;                      [y3 = 0 или 16 если гекс за пределами поля&#93;
  !!VRy5|y1>=0/y2=2/y3=0/y3=16:+1;     [y5++, если левый гекс не доступен&#93;
  !!VRy4:Sx16 +1;                      [y4 - номер правого гекса&#93;
  !!BU:Ey4/?y1;                        [y1/y2 - отряд/препятствие в гексе&#93;
  !!SN:E4625904/2/y50/y4;              [вызов функции IsHexNotFree&#93;
  !!VRy2:Sv1 *2;                       [y2=2, если на позиции препятствие&#93;
  !!VRy3:Sy4 %17;                      [y3 = 0 или 16 если гекс за пределами поля&#93;
  !!VRy5|y1>=0/y2=2/y3=0/y3=16:+1;     [y5++, если левый гекс не доступен&#93;
!!en:;
!!SN&#x26;y5<2:W^alg%X16^/-1;               [значение гекса "не определено"&#93;
!!SN&#x26;y5>=2/x16<>96:W^alg%X16^/-2;      [значение гекса "не доступно"&#93;
!!SN&#x26;x16=96/v1=1:W^alg%X16^/-2;        [значение гекса "не доступно" для ворот&#93;

!?FU8890;                              [расчет значений сетки&#93;
!!SN:W^alg%X1^/?y1;                    [текущее значение целевого гекса&#93;
!!FU&#x26;y1>=0:E;                          [выход, если расстояние до текущего гекса уже определилось&#93;
!!DO8891/1/185/1:P;                    [для каждого гекса определяем расстояния от исходного по соседним значениям&#93;

!?FU8891;                              [расчет значения гекса x16&#93;
!!SN:W^alg%X16^/?y1;                   [y1 - текущее значение гекса&#93;
!!FU&#x26;y1<>-1:E;                         [выход, если значение уже определено&#93;
!!VRy1:Sx16 :17 %2;                    [y1 - четность ряда проверяемого гекса&#93;
!!VRy10:S100;                          [y10 - инициализация значения большим числом&#93;
!!VRy2:Sx16 -1;                        [y2 - левый гекс&#93;
!!SN:W^alg%Y2^/?y9;                    [y9 - значение гекса&#93;
!!VRy10&#x26;y9<y10/y9>=0:Sy9;              [y10 - минимальное значение соседнего гекса&#93;
!!VRy2:Sx16 +1;                        [y2 - правый гекс&#93;
!!SN:W^alg%Y2^/?y9;                    [y9 - значение гекса&#93;
!!VRy10&#x26;y9<y10/y9>=0:Sy9;              [y10 - минимальное значение соседнего гекса&#93;
!!VRy2:Sx16 -17 -y1;                   [y2 - левый верхний гекс&#93;
!!SN&#x26;y2>=0:W^alg%Y2^/?y9;              [y9 - значение гекса&#93;
!!VRy10&#x26;y2>=0/y9<y10/y9>=0:Sy9;        [y10 - минимальное значение соседнего гекса&#93;
!!VRy2:Sx16 -16 -y1;                   [y2 - правый верхний гекс&#93;
!!SN&#x26;y2>=0:W^alg%Y2^/?y9;              [y9 - значение гекса&#93;
!!VRy10&#x26;y2>=0/y9<y10/y9>=0:Sy9;        [y10 - минимальное значение соседнего гекса&#93;
!!VRy2:Sx16 +17 -y1;                   [y2 - левый нижний гекс&#93;
!!SN&#x26;y2<187:W^alg%Y2^/?y9;             [y9 - значение гекса&#93;
!!VRy10&#x26;y2<187/y9<y10/y9>=0:Sy9;       [y10 - минимальное значение соседнего гекса&#93;
!!VRy2:Sx16 +18 -y1;                   [y2 - правый нижний гекс&#93;
!!SN&#x26;y2<187:W^alg%Y2^/?y9;             [y9 - значение гекса&#93;
!!VRy10&#x26;y2<187/y9<y10/y9>=0:Sy9;       [y10 - минимальное значение соседнего гекса&#93;
!!VRy10&#x26;y10<100:+1;                    [если значение гекса определилось...&#93;
!!SN&#x26;y10<100:W^alg%X16^/y10;           [...устанавливаем его&#93;

!?CM4;                                 [ДЕМОНСТРАЦИЯ: при ПКМ на гексе выводит пешее расстояние до него от текущего отряда&#93;
!!BG:N?y1;                             [y1 - текущий отряд&#93;
!!BMy1:P?y4 F?y5;                      [y4 - исходный гекс, y5 - флаги отряда&#93;
!!VRy5:&#x26;1 +1;                          [y5 - размер отряда (1..2)&#93;
!!CM:D?y3 S?y2;                        [y3/y2 - место/тип клика&#93;
!!FU&#x26;y2<>14:E;                         [выход, если не ПКМ&#93;
!!FU8888:Py4/y3/y5/?y6;                [y6 - пройденное расстояние&#93;
!!IF:M^Расстояние: %Y6 (%Y4 -> %Y3, %Y5-hex)^; [вывод сообщения&#93;</script></div>
<br />
<br />
<br />
Также приведу пример из моего собственного кода.<br />
<span style="font-size: large;"><span style="text-decoration: underline;"><span style="color: red;">Реализация абилки Астральных Элементалей из WoG UE</span>:</span></span><br />
<br />
<div class="notranslate"><div class="spoiler_header">Что за абилка <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1&#93;.style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1&#93;.style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1&#93;.style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none; border: 1px dotted #0F5C8E;">Астральные Элементали - улучшенные Магические Элементали - имеют свойство вызывать собственных клонов в начале каждого раунда битвы. </div></div>
<br />
<div style="background-color: #fff"><script type="erm" id="erm1">!?BR&#x26;v997>0; При каждом раунде, начиная со второго
!!re v10/0/41:; Проходимся по стекам
 !!BMv10:T?y1; Тип монстра в текущем стеке
 !!if&#x26;y1=251:; Если Астральный Элементаль
  !!BMv10:F?y2; Получаем флаги
  !!VRy2:&#x26;8388608; Клон?
  !!co&#x26;y2<>0:; Пропускаем клонов
  !!BMv10:N?y3; Количество оставшихся монстров
  !!co&#x26;y3=0:; Пропускаем мертвые стеки
  !!BMv10:P?y4; Позиция текущего стека
  !!UN:C6919200/4/?y5; Менеджер битвы
  !!VRy6&#x26;v10<21:S21692; Корректируем смещение
  !!VRy6&#x26;v10>20:S21696;
  !!UN:Cy5/y6/4/?y7; Узнаем количество стеков у текущей стороны
  !!SN&#x26;y7<20:E5926784/2/y5/y4/50; Если не 20, вызываем клон
 !!en:;
!!en:;</script></div>]]></description>
			<content:encoded><![CDATA[Данная тема является справочником, содержащем примеры готовых скриптов. Скрипты, выкладываемые здесь, должны быть хорошо прокомментированы, хорошо структурированы, а также не быть банальными. Использование команд <span style="font-weight: bold;">UN:C</span>, <span style="font-weight: bold;">SN:E</span> и <span style="font-weight: bold;">SN:К </span> приветствуется.<br />
<br />
<br />
В качестве примера возьму скрипт, найденный на просторах этого форума, и доработанный мной. Суть скрипта - поиск наиболее короткого маршрута от одного гекса до другого в бою, суть моей поправки - раньше скрипт <span style="font-weight: bold;">всегда </span>считал замковые ворота препятствием, но теперь это не так. Решение проблемы заключалось в отказе от BU:О и использовании вместо этой команды SN:E4625904[...].<br />
<br />
<span style="font-size: large;"><span style="text-decoration: underline;"><span style="color: red;">Узнать расстояние между двумя гексами на поле боя</span>:</span></span><br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">** Автор: Algor, обновил: Raistlin
** получение пройденного расстояния между двумя гексами
** по алгоритму, который привел в FizMiG'е AlexSpl
** FU8888-FU8891
!?FU8888;                              [получение пройденного расстояния между двумя гексами]
; x1 - исходный гекс (1..185)
; x2 - целевой гекс (1..185)
; x3 - ширина существа (1..2)
; x4 - расстояние или -1(гекс не доступен) или -2 (гекс занят/за полем)
!!BU:Ex1/?y1;                          [номер отряда в исходной позиции]
!!VRy2:Sx1;                            [для одногексового отряда 2й исходный гекс совпадает с первым]
!!VRy2&y1>=0/y1<21/x3=2:+1;            [y2 - 2й исходный гекс для атакующего двугексового существа]
!!VRy2&y1>20/x3=2:-1;                  [y2 - 2й исходный гекс для защищающегося двугексового существа]
!!DO8889/0/186/1:Px3;                  [инициализация сетки значениями -1(не определено) и -2 (не доступно)]
!!SN:W^alg%X1^/0 W^alg%Y2^/0;          [инициализация исходных гексов (расстояние 0)]
!!DO8890/1/30/1:Px2;                   [расчет значений сетки (30 итераций)]
!!SN:W^alg%X2^/?x4;                    [возврат в x4 значения целевого гекса]

!?FU8889;                              [установка значения -1(не определено) или -2 (не доступно) для гекса x16]
!!BU:Ex16/?y1;                         [y1/y2 - отряд/препятствие в гексе]
!!UN:C6919200/4/?y50;                  [менеджер Битвы]
!!SN:E4625904/2/y50/x16;               [вызов функции IsHexNotFree]
!!VRy2:Sv1 *2;                         [y2=2, если на позиции препятствие]
!!VRy3:Sx16 %17;                       [y3 = 0 или 16 если гекс за пределами поля]
!!VRy5:S0;
!!VRy5|y1>=0/y2=2/y3=0/y3=16:S2;       [y5=2 для недоступного гекса]
!!if&x1=2/y5<2:;                       [для двугексовых существ определяем доступность еще и по соседним гексам]
  !!VRy4:Sx16 -1;                      [y4 - номер левого гекса]
  !!BU:Ey4/?y1;                        [y1/y2 - отряд/препятствие в гексе]
  !!SN:E4625904/2/y50/y4;              [вызов функции IsHexNotFree]
  !!VRy2:Sv1 *2;                       [y2=2, если на позиции препятствие]
  !!VRy3:Sy4 %17;                      [y3 = 0 или 16 если гекс за пределами поля]
  !!VRy5|y1>=0/y2=2/y3=0/y3=16:+1;     [y5++, если левый гекс не доступен]
  !!VRy4:Sx16 +1;                      [y4 - номер правого гекса]
  !!BU:Ey4/?y1;                        [y1/y2 - отряд/препятствие в гексе]
  !!SN:E4625904/2/y50/y4;              [вызов функции IsHexNotFree]
  !!VRy2:Sv1 *2;                       [y2=2, если на позиции препятствие]
  !!VRy3:Sy4 %17;                      [y3 = 0 или 16 если гекс за пределами поля]
  !!VRy5|y1>=0/y2=2/y3=0/y3=16:+1;     [y5++, если левый гекс не доступен]
!!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;                              [расчет значения гекса x16]
!!SN:W^alg%X16^/?y1;                   [y1 - текущее значение гекса]
!!FU&y1<>-1:E;                         [выход, если значение уже определено]
!!VRy1:Sx16 :17 %2;                    [y1 - четность ряда проверяемого гекса]
!!VRy10:S100;                          [y10 - инициализация значения большим числом]
!!VRy2:Sx16 -1;                        [y2 - левый гекс]
!!SN:W^alg%Y2^/?y9;                    [y9 - значение гекса]
!!VRy10&y9<y10/y9>=0:Sy9;              [y10 - минимальное значение соседнего гекса]
!!VRy2:Sx16 +1;                        [y2 - правый гекс]
!!SN:W^alg%Y2^/?y9;                    [y9 - значение гекса]
!!VRy10&y9<y10/y9>=0:Sy9;              [y10 - минимальное значение соседнего гекса]
!!VRy2:Sx16 -17 -y1;                   [y2 - левый верхний гекс]
!!SN&y2>=0:W^alg%Y2^/?y9;              [y9 - значение гекса]
!!VRy10&y2>=0/y9<y10/y9>=0:Sy9;        [y10 - минимальное значение соседнего гекса]
!!VRy2:Sx16 -16 -y1;                   [y2 - правый верхний гекс]
!!SN&y2>=0:W^alg%Y2^/?y9;              [y9 - значение гекса]
!!VRy10&y2>=0/y9<y10/y9>=0:Sy9;        [y10 - минимальное значение соседнего гекса]
!!VRy2:Sx16 +17 -y1;                   [y2 - левый нижний гекс]
!!SN&y2<187:W^alg%Y2^/?y9;             [y9 - значение гекса]
!!VRy10&y2<187/y9<y10/y9>=0:Sy9;       [y10 - минимальное значение соседнего гекса]
!!VRy2:Sx16 +18 -y1;                   [y2 - правый нижний гекс]
!!SN&y2<187:W^alg%Y2^/?y9;             [y9 - значение гекса]
!!VRy10&y2<187/y9<y10/y9>=0:Sy9;       [y10 - минимальное значение соседнего гекса]
!!VRy10&y10<100:+1;                    [если значение гекса определилось...]
!!SN&y10<100:W^alg%X16^/y10;           [...устанавливаем его]

!?CM4;                                 [ДЕМОНСТРАЦИЯ: при ПКМ на гексе выводит пешее расстояние до него от текущего отряда]
!!BG:N?y1;                             [y1 - текущий отряд]
!!BMy1:P?y4 F?y5;                      [y4 - исходный гекс, y5 - флаги отряда]
!!VRy5:&1 +1;                          [y5 - размер отряда (1..2)]
!!CM:D?y3 S?y2;                        [y3/y2 - место/тип клика]
!!FU&y2<>14:E;                         [выход, если не ПКМ]
!!FU8888:Py4/y3/y5/?y6;                [y6 - пройденное расстояние]
!!IF:M^Расстояние: %Y6 (%Y4 -> %Y3, %Y5-hex)^; [вывод сообщения]</script></div>
<br />
<br />
<br />
Также приведу пример из моего собственного кода.<br />
<span style="font-size: large;"><span style="text-decoration: underline;"><span style="color: red;">Реализация абилки Астральных Элементалей из WoG UE</span>:</span></span><br />
<br />
<div class="notranslate"><div class="spoiler_header">Что за абилка <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none; border: 1px dotted #0F5C8E;">Астральные Элементали - улучшенные Магические Элементали - имеют свойство вызывать собственных клонов в начале каждого раунда битвы. </div></div>
<br />
<div style="background-color: #fff"><script type="erm" id="erm1">!?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; Если не 20, вызываем клон
 !!en:;
!!en:;</script></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Расширение ERM]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5933</link>
			<pubDate>Sun, 07 Feb 2021 10:27:27 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5933</guid>
			<description><![CDATA[Привет, друзья!<br />
У меня тут некоторое время назад возникла мысль, что ERM можно и расширить - когда я сам только-только начинал писать скрипты, мне для моих замашек многого не хватало: я тогда не был программистом, а потому слово "функция" пугала меня, и я даже не пытался с этим разобраться. Точно так же было с командой UN:C и вообще всеми командами, предполагающими работу с памятью. Я еще помню те ощущения и потому принял решение хотя бы попытаться решить эту проблему.<br />
<br />
На данный момент у меня готовы две полноценные команды и есть пара идей на будущее. Скачать расширение ERM еще нельзя - подождите несколько дней, пока я протестирую весь функционал. <br />
<br />
<span style="font-size: large;"><span style="color: #FF1493;">Итак, ресивер FC (Fraction Controller):</span></span><br />
<br />
<span style="font-weight: bold;">#</span> - Тип города<br />
<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">B0/&#36;</span></span> – Установить/проверить/получить артефакт, покупаемый в кузнице<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">B1/&#36;</span></span> – Установить/проверить/получить сушество, показываемое в кузнице<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">C&#36;1/&#36;2/&#36;3/&#36;4</span></span> – Координаты зданий. &#36;1 – Номер здания, &#36;2 – Количество кадров в def'е, &#36;3 – Позиция X, &#36;4 – Позиция Y. Если какой-то параметр не надо модифицировать, можно использовать число -1 или d0 <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">D&#36;1/&#36;2</span></span> – Установить/проверить/получить приоритет отображения строений. &#36;1 – Индекс элемента массива, &#36;2 – Номер строения (в скором времени у данной команды появится пояснительный комментарий)<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H0/&#36;1/&#36;2</span></span> – Прирост в "орде 1". &#36;1 неулучшенное существо, &#36;2 – улучшенное <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H1/&#36;1/&#36;2</span></span> – Прирост в "орде 2". &#36;1 неулучшенное существо, &#36;2 – улучшенное <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H2/&#36;1/&#36;2</span></span> – Уровень сушеств в "орде 1". &#36;1 неулучшенное существо, &#36;2 – улучшенное <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H3/&#36;1/&#36;2</span></span> – Уровень сушеств в "орде 2". &#36;1 неулучшенное существо, &#36;2 – улучшенное <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H4/&#36;1/&#36;2/&#36;3</span></span> – Тип простых &#36;2 и улучшенных &#36;3 существ в орде &#36;1 (1/2)<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">M</span></span> – Получить в v1 тип рва (2, 1, нет)<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">M0/#</span></span> – Установить тип рва (2, 1, нет)<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">M1/&#36;</span></span> – Установить/проверить/получить урон от рва <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">R&#36;1/&#36;2</span></span> – Установить/проверить/получить ресурсы в хранилище. &#36;1 - тип (0-6), &#36;2 - количество<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">S&#36;</span></span> – Установить/проверить/получить существо в стрелковой башне<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">T&#36;</span></span> – Установить/проверить/получить родную почву<br />
<br />
<br />
<span style="color: #9400D3;"><span style="font-weight: bold;">Об использовании:</span></span><br />
Данный ресивер задумывался не столько для изменения шаблонов городов, сколько для работы в тандеме с ассоциативными массивами. Впрочем, благодаря ему многие вещи теперь действительно можно реализовать без плагинов и патчей.<br />
<br />
<span style="font-weight: bold;"><span style="color: #9400D3;">Как это можно использовать (идеи опций):</span></span><br />
- Улучшение хранилища ресурсов за мифрил<br />
- Выбор ресурса в хранилище<br />
- С помощью FC:C и SN:R можно реализовать альтернативы с полноценными жилищами в городах (как в Tides of War), надо просто выставлять значения в OnPreTownScreen в зависимости от обитателя жилища<br />
- FC:М - улучшение рва (например, тоже за мифрил)<br />
- FC:В - добавление новых боевых машин<br />
<br />
<span style="font-weight: bold;"><span style="color: #9400D3;">Примеры использования:</span></span><br />
<div style="background-color: #fff"><script type="erm" id="erm0">!!FC0:B1/7; Установить замку Крестоносца в кузню
!!FC8:S8;В башнях сопряжения сидят монахи
!!FC1:R4/1000;Хранилище ресурсов оплота приносит 1000 кристаллов
!!FC2:H0/10/10;Крылья ваятеля увеличивают прирост горгулий на 10</script></div>
<br />
<br />
<span style="font-size: large;"><span style="color: #FF1493;">Ресивер PR (Prison):</span></span><br />
<br />
#1/#2/#3 - Координаты тюрьмы на карте. Можно использовать и 1 параметр - номер v-переменной<br />
<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!PR</span>#1/#2/#3:<span style="font-family: arial;">H&#36;</span></span> – Установить/проверить/получить номер героя<br />
<br />
<br />
<span style="font-size: medium;"><span style="color: #1E90FF;">Также я планирую ввести команды <span style="font-weight: bold;">OB:Z</span> (Получение структуры объекта), <span style="font-weight: bold;">MA:W</span> (Разрешение для появления в генераторе случайных монстров) и <span style="font-weight: bold;">WH:N</span> (Работа с номером объекта на карте у хижин ведьм).</span></span><br />
<br />
Пишите, что думаете по этому поводу, а также, каких команд вам не хватает. Я с удовольствием добавлю еще что-нибудь интересненькое. <img src="http://wforum.heroes35.net/images/smilies/115.gif" style="vertical-align: middle;" border="0" alt="115" title="115" />]]></description>
			<content:encoded><![CDATA[Привет, друзья!<br />
У меня тут некоторое время назад возникла мысль, что ERM можно и расширить - когда я сам только-только начинал писать скрипты, мне для моих замашек многого не хватало: я тогда не был программистом, а потому слово "функция" пугала меня, и я даже не пытался с этим разобраться. Точно так же было с командой UN:C и вообще всеми командами, предполагающими работу с памятью. Я еще помню те ощущения и потому принял решение хотя бы попытаться решить эту проблему.<br />
<br />
На данный момент у меня готовы две полноценные команды и есть пара идей на будущее. Скачать расширение ERM еще нельзя - подождите несколько дней, пока я протестирую весь функционал. <br />
<br />
<span style="font-size: large;"><span style="color: #FF1493;">Итак, ресивер FC (Fraction Controller):</span></span><br />
<br />
<span style="font-weight: bold;">#</span> - Тип города<br />
<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">B0/&#36;</span></span> – Установить/проверить/получить артефакт, покупаемый в кузнице<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">B1/&#36;</span></span> – Установить/проверить/получить сушество, показываемое в кузнице<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">C&#36;1/&#36;2/&#36;3/&#36;4</span></span> – Координаты зданий. &#36;1 – Номер здания, &#36;2 – Количество кадров в def'е, &#36;3 – Позиция X, &#36;4 – Позиция Y. Если какой-то параметр не надо модифицировать, можно использовать число -1 или d0 <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">D&#36;1/&#36;2</span></span> – Установить/проверить/получить приоритет отображения строений. &#36;1 – Индекс элемента массива, &#36;2 – Номер строения (в скором времени у данной команды появится пояснительный комментарий)<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H0/&#36;1/&#36;2</span></span> – Прирост в "орде 1". &#36;1 неулучшенное существо, &#36;2 – улучшенное <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H1/&#36;1/&#36;2</span></span> – Прирост в "орде 2". &#36;1 неулучшенное существо, &#36;2 – улучшенное <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H2/&#36;1/&#36;2</span></span> – Уровень сушеств в "орде 1". &#36;1 неулучшенное существо, &#36;2 – улучшенное <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H3/&#36;1/&#36;2</span></span> – Уровень сушеств в "орде 2". &#36;1 неулучшенное существо, &#36;2 – улучшенное <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">H4/&#36;1/&#36;2/&#36;3</span></span> – Тип простых &#36;2 и улучшенных &#36;3 существ в орде &#36;1 (1/2)<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">M</span></span> – Получить в v1 тип рва (2, 1, нет)<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">M0/#</span></span> – Установить тип рва (2, 1, нет)<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">M1/&#36;</span></span> – Установить/проверить/получить урон от рва <br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">R&#36;1/&#36;2</span></span> – Установить/проверить/получить ресурсы в хранилище. &#36;1 - тип (0-6), &#36;2 - количество<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">S&#36;</span></span> – Установить/проверить/получить существо в стрелковой башне<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!FC</span>#:<span style="font-family: arial;">T&#36;</span></span> – Установить/проверить/получить родную почву<br />
<br />
<br />
<span style="color: #9400D3;"><span style="font-weight: bold;">Об использовании:</span></span><br />
Данный ресивер задумывался не столько для изменения шаблонов городов, сколько для работы в тандеме с ассоциативными массивами. Впрочем, благодаря ему многие вещи теперь действительно можно реализовать без плагинов и патчей.<br />
<br />
<span style="font-weight: bold;"><span style="color: #9400D3;">Как это можно использовать (идеи опций):</span></span><br />
- Улучшение хранилища ресурсов за мифрил<br />
- Выбор ресурса в хранилище<br />
- С помощью FC:C и SN:R можно реализовать альтернативы с полноценными жилищами в городах (как в Tides of War), надо просто выставлять значения в OnPreTownScreen в зависимости от обитателя жилища<br />
- FC:М - улучшение рва (например, тоже за мифрил)<br />
- FC:В - добавление новых боевых машин<br />
<br />
<span style="font-weight: bold;"><span style="color: #9400D3;">Примеры использования:</span></span><br />
<div style="background-color: #fff"><script type="erm" id="erm0">!!FC0:B1/7; Установить замку Крестоносца в кузню
!!FC8:S8;В башнях сопряжения сидят монахи
!!FC1:R4/1000;Хранилище ресурсов оплота приносит 1000 кристаллов
!!FC2:H0/10/10;Крылья ваятеля увеличивают прирост горгулий на 10</script></div>
<br />
<br />
<span style="font-size: large;"><span style="color: #FF1493;">Ресивер PR (Prison):</span></span><br />
<br />
#1/#2/#3 - Координаты тюрьмы на карте. Можно использовать и 1 параметр - номер v-переменной<br />
<br />
<span style="font-weight: bold;"><span style="color: darkblue;">!!PR</span>#1/#2/#3:<span style="font-family: arial;">H&#36;</span></span> – Установить/проверить/получить номер героя<br />
<br />
<br />
<span style="font-size: medium;"><span style="color: #1E90FF;">Также я планирую ввести команды <span style="font-weight: bold;">OB:Z</span> (Получение структуры объекта), <span style="font-weight: bold;">MA:W</span> (Разрешение для появления в генераторе случайных монстров) и <span style="font-weight: bold;">WH:N</span> (Работа с номером объекта на карте у хижин ведьм).</span></span><br />
<br />
Пишите, что думаете по этому поводу, а также, каких команд вам не хватает. Я с удовольствием добавлю еще что-нибудь интересненькое. <img src="http://wforum.heroes35.net/images/smilies/115.gif" style="vertical-align: middle;" border="0" alt="115" title="115" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Скрипт штрафа за переигровку]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5777</link>
			<pubDate>Sun, 30 Aug 2020 10:56:02 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5777</guid>
			<description><![CDATA[<blockquote><cite><span> (30.08.2020 13:21)</span>Bes Wrote: <a href="http://wforum.heroes35.net/showthread.php?pid=115628#pid115628" class="quick_jump">&nbsp;</a></cite>кстати, а вот мне понравилось, что при переигровке были лишние монстры - ибо не фиг, защита от дурака эдакая <img src="http://wforum.heroes35.net/images/smilies/148.gif" style="vertical-align: middle;" border="0" alt="148" title="148" /></blockquote>
Случайно прочел это сообщение. И вдруг подумал, что и правда был бы хороший скрипт (опционально), чтобы при переигровке с каждым разом увеличивался штраф для игрока. Потому что я играю без переигровок, а так, вроде бы честно и игровой момент, типа воззвание богам повернуть время вспять, но за это враг усилился. Только опыт не должен расти, чтобы этим не пользоваться, как читом. ))<br />
<br />
И всем спасибо за все. Даже не представляю, как бы я сейчас играл на том старом воге, хотя впечатления самые сильные были именно там, возраст, вероятно ))]]></description>
			<content:encoded><![CDATA[<blockquote><cite><span> (30.08.2020 13:21)</span>Bes Wrote: <a href="http://wforum.heroes35.net/showthread.php?pid=115628#pid115628" class="quick_jump">&nbsp;</a></cite>кстати, а вот мне понравилось, что при переигровке были лишние монстры - ибо не фиг, защита от дурака эдакая <img src="http://wforum.heroes35.net/images/smilies/148.gif" style="vertical-align: middle;" border="0" alt="148" title="148" /></blockquote>
Случайно прочел это сообщение. И вдруг подумал, что и правда был бы хороший скрипт (опционально), чтобы при переигровке с каждым разом увеличивался штраф для игрока. Потому что я играю без переигровок, а так, вроде бы честно и игровой момент, типа воззвание богам повернуть время вспять, но за это враг усилился. Только опыт не должен расти, чтобы этим не пользоваться, как читом. ))<br />
<br />
И всем спасибо за все. Даже не представляю, как бы я сейчас играл на том старом воге, хотя впечатления самые сильные были именно там, возраст, вероятно ))]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Баллиста и её двойной урон]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5704</link>
			<pubDate>Sun, 19 Jul 2020 12:43:02 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5704</guid>
			<description><![CDATA[Может ли кто-то подсказать, навык Артиллерия дает 50%,75%,100% шанс баллисте нанести двойной урони дает двойной выстрел, можно ли как-то это отключить или выставить этот шанс 0% для всех уровней навыка Артиллерия? Я нашел только <a href="http://wforum.heroes35.net/showthread.php?tid=5118&amp;pid=101871#pid101871" target="_blank">вот это сообщение</a>, но там нет артиллерии как и в Fun_SetSecSkillValue.erm <img src="http://wforum.heroes35.net/images/smilies/bad.gif" style="vertical-align: middle;" border="0" alt="Bad" title="Bad" />]]></description>
			<content:encoded><![CDATA[Может ли кто-то подсказать, навык Артиллерия дает 50%,75%,100% шанс баллисте нанести двойной урони дает двойной выстрел, можно ли как-то это отключить или выставить этот шанс 0% для всех уровней навыка Артиллерия? Я нашел только <a href="http://wforum.heroes35.net/showthread.php?tid=5118&amp;pid=101871#pid101871" target="_blank">вот это сообщение</a>, но там нет артиллерии как и в Fun_SetSecSkillValue.erm <img src="http://wforum.heroes35.net/images/smilies/bad.gif" style="vertical-align: middle;" border="0" alt="Bad" title="Bad" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Школа ERM 2]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5671</link>
			<pubDate>Sat, 04 Jul 2020 22:45:07 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5671</guid>
			<description><![CDATA[<span style="color: #0000CD;"><span style="font-weight: bold;">Вопрос: как преобразовать скрипт из ERM 1 в ERM 2?</span></span><br />
<span style="color: green;"><span style="font-weight: bold;">Ответ</span></span>: <span style="text-decoration: underline;">Заменить ZVSE на ZVSE2</span>. После чего убедиться, что именованные функции соответствуют указанному ниже стилю.<br />
<br />
<span style="font-style: italic;">OnSomeEvent</span>, <span style="font-style: italic;">DoSomeWork </span>— стиль оформления, зарезервированный за Эрой, её событиями и функциями.<br />
<br />
<span style="font-style: italic;">mod_OnSomeEvent</span>, <span style="font-style: italic;">MOD_OnSomeEvent</span>, <span style="font-style: italic;">mod_CountHeroes</span>, <span style="font-style: italic;">mod_TeleportStack </span>— так нужно именовать функции вашего мода или библиотеки. Здесь mod/MOD — уникальный префикс.<br />
<br />
Примеры возможных префиксов:<br />
<span style="font-style: italic;">acm_ </span>- Advanced Classes Mod.<br />
<span style="font-style: italic;">pm_ </span>- Phoenix Mod.<br />
<span style="font-style: italic;">wog_ </span>- WoG<br />
<span style="font-style: italic;">thu </span>- Third Upgrades]]></description>
			<content:encoded><![CDATA[<span style="color: #0000CD;"><span style="font-weight: bold;">Вопрос: как преобразовать скрипт из ERM 1 в ERM 2?</span></span><br />
<span style="color: green;"><span style="font-weight: bold;">Ответ</span></span>: <span style="text-decoration: underline;">Заменить ZVSE на ZVSE2</span>. После чего убедиться, что именованные функции соответствуют указанному ниже стилю.<br />
<br />
<span style="font-style: italic;">OnSomeEvent</span>, <span style="font-style: italic;">DoSomeWork </span>— стиль оформления, зарезервированный за Эрой, её событиями и функциями.<br />
<br />
<span style="font-style: italic;">mod_OnSomeEvent</span>, <span style="font-style: italic;">MOD_OnSomeEvent</span>, <span style="font-style: italic;">mod_CountHeroes</span>, <span style="font-style: italic;">mod_TeleportStack </span>— так нужно именовать функции вашего мода или библиотеки. Здесь mod/MOD — уникальный префикс.<br />
<br />
Примеры возможных префиксов:<br />
<span style="font-style: italic;">acm_ </span>- Advanced Classes Mod.<br />
<span style="font-style: italic;">pm_ </span>- Phoenix Mod.<br />
<span style="font-style: italic;">wog_ </span>- WoG<br />
<span style="font-style: italic;">thu </span>- Third Upgrades]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Баги в оригинальных скриптах WoG]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5640</link>
			<pubDate>Tue, 16 Jun 2020 19:35:37 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5640</guid>
			<description><![CDATA[Привет всем, некоторое время назад я занялся скриптом, работа которого была связана с "Учеными", и обнаружил, что иногда что-то где-то не срастается... Игра не вылетала, но и не работала. Как оказалось, в одном из скриптов была допущена неточность, из-за которой, собственно, и возникала проблема.<div style="background-color: #fff"><script type="erm" id="erm0"> [Loop through Scholars and substitute a non-banned spell of the same level&#93;
 [to replace any banned spell, or if none available, a secondary skill intead&#93;
!?FU10806;

!!UN:U81/-1/-1/2; [Store coordinates of next Scholar in v2/v3/v4&#93;
!!SCv2/v3/v4:T?y1 L?y2; [Get type of Scholar (y1) and spell taught (y2), if any&#93;
!!VRy2:-1024; [Обратите внимание на эту строку&#93;
!!VRy3:S0; [Clear y3&#93;

!!UN&#x26;y1=2/y2=0:P152/?y3; [Check for banned Summon Boat    - y3=1 if banned&#93;
!!UN&#x26;y1=2/y2=7:P153/?y3; [Check for banned Water Walk     - y3=1 if banned&#93;
!!UN&#x26;y1=2/y2=9:P154/?y3; [Check for banned Town Portal    - y3=1 if banned&#93;
!!UN&#x26;y1=2/y2=8:P155/?y3; [Check for banned Dimension Door - y3=1 if banned&#93;
!!UN&#x26;y1=2/y2=6:P156/?y3; [Check for banned Fly            - y3=1 if banned&#93;
!!UN&#x26;y1=2/y2=1:P221/?y3; [Check for banned Scuttle Boat   - y3=1 if banned&#93;
!!UN&#x26;y1=2/y2=2:P222/?y3; [Check for banned Visions        - y3=1 if banned&#93;
!!UN&#x26;y1=2/y2=26:P223/?y3; [Check for banned Armageddon    - y3=1 if banned&#93;
!!UN&#x26;y1=2/y2=5:P246/?y3; [Check for banned View Air       - y3=1 if banned&#93;
!!UN&#x26;y1=2/y2=3:P247/?y3; [Check for banned View Earth     - y3=1 if banned&#93;

!!FU7779&#x26;y3=1:Py2; [Check level of banned spell: y-96&#93;
!!FU$spell$&#x26;y3=1:Py-96/y-96/0/0/1; [Generate new non-banned spell of same level: y-99&#93;
!!SCv2/v3/v4&#x26;y3=1/y-99>=0:T2 Ly-99; [Give Scholar new Spell unless all are banned (y-99)&#93;

 [If all spells of same level banned (y-99=-1), give a skill instead&#93;
!!VRy4&#x26;y3=1/y-99<0:S0 R27; [Random # from 1 to 27 for Secondary Skill replacement (y4)&#93;
!!SCv2/v3/v4&#x26;y3=1/y-99<0:T1 Sy4; [Give Scholar Secondary Skill (y4)&#93;</script></div>
Как мы можем здесь видеть, из номера заклинания, хранящегося у ученого, вычетается 1024, однако при установке нового значения 1024 не добавляется. Соответсвенно, все "обработанные" ученые будут впоследствии источником головной боли.<br />
<br />
Правльно будет сделать так:<br />
<div style="background-color: #fff"><script type="erm" id="erm1">!!FU7779&#x26;y3=1:Py2; [Check level of banned spell: y-96&#93;
!!FU$spell$&#x26;y3=1:Py-96/y-96/0/0/1; [Generate new non-banned spell of same level: y-99&#93;
!!VRy-99:+1024; [Решение проблемы&#93;
!!SCv2/v3/v4&#x26;y3=1/y-99>=0:T2 Ly-99; [Give Scholar new Spell unless all are banned (y-99)&#93;</script></div>
<br />
В общем, предлагаю собрать в этой теме все найденные ошибки и разобраться с ними раз и навсегда.]]></description>
			<content:encoded><![CDATA[Привет всем, некоторое время назад я занялся скриптом, работа которого была связана с "Учеными", и обнаружил, что иногда что-то где-то не срастается... Игра не вылетала, но и не работала. Как оказалось, в одном из скриптов была допущена неточность, из-за которой, собственно, и возникала проблема.<div style="background-color: #fff"><script type="erm" id="erm0"> [Loop through Scholars and substitute a non-banned spell of the same level]
 [to replace any banned spell, or if none available, a secondary skill intead]
!?FU10806;

!!UN:U81/-1/-1/2; [Store coordinates of next Scholar in v2/v3/v4]
!!SCv2/v3/v4:T?y1 L?y2; [Get type of Scholar (y1) and spell taught (y2), if any]
!!VRy2:-1024; [Обратите внимание на эту строку]
!!VRy3:S0; [Clear y3]

!!UN&y1=2/y2=0:P152/?y3; [Check for banned Summon Boat    - y3=1 if banned]
!!UN&y1=2/y2=7:P153/?y3; [Check for banned Water Walk     - y3=1 if banned]
!!UN&y1=2/y2=9:P154/?y3; [Check for banned Town Portal    - y3=1 if banned]
!!UN&y1=2/y2=8:P155/?y3; [Check for banned Dimension Door - y3=1 if banned]
!!UN&y1=2/y2=6:P156/?y3; [Check for banned Fly            - y3=1 if banned]
!!UN&y1=2/y2=1:P221/?y3; [Check for banned Scuttle Boat   - y3=1 if banned]
!!UN&y1=2/y2=2:P222/?y3; [Check for banned Visions        - y3=1 if banned]
!!UN&y1=2/y2=26:P223/?y3; [Check for banned Armageddon    - y3=1 if banned]
!!UN&y1=2/y2=5:P246/?y3; [Check for banned View Air       - y3=1 if banned]
!!UN&y1=2/y2=3:P247/?y3; [Check for banned View Earth     - y3=1 if banned]

!!FU7779&y3=1:Py2; [Check level of banned spell: y-96]
!!FU$spell$&y3=1:Py-96/y-96/0/0/1; [Generate new non-banned spell of same level: y-99]
!!SCv2/v3/v4&y3=1/y-99>=0:T2 Ly-99; [Give Scholar new Spell unless all are banned (y-99)]

 [If all spells of same level banned (y-99=-1), give a skill instead]
!!VRy4&y3=1/y-99<0:S0 R27; [Random # from 1 to 27 for Secondary Skill replacement (y4)]
!!SCv2/v3/v4&y3=1/y-99<0:T1 Sy4; [Give Scholar Secondary Skill (y4)]</script></div>
Как мы можем здесь видеть, из номера заклинания, хранящегося у ученого, вычетается 1024, однако при установке нового значения 1024 не добавляется. Соответсвенно, все "обработанные" ученые будут впоследствии источником головной боли.<br />
<br />
Правльно будет сделать так:<br />
<div style="background-color: #fff"><script type="erm" id="erm1">!!FU7779&y3=1:Py2; [Check level of banned spell: y-96]
!!FU$spell$&y3=1:Py-96/y-96/0/0/1; [Generate new non-banned spell of same level: y-99]
!!VRy-99:+1024; [Решение проблемы]
!!SCv2/v3/v4&y3=1/y-99>=0:T2 Ly-99; [Give Scholar new Spell unless all are banned (y-99)]</script></div>
<br />
В общем, предлагаю собрать в этой теме все найденные ошибки и разобраться с ними раз и навсегда.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Скрипт «Боевой Дух»]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5449</link>
			<pubDate>Mon, 03 Feb 2020 18:16:53 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5449</guid>
			<description><![CDATA[<span style="color: #FF0000;"><span style="font-size: medium;"><span style="font-weight: bold;">«Боевой Дух»</span></span></span><br />
<br />
Новвоведения:<br />
-) Новое событие !?FU(fm9_OnAfterBattleStackFinalAction).<br />
; x1 - номер отряда, который совершил действие, закончившее его ход (0..41)<br />
; x2 - номер отряда, который должен получить ход<br />
; x3 - ID действия<br />
<br />
В этом событии можно проверить, жив ли действовавший отряд, было ли действие атакой и вызвать функцию FireMorale.<br />
<br />
-) Новая функция FireMorale (x1 - номер отряда).<br />
Вызывает на отряд мораль (повторный ход), если отряд не должен и так ходить в настоящий момент (например, у него и без того сработала мораль).<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">!?FU(OnBeforeBattleUniversal);
!!SN:W^fm9_morale_stack_index^/-1 W^fm9_had_battle_action^/0;

!?FU(OnBeforeBattleAction);
!!BG:N?y1 A?y2;
!!SN:W^fm9_had_battle_action^/1 W^fm9_acting_stack^/y1 W^fm9_battle_action^/y2;

!?FU(OnBattleStackObtainsTurn);
; x1 - side
; x2 - stack ID relative to side
!!VRy2:Sx1 *21 +x2; y2 - current stack
!!SN:W^fm9_had_battle_action^/?h W^fm9_acting_stack^/?s W^fm9_battle_action^/?k;
!!FU(fm9_OnAfterBattleStackFinalAction)&#x26;h=1:Ps/y2/k;

!!SN:W^fm9_morale_stack_index^/?y1 W^fm9_morale_stack_index^/-1; y1 - stack to fire morale on
!!FU|y1=-1/y2=y1:E; exit if moraled stack is current stack or no moraled stack at all

; play animation and sound
!!SN:P^GoodMrle.wav^;
!!BMy1:V20;

; give turn to moraled stack
!!VRx1:Sy1 :21;
!!VRx2:Sy1 %21;

!?FU(FireMorale);
; Forces specified stack to take turn with morale animation and sound
; x1 - stack ID (0..41)
!!SN:W^fm9_morale_stack_index^/x1;

!?FU(fm9_OnAfterBattleStackFinalAction);
; x1 - acted stack ID (0..41)
; x2 - current stack ID
; x3 - action ID</script></div>
Пример: пусть любой отряд имеет 50% шанс пойти дважды!<br />
<div style="background-color: #fff"><script type="erm" id="erm1">!?FU(fm9_OnAfterBattleStackFinalAction);
; x1 - acted stack ID (0..41)
; x2 - current stack ID
; x3 - action ID
!!BMx1:N?n;
!!FU&#x26;n<=0:E; don't handle dead stacks
!!FU&#x26;x3<>2/x3<>6/x3<>7:E; only active stacks matter
!!VRy1:S1 R99;
!!FU(FireMorale)&#x26;y1<=50:Px1;</script></div>]]></description>
			<content:encoded><![CDATA[<span style="color: #FF0000;"><span style="font-size: medium;"><span style="font-weight: bold;">«Боевой Дух»</span></span></span><br />
<br />
Новвоведения:<br />
-) Новое событие !?FU(fm9_OnAfterBattleStackFinalAction).<br />
; x1 - номер отряда, который совершил действие, закончившее его ход (0..41)<br />
; x2 - номер отряда, который должен получить ход<br />
; x3 - ID действия<br />
<br />
В этом событии можно проверить, жив ли действовавший отряд, было ли действие атакой и вызвать функцию FireMorale.<br />
<br />
-) Новая функция FireMorale (x1 - номер отряда).<br />
Вызывает на отряд мораль (повторный ход), если отряд не должен и так ходить в настоящий момент (например, у него и без того сработала мораль).<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm0">!?FU(OnBeforeBattleUniversal);
!!SN:W^fm9_morale_stack_index^/-1 W^fm9_had_battle_action^/0;

!?FU(OnBeforeBattleAction);
!!BG:N?y1 A?y2;
!!SN:W^fm9_had_battle_action^/1 W^fm9_acting_stack^/y1 W^fm9_battle_action^/y2;

!?FU(OnBattleStackObtainsTurn);
; x1 - side
; x2 - stack ID relative to side
!!VRy2:Sx1 *21 +x2; y2 - current stack
!!SN:W^fm9_had_battle_action^/?h W^fm9_acting_stack^/?s W^fm9_battle_action^/?k;
!!FU(fm9_OnAfterBattleStackFinalAction)&h=1:Ps/y2/k;

!!SN:W^fm9_morale_stack_index^/?y1 W^fm9_morale_stack_index^/-1; y1 - stack to fire morale on
!!FU|y1=-1/y2=y1:E; exit if moraled stack is current stack or no moraled stack at all

; play animation and sound
!!SN:P^GoodMrle.wav^;
!!BMy1:V20;

; give turn to moraled stack
!!VRx1:Sy1 :21;
!!VRx2:Sy1 %21;

!?FU(FireMorale);
; Forces specified stack to take turn with morale animation and sound
; x1 - stack ID (0..41)
!!SN:W^fm9_morale_stack_index^/x1;

!?FU(fm9_OnAfterBattleStackFinalAction);
; x1 - acted stack ID (0..41)
; x2 - current stack ID
; x3 - action ID</script></div>
Пример: пусть любой отряд имеет 50% шанс пойти дважды!<br />
<div style="background-color: #fff"><script type="erm" id="erm1">!?FU(fm9_OnAfterBattleStackFinalAction);
; x1 - acted stack ID (0..41)
; x2 - current stack ID
; x3 - action ID
!!BMx1:N?n;
!!FU&n<=0:E; don't handle dead stacks
!!FU&x3<>2/x3<>6/x3<>7:E; only active stacks matter
!!VRy1:S1 R99;
!!FU(FireMorale)&y1<=50:Px1;</script></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Быстрая вогификация карты]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5349</link>
			<pubDate>Sat, 07 Sep 2019 17:58:29 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5349</guid>
			<description><![CDATA[Кому надоело долго ждать окончания вогификации больших карт, можете попробовать заменить стандартный скрипт 78 wog - wogify.erm на этот:<br />
<a href="https://yadi.sk/d/hKG3y9Xvn0u2XA" target="_blank">https://yadi.sk/d/hKG3y9Xvn0u2XA</a><br />
Карты будут вогифицироваться быстрее.<br />
Скрипт ничего не меняет в игре и не портит совместимость ни с чем.<br />
Но если сторонние моды подменяют скрипт вогификации (например ERA scripts Rus, WoG Revised, WoG Plus), то естественно оптимизация не сработает.<br />
<br />
Upd: Для пользователей сборки <span style="font-weight: bold;">daemon_n</span> неактуально, поскольку необходимые правки уже внесены в сборку.]]></description>
			<content:encoded><![CDATA[Кому надоело долго ждать окончания вогификации больших карт, можете попробовать заменить стандартный скрипт 78 wog - wogify.erm на этот:<br />
<a href="https://yadi.sk/d/hKG3y9Xvn0u2XA" target="_blank">https://yadi.sk/d/hKG3y9Xvn0u2XA</a><br />
Карты будут вогифицироваться быстрее.<br />
Скрипт ничего не меняет в игре и не портит совместимость ни с чем.<br />
Но если сторонние моды подменяют скрипт вогификации (например ERA scripts Rus, WoG Revised, WoG Plus), то естественно оптимизация не сработает.<br />
<br />
Upd: Для пользователей сборки <span style="font-weight: bold;">daemon_n</span> неактуально, поскольку необходимые правки уже внесены в сборку.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Конвертер скриптов в ERA-формат]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5432</link>
			<pubDate>Thu, 08 Aug 2019 17:02:47 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5432</guid>
			<description><![CDATA[<span style="color: red;"><span style="font-weight: bold;">Доступные сервисы:</span></span><br />
<br />
<a href="https://tools.hmm35.ru/scripts-extractor/" target="_blank">ERM Scripts Extractor</a><br />
Позволяет извлекать из h3m карт ЕРМ-скрипты в Эра формате, а скриптовые события в карте автоматически отключать.<br />
<br />
<a href="https://tools.hmm35.ru/erm-enhancer/" target="_blank">ERM Enhancer</a><br />
Переводит староформатные ЕРМ скрипты в формат Эры (именованные функции и метки, ограниченная автоправка !!MP:S команд). Поддерживает обработку множества скриптов за раз,а также переиспользование именованных функций из других скриптов.<br />
<br />
<blockquote><cite>Quote:</cite>Пример:<br />
<a href="http://s000.tinyupload.com/index.php?file_id=64802181807366025698" target="_blank">Обновлённый скрипт Атлантиды (600 КБ!)</a></blockquote>
]]></description>
			<content:encoded><![CDATA[<span style="color: red;"><span style="font-weight: bold;">Доступные сервисы:</span></span><br />
<br />
<a href="https://tools.hmm35.ru/scripts-extractor/" target="_blank">ERM Scripts Extractor</a><br />
Позволяет извлекать из h3m карт ЕРМ-скрипты в Эра формате, а скриптовые события в карте автоматически отключать.<br />
<br />
<a href="https://tools.hmm35.ru/erm-enhancer/" target="_blank">ERM Enhancer</a><br />
Переводит староформатные ЕРМ скрипты в формат Эры (именованные функции и метки, ограниченная автоправка !!MP:S команд). Поддерживает обработку множества скриптов за раз,а также переиспользование именованных функций из других скриптов.<br />
<br />
<blockquote><cite>Quote:</cite>Пример:<br />
<a href="http://s000.tinyupload.com/index.php?file_id=64802181807366025698" target="_blank">Обновлённый скрипт Атлантиды (600 КБ!)</a></blockquote>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Скрипты. Стол заказов]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5298</link>
			<pubDate>Thu, 16 May 2019 09:41:24 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5298</guid>
			<description><![CDATA[Предлагаю скидывать сюда предложения по скриптам с указанием вознаграждения за работу. Любой может выполнить заказ, выложить сюда и получить вознаграждение. Нубы в erm получают именно тот скрипт, который хотели, профи получают на пиво, считаю взаимовыгодные условия. Как идея?<br />
- Если беретесь за выполнение, пишите за какой именно скрипт взялись.<br />
- Если ктото заказывает очень тяжелый скрипт за 10р, можно указать на это и предложить поднять цену.<br />
- Если ктото заказывает скрипт выполняемый за пару минут и предлагает 5000р, тоже желательно указать, мы же не звери.<br />
Больше скриптов богу скриптов!]]></description>
			<content:encoded><![CDATA[Предлагаю скидывать сюда предложения по скриптам с указанием вознаграждения за работу. Любой может выполнить заказ, выложить сюда и получить вознаграждение. Нубы в erm получают именно тот скрипт, который хотели, профи получают на пиво, считаю взаимовыгодные условия. Как идея?<br />
- Если беретесь за выполнение, пишите за какой именно скрипт взялись.<br />
- Если ктото заказывает очень тяжелый скрипт за 10р, можно указать на это и предложить поднять цену.<br />
- Если ктото заказывает скрипт выполняемый за пару минут и предлагает 5000р, тоже желательно указать, мы же не звери.<br />
Больше скриптов богу скриптов!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[UN:C]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5118</link>
			<pubDate>Fri, 13 Jan 2017 11:30:28 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5118</guid>
			<description><![CDATA[Данная тема посвящена <span style="font-weight: bold;">UN:C</span> скриптам, которые дают возможность изменять в игре то, что не возможно сделать через "обычный" ERM. Тема также будет затрагивать и команду <span style="font-weight: bold;">SN:E</span>.<br />
<br />
Простые наборы UN:C-команд можно преобразовать в bin-патч онлайн, воспользовавшись <a href="https://tools.hmm35.ru/unc-to-bin/index.html" target="_blank">следующим сервисом</a><br />
<br />
<div class="notranslate"><div class="spoiler_header">Краткая инструкция  <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1&#93;.style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1&#93;.style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1&#93;.style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none; border: 1px dotted #0F5C8E;">Команда <span style="font-weight: bold;">UN:C#1/#2/&#36;3</span> позволяет прочитать/записать участок памяти, начиная с адреса #1, длиной #2 в/из переменную &#36;3. Первые 2 параметра самые важные. Неправильная запись в них почти всегда гарантированно вызовет вылет из игры.<br />
Разберем подробнее параметры:<br />
<span style="font-weight: bold;">#1</span> - это адрес участка памяти. Он может быть как статический, так и динамический. Тут всегда будут указаны статические адреса (эти адреса всегда одинаковы при запуске игры как на твоём, так и на моём компьютере). Если же нужно будет изменить что-то в динамическом адресе (это адреса, которые на твоём и на моём компьютере всегда разные), то тут будут указаны способы выхода на последние через статический адрес. По другому выйти на динамический адрес на разных компьютерах невозможно.<br />
<span style="font-weight: bold;">#2</span> - это размер третьего параметра или количество байт, которые нам необходимо изменить. Тут может быть 1, 2 или 4 байта. <br />
<span style="font-weight: bold;">&#36;3</span> - это непосредственно сам параметр, который мы и намереваемся изменить чтобы добиться какой то плюшки. Может иметь как положительное число, так и отрицательное.<br />
<br />
<span style="text-decoration: underline;">Пример использования:</span><br />
!!UN:C7783293/4/37;  командир Паладин (заклинание "лечение")<br />
В коде игры WoG по адресу 0x76C37D установлено заклинание №25h для командира Паладин. Данные адреса имеют шестнадцетиричную систему исчисления. Команда UN:C поддерживает только десятичную систему. Чтобы перевести эти числа в десятичную: включите обычный виндовский калькулятор, нажмите "Вид-&gt;Программист", поставьте галочку на "Hex", введите "76C37D", после этого нажмите "dec". В итоге результат будет представлен числом 7783293. Вот мы и научились переводить шестнадцетиричное число в десятичное.<br />
Итак: <br />
<span style="font-weight: bold;">7783293</span> - это адрес, в котором мы меняем интересующее нас значение/параметр;<br />
<span style="font-weight: bold;">4</span> - количество байт для изменения;<br />
<span style="font-weight: bold;">37</span> - то, что именно нам нужно поменить.<br />
Итак, !!UN:C7783293/4/48; позволит Паладину накладывать на дружественных существ молитву (48).<br />
<br />
Новички, и в особенности <span style="font-weight: bold;">Guest</span>, не забывайте!, что почти все указанные в теме константные ресиверы <span style="font-weight: bold;">UN:C</span> необходимо грузить в триггере !?FU(OnGameEnter);<br />
Например:<br />
<div style="background-color: #fff"><script type="erm" id="erm0">!?FU(OnGameEnter);
!!UN:C7783293/4/48; позволит Паладину накладывать на дружественных существ молитву (48).</script></div>
</div></div>
<div class="offtopic" >1) <a href="http://forum.df2.ru/index.php?showtopic=6813&amp;st=20" target="_blank"><span style="font-style: italic;">Тема UN:C на df2</span></a>;<br />
2) <a href="http://forum.df2.ru/index.php?showtopic=6803" target="_blank"><span style="font-style: italic;">Инженерный анализ на df2</span></a>;<br />
3) <a href="http://forum.df2.ru/index.php?showtopic=34685" target="_blank"><span style="font-style: italic;">Хуки на исполняемый код из ERA на df2</span></a>;<br />
4) <a href="http://wforum.heroes35.net/showthread.php?tid=4734&amp;page=1" target="_blank"><span style="font-style: italic;">Небольшой сборник готовых скриптов с UN:C/SN:E (eng)</span></a>;<br />
<br />
Убедительная просьба: <span style="color: red;"><span style="text-decoration: underline;">не засорять эту тему бессмысленными сообщениями</span></span>.</div>]]></description>
			<content:encoded><![CDATA[Данная тема посвящена <span style="font-weight: bold;">UN:C</span> скриптам, которые дают возможность изменять в игре то, что не возможно сделать через "обычный" ERM. Тема также будет затрагивать и команду <span style="font-weight: bold;">SN:E</span>.<br />
<br />
Простые наборы UN:C-команд можно преобразовать в bin-патч онлайн, воспользовавшись <a href="https://tools.hmm35.ru/unc-to-bin/index.html" target="_blank">следующим сервисом</a><br />
<br />
<div class="notranslate"><div class="spoiler_header">Краткая инструкция  <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none; border: 1px dotted #0F5C8E;">Команда <span style="font-weight: bold;">UN:C#1/#2/&#36;3</span> позволяет прочитать/записать участок памяти, начиная с адреса #1, длиной #2 в/из переменную &#36;3. Первые 2 параметра самые важные. Неправильная запись в них почти всегда гарантированно вызовет вылет из игры.<br />
Разберем подробнее параметры:<br />
<span style="font-weight: bold;">#1</span> - это адрес участка памяти. Он может быть как статический, так и динамический. Тут всегда будут указаны статические адреса (эти адреса всегда одинаковы при запуске игры как на твоём, так и на моём компьютере). Если же нужно будет изменить что-то в динамическом адресе (это адреса, которые на твоём и на моём компьютере всегда разные), то тут будут указаны способы выхода на последние через статический адрес. По другому выйти на динамический адрес на разных компьютерах невозможно.<br />
<span style="font-weight: bold;">#2</span> - это размер третьего параметра или количество байт, которые нам необходимо изменить. Тут может быть 1, 2 или 4 байта. <br />
<span style="font-weight: bold;">&#36;3</span> - это непосредственно сам параметр, который мы и намереваемся изменить чтобы добиться какой то плюшки. Может иметь как положительное число, так и отрицательное.<br />
<br />
<span style="text-decoration: underline;">Пример использования:</span><br />
!!UN:C7783293/4/37;  командир Паладин (заклинание "лечение")<br />
В коде игры WoG по адресу 0x76C37D установлено заклинание №25h для командира Паладин. Данные адреса имеют шестнадцетиричную систему исчисления. Команда UN:C поддерживает только десятичную систему. Чтобы перевести эти числа в десятичную: включите обычный виндовский калькулятор, нажмите "Вид-&gt;Программист", поставьте галочку на "Hex", введите "76C37D", после этого нажмите "dec". В итоге результат будет представлен числом 7783293. Вот мы и научились переводить шестнадцетиричное число в десятичное.<br />
Итак: <br />
<span style="font-weight: bold;">7783293</span> - это адрес, в котором мы меняем интересующее нас значение/параметр;<br />
<span style="font-weight: bold;">4</span> - количество байт для изменения;<br />
<span style="font-weight: bold;">37</span> - то, что именно нам нужно поменить.<br />
Итак, !!UN:C7783293/4/48; позволит Паладину накладывать на дружественных существ молитву (48).<br />
<br />
Новички, и в особенности <span style="font-weight: bold;">Guest</span>, не забывайте!, что почти все указанные в теме константные ресиверы <span style="font-weight: bold;">UN:C</span> необходимо грузить в триггере !?FU(OnGameEnter);<br />
Например:<br />
<div style="background-color: #fff"><script type="erm" id="erm0">!?FU(OnGameEnter);
!!UN:C7783293/4/48; позволит Паладину накладывать на дружественных существ молитву (48).</script></div>
</div></div>
<div class="offtopic" >1) <a href="http://forum.df2.ru/index.php?showtopic=6813&amp;st=20" target="_blank"><span style="font-style: italic;">Тема UN:C на df2</span></a>;<br />
2) <a href="http://forum.df2.ru/index.php?showtopic=6803" target="_blank"><span style="font-style: italic;">Инженерный анализ на df2</span></a>;<br />
3) <a href="http://forum.df2.ru/index.php?showtopic=34685" target="_blank"><span style="font-style: italic;">Хуки на исполняемый код из ERA на df2</span></a>;<br />
4) <a href="http://wforum.heroes35.net/showthread.php?tid=4734&amp;page=1" target="_blank"><span style="font-style: italic;">Небольшой сборник готовых скриптов с UN:C/SN:E (eng)</span></a>;<br />
<br />
Убедительная просьба: <span style="color: red;"><span style="text-decoration: underline;">не засорять эту тему бессмысленными сообщениями</span></span>.</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Логические/математические операции на ЕРМ]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=5787</link>
			<pubDate>Thu, 17 Sep 2015 19:34:56 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=5787</guid>
			<description><![CDATA[Кстати, подскажите что такое бит на программном уровне? <br />
Например:<br />
Можно ли ли y1=95, где я установил сам y1=1+2+4+8+16+32+64 проверить на бит &amp;32?<br />
Я установил, что в стеке 0 есть монстр который меня интересует, поэтому y1=1;<br />
во втором стеке тоже есть, поэтому y1=Sy1 +2; и т.д.<br />
Могу ли я как-то проверить слот №1 (0...6), через &amp;2, что во втором слоте есть монстр, который меня интересует?]]></description>
			<content:encoded><![CDATA[Кстати, подскажите что такое бит на программном уровне? <br />
Например:<br />
Можно ли ли y1=95, где я установил сам y1=1+2+4+8+16+32+64 проверить на бит &amp;32?<br />
Я установил, что в стеке 0 есть монстр который меня интересует, поэтому y1=1;<br />
во втором стеке тоже есть, поэтому y1=Sy1 +2; и т.д.<br />
Могу ли я как-то проверить слот №1 (0...6), через &amp;2, что во втором слоте есть монстр, который меня интересует?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Updating the erm help, please contribute]]></title>
			<link>http://wforum.heroes35.net/showthread.php?tid=4734</link>
			<pubDate>Sun, 03 May 2015 17:15:16 +0000</pubDate>
			<guid isPermaLink="false">http://wforum.heroes35.net/showthread.php?tid=4734</guid>
			<description><![CDATA[What I found so far, please add anything that could simplify scripters life and is not in erm help actually. <br />
<br />
<br />
;If OB:T = 34 (hero). #get object under hero / erm snippet<br />
<div style="background-color: #fff"><script type="erm" id="erm0">!!UN:C6919480/4/?y20;
!!VRy20:+136736;
!!VRy21:S[hero number&#93;*1170+y20;
 !!VRy22:Sy21+12;  y22 points to object type
 ;  +16;  y[NN&#93; would point to object subtype
 !!VRy23:Sy21+20;  y23 points to object control word (real OB:C)
!!UN:Cy23/4/?y24; get object type under hero...</script></div>
<br />
;Fix day of, all erm help is wrong about:<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm1">Day (1..n):               !!VRv1:Sc;
Day (0..n):               !!VRv1:Sc -1;
Day of the month (0..27): !!VRv1:Sc -1 %28;
Week of the month (0..3): !!VRv1:Sc -1 %28 :7; 
Week of the month (1..4): !!VRv1:Sc -1 %28 :7 +1; </script></div>
<br />
; redraw town screen<br />
<div style="background-color: #fff"><script type="erm" id="erm2">!!UN:C6919500/4/?y1; // TownManager
!!SN:E6117392/2/y1;  // RedrawTownScreen</script></div>
<br />
;change battlefield during battle<br />
<div style="background-color: #fff"><script type="erm" id="erm3">; one way: call WoG function
!!BA:B^file.pcx^;
!!SN:E7740298/1; call 0x761B8A (result is v1)
!!UN:C6919200/4/?y1; get [0x699420&#93;
!!VRy1:+78948; +0x13464
!!UN:Cy1/4/v1; // set result
; another way: allocate Era string
; make new temporary array of 1 string, set its 0th element to our string and get its address to y2
!!SN:M-1/1/1/0 Mv1/0/^file.pcx^ Mv1/?y2/0;
!!UN:C6919200/4/?y1; get [0x699420&#93;
!!VRy1:+78948; +0x13464
!!UN:Cy1/4/y2; // set string address</script></div>
<br />
;Mop function, find hero portrait for DL<br />
<div style="background-color: #fff"><script type="erm" id="erm4">!!FU48750:P[hero_mumber&#93;/1/2;
!!IF:M^Маленький потртет %Z1
Большой портрет %Z2^;
!?FU48750;
x1 - hero number
x2 - small portrait to z[number&#93;
x3 - large portrait to z[number&#93;
!!VRx1:*92+8144112;
!!UN:Cx1/4/?y1;
!!VRx1:+4;
!!UN:Cx1/4/?y2;
!!VRx2:*512+9597416;
!!VRx3:*512+9597416;
!!DO48751/1/512/1:Py1/x2 Py2/x3;
!?FU48751;
!!UN:Cx1/1/?y1 Cx2/1/y1;
!!VRx16&#x26;y1=0:S600;
!!VRx1:+1;
!!VRx2:+1;</script></div>
<br />
;safe functions equip/delete artifact<br />
<div style="background-color: #fff"><script type="erm" id="erm5">!?FU338354; equip art
; x1 - hero or - 1 for current
; x2 - art type
; x3 - art subtype or -1 (usually for non-scrolls)
; x4 - slot or -1
!!UN:C6919480/4/?y1;                    [y1 - BASE&#93;
!!VRy2:Sx1*1170+y1+136736;              [y2 - pointer to hero structure&#93;
!!VRy5:S3*4+10784128-4;                 [y5 - pointer to y3&#93;
!!VRy3:Sx2;                             [artifact type = 5&#93;
!!VRy4:Sx3;                             [set y4 to subtype&#93;
!!SN:E5123184/2/y2/y5/x4;

!?FU338357; unequip art
; x1 - hero or - 1 for current
; x2 - slot
!!HE-1&#x26;x1=-1:N?x1;
!!UN:C6919480/4/?y1; [y1 - BASE&#93;
!!VRy2:Sx1*1170+y1+136736; [y2 - pointer to hero structure&#93;
!!SN:E5123648/2/y2/x2;

!?FU338355; check if artifact can be put in slot possible replacing existing art
; x1 - hero or - 1 for current
; x2 - art
; x3 - slot
; return v1 = 1 (yes) or 0 (no)
!!UN:C6919480/4/?y1; [y1 - BASE&#93;
!!VRy2:Sx1*1170+y1+136736; [y2 - pointer to hero structure&#93;
!!SN:E5122736/2/y2/x2/x3;
!!VRv1:&#x26;1;

*******************************************************************************************

!?FU338354; extract hero arts
; x1 - hero
; v1 - SN:M array of art/id pairs
!!VRy1:S0;        [y1 - slot&#93;
!!VRy10:S0;       [y10 - array index&#93;
!!SN:M-1/28/0/0;  [allocate array 14 * 2 of temp integer&#93;
!!VRy2:Sv1;       [y2 - reslut&#93;
!!HEx1:A1/?y3/y1; [#4 y3 - art type&#93;
!!VRy4:S-1;       [y4 - art subtype&#93;
!!if&#x26;y3>=1001:;   [correct type/subtype for scrolls&#93;
  !!VRy4:Sy3-1001;
  !!VRy3:S1;
!!en:;
!!FU338357&#x26;y3<>-1:Px1/y1; [unequip art if any&#93;
!!SN:My2/y10/y3;  [save art info&#93;
!!VRy10:+1;
!!SN:My2/y10/y4;
!!VRy10:+1;
!!VRy1:+1;
!!VRy1&#x26;y1=13:S18;
!!SN&#x26;y1<=18:G4;
!!VRv1:Sy2;

!?FU338353; equip hero arts from SN:M array
; x1 - hero
; x2 - SN:M array
!!VRy1:S0;       [y1 - slot&#93;
!!VRy2:S0;       [y2 - array index&#93;
!!SN:Mx2/y2/?y3; [#2 y3, y4 - art type/subtype&#93;
!!VRy2:+1;
!!SN:Mx2/y2/?y4;
!!VRy2:+1;
!!FU338354:Px1/y3/y4/y1; [equip art&#93;
!!VRy1:+1;
!!VRy1&#x26;y1=13:S18;
!!SN&#x26;y1<=18:G2;</script></div>
<br />
;set scouting radius<br />
<div style="background-color: #fff"><script type="erm" id="erm6">!!UN:C6547928/4/$;  $=scouting radius, set to 0 to have next turn in fog. Backside: it affect all heroes so should be dependent of !?HL and default value is 5</script></div>
;65000 objects allowed (XXL maps)<br />
<div style="background-color: #fff"><script type="erm" id="erm7">!#UN:C4892718/1/183;</script></div>
;pitlords summon horned demons<br />
<div style="background-color: #fff"><script type="erm" id="erm8">!#UN:C5928811/1/49;</script></div>
<br />
<br />
;DL addition:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>A#1/#2/&#36;/1&nbsp;&nbsp;&nbsp;&nbsp;Change dialogue item characteristic.<br />
#1 - item ID<br />
<br />
#2&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;&nbsp;&nbsp;&nbsp;&#36;<br />
&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;Text&nbsp;&nbsp;&nbsp;&nbsp;(string): new text of the item<br />
&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;Def &nbsp;&nbsp;&nbsp;&nbsp;(number): new cadre in Def<br />
&nbsp;&nbsp;11&nbsp;&nbsp;&nbsp;&nbsp;Pcx &nbsp;&nbsp;&nbsp;&nbsp;(string): new picture<br />
<br />
 #4&nbsp;&nbsp;parameter should always be 1 (anyone care to explain why?)<br />
<br />
Notes:<br />
May be called in !?DL trigger and so may be used to customize the dialog on a fly.</code></div></div>
]]></description>
			<content:encoded><![CDATA[What I found so far, please add anything that could simplify scripters life and is not in erm help actually. <br />
<br />
<br />
;If OB:T = 34 (hero). #get object under hero / erm snippet<br />
<div style="background-color: #fff"><script type="erm" id="erm0">!!UN:C6919480/4/?y20;
!!VRy20:+136736;
!!VRy21:S[hero number]*1170+y20;
 !!VRy22:Sy21+12;  y22 points to object type
 ;  +16;  y[NN] would point to object subtype
 !!VRy23:Sy21+20;  y23 points to object control word (real OB:C)
!!UN:Cy23/4/?y24; get object type under hero...</script></div>
<br />
;Fix day of, all erm help is wrong about:<br />
<br />
<div style="background-color: #fff"><script type="erm" id="erm1">Day (1..n):               !!VRv1:Sc;
Day (0..n):               !!VRv1:Sc -1;
Day of the month (0..27): !!VRv1:Sc -1 %28;
Week of the month (0..3): !!VRv1:Sc -1 %28 :7; 
Week of the month (1..4): !!VRv1:Sc -1 %28 :7 +1; </script></div>
<br />
; redraw town screen<br />
<div style="background-color: #fff"><script type="erm" id="erm2">!!UN:C6919500/4/?y1; // TownManager
!!SN:E6117392/2/y1;  // RedrawTownScreen</script></div>
<br />
;change battlefield during battle<br />
<div style="background-color: #fff"><script type="erm" id="erm3">; one way: call WoG function
!!BA:B^file.pcx^;
!!SN:E7740298/1; call 0x761B8A (result is v1)
!!UN:C6919200/4/?y1; get [0x699420]
!!VRy1:+78948; +0x13464
!!UN:Cy1/4/v1; // set result
; another way: allocate Era string
; make new temporary array of 1 string, set its 0th element to our string and get its address to y2
!!SN:M-1/1/1/0 Mv1/0/^file.pcx^ Mv1/?y2/0;
!!UN:C6919200/4/?y1; get [0x699420]
!!VRy1:+78948; +0x13464
!!UN:Cy1/4/y2; // set string address</script></div>
<br />
;Mop function, find hero portrait for DL<br />
<div style="background-color: #fff"><script type="erm" id="erm4">!!FU48750:P[hero_mumber]/1/2;
!!IF:M^Маленький потртет %Z1
Большой портрет %Z2^;
!?FU48750;
x1 - hero number
x2 - small portrait to z[number]
x3 - large portrait to z[number]
!!VRx1:*92+8144112;
!!UN:Cx1/4/?y1;
!!VRx1:+4;
!!UN:Cx1/4/?y2;
!!VRx2:*512+9597416;
!!VRx3:*512+9597416;
!!DO48751/1/512/1:Py1/x2 Py2/x3;
!?FU48751;
!!UN:Cx1/1/?y1 Cx2/1/y1;
!!VRx16&y1=0:S600;
!!VRx1:+1;
!!VRx2:+1;</script></div>
<br />
;safe functions equip/delete artifact<br />
<div style="background-color: #fff"><script type="erm" id="erm5">!?FU338354; equip art
; x1 - hero or - 1 for current
; x2 - art type
; x3 - art subtype or -1 (usually for non-scrolls)
; x4 - slot or -1
!!UN:C6919480/4/?y1;                    [y1 - BASE]
!!VRy2:Sx1*1170+y1+136736;              [y2 - pointer to hero structure]
!!VRy5:S3*4+10784128-4;                 [y5 - pointer to y3]
!!VRy3:Sx2;                             [artifact type = 5]
!!VRy4:Sx3;                             [set y4 to subtype]
!!SN:E5123184/2/y2/y5/x4;

!?FU338357; unequip art
; x1 - hero or - 1 for current
; x2 - slot
!!HE-1&x1=-1:N?x1;
!!UN:C6919480/4/?y1; [y1 - BASE]
!!VRy2:Sx1*1170+y1+136736; [y2 - pointer to hero structure]
!!SN:E5123648/2/y2/x2;

!?FU338355; check if artifact can be put in slot possible replacing existing art
; x1 - hero or - 1 for current
; x2 - art
; x3 - slot
; return v1 = 1 (yes) or 0 (no)
!!UN:C6919480/4/?y1; [y1 - BASE]
!!VRy2:Sx1*1170+y1+136736; [y2 - pointer to hero structure]
!!SN:E5122736/2/y2/x2/x3;
!!VRv1:&1;

*******************************************************************************************

!?FU338354; extract hero arts
; x1 - hero
; v1 - SN:M array of art/id pairs
!!VRy1:S0;        [y1 - slot]
!!VRy10:S0;       [y10 - array index]
!!SN:M-1/28/0/0;  [allocate array 14 * 2 of temp integer]
!!VRy2:Sv1;       [y2 - reslut]
!!HEx1:A1/?y3/y1; [#4 y3 - art type]
!!VRy4:S-1;       [y4 - art subtype]
!!if&y3>=1001:;   [correct type/subtype for scrolls]
  !!VRy4:Sy3-1001;
  !!VRy3:S1;
!!en:;
!!FU338357&y3<>-1:Px1/y1; [unequip art if any]
!!SN:My2/y10/y3;  [save art info]
!!VRy10:+1;
!!SN:My2/y10/y4;
!!VRy10:+1;
!!VRy1:+1;
!!VRy1&y1=13:S18;
!!SN&y1<=18:G4;
!!VRv1:Sy2;

!?FU338353; equip hero arts from SN:M array
; x1 - hero
; x2 - SN:M array
!!VRy1:S0;       [y1 - slot]
!!VRy2:S0;       [y2 - array index]
!!SN:Mx2/y2/?y3; [#2 y3, y4 - art type/subtype]
!!VRy2:+1;
!!SN:Mx2/y2/?y4;
!!VRy2:+1;
!!FU338354:Px1/y3/y4/y1; [equip art]
!!VRy1:+1;
!!VRy1&y1=13:S18;
!!SN&y1<=18:G2;</script></div>
<br />
;set scouting radius<br />
<div style="background-color: #fff"><script type="erm" id="erm6">!!UN:C6547928/4/$;  $=scouting radius, set to 0 to have next turn in fog. Backside: it affect all heroes so should be dependent of !?HL and default value is 5</script></div>
;65000 objects allowed (XXL maps)<br />
<div style="background-color: #fff"><script type="erm" id="erm7">!#UN:C4892718/1/183;</script></div>
;pitlords summon horned demons<br />
<div style="background-color: #fff"><script type="erm" id="erm8">!#UN:C5928811/1/49;</script></div>
<br />
<br />
;DL addition:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>A#1/#2/&#36;/1&nbsp;&nbsp;&nbsp;&nbsp;Change dialogue item characteristic.<br />
#1 - item ID<br />
<br />
#2&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;&nbsp;&nbsp;&nbsp;&#36;<br />
&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;Text&nbsp;&nbsp;&nbsp;&nbsp;(string): new text of the item<br />
&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;Def &nbsp;&nbsp;&nbsp;&nbsp;(number): new cadre in Def<br />
&nbsp;&nbsp;11&nbsp;&nbsp;&nbsp;&nbsp;Pcx &nbsp;&nbsp;&nbsp;&nbsp;(string): new picture<br />
<br />
 #4&nbsp;&nbsp;parameter should always be 1 (anyone care to explain why?)<br />
<br />
Notes:<br />
May be called in !?DL trigger and so may be used to customize the dialog on a fly.</code></div></div>
]]></content:encoded>
		</item>
	</channel>
</rss>