Current time: 08.04.2020, 01:21 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 139
Post: #5746

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

Posts: 449
Post: #5747

(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 Away
Administrators

Posts: 2031
Post: #5748

(29.08.2019 23:28)ElfbI Wrote:  Не помню, устанавливается ли информация по правому клику при этом, но скорее всего нет.
Нет, не устанавливается. Используй этот скрипт для установки



(30.08.2019 01:24)Igor Wrote:  Блин, нет, не разобрался. Вот написал скрипт, при передаче хода отряду устанавливается флаг "мертв", в начале раунда отряд сбрасывает флаг, получает ход, ходит по полю, но не может атаковать, и число монстров не указано. То есть он ни жив ни мертв. А как сделать чтобы он становился полноценным членом общества и выполнял долг перед родиной?
Не совсем ясно что ты хочешь сделать. Опиши точнее как именно должен вести себя настраиваемый стек.

Но просто убить стек можно так:


Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
30.08.2019 11:43
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Away
Administrators

Posts: 2031
Post: #5749

(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


Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
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: 139
Post: #5750

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

Posts: 139
Post: #5751

При передаче хода отряд считается мертвым и комп его действмтельно игнорит. Или невидимость можно по другому эмулировать и я не в ту сторону думаю?
30.08.2019 13:44
Find all posts by this user Quote this message in a reply
ElfbI Offline

Posts: 127
Post: #5752

(29.08.2019 21:15)ElfbI Wrote:  Скажите, а можно комп-р как-то заставить брать костры с мифрилом? Или я где-то использую старую версию скрипта?


The dreams you kill will break your heart
30.08.2019 14:10
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline

Posts: 449
Post: #5753

(30.08.2019 13:32)igrik Wrote:  В игре всем этим занимается лишь одна функция 0x443E40

Кто ж кроме тебя знал-то?

1. Функция не используется ни в WoG, ни в MoP, как её использовать - не известно.
2. В общедоступной IDA базе она обозвана как combatMonster_00443E40 - считай, что там её тоже нет (к себе в базу добавил - спасибо за информацию 118 ).
3. В базе Берсеркера - A0_Battle_Stack_Die (только эту базу фиг где достанешь).

(30.08.2019 13:44)Igor Wrote:  Или невидимость можно по другому эмулировать и я не в ту сторону думаю?

Если нужна визуальная невидимость - устанавливай байт Структура_стека.Видимость на 4 (в ERM - так же через "неправильный" ресивер BM:G), получится что-то типа замороженного телепорта дьявола (до момента, пока стек не ударят).

Чтобы живой стек нельзя было бить - такое вроде возможно только дикими костылями - в самой игре ничего подобного нет.
30.08.2019 14:51
Find all posts by this user Quote this message in a reply
slater777 Offline

Posts: 65
Post: #5754

(29.08.2019 23:28)ElfbI Wrote:  slater777, я использовал команду



Должно работать, если нужно обнулить ее ресурсы. Не помню, устанавливается ли информация по правому клику при этом, но скорее всего нет. Тогда нужно будет посмотреть в справке раздел "Ресейвер HT (текст подсказки)", там есть несколько вариантов установки описаний.

Спасибо, это работает. Решил немножко подрихтовать скрипт на захват мельниц и мистических садов, чтобы на 1ый день недели все захваченные строения уже были в статусе "посещено". И всё бы ничего, только скрипт базируется на ресиверах OB:S и OB:R, первый из которых предотвращает наделение объекта статусом "посещено". Видимо, придётся переписать скрипт.

UPD. igrik, спасибо, протестируем-с.
(This post was last modified: 30.08.2019 16:50 by slater777.)
30.08.2019 16:48
Find all posts by this user Quote this message in a reply
ElfbI Offline

Posts: 127
Post: #5755

slater777, я тоже использую другой скрипт для захвата мельниц вместо встроенного. Моя версия передает ресурсы только на седьмой день, чтобы была возможность перехвата другим игроком. Кроме того, я подумываю исключить мифрил из передаваемых ресурсов, иначе его становится слишком жирно.


The dreams you kill will break your heart
30.08.2019 19:30
Find all posts by this user Quote this message in a reply
slater777 Offline

Posts: 65
Post: #5756

ElfbI, то же самое по поводу мифрила. Просто отключаю скрипт на появление мифрила в мельницах и садках
30.08.2019 19:38
Find all posts by this user Quote this message in a reply
slater777 Offline

Posts: 65
Post: #5757

igrik, а для мистических садов ваш скрипт действует? Протестил: сработало на водяное колесо и ветряную мельницу, а вот на лепрекона нет - висит "не посещено". Насколько я понимаю, у данного объекта нет ресивера на зануление ресурсов, может быть, в этом дело?
(This post was last modified: 30.08.2019 23:10 by slater777.)
30.08.2019 23:08
Find all posts by this user Quote this message in a reply
ElfbI Offline

Posts: 127
Post: #5758

slater777, ресурсы замечательно зануляются этой командой. А вот как работает у igrik'а, я хз)




The dreams you kill will break your heart
(This post was last modified: 30.08.2019 23:21 by ElfbI.)
30.08.2019 23:19
Find all posts by this user Quote this message in a reply
slater777 Offline

Posts: 65
Post: #5759

ElfbI, у меня с мифрильными кострами то же самое.

Потестил ещё раз лепреконов. Заработало, но почему-то со второй попытки. Т.е. захватываешь его, на 2ую неделю выдаёт статус "не посещено", посещаешь снова, на 3ю неделю - "посещено". Мистика. С мельницами всё с первого раза работает.
30.08.2019 23:41
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 12094
Post: #5760

ElfbI, ИИ обычно посещает объекты, оценивая их по типу и подтипу. Чтобы заставить его посещать объект без внедрения в алгоритм итоговой оценки, нужно дать объекту существующий тип или подтип. !!UN:I позволяет создать объект, выглядящий как другой. Создаёшь кучку кристаллов в виде костра с мифрилом, через !!PO или другой механизм помечаешь её как кучку мифрила. А при посещении стандартную реакцию отменить, объект удалить, выдать нужное кол-во ресурсов.


Скачать Герои 3 Эра и всё, что с ней связано
Поддержать проект
31.08.2019 12:26
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-2020 MyBB Group