| Berserker   
   
   Posts: 16786
 
 |  | 
	| 30.01.2020 23:12 |  | 
	
		| Sandris   
   Posts: 427
 
 | 
			| 
 
				Заменил в Оплоте Кентавров Феями. 
Подскажите, как также правильно прописать замену Кентавров на Маленьких фей и Фей в генераторе-двеллинге Конюшни Кентавров на карте.
 
Code:
 !!VRy9:S1 T19; get time-based random # 1-20!!DO6100/1/y9/1:P1; randomize start of random sequence--JHV
 
 !!UN:P133/?y9; // check for rule "Some dwellings have upgr. creatures"
 
 !!VRy2:S6; // Конюшни Кентавров
 !!VRy3:S59; !!VRy4:S0;  // Маленькие феи / Феи
 !!VRv900:C0/0/0/0/0/0/0/0/0/0/0/0;
 !!VRy7:S118; !!VRy8:S119;
 !!UN:U17/y2/?y1;
 !!DO6106/1/y1/1:P0/y2/y3/y4/y3/y4/y7/y8/y9;
P.S. Попробовал просто приписать Фей к двеллингу, но не хватает знаний установить 7-дневный интервал их появления в жилище.
 
Code:
 !?OB17/6&1000; Конюшни кентавров!!OB998:T?y1 U?y2;
 !!FU|y1<>17/y2<>6:E;
 !!DW998:M0/118/20; Маленькие Феи заселяются в Конюшни кентавров с приростом 20
				
(This post was last modified: 05.02.2020 19:23 by Sandris.)
 |  | 
	| 05.02.2020 16:44 |  | 
	
		| Ethereal   
   Posts: 371
 
 | 
			| 
 
				asandris, с Тифоном  это делается намного проще. Там же, в "DwTable.txt" можно и Фей к любому жилищу добавить.
 
Кстати у меня была такая же идея, но я от неё отказался. Феи достойны большего, чем конюшни и без перерисовки строений замков тут не обойтись. Что же касается внешних жилищ, то можно просто поменять def-ы.
			 
				
(This post was last modified: 12.02.2020 12:25 by Ethereal.)
 |  | 
	| 12.02.2020 12:19 |  | 
	
		| Zur13   
   Posts: 223
 
 | 
			| 
 
				Может кто знает у меня в ЕРА самой новой похоже сломан сетевой код. Ситуация такая, сетевая игра, синий против красного, один из героев, надевает артефакт 170 из рюкзака руками без скриптов (проверял и вариант когда он подбирает артефакт на карте, и он сразу надевается в слот), после чего герой с надетым артефактом вступает в битву с героем второго игрока, но в битве идет рассинхрон, на одном компе артефакт надет на первом герое, а на втором компе не надет: 
