Current time: 30.04.2024, 16:02 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA PLUS
» 10-й город для ЭРА и не только...
Author Message
XEPOMAHT Offline
Moderators

Posts: 2275
Post: #511

(26.05.2021 14:07)igrik Wrote:  Ну вот же - работает!
Только да - без прозрачности.

Если из скрипта удалить команду !!IF:F, то да - вызывается WND-диалог и PNG читается без глюков. НО если оставить !!IF:F - уже вызывается диалог из zvslib1.dll с вышеописанными глюками. В общем удаляю !!IF:F. Благо особо он не влияет, это просто подсказки, ну и фиг с ними, надоело уже эта возьня. Буду ждать, когда добавят альфа-канал, всю графику потихоньку перегоню из gif в png.
26.05.2021 14:41
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2814
Post: #512

Опа! А вот это уже баг репорт. Буду дома - проверю.


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

Posts: 16500
Post: #513

Добрый день всем!

1) LoadImageAsPcx16 загружает изображения в формате pcx16. Pcx16 — формат без поддержки полупрозрачности. Поэтому фон у png белый по умолчанию.

2) В Windows какнонические пути с обратными косыми чертами. "D:\Heroes 3\Mods". Для API верхнего уровня поддерживаются и прямые косые черты с целью совместимости с Unix-программами. D:/Heroes 3/Mods. Такие пути на лету преобразовываются в канонические низкоуровневыми библиотеками системы (и VFS Эры в том числе). Я использую прямые косые черты в документации, поскольку «\» — символ экранирования во многих языках программирования и на heroescommunity.com.

3) Правильный путь к файлу "..\Mods\ERA+\anim\obj%X2.gif": "anim\obj%X2.gif".
Никогда не нужно указывать папку Mods и имя мода. Так мы нарушаем работу системы модов, обращаясь к конкретному моду. Нужно обращаться к файлам так, как будто бы папки Mods не существует вообще.

4) Не исключаю багов в IF-подкомандах.

5) Для поддержки png с полупрозрачностью в вог-диалогах нужно в WoG Native Dialogs добавить поддержку файлов с расширением *.pcx, для которых создавать элемент Pcx8 или Pcx16. Первый более распространён в ресурсах игры, так что pcx8 даже круче. Либо сделать поддержку двойных расширений: '****.pcx.pcx16' преобразовывается в '****.pcx', но создаётся pcx16 элемент формы.

Всё, все игровые pcx будут поддерживаться, а любой pcx можно заменить на png на лету, поместив его в Data\Pcx\[***\***\***\]имя.png


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

Posts: 2275
Post: #514

(26.05.2021 17:25)Berserker Wrote:  3) Правильный путь к файлу "..\Mods\ERA+\anim\obj%X2.gif": "anim\obj%X2.gif".

Две точки и обратная черта обязательны. Правильный путь - "..\anim\obj%X2.gif"

(26.05.2021 17:25)Berserker Wrote:  5) Для поддержки png с полупрозрачностью в вог-диалогах нужно в WoG Native Dialogs добавить поддержку файлов с расширением *.pcx, для которых создавать элемент Pcx8 или Pcx16. Первый более распространён в ресурсах игры, так что pcx8 даже круче. Либо сделать поддержку двойных расширений: '****.pcx.pcx16' преобразовывается в '****.pcx', но создаётся pcx16 элемент формы.

Всё, все игровые pcx будут поддерживаться, а любой pcx можно заменить на png на лету, поместив его в Data\Pcx\[***\***\***\]имя.png

Попробовал. Работает. Альфа-канал есть, но... почему размер такой маленький??? Отчего размер нельзя брать из заголовка png??? Откуда ERA вообще его берёт??? Что за свинство какое-то с этими диалогами... какое-то всё недотестированное-недоделанное... 141

Image: 5d5aa7355df6.png
26.05.2021 17:59
Find all posts by this user Quote this message in a reply
Panda Away
Moderators

Posts: 1005
Post: #515

XEPOMAHT, у меня это окно маленькое, у тебя оно почему-то совсем гигантское... поэтому наверн и кажется маленьким 148


Тот, кто просыпается рано - жаворонок, поздно - сова. А тот, кто плохо спит и ходит с черными кругами под глазами - панда!
26.05.2021 18:25
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2275
Post: #516

(26.05.2021 18:25)Panda Wrote:  у меня это окно маленькое, у тебя оно почему-то совсем гигантское... поэтому наверн и кажется маленьким 148

Неа, ERA берёт размеры с default.pcx наверное, т.е. того, что показывают при ненайденности pcx. Короче всё как обычно, спасибо что не вылетает. 148 Попробую его заменить, может поможет. 148
26.05.2021 18:30
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16500
Post: #517

XEPOMAHT, Эра не масштабирует png при отрисовке вообще. То есть DrawPcx16 => получаем имя pcx, находим соответствующий png, отрисоываем его часть без масштабирования.
Второе — функции загрузки pcx8/pcx16 перехватываются, создаются болванки с теми же размерами, что и png.
Третье — WND не должен быть поддерживать *.pcx картинки вообще. Покажи весь код с путями.


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

Posts: 2275
Post: #518

