Current time: 11.04.2025, 22:43 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 325
Post: #5386

Berserker, нет еще, я пока на эре v2.7.7

Времени нет пока, да и тот скрипт я отладить не успел еще. Работа(


The dreams you kill will break your heart
20.08.2019 00:01
Find all posts by this user Quote this message in a reply
ElfbI Offline

Posts: 325
Post: #5387

Berserker, вот кстати скрипт для генерации сокровищ на воде, который в итоге вышел (осторожно, здесь были индусы 96-copy )
   Осталось настроить, сколько сокровищ будет появляться и артефакты в сундуке / у мужика на бревне, может, убавить.
   Возможно, пригодится кому мой г****код, я пока баги ловил, достаточно подробно комментарии писал. Вроде работает, как часы. Проверял: если нет воды, если клетки воды заняты, если на все клетки сокровища поставлены, если вода в подземелье, если на воде герой. Надо бы с ним поиграть, но когда смогу еще...


The dreams you kill will break your heart
(This post was last modified: 20.08.2019 01:05 by ElfbI.)
20.08.2019 01:02
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #5388

ElfbI, хорошо задокументировано и оформлено. Писать на ЕРМ просто и лаконично в любом случае невозможно, не хватает высокоуровневых конструкций.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
20.08.2019 02:38
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #5389

Чтобы не потерять:
Код на определение расстояния между двумя гексами на ERM (© Berserker)
  1. !?FU(GetShootDistance);
  2. ; x1 - id начального гекса
  3. ; x2 - id целевого гекса
  4. ; x3 - результат функции: возвращает расстояние, или -1 при неверных или недопустимых параметрах
  5. !!VRx3|x2<0/x2>186:S-1; !!FU|x2<0/x2>186:E;
  6. !!VRy2:Sx2 %17;
  7. !!VRx3|y2=0/y2=16:S-1; !!FU|y2=0/y2=16:E;
  8. !!VRy1:Sx1 %17 *2; !!VRy3:Sx1 :17;
  9. !!VRy2:Sx2 %17 *2; !!VRy4:Sx2 :17;
  10. !!VRy7:Sy3 %2; !!VRy1&y7=1:-1;
  11. !!VRy8:Sy4 %2; !!VRy2&y8=1:-1;
  12. !!VRy6:Sy4 -y3; !!VRy6&y6<0:*-1;
  13. !!VRy5:Sy2 -y1; !!VRy5&y5<0:*-1;
  14. !!VRy5:-y6; !!VRy5&y5<0:S0;
  15. !!VRx3:Sy6 *2 +y5 :2;
  16. ; *** end

UPD: а вот геройская функция 0x469250 int __fastcall BattleMgr_GetStepsTaken(gex_start, gex_finish) ((return distance))
  1. !!SN:E4624976/3/<gex_start>/<gex_finish>;


game bug fixes extended.dll || My Plugins || My GitHub
21.08.2019 21:06
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #5390

igrik, не вижу особенного смысла запрещать позиции за гранью поля боя %17 = 0 или 16. Они вполне корректные для больших существ и никак не влияют на математику.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
21.08.2019 23:09
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #5391

Berserker, эти поля же недопустимы для существ. Двухгексовые монстры также на них не становятся. Я не вижу смысла в них для данной функции.


game bug fixes extended.dll || My Plugins || My GitHub
22.08.2019 09:50
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #5392

igrik, а баллиста на них не залазит? Может ли до них достать площадное заклинание?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.08.2019 13:48
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #5393

Площадное заклинание до этих полей не достаёт.
Баллиста и палатка вторым (задним) гексом на них стоит. Но на этих гексах даже информацию о них посмотреть нельзя. Повода же стоит на нормальном (рабочем) гексе.
К тому же, я не раз в коде встречал, что эти гексы не используются в проверках на рабочий гекс.
Вот например выдрежка из кода функции получения кадра дефа на поле боя при движении мыши.

Image: image.jpg


game bug fixes extended.dll || My Plugins || My GitHub
22.08.2019 16:33
Visit this user's website Find all posts by this user Quote this message in a reply
Igor Offline

Posts: 140
Post: #5394

Berserker, igrik, спасибо.
22.08.2019 22:27
Find all posts by this user Quote this message in a reply
slater777 Offline

Posts: 136
Post: #5395

Возникла идея написать скрипт, при котором все хранилища дракономух заменялись бы камнями опыта. Сам скрипт замены найден и работает. Но проблема в том, что герой, посещая данный новый камень, посещает и все остальные. Т.е. у всех новых камней номер одинаковый. По крайней мере, по другому я это объяснить не могу. Не подскажете, через какую команду можно все м таким объектам присвоить новые номера?
22.08.2019 22:34
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #5396

!!OB:C?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.08.2019 23:28
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 815
Post: #5397

В ERM-справке написано:
!!ST#1/#2/#3:XXXX; - камень знаний в X Y L.
N$ - Номер камня знаний
(This post was last modified: 22.08.2019 23:48 by wessonsm.)
22.08.2019 23:41
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2418
Post: #5398

(22.08.2019 22:34)slater777 Wrote:  Не подскажете, через какую команду можно все м таким объектам присвоить новые номера?

В MapItem.контрольное_слово хранится этот номер.

Т.е. скрипт примерно такой (без проверок на безопасность):

UN:IX/Y/Z/100/0/1; - поставить Камень Знаний в координатах XYZ.
UN:U100/0/?y1; - получить количество камней
OBX/Y/Z:Cy1; - последний номер пускай и будет номером камня (вроде б можно, т.к. и там и там двойное слово, можно ещё применить и dec y1, чтобы не было пропуска в порядке номеров камней)
23.08.2019 16:00
Find all posts by this user Quote this message in a reply
slater777 Offline

Posts: 136
Post: #5399

XEPOMAHT, спасибо, дописал в скрипте вогификации к функции непосредственной замены объекта вот такие строки:
  1. ** Setup for Experience Stones **
  2. !!UN:U100/0/?y20; [y20 - количество камней опыта на карте]
  3. !!UN:U100/1/?y21; [y21 - количество заснежных камней опыта на карте]
  4. !!VRy22:S0 +y20 +y21 +1;
  5. !!OBy3/y4/v954&vv955=100/vv956=0:Cy22; [установление номера генерируемого камня]
Сработало, только образовался разрыв в номерах. Создал карту с 3 заснежными камнями, 3 обычными, и 2 камня сгенерировалось.
В итоге:
0,1,2 - номера обычных камней
3,4,5 - номера заснежных камней
И 8,9 - номера сгенерируемых.
Если подскажете способ отобрать из выборки максимальное число, буду благодарен!
23.08.2019 22:22
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #5400

Макс = -1
Для каждого из объектов
    Если контрольное слово > Макс, то Макс = контрольное слово

По окончании цикла получишь Макс.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
23.08.2019 22:58
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-2025 MyBB Group