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

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

Posts: 804
Post: #3286

gamecreator, спасибо, работает, всё удаляет. Команды 3 нет в справке, вот и думаю, много ли ещё чего полезного не указано. Не поверите, я из-за этого замочка целый день сидел парился. 30 А теперь 2 варианта.
02.04.2015 02:37
Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #3287

(01.04.2015 01:03)Berserker Wrote:  Вот функция ещё от Дьяка, что работает кроме редких случаев ИИ:
Работает, спасибо!


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
02.04.2015 03:06
Visit this user's website Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #3288

  1. !?FU1; правильно удаляет проклятье
  2. ; x1 = номер проклятья
  3. ; x2 = номер героя
  4. !!VRy1:S0; индекс
  5. !!UN:C7688945/4/?y2; получить поле проклятья (обычно 0x27FE810)
  6. !!UN:C7688968/4/?y3; получить поле героя (обычно 0x27FE814)
  7. !!UN:C7688927/4/?y4; получить максимальное количество проклятий
  8. !!FU&y1>=y4:E; проклятья закончились, ничего не найдено -> выход; начало цикла
  9. !!UN:Cy2/4/?y5; получить номер текущего проклятья
  10. !!UN:Cy3/4/?y6; получить номер текущего героя
  11. !!if&x1=y5/x2=y6:; нашли нужное проклятье
  12. !!SN:E7689874/1/x2/x1/y1; cdecl 0x755692(int hero, int curse, int index)
  13. !!HEx2&v1=0:Yx1/0/0/0; если функция сработала, то удалить информацию
  14. !!FU:E; конец функции
  15. !!el:; перейти к следующему проклятью
  16. !!VRy1:+1;
  17. !!VRy2:+20; 0x14 - размер структуры
  18. !!VRy3:+20; 0x14 - размер структуры
  19. !!SN:G4; перейти на начало цикла
  20. !!en:;
Вот функция, которая правильно и немедленно удаляет проклятья.
И ещё, если проклятье замка уже висит на герое, то перед тем как вешать новое нужно сначала удалить старое, т.к. проклятье может быть только одно.

P.S. функция не проверялась, может понадобиться исправить опечатки


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
02.04.2015 03:06
Find all posts by this user Quote this message in a reply
Barin Offline

Posts: 804
Post: #3289

gamecreator, спасибо, но это сложно для моего понимания. Fie Я оставил свой вариант и взял на заметку твой (команда 3), если вдруг ещё придумаю сюжет с замочком.

Кстати, заметил "недоработочку" с проклятьем "слепота". Герой действительно не может исследовать новые земли (туман), однако если его поставить поближе к туману, то на следующий день область вокруг героя открывается/часть тумана исчезает.
(This post was last modified: 02.04.2015 18:48 by Barin.)
02.04.2015 18:43
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16731
Post: #3290

Алгор, а то 118


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

Posts: 2196
Post: #3291

(02.04.2015 18:43)Barin Wrote:  Кстати, заметил "недоработочку" с проклятьем "слепота". Герой действительно не может исследовать новые земли (туман), однако если его поставить поближе к туману, то на следующий день область вокруг героя открывается/часть тумана исчезает.

  1. !!UN:C6547928/4/$; $=scouting radius, set to 0 to have next turn in fog. Backside: it affect all heroes so should be dependent of !?HL and default value is 5
(This post was last modified: 02.04.2015 21:50 by Valery.)
02.04.2015 20:57
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #3292

(02.04.2015 18:43)Barin Wrote:  Кстати, заметил "недоработочку" с проклятьем "слепота". Герой действительно не может исследовать новые земли (туман), однако если его поставить поближе к туману, то на следующий день область вокруг героя открывается/часть тумана исчезает.
Тут всё абсолютно идентично проблеме с замком. Решается всё теми же способами.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
02.04.2015 21:51
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #3293

Кто-нибудь может мне объяснить зачем нужны макросы?


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
13.04.2015 14:55
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #3294

