Current time: 25.10.2020, 09:36 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Вопросы по моддингу
» (обсуждаем моддинг здесь)
Author Message
Elzivir Offline

Posts: 231
Post: #1471

daemon_n, wessonsm, SergOz, спасибо за советы! Кстати, смещение по x-координате действительно решило проблему.

P/S: остался еще открытым вопрос с правильным отображением жилищ Порождений зла и Ифритов в обзоре королевства (сейчас они почему-то поменяны местами).
26.07.2020 17:57
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 4406
Post: #1472

(25.07.2020 19:48)XEPOMAHT Wrote:  
(25.07.2020 19:39)Bes Wrote:  а от кого исходники по WoG с дополнительными комментариями и описанием адресов/действий? от ShadowTheAge?

От CoreWoG наверное. Что нашлось в исходниках, то и выложил.
самое интересно, посидел я тут пару-тройку часов ночью на работе, местами одни исходники противоречат другим, в одном смещение указано на единицу раньше, в других позже... где-то одно описание, а смотришт в другом - другое.
приходится проводить тесты, ищя правильность того или другого описания.

короче, постараюсь в стилистике исходников Славы (мне его подача больше подошла) на днях выложить более-менее полный вариант этих двух структур, адаптированных под ерм-справочник



Image: 237506073ac7.gif
31.07.2020 21:25
Visit this user's website Find all posts by this user Quote this message in a reply
Zur13 Offline

Posts: 223
Post: #1473

А кто-то сталкивался с тем что !!BA:S?y1; возвращает неправильное значение внутри !?BA триггера? У меня непонятно что происходит в осадах возвращает 0, при битве с монстрами возвращает 1, очень похоже что возвращает значение для предыдущей битвы. Можно ли как-то внутри BA триггера проверить осада или нет?

02.08.2020 21:30
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 4406
Post: #1474

Zur13, так в справке так и написано, то в !?BA этой командой не проверить, хотя как по мне это баг WoG
ERM-Help Wrote:Правильное значение вы получите в триггере !?BR или позже. В триггере !?BA0 значение не определено.
Надо просто уточнить что во всех !?BA

Как вариант, либо проверять координаты битвы:
1. битва с героем справа - проверять наличие героя в городе по координатам
2. битва без героя справа - просто проверить наличие города в координатах
А если проверять уже в самой битве, до фазы сражения? по наличию слева катапульты? там же уже работает, чёт увлёкся



Image: 237506073ac7.gif
02.08.2020 22:08
Visit this user's website Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 562
Post: #1475

Zur13, не знаю как в МП-игре, но в обычной я проверял это значение через !?BR-1;
Выдаёт правильные результаты.


Карта ERA2.9.14+ "Война на Холсте"
02.08.2020 22:10
Find all posts by this user Quote this message in a reply
Zur13 Offline

Posts: 223
Post: #1476

(02.08.2020 22:08)Bes Wrote:  Zur13, так в справке так и написано, то в !?BA этой командой не проверить, хотя как по мне это баг WoG
ERM-Help Wrote:Правильное значение вы получите в триггере !?BR или позже. В триггере !?BA0 значение не определено.
Надо просто уточнить что во всех !?BA

Как вариант, либо проверять координаты битвы:
1. битва с героем справа - проверять наличие героя в городе по координатам
2. битва без героя справа - просто проверить наличие города в координатах
А если проверять уже в самой битве, до фазы сражения? по наличию слева катапульты? там же уже работает, чёт увлёкся

BR-1 мне уже слишком поздно откатывать патч. В общем я вроде придумал себе обходной вариант именно для этого случая, но плохо, что тип битвы не проверить в БА, обдумывал другой мод там это нужно. А вообще динамический патчинг кода из ЭРМ открывает столько возможностей, ух, еще бы можно было бы динамически колбеки так же вешать из геройских функций в ЭРМ функции, а то через UN:C много кода не напишешь...

P.S. Наличие города по координатам в ЕРМ не проверишь нормально, если запрашивать объект по координатам, а на желтой клетке города стоит герой, то вернет не ИД объекта город, а ИД объекта герой, я уже попадался на таком. Да и там начинаются танцы если есть и герой в гарнизоне и герой на желтой клетке, то вообще жесть.

P.P.S. я просто русской версией справки почти не пользуюсь неудобно, потому не видел, сейчас проверил там действительно указана эта особенность.
(This post was last modified: 03.08.2020 00:53 by Zur13.)
03.08.2020 00:52
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 4406
Post: #1477

Quote:P.S. Наличие города по координатам в ЕРМ не проверишь нормально, если запрашивать объект по координатам, а на желтой клетке города стоит герой, то вернет не ИД объекта город, а ИД объекта герой, я уже попадался на таком. Да и там начинаются танцы если есть и герой в гарнизоне и герой на желтой клетке, то вообще жесть.
Zur13, так зачем тебе проверять тип объекта по координатам битвы, если сразу проверяй !!CAx/y/l:H0/?$ H1/?$
просто предварительно отключай вывод ошибок через !!UN:P904/1 P905/0; (если города в координатах нет) и проверяй с каким именно героем идёт битва справа... например:

