Igor
Posts: 140
|
!!BM:F эта команда заменяет флаг или добавляет новый к уже имеющимся? Если флагов несколько они суммируются? Просто если мертвому стеку дать флаг полета, он останется мертвым. Но при проверке на defending, у всех монстров флаг одинаковый...
|
|
29.08.2019 12:17 |
|
Igor
Posts: 140
|
XEPOMAHT, то есть !!BM:F записывает и проверяет каждый флаг отдельно, а не сумму флагов. То есть если у монстра флаг 2, и флаг 4, то при проверке я получу не общий флаг 6, а отдельно 2 и 4? А как снять флаг с монстра? Просто !!BM:Fdy1, где у1 это отрицательное значение флага?
|
|
29.08.2019 14:44 |
|
XEPOMAHT
Posts: 2356
|
(29.08.2019 14:44)Igor Wrote: То есть если у монстра флаг 2, и флаг 4, то при проверке я получу не общий флаг 6, а отдельно 2 и 4?
Ты получишь флаг 2 + флаг 4, никаких общих флагов в игре нет.
(29.08.2019 14:44)Igor Wrote: А как снять флаг с монстра? Просто !!BM:Fdy1, где у1 это отрицательное значение флага?
Как-то примерно так (написано по памяти):
Code:
!!BM:F?y1; читать флаг
!!VRy1:&8; есть ли дыхание дракона
!!if&y1<>0:;
!!VRy1:-8; если флаг есть, то вычесть его
!!BM:Fy1; и записать полученный флаг
!!en:;
|
|
29.08.2019 15:10 |
|
igrik
Posts: 2819
|
(29.08.2019 14:44)Igor Wrote: XEPOMAHT, то есть !!BM:F записывает и проверяет каждый флаг отдельно, а не сумму флагов. То есть если у монстра флаг 2, и флаг 4, то при проверке я получу не общий флаг 6, а отдельно 2 и 4? А как снять флаг с монстра? Просто !!BM:Fdy1, где у1 это отрицательное значение флага?
Igor, в данном конкретном случае флаги монстров нужны, чтобы хранить в одном 4-х байтовом числе хранить информацию о 32 разных значениях, которые могут быть либо ВКЛ (1), либо ОТКЛ (0). Это нужно для экономии памяти и удобства и быстрой работы при получении или установке такого типа данных.
О битовых операциях
Если у монстра есть флаг 2 и флаг 4, то суммарный их флаг будет 6. Но нужно уметь понимать и разделять эти флаги на отдельные составляющие. Смысл каждого флага в 2^n.
Минимальный флаг (для данного случая) 2^0 = 1
Максимальный флаг (для данного случая) 2^31 = 2147483648
Например точно так же реализованы флаги заклинаний SS:F, потому что это быстро, компактно и удобно.
game bug fixes extended.dll || My Plugins || My GitHub
|
|
29.08.2019 17:48 |
|
Igor
Posts: 140
|
igrik, XEPOMAHT, спасибо, разобрался.
|
|
29.08.2019 21:03 |
|
ElfbI
Posts: 325
|
Скажите, а можно комп-р как-то заставить брать костры с мифрилом? Или я где-то использую старую версию скрипта?
The dreams you kill will break your heart
|
|
29.08.2019 21:15 |
|
slater777
Posts: 136
|
Можно ли присвоить мельницам статус "посещено" с помощью erm?
|
|
29.08.2019 22:46 |
|
ElfbI
Posts: 325
|
slater777, я использовал команду
Должно работать, если нужно обнулить ее ресурсы. Не помню, устанавливается ли информация по правому клику при этом, но скорее всего нет. Тогда нужно будет посмотреть в справке раздел "Ресейвер HT (текст подсказки)", там есть несколько вариантов установки описаний.
The dreams you kill will break your heart
(This post was last modified: 29.08.2019 23:42 by ElfbI.)
|
|
29.08.2019 23:28 |
|
Igor
Posts: 140
|
Блин, нет, не разобрался. Вот написал скрипт, при передаче хода отряду устанавливается флаг "мертв", в начале раунда отряд сбрасывает флаг, получает ход, ходит по полю, но не может атаковать, и число монстров не указано. То есть он ни жив ни мертв. А как сделать чтобы он становился полноценным членом общества и выполнял долг перед родиной?
|
|
30.08.2019 01:24 |
|
XEPOMAHT
Posts: 2356
|
(30.08.2019 01:24)Igor Wrote: при передаче хода отряду устанавливается флаг "мертв", в начале раунда отряд сбрасывает флаг, получает ход, ходит по полю, но не может атаковать, и число монстров не указано.
Правильно. Установкой этого флага монстр только маркируется как мёртвый для некоторых проверок в игре. И изменять его просто так, не зная что он означает, не следует.
(30.08.2019 01:24)Igor Wrote: То есть он ни жив ни мертв. А как сделать чтобы он становился полноценным членом общества и выполнял долг перед родиной?
На WERD убийство монстра в бою выглядит довольно просто:
Code:
mov dword [Структура_стека.Текущее_количество], 0
mov dword [Структура_стека.Текущее_количество_до_атаки], 1
mov byte [Структура_стека.Флаг_если_хоть_раз_монстра_били], 1
mov byte [Структура_стека.Флаг_если_умирал_хоть_один], 1
mov byte [Структура_стека.Флаг_если_был_убит_весь_стек], 1
На ERM это тоже можно реализовать через "неправильный" ресивер BM:G (более подробной читай хелп по ERM).
|
|
30.08.2019 11:36 |
|
igrik
Posts: 2819
|
(29.08.2019 23:28)ElfbI Wrote: Не помню, устанавливается ли информация по правому клику при этом, но скорее всего нет.
Нет, не устанавливается. Используй этот скрипт для установки
(30.08.2019 01:24)Igor Wrote: Блин, нет, не разобрался. Вот написал скрипт, при передаче хода отряду устанавливается флаг "мертв", в начале раунда отряд сбрасывает флаг, получает ход, ходит по полю, но не может атаковать, и число монстров не указано. То есть он ни жив ни мертв. А как сделать чтобы он становился полноценным членом общества и выполнял долг перед родиной?
Не совсем ясно что ты хочешь сделать. Опиши точнее как именно должен вести себя настраиваемый стек.
Но просто убить стек можно так:
game bug fixes extended.dll || My Plugins || My GitHub
|
|
30.08.2019 11:43 |
|
igrik
Posts: 2819
|
(30.08.2019 11:36)XEPOMAHT Wrote: На WERD убийство монстра в бою выглядит довольно просто:
Code:
mov dword [Структура_стека.Текущее_количество], 0
mov dword [Структура_стека.Текущее_количество_до_атаки], 1
mov byte [Структура_стека.Флаг_если_хоть_раз_монстра_били], 1
mov byte [Структура_стека.Флаг_если_умирал_хоть_один], 1
mov byte [Структура_стека.Флаг_если_был_убит_весь_стек], 1
Тут есть несколько нюансов:
1. Необходимо еще сбросить все активные спеллы со стека
2. Правильно отвязать гипноз, если он был наложен.
3. Необходимо отвязать и убить клонов, если они были применены к этому стеку
4. Если стек является боевой машиной, то необходимо забрать соответсвующий арт у героя (если герой есть)
5. Если стек был широкий (флаг =1) нужно очистить данные о стеке во втором гексе.
Вроде всё. В игре всем этим занимается лишь одна функция 0x443E40
game bug fixes extended.dll || My Plugins || My GitHub
|
|
30.08.2019 13:32 |
|
Igor
Posts: 140
|
igrik, эмуляция невидимости, суть в том, чтобы после действия отряд считался мертвым и комп его игнорировал, а при получении хода отряд бы снова оживал и ходил как обычно. И по факту отряд в начале раунда получает ход (для этого прибавил ему скорость) и ходит по полю, но атаковать не может, иконка меняется на меч, отряд подходит в плотную, но урона и анимации нет.
|
|
30.08.2019 13:39 |
|