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

Post Reply 
Threaded Mode | Linear Mode
Отображение произвольного def`а на поле боя
» BattleFigures.dll
Author Message
Sav Offline

Posts: 2180
Post: #1

dll позволяет создавать объекты-изображения (условно "фигуры") в бою и управлять ими.

Смысл заключается в том, что каждая существующая фигура автоматически отрисовывается на поле боя и анимирует, пользователю надо лишь настраивать и, при необходимости, менять конкретные её параметры.

BattleFigures.zip

В архиве находится сама dll, а так же lib-файл и SDK (только на C++).
dll должна лежать в корневой папке Героев. lib и SDK должны быть включены в исходники использующего BattFigures.dll проекта (SDK автоматически подгружает lib).

SDK достаточно хорошо прокомментирован, думаю, понять, как пользоваться и какие есть возможности, не очень сложно.


Пример: SamplePlugin.zip

В примере на стеках играет специальная анимация всё время, пока на них наложена анти-магия; похожая вещь делается и для паралича.



Как сама BattleFigures.dll, так и, естественно, пример требует patcher_x86 (patcher_x86.dll и patcher_x86.ini в корневой папке игры).



Исходники (без отлова ошибок, но и исправленным освобождением памяти в деструкторе списка): https://www.dropbox.com/s/nmqzf6ehiscbxq...ources.zip


BattleFigures.dll глючить не должна - я хорошо отреверсил то, что в ней делаю. В неё встроен отлов ошибок, такой же, как и в HD, поэтому не удивляйтесь, что при любом вылете она будет выдавать окошко с ошибкой. Cама dll вряд ли является причиной этой ошибки, но её лог может помочь в поиске этой причины.

Возможно, не всеми возможностями dll удастся воспользоваться из-за кривости отрисовке боя Героев. Тут пока ничего не поделаешь.


SDK для других языков я писать не буду, т. к. и с этим упарился (и всё равно как-то криво вышло по-моему). Если кто-то напишет, а ещё лучше, научит, как делать адекватный экспорт, буду признателен. Sm
(This post was last modified: 21.11.2012 20:11 by Sav.)
17.04.2012 21:25
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2

Поздравляю!


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

Posts: 16657
Post: #3

Вот что меня интересует, так это загрузка, выгрузка и отображение кадров дефов, то есть по сути то, с чем имеет дело alpha-плагин от Семёна. Для создания модов важно, чтобы кадровые сборные дефы могли редактировать по частям, то есть заменой кадров, а не дефов. Есть у тебя наработки? Это не срочно, но любое нововведение зависит от трудоёмкости.


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

Posts: 2180
Post: #4

Отображается конкретные кадры def`а посредством своих методов, и о некоторых из них я кое-что знаю. Загрузку я видел только def`а целиком, но не разбирал, а только пользовался.

Вообще, с самими ресурсами я мало работал. Структуры def`а, кадра и пр. описаны baratorch`ем, я ими только пользовался, и их лучше попросить их у него. Я узнал только некоторые подробности про 2 функции отрисовки, которые представлены у меня как 2 типа изображения. Про них могу рассказать.
(This post was last modified: 17.04.2012 23:15 by Sav.)
17.04.2012 23:15
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #5

Sav, а через !?CM добавляемые элементы будут отлавливаться? через CM:I по своим уникальным ID?
(This post was last modified: 18.04.2012 21:35 by Bes.)
18.04.2012 21:34
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #6

Нет, фигуры - просто настраиваемые изображения, сами по себе они неинтерактивны. Их можно сделать интерактивными, но этим должен заниматься уже пользователь, BattleFigures.dll даёт возможности только в плане отображения на экран.
18.04.2012 21:53
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #7

а в процессе игры можно ли менять кадры деф-а, для отображения при той или и ной ситуации???
скажем эмулировать таким образом "кнопку", которая может быть активна или "недоступна"
18.04.2012 22:07
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #8

Конечно, можно менять кадры def`а, можно заменить def на другой, как и любые другие параметры отображения.
18.04.2012 22:30
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #9