я когда то тоже над этим думал. Пришел к выводу: чтобы просто лучше ориентироваться в некоторых глобальных переменных. Читабельнее штоле...
  1. !?TM2&$once$=1/$day$>1/$weekday$=$monday$; [таймер только для первого игрока и только в понедельник]


game bug fixes extended.dll || My Plugins || My GitHub
13.04.2015 18:08
Visit this user's website Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5459
Post: #3295

именно... с ними удобнее читать код как чужой, так и свой спустя время...
не говоря уже про удобность быстрой замены номера переменной/ф-ции, при необходимости... заменить лишь в строке инициализации макроса номер и всё, без правки остального кода, где используется вместо номера поименовывание через макрос
13.04.2015 19:03
Visit this user's website Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #3296

Ну насчёт чтения кода не знаю... ЕРМ вообще язык нечитабельный. Я просто всю логику описываю в комментариях.
Удобство быстрой замены же достаточно сомнительно если есть замена строки в редакторе (а в стандартном редакторе она есть).


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
13.04.2015 20:26
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #3297

К слову о макросах, они работают только для переменных (по 1 на каждую). А выделять для каждой константы (типа номера функции) свою переменную как-то расточительно (если вместо той константы вообще можно использовать переменную).

Знатоки опыта отрядов есть? Никак не могу заставить существо колдовать после атаки. Пробовал способности a, c, k. В игре пишется что способность есть и шанс 100%, но заклинание я так и не увидел.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
14.04.2015 21:40
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #3298

у меня работает.
  1. !#EA15:B6/1/99/75/100/0/0/0/5/5/5/10/10/15/20; ул.кентавры старят
  2. !#EA15:B6/1/97/21/100/0/0/0/5/5/5/10/10/15/20; ул.кентавны кастуют шар огня


game bug fixes extended.dll || My Plugins || My GitHub
15.04.2015 19:05
Visit this user's website Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #3299

Дошло, заклинание колдуется только если атакуемый отряд выжил. Ну ладно, пусть будет так.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
16.04.2015 01:44
Find all posts by this user Quote this message in a reply
Valery Offline

Posts: 2196
Post: #3300

Hmm, Bersy, you said there is a way to check if one hero is on another object before going on ID?

I am facing a problem in seer huts mod, if one hero is ON the seer hut, when trying to open DL, it will give error. So I went for error flags checking and now it works ok, if hero is on, dialog will not open. But then I move hero away, dialog crashes when trying to open a second time. Is it possible that so many error flags charge the memory or I did some error?

  1. !!DL209:N^seerhuts.txt^;
  2. !!VRv10:S-1; initialize error
  3. !!UN:U83/-1/?y-1; count seer huts
  4. !!VRy-1&y-1>48:S48;
  5. !!VRv6:S-1; set v6 to -1 for faster search
  6. !!DO32165490/1/y-1/1&y-1>0:P83/49/97/y-1/1;
  7. !!FU&v10>98:E; exit if a hero is ON a seer hut (don't open DL)
  8. !!DL209:S1;


  1. !?FU32165490;
  2. !!UN:Ux1/-1/-1/6; seer hut in v6-v8
  3. ; this is the part I added for error check
  4. !!UN:P904/1; turn errors off
  5. !!UN:P905/0; clear error flag
  6. !!HEv6/v7/v8:N?y9; check if hero is on seer hut
  7. !!UN:P904/0; turn on errors showing
  8. !!UN:P905/?y10; get error flag to y10
  9. !!VRv10&y10=0:S99; set v10 to 99 if NO error (hero IS on)
  10. !!VRx16&y10=0:S100;
  11. !!FU&y10=0:E; if hero IS on seer hut (will be no error), exit
  12. ;end error check
  13. ;continue only if error is found (means there is no hero there)
  14. !!OB6:U?y98; get type
  15. !!QU6:N?y10; get seer hut ID (0-47)
  16. [...]
(This post was last modified: 18.04.2015 13:33 by Valery.)
18.04.2015 13:31
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