Логические/математические операции на ЕРМ - Printable Version +- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net) +-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99) +--- Forum: Скрипты (/forumdisplay.php?fid=103) +--- Thread: Логические/математические операции на ЕРМ (/showthread.php?tid=5787) |
Логические/математические операции на ЕРМ - igrik - 18.09.2015 00:34 Кстати, подскажите что такое бит на программном уровне? Например: Можно ли ли y1=95, где я установил сам y1=1+2+4+8+16+32+64 проверить на бит &32? Я установил, что в стеке 0 есть монстр который меня интересует, поэтому y1=1; во втором стеке тоже есть, поэтому y1=Sy1 +2; и т.д. Могу ли я как-то проверить слот №1 (0...6), через &2, что во втором слоте есть монстр, который меня интересует? RE: Ваши вопросы по ERM-скриптам - gamecreator - 18.09.2015 01:24 (18.09.2015 00:34)igrik Wrote: Кстати, подскажите что такое бит на програмном уровне?Можно сказать, что это элементарное значение составного логического типа (пример - те же флаги существ). (18.09.2015 00:34)igrik Wrote: Можно ли ли y1=95, где я установил сам y1=1+2+4+8+16+32+64 проверить на бит &32?Можно, но 1+2+4+8+16+32+64=127, а 95=1+2+4+8+16+64. (18.09.2015 00:34)igrik Wrote: Я установил, что в стеке 0 есть монстр который меня интересует, поэтому y1=1;Получаешь y1&2 и если это не 0 (то есть это 2), то бит 1 установлен. Соответственно, для бита n проверять нужно уже y1&2n. Логические/математические операции на ЕРМ - igrik - 07.12.2015 01:56 Как правильно вычитать флаги монстров в бою? Нужно отобрать флаг двойного удара (32768) RE: Ваши вопросы по ERM-скриптам - Algor - 07.12.2015 01:59 |32768 -32768 RE: Ваши вопросы по ERM-скриптам - igrik - 07.12.2015 02:07 я правильно понял? дать отобрать RE: Ваши вопросы по ERM-скриптам - Bes - 07.12.2015 02:33 !!BMy5:F?i; !!VRi:&-32769; !!BMy5:Fi; не?! я за неимением практики мог ошибиться RE: Ваши вопросы по ERM-скриптам - gamecreator - 07.12.2015 05:15 (07.12.2015 02:07)igrik Wrote: отобратьЕсли ты уверен, что он есть. Но лучше делать как написал Algor или bugyboy. RE: Ваши вопросы по ERM-скриптам - igrik - 07.12.2015 16:49 Quote:не?! я за неимением практики мог ошибитьсяВот и я такой же, да и никогда с ними дела толком не имел. Сделал вот так. Хз. Присмотрюсь на счет багов RE: Ваши вопросы по ERM-скриптам - Algor - 07.12.2015 23:55 (07.12.2015 02:07)igrik Wrote: я правильно понял? Не совсем: дать отобрать RE: Ваши вопросы по ERM-скриптам - fatsawhorse - 10.12.2015 02:10 Здравствуйте... А скажите пожалуйста, а почему таким образом флаг нельзя отобрать? !!BMy5:F?i; !!VRi:-32768; !!BMy5:Fi; Я всегда считал, что если "+" даёт, то "-" тогда отнимает флаг Неужели обязательно ставить таким образом !!BMy5:F?i; !!VRi:|32768 -32768; !!BMy5:Fi; RE: Ваши вопросы по ERM-скриптам - gamecreator - 10.12.2015 02:37 (10.12.2015 02:10)fatsawhorse Wrote: А скажите пожалуйста, а почему таким образом флаг нельзя отобрать?Потому что это небезопасно. Как и + для установки флага. RE: Ваши вопросы по ERM-скриптам - igrik - 10.12.2015 03:32 Граждане математики, как получить квадратный корень от числа на ерм? RE: Ваши вопросы по ERM-скриптам - feanor - 10.12.2015 15:32 (10.12.2015 02:10)fatsawhorse Wrote: Здравствуйте... А скажите пожалуйста, а почему таким образом флаг нельзя отобрать?потому что если флага у существа не будет, то + и - превратят остальные флаги в кашу (10.12.2015 03:32)igrik Wrote: Граждане математики, как получить квадратный корень от числа на ерм?у меня есть три варианта, и все отвратительные один - реализация чего-то из вычмата, например, ряда Тейлора (или Маклорена), приду домой, посмотрю в справочнике второй - дллка, которая будет экспортить sqrt() третий - 0x5f3759df, но это если из флоата считать надо ну и, конечно, табличками RE: Ваши вопросы по ERM-скриптам - gamecreator - 10.12.2015 17:22 Мне уже однажды не хватало в ЕРМ интерфейса для мат. сопроцессора. Очень неудобно работать с функциями, возвращающими действительное значение. Кстати, третий, менее отвратительный вариант тоже есть: найти функцию корня в ехе и написать в память код для её вызова, который вызвать через SN:E. RE: Ваши вопросы по ERM-скриптам - feanor - 10.12.2015 19:10 Кстати да, оно ж там есть, вместе с приличной частью математической и строковой либы. По крайней мере, ида опознает sqrt, хоть и не скажу сейчас адрес. RE: Ваши вопросы по ERM-скриптам - igrik - 10.12.2015 19:42 млин, чеж я сразу то не догадался в иде глянуть Code: v115 = (long double)a3; Ток вот теперь назрел вопрос. Зам я значение вот так !!SN:E6390100/1/25; А как правильно то его получить. Можно же перевести во флоат (SN:Xe1 X?y1), а как перевести из флоат? Да и v1 правильно ли примет значение после !!SN:E6390100/1/25; RE: Ваши вопросы по ERM-скриптам - feanor - 10.12.2015 19:57 Меня вот интересует, почему я не догадался глянуть в иде (этак за два года!) на strtok, strstr и тому подобные нормальные строковые функции. Массаракш. Будет свободный вечор, надо будет перегнать их в SNE Quote:а как перевести из флоат?если я правильно помню, надо прибавить +4 к второму параметру SN:E и результат вернется в e1 RE: Ваши вопросы по ERM-скриптам - igrik - 10.12.2015 20:09 Quote:если я правильно помню, надо прибавить +4 к второму параметру SN:E и результат вернется в e1Это как? RE: Ваши вопросы по ERM-скриптам - gamecreator - 10.12.2015 21:26 (10.12.2015 19:57)feanor Wrote: если я правильно помню, надо прибавить +4 к второму параметру SN:E и результат вернется в e1Надо же, я и не знал про такое. Ну тогда и напрямую можно вызвать. RE: Ваши вопросы по ERM-скриптам - feanor - 11.12.2015 00:50 (10.12.2015 20:09)igrik Wrote:к тому, который calling conventionsQuote:если я правильно помню, надо прибавить +4 к второму параметру SN:E и результат вернется в e1Это как? не 0..3, а 4..7 но хз, я не гонял RE: Ваши вопросы по ERM-скриптам - gamecreator - 11.12.2015 01:41 Должно работать, я в исходниках глянул. RE: Ваши вопросы по ERM-скриптам - igrik - 20.01.2016 22:35 (20.01.2016 21:40)Barin Wrote: Например, я заменил деф "1-гексового Громовержца" на "моего 2-гексового бехолдера" и на этом всё, не могу изменять абилки этого монстра (№152). 1) не правильно работаешь с флагами. Хотя тут еще нужно видеть, в каком триггере ты используешь этот участок кода (такой код правильно сработает до битвы, но не в битве). Но все же верно устанавливать флаги так (тем более обнулять): RE: Ваши вопросы по ERM-скриптам - Bes - 21.01.2016 01:35 (20.01.2016 23:04)Barin Wrote: Неправильно или не компактно? Делаю по примеру из справочника. имхо, некорректно надо просто приучать себя делать как правильнее. а вдруг каким-то образом у того твоего монстра уже не будет этого флага полёта? (ты уверен что мод будет без прочих скриптов не твоих?) а ты ещё и отнимешь 2 бита... можно словить неуловимый баг будешь потом голову ломать откуда ноги растут... RE: Ваши вопросы по ERM-скриптам - gamecreator - 21.01.2016 02:34 RE: Ваши вопросы по ERM-скриптам - Barin - 21.01.2016 03:40 Спасибо за инфу, раньше не видел подобный пример. (20.01.2016 22:35)igrik Wrote: |2 (летать)значит установится если у монстра нету этого флага, а как отбирать флаг чтобы не летал? Не придумал куда минус поставить. RE: Ваши вопросы по ERM-скриптам - igrik - 21.01.2016 11:28 Вот так RE: Ваши вопросы по ERM-скриптам - Barin - 21.01.2016 16:07 (21.01.2016 11:28)igrik Wrote: Вот такПринял на вооружение, однако есть сомнения что это лучший вариант с точки зрения RPG карты, где не будет сторонних скриптов кроме моих: Вот что происходит: 1) Если методом по ERM-справочнику: 2-х гексовую Виверну заменил на новый 1-гексовый def "Зубастик" !!MA:X108/?v724; !!VRv724:-1; не широкий !!MA:X108/v724; !!VRv724:S0; Итог: зубастик 1-гексовый и летает, как мне и нужно. 2) Если методом |(или): !!VRy1:S0 |1 -1; !!MA:X108/y1; не широкий Итог: зубастик 1-гексовый но уже не летает, как мне и нужно. Почему полёт исчезает, видать что-то затирается. Приходится дописывать: !!VRy1:S0 |2; летает !!MA:X108/y1; Что же получается, в 1-м случае я получаю сразу то что хотел, не затрагивая другие флаги, а во 2-м случае мне приходится восстанавливать задетые флаги. Разве это безопасный путь? p.s чебрец полный: Spoiler (Click to View) RE: Ваши вопросы по ERM-скриптам - igrik - 21.01.2016 17:36 да ты чё!??? ты же спрашивал про обнуление. Я и написал тебе S0!!!! Конечно он не летает, конечно он не стреляет. А еще он не Кинг 1, а еще у него иммунитета к заклинаниям разума. Ты разберись с основами то сначала. Quote:Думал так можно сделать этого юнита чистым от всего и появится возможность его править.Твои же слова. Я и дал тебе то что ты просил. Или тогда правильней формулируй свои вопросы. То что в данном случае "!!VRy1:S0; полностью удаляет все флаги" - ты просто обязан понимать. Или тогда я даже не представляю что у тебя там в моде творится. Если тебе нужно просто убрать например полет, то так и спрашивай "мне нужно убрать полет". Это делается так: Если тебе нужно убрать полет(2) и стрелбу (4), то вот так делать НЕ надо! а надо так RE: Ваши вопросы по ERM-скриптам - gamecreator - 21.01.2016 19:17 (21.01.2016 17:36)igrik Wrote: Ты разберись с основами то сначала.Ты чего, у него же нет времени и желания разбираться. Надо кампанию доделывать. (21.01.2016 17:36)igrik Wrote: Если тебе нужно убрать полет(2) и стрелбу (4), то вот так делать НЕ надо!Почему это? С небольшой поправкой "где 6=2|4". RE: Ваши вопросы по ERM-скриптам - Algor - 21.01.2016 23:34 (21.01.2016 19:17)gamecreator Wrote:(21.01.2016 17:36)igrik Wrote: Если тебе нужно убрать полет(2) и стрелбу (4), то вот так делать НЕ надо!Почему это? С небольшой поправкой "где 6=2|4". НЕ НАДО так делать даже с поправкой. И пусть с математической точки зрения все верно, это плохой стиль. 6=2|4 довольно просто, а вот 884736 (мертвый, бьющий дважды всех вокруг без ответа) - ни фига не очевидно. RE: Ваши вопросы по ERM-скриптам - gamecreator - 21.01.2016 23:44 Можно в комментарии написать расшифровку. В таком варианте снятия флагов приходится по два раза всё повторять, команда может выйти довольно длинной. RE: Ваши вопросы по ERM-скриптам - Berserker - 22.01.2016 16:25 Игрик, супер! Я до такого сам как-то не дошёл ))) RE: Ваши вопросы по ERM-скриптам - igrik - 22.01.2016 16:58 Поправочка: -> Algor. RE: Ваши вопросы по ERM-скриптам - gamecreator - 22.01.2016 17:23 Да это старо как ERM. Я ещё до существования этого форума на DF2 это видел. RE: Ваши вопросы по ERM-скриптам - Berserker - 22.01.2016 17:58 Как-то массово видно не было, всё *-1 -1 использовалось. RE: Ваши вопросы по ERM-скриптам - Bes - 22.01.2016 22:19 сделал RE: Ваши вопросы по ERM-скриптам - ElfbI - 24.08.2019 03:44 Есть вопрос, у меня проверка флагов горыныча возвращает отрицательное значение (-2147385189), даже если перед проверкой флаги выставить вручную. Никто не сталкивался? С другими флагами и существами при обработке через подобный код никаких проблем. Может кто-нибудь проверить? RE: Ваши вопросы по ERM-скриптам - Berserker - 24.08.2019 13:15 ElfbI, 32-битное целое число со знаком может кодировать значения -2147483648..2147483647, что соответствует 0..4294967295 для беззнакового. Старший (31-й бит, начиная отсчёт с нуля) дополнительно отвечает за знак в знаковом. Любой флаг можно сконвертировать в число если возвести 2 в степень номера флага. Флаг 0 = 2^0 = 1 Флаг 3 = 2^3 = 8 Флаг 31 = 2^31 = -2147483648 (число становится отрицательным, поскольку это ещё и бит, отвечающий за знак) https://yadi.sk/i/64cIfyXshYtWaA В твоём случае флаги: флаг 31 (-2147483648) + флаг 16 (65536) + флаг 15 (32768) + флаг 7 (128) + флаг 4 (16) + флаг 3 (8) + флаг 1 (2) + флаг 0 (1) RE: Неформальное общение - Bes - 01.04.2020 03:12 пока писал пост с советами, понял что забыл как писать множественные условия, стал писать FU|...|...:P; забыл как флаги стэкам снимать корректно: -17 или &-17 даж забыл как флаг на истину выставлять: написал поначалу !!IF:V555; практика - она такая, мелочи без неё теряются в раз RE: Неформальное общение - Berserker - 01.04.2020 03:33 FU&.../.../... & - И | - ИЛИ Снимать как -(N + 1), то есть -18 в твоём случае RE: Неформальное общение - Algor - 01.04.2020 11:13 (01.04.2020 03:33)Berserker Wrote: Снимать как -(N + 1), то есть -18 в твоём случае Не надо так делать. Это потенциальное место шибок. |17; - дать флаг 17 |17 -17; - убрать флаг 17 RE: Неформальное общение - Bes - 01.04.2020 15:05 Так, не ссорьтесь ) я вообще-то именно про 16 флаг говорил, его ж надо забрать так? Или |16 -17 RE: Неформальное общение - Algor - 01.04.2020 16:25 |16 -16 RE: Неформальное общение - Berserker - 01.04.2020 17:23 Выше речь шла про флаг 16, тьфу ты, Бес, попутал ) Algor, &-17 всегда сработает корректно. Но не напрягать мозг можно и так, вполне себе вариант. В Эре 3.0 RE: Ваши вопросы по ERM-скриптам - Archer30 - 13.12.2020 18:15 Hi! Is there a way to calculate square root in ERA 2.9.14? RE: Ваши вопросы по ERM-скриптам - Berserker - 13.12.2020 18:27 Archer30, https://dropmefiles.com/neUkr math.era plugin !!SN:A, L. E to execute ^sqrt^ function with STDCALL convention, accepting e-variable and returning result in e1. RE: Ваши вопросы по ERM-скриптам - Archer30 - 13.12.2020 18:31 Thanks a lot, Berserker! RE: Ваши вопросы по ERM-скриптам - Archer30 - 13.12.2020 20:31 Berserker, I'm having trouble dealing with this math.era, could you help, please? I keep getting e1 = 0.00 RE: Ваши вопросы по ERM-скриптам - Berserker - 13.12.2020 21:17 RE: Ваши вопросы по ERM-скриптам - Archer30 - 13.12.2020 21:40 Thanks, Berserker. Didn't know there is SN:E#1/5 too... RE: Ваши вопросы по ERM-скриптам - Berserker - 13.12.2020 21:57 Main issue is that you pass integer x1, not floating point number e. They have different binary representation. RE: Ваши вопросы по ERM-скриптам - Sashka40 - 28.01.2022 05:15 Добрый день, не очень понятно как сделать в MA из двухклеточного одноклеточного монстра (как наоборот ясно, через хлаги, а тут как-то минусовать надо) RE: Ваши вопросы по ERM-скриптам - igrik - 28.01.2022 06:20 (28.01.2022 05:15)Sashka40 Wrote: Добрый день, не очень понятно как сделать в MA из двухклеточного одноклеточного монстра (как наоборот ясно, через хлаги, а тут как-то минусовать надо)Bes, добавь этот пример в справку. Вопрос по отключеню определённого флага довольно частый (и желательно не использовать i-переменную) RE: Ваши вопросы по ERM-скриптам - Sashka40 - 28.01.2022 06:44 igrik, Спасибо вам! RE: Логические/математические операции на ЕРМ - SergOz - 10.07.2023 09:56 Где-то видел, а сейчас не могу найти... Хотя, такому самое место в этой теме. В общем, мне нужно, на ERM, возводить число в степень n. На ум приходят только какие-то длинннннющие коды. Может, кто знает как это сделать красиво? RE: Логические/математические операции на ЕРМ - Archer30 - 10.07.2023 10:29 SergOz, There is Pow from Era Erm Framework To use: RE: Логические/математические операции на ЕРМ - SergOz - 10.07.2023 12:41 Archer30, спасибо А как ты понял слово "длинннннющие"? это типа "lonnnnnng"? RE: Логические/математические операции на ЕРМ - Berserker - 10.07.2023 23:20 Тот же яндекс переводит как «long». Прогресс. |