(26.05.2021 19:02)Berserker Wrote:  Эра не масштабирует png при отрисовке вообще. То есть DrawPcx16 => получаем имя pcx, находим соответствующий png, отрисоываем его часть без масштабирования.

wog native dialogs.era масштабирует. Если размер выше 100х100, то картинка уменьшается до 100х100. Но тут я сам отмасштабировал, ибо на 32х32 не будет видно ничего.

(26.05.2021 19:02)Berserker Wrote:  Второе — функции загрузки pcx8/pcx16 перехватываются, создаются болванки с теми же размерами, что и png.

В случае с WND заменяющий png почему-то обрезается. Т.е. размеры изображения всё равно пушатся на функцию подготовки диалога ДО замены pcx и png, поэтому в памяти оно может и полноразмерно, но отображается всё равно в обрезанном виде, т.е. по XY из pcx, а не png.

(26.05.2021 19:02)Berserker Wrote:  Третье — WND не должен быть поддерживать *.pcx картинки вообще. Покажи весь код с путями.

Ну он же ставит дефолтный pcx при отсутствии pcx, при чём по имени из скрипта, ну а pcx потом по тому же имени и подменяется на png. Значит поддержка там всё-таки есть. Но да, по путям из скрипта pcx никогда не будет найден, там в 100% будет дефолтный pcx как ни крути. 148
26.05.2021 19:16
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16500
Post: #519

XEPOMAHT, WND не содержит функций для работы с изображениями вообще. Сейчас pcx расширение ещё не поддерживается WND. игрик попробует его добавить. Что произошло (предположительно):

1) WND вызывает Эровскую функцию LoadImageAsPcx16. Эра пробует найти картинку, не находит. Ранее выводилась ошибка, но Дима попросил убрать вывод ошибок. Era создаёт изображение по умолчанию 32x32 и возвращает pcx16 ресурс.
2) WND смотрит размеры pcx16 ресурса. Это 32х32. Создаёт элемент Pcx16DlgItem для диалога с именем ресурса.
3) При отображении диалога вызывается функция Pcx16DlgItem.Draw, а там DrawPcx16ToBuf, а там перехват Эры срабатывает. Эра находит png-файл и отрисовывает его вместо pcx. Вот при этой отрисовке вообще не поддерживается масштабирование. Должны отрисоваться пиксели из прямоугольной области [0; 0; 32; 32].

Что будет?
igrik добавит поддержку расширений *.pcx, *.pcx16, для которых не будет вызывать LoadImageAsPcx16, а будет вызывать LoadPcx8 или LoadPcx16 соответственно, после чего создавать Pcx8DlgItem или Pcx16DlgItem. Так заработает показ любых игровых pcx. А дальше в дело вступает Эра. Она перехватывает LoadPcx8/LoadPcx16 и, если для pcx есть png файл, создаёт болванку с размерами png, чтобы позже отрисовка png была с корректными размерами. То есть всё будет работать «из коробки».


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

Posts: 2275
Post: #520

Обновление Тифона из ERA+. Добавлено исправление воговского косяка, выводящего диалог-подсказку к объектам карты по ПКМ: теперь координаты диалога не тупо по центру экрана, а зависят от координат клика мыши, как в оригинальном SoD-е, код которого по существу и затирался WoG-ом - теперь он восстановлен. Ну и сама функция по оставлению монстров и артефактов на карте тоже срабатывает как положено.
(This post was last modified: 28.05.2021 02:45 by XEPOMAHT.)
27.05.2021 16:42
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16500
Post: #521

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


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

Posts: 2275
Post: #522

(27.05.2021 17:02)Berserker Wrote:  Поделись микропатчем, тоже применю.

Там просто 2 хука - первый сохраняет координаты, второй применяет их в воговском коде:

Code:
Hook 415AD2h, WoG_PlaceCreature,        TJump; замена концовки функции SoD_HintMessage
Hook 7575A3h, Fix_PlaceCreature,        TJump; исправить функцию WoG_PlaceCreature

Code:
proc WoG_PlaceCreature
    mov [HintWindowX], eax ; сохранить
    mov [HintWindowY], ecx ; координаты
    pushad
    mov eax, 7570D9h
    mov ecx, 697428h
    call eax
    popad
    push 415AF3h
    ret
endp

proc Fix_PlaceCreature
    push 0
    push -1
    push 0
    push -1
    push 0
    push -1
    push 0
    push -1
    push [HintWindowY]
    push [HintWindowX]
    mov eax, 4F6C00h
    mov edx, 4
    mov ecx, [ebp-38h]
    call eax
    push 7575B3h
    ret
endp
(This post was last modified: 27.05.2021 17:13 by XEPOMAHT.)
27.05.2021 17:12
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16500
Post: #523

Понял, спасибо.


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

Posts: 2275
Post: #524

Обновление Тифона из ERA+. Добавлен новый ERM-триггер 30378, срабатывающий по ПКМ конкретно по игровой карте. Адрес на структуру кликнутой клетки карты записывается в v997, после выполнения триггера, содержимое v997 удаляется.
(This post was last modified: 28.05.2021 02:44 by XEPOMAHT.)
27.05.2021 19:01
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16500
Post: #525

По мини-карте?


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