Berserker
Posts: 16657
|
|
12.04.2021 23:31 |
|
Archer30
Posts: 1175
|
|
13.04.2021 00:07 |
|
Berserker
Posts: 16657
|
|
13.04.2021 00:39 |
|
daemon_n
Posts: 4343
|
|
13.04.2021 04:50 |
|
Algor
Posts: 3881
|
(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: 16657
|
Скажем так, в коде на разных языках программирования приходится много раз конвертировать числовое значение в булево. Мне на ЕРМ тоже приходилось. Далее это булево значение использовать в проверках. Смысл: есть хоть какие-то флаги установлены или «не пустое», «не 0» или «не ошибка».
На ЕРМ без оператора приведения типов это делается так:
И короче никак. Если разрешены отрицательные значения, то hasSomething писать нельзя, конечно же.
Установка булевой переменной в (TRUE), если флаг присутствует. Сами логические переменные упрощают написание и понимание кода. Без них смысл проверок необходимо комментировать. В хорошем коде не нужно комментировать каждую строку. Логическое значение можно передать функциям, ожидающих только TRUE/FALSE в качестве определённого аргумента.
=>
Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
|
|
15.04.2021 03:01 |
|
Algor
Posts: 3881
|
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: 16657
|
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: 16657
|
|
15.04.2021 18:04 |
|
Berserker
Posts: 16657
|
|
16.04.2021 05:42 |
|
Archer30
Posts: 1175
|
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: 16657
|
|
16.04.2021 17:39 |
|
Algor
Posts: 3881
|
(16.04.2021 05:42)Berserker Wrote: Algor, готово. Заодно стало возможным использовать любое число пробельных символов между аргументами и операторами.
хм, надо бы мне реже появляться и чаще нудеть
|
|
16.04.2021 22:37 |
|