Code:
 !?BG0&1000;!!UN:P895/?v1;         [Check for WoG option]
 !!FU&v1<>1:E;          [Exit if Option 895 is OFF]
 
 !!BG:A?y-1;                       [y-1 action]
 !!BG:H?y-2;                       [y-2 hero]
 !!BG:N?y-3;                       [y-3 acting stack number]
 !!BG:E?y-4;                       [y-4 target stack number (-1 if no dest stack)]
 !!BG:D?y-5;                       [y-5 destination position]
 !!BG:S?y-6;                       [y-6 Number of a Spell to Cast ]
 
 !!FU&v6357>=0:E;                  [Exit if invalid reduce request (self recursion call?)]
 
 !!VRv6357:S-1;                    [v6357 request to reduce magic damage]
 !!VRv6356:S-1;                    [v6356 caster spell]
 !!VRv6355:S-1;                    [v6355 caster hero side]
 
 !!IF:M^Action: %Y-1 Spell: %Y-6 Hero: %Y-2^;
 
 !!FU&y-1<>1:E;                    [Exit if not a Hero cast a spell action]
 !!FU&y-2<0:E;                     [Exit invalid hero]
 
 !!FU&y-6<10:E;                           [Exit if invalid spell]
 !!FU&y-6<>23/y-6<>16/y-6<>21/y-6<>15:E;  [Exit if invalid spell]
 
 *!FU&y-4<0:E;                     [Exit if no target stack]
 *!FU&y-5<0:E;                     [Exit if invalid target position]
 
 !!VRy-7:S0;                       [y-7 = 0]
 !!HEy-2&y-2>=0:A2/170/?y-8/?y-7;  [y-7 number of equipped #170 hero]
 !!IF:M^Action: %Y-1 Spell: %Y-6 Hero: %Y-2 ArtEquiped: %Y-7^;
 
В результате на компе 1 выводит ArtEquiped: 1 а на втором ArtEquiped: 0, остальные три переменные в выводе одинаковы.
			
				
(This post was last modified: 22.02.2020 13:29 by Zur13.)
 |  | 
	| 22.02.2020 13:09 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 22.02.2020 16:02 |  | 
	
		| Zur13   
   Posts: 223
 
 | 
			| 
 
				 (22.02.2020 16:02)Berserker Wrote:  Zur13, в ближайшем же обновлении я отключу временно изменение генератора случайных чисел. Очень важен будет твой отчёт, исправился баг или нет. Если нужно срочнее, скомпилирую код 2.9.10 без генератора и загружу быстрее. 
Да я смогу проверить, у меня сейчас ЕРА 2.9.10 английская с HD модом 5.0 РС64 модами ВоГ и Вог скрипты и моим на комбо артефакты. Хотя я не совсем понимаю как связан генератор случайных чисел с работой ресивера 
 
!!HEy-2:A2/170/?y-8/?y-7;  [y-7 number of equipped #170 hero]
 
Проверял также на артефакте №128 на всякий случай, тоже самое второй ПК не знает о том что герой на первом ПК надел артефакт. Это не ситуация когда скрипт заменил артефакт на карте случайным образом на другой, это моя тестовая карта в которой артефакт прямо в редакторе положен в рюкзак герою.
 
Нашел еще один кусок кода который не работает в новой версии ЕРА: 
Похоже что в новой версии ЕРА сломался вот этот код, y1 всегда 1, в 2.8.8 работало:
 
Code:
 ** x1 == hero id  0..155** x2 == ?RESULT (this much free slots is in hero backpack)
 !?FU23041;
 !!FU&v9217<>1:E; [Exit if WoG option is not ON]
 
 !!VRy1:S0;
 !!DO23042/19/82/1:Px1/=y1/?y1;     [y1 free slots counter in x1 hero backpack]
 
 
 ** x1 == hero id  0..155
 ** x2 == this much free slots counted on previous steps
 ** x3 == this much free slots counted on previous steps + this step
 ** x16 == backpack slot 19..82
 !?FU23042;
 !!FU&v9217<>1:E; [Exit if WoG option is not ON]
 
 !!VRx3:Sx2;
 
 !!HEx1:A1/?y1/x16;      [y1 Check what artifact is in x16 slot]
 
 !!VRx3&y1<0:Sx2+1;      [change result counter x3]
 
				
(This post was last modified: 22.02.2020 18:47 by Zur13.)
 |  | 
	| 22.02.2020 16:42 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				Quote:Да я смогу проверить, у меня сейчас ЕРА 2.9.10 английская с HD модом 5.0 РС64 модами ВоГ и Вог скрипты и моим на комбо артефакты. Хотя я не совсем понимаю как связан генератор случайных чисел с работой ресивера  
Рассинхронизация может быть в другом коде, где используется VR:R. Будут разные последовательности на разных сторонах = разные события, артефакты, замены на карте.
 
Да, !!DO циклы оптимизированы до схожих с циклом FOR на других ЯП, подобные проверки работать не будут в !!DO/!!FU:P/!!FU:D.
			 
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |  | 
	| 22.02.2020 23:07 |  | 
	
		| Zur13   
   Posts: 223
 
 | 
			| 
 
				Тут наткнулся на непонятную ситуацию, и единственный имеющий смысл вариант наблюдаемого поведения, это то что иногда при вызове функций, не указанные явно параметры функций не обнуляются 
Code:
 !!FU21020:P1/2;
 !?FU21020;
 * х1 == 1
 * х2 == 2
 * но в некоторых случаях х3 <> 0
 
Я сейчас не смог найти в справочнике этого, но вроде раньше где-то встречал упоминание о том что пропущенные аргументы автоматически обнуляются, там даже был пример вроде такого !!FUxxx:P1/2//4; с указанием что аргумент 3 будет считаться 0. Что-то изменилось или это относится только к явно пропущенным аргументам между "//" ?
			 |  | 
	| 24.02.2020 15:29 |  | 
	
		| igrik   
   Posts: 2821
 
 | 
			| 
 
				Начиная с версий 2.8.4 и выше (если не ошибаюсь) обнуление x переменых в функциях убрано.Теперь это нужно делать вручную. Да и правильнее ручное (явное) обнуление, с моей точки зрения.
 
 Справочник начинает устаревать, но его обновление уже готовится.
 
 game bug fixes extended.dll  ||  My Plugins  ||  My GitHub
 |  | 
	| 24.02.2020 15:47 |  | 
	
		| Zur13   
   Posts: 223
 
 | 
			| 
 
				 (24.02.2020 18:20)Berserker Wrote:  Zur13, сейчас сделано как в компилируемых языках. Только переданные параметры перезаписываются. Полагаться на значения по умолчанию нельзя много где (в Go разве что сделали инициализацию нулями по умолчанию). Рекомендую писать код и для y-переменных и для x-переменных, не рассчитывающий на что-либо конкретно. Добавится оптимизация какая, расчёт перестанет быть верным. 
Да я уже понял, я просто на всякий случай уточнил, я в одном месте лажанул и забыл передать нулевой аргумент, и в функции проверки на максимальное значение этого аргумента не было, получался очень длинный цикл иногда, но у меня в тестах этого не вылезало. В большинстве других ЯП есть проверки на количество аргументов при вызове функций, обнуление помогает хотя бы сделать вызовы функций с меньшим количество аргументов детерминированными и избежать неопределенного и случайного поведения, не знаю с чем было связано такое решение, но мне кажется что тут вы поспешили с избавлением от обнуления явно не передаваемых аргументов    |  | 
	| 24.02.2020 22:11 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				Zur13,  Quote:В большинстве других ЯП есть проверки на количество аргументов при вызове функций 
Обижаешь    
Version 2.9.7 
------------------------ 
[+] Added possibility to query function arguments count for functions, called via FU:P, FU:D, DO:P.       New command !!FU:A?$ returns number of x-arguments (not including x16 for DO:P), received by function.       This mechanism allows to write functions with optional parameters (parameters with default values) and       functions with variadic arguments number.
 
А циклы уже вместо !!SN:G можно писать на !!re. Смотри Help\Era\era ii changelog.txt
 
; Clear current hero army
 
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |  | 
	| 24.02.2020 22:22 |  | 
	
		| Zur13   
   Posts: 223
 
 | 
			| 
 
				 (24.02.2020 22:22)Berserker Wrote:  Zur13, Quote:В большинстве других ЯП есть проверки на количество аргументов при вызове функцийОбижаешь  
 Version 2.9.7
 ------------------------
 [+] Added possibility to query function arguments count for functions, called via FU:P, FU:D, DO:P.
 New command !!FU:A?$ returns number of x-arguments (not including x16 for DO:P), received by function.
 This mechanism allows to write functions with optional parameters (parameters with default values) and
 functions with variadic arguments number.
 
 А циклы уже вместо !!SN:G можно писать на !!re. Смотри Help\Era\era ii changelog.txt
 
 ; Clear current hero army
 
 
Спасибо, это реально полезно. Возможно стоит помещать актуальные примеры кода не в ченжлог, а просто в отдельные текстовые файлы чтобы оно было хотя бы сгруппировано по темам как в справочнике, вроде examples_fu.txt examples_do.txt examples_general.txt вроде это не так много работы как обновление html справочника и сравнимо с обновлением ченжлога? 
 
И еще вопрос, а область видимости имен меток какая, внутри одного триггера, файла или вообще везде?
			 |  | 
	| 24.02.2020 23:44 |  |