Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 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: 16788 
	
		
	 | 
	
		
 | 
	| 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: 16788 
	
		
	 | 
	
		
			
			 
			
				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: 16788 
	
		
	 | 
	
		
			
			 
			
				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 | 
	
		
	 |