Current time: 23.03.2024, 05:40 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Ваши вопросы по ERM-скриптам
Author Message
Igor Offline

Posts: 140
Post: #5431

!!BM:F эта команда заменяет флаг или добавляет новый к уже имеющимся? Если флагов несколько они суммируются? Просто если мертвому стеку дать флаг полета, он останется мертвым. Но при проверке на defending, у всех монстров флаг одинаковый...
29.08.2019 12:17
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2265
Post: #5432

(29.08.2019 12:17)Igor Wrote:  !!BM:F эта команда заменяет флаг или добавляет новый к уже имеющимся? Если флагов несколько они суммируются?

Команда читает и записывает все 32 флага, как новые так и старые. Естественно, при добавлении флага его нужно суммировать с имеющимися.

(29.08.2019 12:17)Igor Wrote:  Просто если мертвому стеку дать флаг полета, он останется мертвым.

Почему мёртвый стек должен вдруг ожить при появлении у него флага полёта? 148
29.08.2019 14:04
Find all posts by this user Quote this message in a reply
Igor Offline

Posts: 140
Post: #5433

XEPOMAHT, то есть !!BM:F записывает и проверяет каждый флаг отдельно, а не сумму флагов. То есть если у монстра флаг 2, и флаг 4, то при проверке я получу не общий флаг 6, а отдельно 2 и 4? А как снять флаг с монстра? Просто !!BM:Fdy1, где у1 это отрицательное значение флага?
29.08.2019 14:44
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2265
Post: #5434

(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
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2807
Post: #5435

(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
Visit this user's website Find all posts by this user Quote this message in a reply
Igor Offline

Posts: 140
Post: #5436

igrik, XEPOMAHT, спасибо, разобрался.
29.08.2019 21:03
Find all posts by this user Quote this message in a reply
ElfbI Offline

Posts: 325
Post: #5437

Скажите, а можно комп-р как-то заставить брать костры с мифрилом? Или я где-то использую старую версию скрипта?


The dreams you kill will break your heart
29.08.2019 21:15
Find all posts by this user Quote this message in a reply
slater777 Offline

Posts: 136
Post: #5438

Можно ли присвоить мельницам статус "посещено" с помощью erm?
29.08.2019 22:46
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4333
Post: #5439

(29.08.2019 22:46)slater777 Wrote:  Можно ли присвоить мельницам статус "посещено" с помощью erm?

есть скрипт для навыка - "Волшебство II". Он позволяет удаленно посещать некоторые объекты удаленно. Может, там есть нужные инструкции.


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
29.08.2019 23:14
Visit this user's website Find all posts by this user Quote this message in a reply
ElfbI Offline

Posts: 325
Post: #5440

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
Find all posts by this user Quote this message in a reply
Igor Offline

Posts: 140
Post: #5441

Блин, нет, не разобрался. Вот написал скрипт, при передаче хода отряду устанавливается флаг "мертв", в начале раунда отряд сбрасывает флаг, получает ход, ходит по полю, но не может атаковать, и число монстров не указано. То есть он ни жив ни мертв. А как сделать чтобы он становился полноценным членом общества и выполнял долг перед родиной?
30.08.2019 01:24
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2265
Post: #5442

(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
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2807
Post: #5443

(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
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2807
Post: #5444

(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
Visit this user's website Find all posts by this user Quote this message in a reply
Igor Offline

Posts: 140
Post: #5445

igrik, эмуляция невидимости, суть в том, чтобы после действия отряд считался мертвым и комп его игнорировал, а при получении хода отряд бы снова оживал и ходил как обычно. И по факту отряд в начале раунда получает ход (для этого прибавил ему скорость) и ходит по полю, но атаковать не может, иконка меняется на меч, отряд подходит в плотную, но урона и анимации нет.
30.08.2019 13:39
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group