Berserker, как думаешь, стоит ли менять способ реализации дополнит.игрового меню в битве для ФМ (сейчас он через DL вызывает панель всякий раз по ПКМ на герое)???
То есть сделать чтоб всегда висела якобы "панель" вверху, а состояние кнопок постоянно мониторить для каждой стороны и менять если нужно.

оцени своим профессионал.взором новую возможность посредсвом данной BattleFigures.dll и ответь пожалуйстаSorry
18.04.2012 22:39
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #10

Несмотря на то, что я писал, что глючить не должно, оказалось, что это немного не так.
Обновил dll, исправил пару недочётов. Также обновился SDK, пара мелких расширений возможностей.

Обновил пример - теперь в нём полноценно изменяется анимация паралича: при наложении играется анимация до определённого кадра, потом на этом кадре анимация застывает и держится всё время, пока стек парализован, а при снятии паралича анимация играет "назад" и изображение исчезает.

Ссылки в первом посте указывают на обновлённые файлы.
18.04.2012 23:47
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #11

Bes, не стоит.


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

Posts: 2180
Post: #12

Теперь меня ничего не держит. https://www.dropbox.com/s/nmqzf6ehiscbxq...ources.zip
Сам не знаю зачем (наверное, затем, что он тут не нужен), убрал отсюда отлов ошибок, но добавил исправленное позже освобождение памяти списком.

Я уже понял, что текущая обработка фигур никуда не годится (в плане удобства работы с ней) и я буду всё переделывать, но не факт, что я стану выделять потом это опять в отдельный плагин.

Геройские модули тут содержат немного побольше моей информации (отличима построчными комментариями), чем те, что в HD; возможно, интересующимся есть смысл обратить них внимание.
(This post was last modified: 21.11.2012 20:25 by Sav.)
21.11.2012 20:17
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #13

Реально ли сделать шкалу очерёдности хода, как в VCMI, используя данный модуль?


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

Posts: 2180
Post: #14

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

По идеологии же это примерно то же, что и делать разделение дефа артефактов через альфа-плагин. Я бы не стал вводить шкалу очерёдности через BattleFigures, по мне её надо делать нормальным элементом интерфейса.

Я не играл в VCMI и видел шкалу только на скриншотах. Если она неинтерактивная, то простота её реализации и эффективность данного плагина для этих целей существенно выше.

В Хоте модуль используется для исправления анимации появления и исчезновения огненных стен и т. п., т. к. позволяет отрисовывать произвольную анимацию на гексе не поверх всего, а в общем порядке. В целом это что-то вроде замены оригинальной геройской анимации заклинаний и т. п. вещей: с большим функционалом, но для тех же целей.
(This post was last modified: 21.11.2012 22:44 by Sav.)
21.11.2012 21:25
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #15

В общем я всё таки пытаюсь сделать шкалу очерёдности хода через этот плагин и через патчер x86.
Но меня очень сильно тормозит полное отсутствие знаний основ С++. А именно я не могу вызвать нижеуказанную функцию для построения списка очередности. Я тупо не понимаю как передать в неё адреса структуры стеков.
Code:
// Сравнение приоритета хода стеков (если у первого приоритетнее - возврат 1)
char __thiscall A0_Battle_CompareStacksTurnPriority_sub_464B30(int this, struct_BattleStack *Stack1, struct_BattleStack *Stack2)
Поэтому прошу помощи.

На данный момент плагин работает через HD мод как подключаемый на хоте, соде и эре. Без HD только на эре через EraPlugins.
Пока что выглядит это так:


game bug fixes extended.dll || My Plugins || My GitHub
(This post was last modified: 05.07.2016 01:09 by igrik.)
05.07.2016 01:08
Visit this user's website 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