как-то так...



Image: 237506073ac7.gif
03.08.2020 01:15
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline

Posts: 783
Post: #1478

(03.08.2020 00:52)Zur13 Wrote:  Наличие города по координатам в ЕРМ не проверишь нормально, если запрашивать объект по координатам, а на желтой клетке города стоит герой, то вернет не ИД объекта город, а ИД объекта герой, я уже попадался на таком. Да и там начинаются танцы если есть и герой в гарнизоне и герой на желтой клетке, то вообще жесть.

Если выдаёт героя на жёлтой клетке вместо города, то (2 способа на выбор):

1. Лезем в структуру героя и читаем там ИД/контрольное слово, в котором стоит герой.
2. Запоминаем героя и вызываем функцию hidehero и читаем заново. После чтения для героя вызываем showhero (но этим способом - в крайнем случае, т.к. кривое использование вызовет любимый воговский баг - раздвоение героя).
(This post was last modified: 03.08.2020 01:48 by XEPOMAHT.)
03.08.2020 01:47
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 4406
Post: #1479

XEPOMAHT, а если смотреть тип объекта под героем? или это не сработает для города?
igrik Wrote:



Image: 237506073ac7.gif
03.08.2020 01:52
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline

Posts: 783
Post: #1480

(03.08.2020 01:52)Bes Wrote:  а если смотреть тип объекта под героем? или это не сработает для города?

Сработает. Там чтение непосредственно из _MapItem_ (а команду !!OB:Z в ЭРУ так и не добавили, увы... Bad , в MoP же вообще реализовано получение этой штуки ещё мудрёнее и хардкорнее) . ВоГ получает тип/подтип с учётом всех динамических объектов и накладных штук-дрюк - вызовом GetTerrainOverlayType.
03.08.2020 03:46
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 4406
Post: #1481

(03.08.2020 03:46)XEPOMAHT Wrote:  (а команду !!OB:Z в ЭРУ так и не добавили, увы... Bad
ну так ты ж не ванговал за неё, вот и не добавили
Бери пример с igrik'а - он бензопилой в течение дня и HE:Z/BM:Z и прокачанную UN:C выбил 96
03.08.2020 03:50
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline

Posts: 783
Post: #1482

(03.08.2020 03:50)Bes Wrote:  ну так ты ж не ванговал за неё, вот и не добавили

Мне не особо было надо (в той же ERA+ я использовал hidehero и showhero для получения типа/подтипа под героем, а переделывать под !!OB:Z наверное не буду). В MoP есть готовая встроенная в exe функция получения _MapItem_, без костылей, там в ERM её добавить - совсем не сложно.

Ложиться костями и ставить ультиматумы не получается (та же просьба с базовыми адресами не нашла отражения в ЭРА) 105 . Берсеркер твёрд как орех.
(This post was last modified: 03.08.2020 04:12 by XEPOMAHT.)
03.08.2020 04:09
Find all posts by this user Quote this message in a reply
Zur13 Offline

Posts: 223
Post: #1483

XEPOMAHT, Bes Спасибо!

Я для начала попробую ЭРМ версию, с отключением ошибок.

Просто для полноты картины еще 2 способа как это можно сделать, в ВоГ скрипте улучшенные боевые машины 3, это сделано обходом всех замков в цикле и проверкой соответствия их координат искомым, что для меня было ресурсозатратным, потому я переделал через ОБ но в случае объекта герой, я дополнительно проверяю 3 клетки: 1 сверху и 2 вокруг героя если они имеют объект город то предполагаю что герой стоит в городе, да знаю криво и через редактор можно сделать наложение трех городов которое даст тут ошибку и т.д.
(This post was last modified: 03.08.2020 12:14 by Zur13.)
03.08.2020 12:14
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 590
Post: #1484

Еще один нюанс. Проверка координат не даст правильный тип битвы, если город охраняют два героя (гость и в гарнизоне), так как осада будет только во втором случае, а в первом - нет.

Да и проверять все города в цикле не так уж ресурсозатратно, это макс 48 итераций.
(This post was last modified: 03.08.2020 12:44 by wessonsm.)
03.08.2020 12:39
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline

Posts: 783
Post: #1485

(03.08.2020 12:39)wessonsm Wrote:  Еще один нюанс. Проверка координат не даст правильный тип битвы, если город охраняют два героя (гость и в гарнизоне), так как осада будет только во втором случае, а в первом - нет.

А проверять в комбатменеджере не судьба? Там и структура города, и структуры нападающего/защитника готовые есть. Искать на карте и сравнивать вообще ничего не надо, какие-то либо костыли придумывать тоже. Spiteful
03.08.2020 13:48
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