| Berserker   
   
   Posts: 16786
 
 |  | 
	| 12.04.2021 23:31 |  | 
	
		| Archer30   
   
   Posts: 1192
 
 |  | 
	| 13.04.2021 00:07 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 13.04.2021 00:39 |  | 
	
		| daemon_n   
   
   Posts: 4366
 
 |  | 
	| 13.04.2021 04:50 |  | 
	
		| Algor   
   
   Posts: 3883
 
 | 
			| 
 
				 (13.04.2021 05:04)Berserker Wrote:  [+] Добавлена новая команда ERM VR:B. Она преобразует любое число в логическое значение (1 или 0). Любое ненулевое значение становится 1.
 Пример:
 
 
 
Эм, Берс, а можно какой-нить другой пример, оправдывающий существование VR:B? 
А то (hasGold)=(TRUE) вместо (goldAmount)>0 звучит неубедительно. И к тому же еще и возможные отрицательные значения золота не учитывает.
			 
 
 |  | 
	| 14.04.2021 22:43 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				Скажем так, в коде на разных языках программирования приходится много раз конвертировать числовое значение в булево. Мне на ЕРМ тоже приходилось. Далее это булево значение использовать в проверках. Смысл: есть хоть какие-то флаги установлены или «не пустое», «не 0» или «не ошибка». 
На ЕРМ без оператора приведения типов это делается так:
 
И короче никак. Если разрешены отрицательные значения, то hasSomething писать нельзя,  конечно же.
 
Установка булевой переменной в (TRUE), если флаг присутствует. Сами логические переменные упрощают написание и понимание кода. Без них смысл проверок необходимо комментировать. В хорошем коде не нужно комментировать каждую строку. Логическое значение можно передать функциям, ожидающих только TRUE/FALSE в качестве определённого аргумента.
 
=>
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |  | 
	| 15.04.2021 03:01 |  | 
	
		| Algor   
   
   Posts: 3883
 
 | 
			| 
 
				Berserker, я, наверняка, занудствую, но это все равно попахивает натягиванием известной птицы на глобус.Имхо,
 !!VR(undeadPresent:y):S(monFlags) &(MON_FLAG_UNDEAD) B;
 от
 !!VR(undeadPresent:y):S(monFlags) &(MON_FLAG_UNDEAD);
 ничем принципиально не отличается.
 Один хрен, результат складывается в int-переменную, которая и далее обрабатывается также как int. И читабильности кода это ни убавляет, ни добавляет - константы TRUE и FALSE можно интерпретировать и как 1/0 и как !0/0 - без типа BOOLEAN всё это только привычки/установки в голове кодера. А при попытке загнать результат во флаг, понадобится доп. строка кода.
 
 Лучше бы запилил как во многих языках (и как для флагов в ERM) условия без знаков сравнения, т.е.
 
 !!IF&(undeadPresent):M^Кажется, тут кто-то не совсем живой...^;
 вместо
 !!IF&(undeadPresent)=(TRUE):M^Кажется, тут кто-то не совсем живой...^;
 или
 !!IF&(undeadPresent)>0:M^Кажется, тут кто-то не совсем живой...^;
 
 Хотя это всё тоже сахар, количество которого в последнее время в ERM+Framework и так стремится к (JOPA_SLIPNETSA).
 
 
 |  | 
	| 15.04.2021 14:05 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				Algor, условия без сравнения уже есть. Трактуются как проверка f-флага. Кривая штука.
 
Не выведет ничего. Условие в ветке OR вообще не проверяется. 
Но за идею ещё раз спасибо, посмотрю.
 
Не соглашусь. Если не привести значение к boolean, то везде, где ожидается boolean, и проверка не вида <>(FALSE), а =(TRUE), всплывут баги. 
Более того, я ещё и boolean как 1 в математических выражениях использую. Зная, что это 0/1. Умножаю или вычитаю. Не должно логическое значение хранить 31733 ни в ЕРМ, ни в любом другом ЯП.
 
C++, PHP (bool) 
Javascript Boolean(value) 
Pascal: boolean(value) 
ERM 2: VR:B
			 
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |  | 
	| 15.04.2021 17:57 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 15.04.2021 18:04 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 16.04.2021 05:42 |  | 
	
		| Archer30   
   
   Posts: 1192
 
 | 
			| 
 
				Hi Berserker , is there an OnAfterBattleReplay event, or is it only from ERA changelog?
 Quote:[*] Fixed non-working "OnBeforeBattleReplay" and "OnAfterBattleReplay events". Newest "BattleReplay" plugin by igrik is required. 
If it's not valid, then the auto-complete of sublime needs to be updated.   
 Latest ERA mods and scripts in development -  My GitHub
 
				
(This post was last modified: 16.04.2021 17:28 by Archer30.)
 |  | 
	| 16.04.2021 17:24 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 16.04.2021 17:39 |  | 
	
		| Algor   
   
   Posts: 3883
 
 | 
			| 
 
				 (16.04.2021 05:42)Berserker Wrote:  Algor, готово. Заодно стало возможным использовать любое число пробельных символов между аргументами и операторами.  хм, надо бы мне реже появляться  и чаще нудеть 
 
 |  | 
	| 16.04.2021 22:37 |  |