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

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

Posts: 16488
Post: #1906

Скорее всего, если остальные типы префиксованы "T"-ой.


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

Posts: 7
Post: #1907

Доброго времени суток!
Я здесь наверное с наиглупейшей миссией, но надеюсь что товарищи из геройского модерского сообщества мне хоть немного подсобят.
Так как Hota Crew очень не любит любых противоправных действий над своим детищем, пишу под страхом быть осмеяным, но выбора особо у меня нет.
Собственно суть проблемы необходимо внести ряд правок в геймплей HotA, хотя тут наверное больше суть модификации чистого SoD.
На данный момент я нашел самые простые вещи, редактирование силы заклинаний через файл SPTRAITS, нашел как в экзешнике можно поменять флаги у монстров для той или иной цели (например дать двойной выстрел, но существ редактировать не вижу смысла, это рушит баланс), и также в экзешнике как сменить стартовые вторичные навыки героев, армию. наличие книги заклинаний и само заклинание (это все в одном месте правится). Возможно нашел как все в том же экзешнике править сами вторичные навыки, но пока что не протестировал. Также знаю что можно добавить артефакты через редактирование hota.dat.
1. Вопрос, возможно ли каким-либо способом в хота изменить специализации героев (уж очень хочется убрать орлоглаз)?
2. Можно ли расширить диапазон удачи и морали с -3..3 до -5..5 (это приведет к тому что специализация на удаче перестанет быть бесполезной)?
3. Возможно ли палатке при экспертном навыке медицины дать возможность воскрешения стеков?
4. К огромному сожалению флаги заклинаний не проставляются в SPTRAITS, возможно ли заклинания сделать массовыми или в области? Главный вопрос касается мин и зыбучих песков, количество располагаемых преград также не настраивается через текстовик. Как их можно отредактировать?
5. Необязательный но интересный вопрос, можно ли каким-то образом сделать копию заклинания молитва, только с обратным эффектом, то есть сразу минус к скорости, защите и атаке (правда судя по всему с реализацией новых заклинаний без платформы МоР все очень грустно)?
6. Скорее всего тоже то что проще реализовать на платформах типа эра (по крайней мере реализовано в Advanced classes mod), но, возможно ли реализовать доп эффекты у заклинаний, типа при экспертной воде, заклинания замедляли бы и т.д. и т.п.?
Как было бы просто будь на платформе эра одновременные ходы.... эхххх...... Advanced Classes mod сделан просто замечательно, как и многие другие моды ><
18.06.2022 00:01
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4338
Post: #1908

Evillie, для SoD - плагинами и бинарными патчами.
для HotA - ковырянием hota.exe hex-редактором105


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
18.06.2022 00:24
Visit this user's website Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1348
Post: #1909

1. Структура специализации имеет размер в 40 байт (10 dword'ов на каждого героя) и находится в экзешнике в 278420 (если нужен виртуальный адрес, то 678420). Как менять параметры специализации, посмотри справку по ЕРМ HE:X - в случае с патчами там 100% аналогично. Первый dword - тип специализации, у Оррина (первого героя) - это 0 (вторичный навык), следующие 4 байта содержат число 1 (индекс вторичного навыка меткость). Остальные 32 в данном случае не используются.

Структура:
struct _HeroSpecInfo_
{
    _dword_ type;
    _dword_ params[9];
};


2. Я бы не стал в это лезть.
3. Через патчинг - нет.
4. Таблица количества песков: 242224 (виртуальный адрес 642224), таблица количества мин: 242234 (виртуальный адрес 642234). Получается, на каждый спелл 4 dword'а (кол-во в зависимости от уровня навыка (0-3)).
5. К сожалению, грустно. Через простой патчинг точно нельзя.
6. Через патчинг - нет.


Напиши, если я где-то ошибся с адресами. И, да, очень важно, чтобы у вас с девушкой были одинаковые версии ехе.


Создал новый глобальный мод: WoG Ultra Edition
18.06.2022 01:38
Find all posts by this user Quote this message in a reply
Elmore Offline

Posts: 589
Post: #1910

Новые заклинания в SoD (hd mod) и ERA уже добавлены плагином от AlexSpl


Image: widget.png?style=banner2
18.06.2022 02:18
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1348
Post: #1911

Elmore, если я правильно понял, речь идёт про Хоту. Плагин подгрузить не получится.


Создал новый глобальный мод: WoG Ultra Edition
18.06.2022 02:46
Find all posts by this user Quote this message in a reply
XEPOMAHT Online
Moderators

Posts: 2270
Post: #1912

(18.06.2022 00:01)Evillie Wrote:  1. Вопрос, возможно ли каким-либо способом в хота изменить специализации героев (уж очень хочется убрать орлоглаз)?

Проще добавить плагин, усиливающий орлоглаз. Если так сильно нужно убрать его, то это придётся редактировать exe.

(18.06.2022 00:01)Evillie Wrote:  2. Можно ли расширить диапазон удачи и морали с -3..3 до -5..5 (это приведет к тому что специализация на удаче перестанет быть бесполезной)?

Можно, но тогда придётся основательно перетрясти весь exe (пример есть в МоП, где диапазон расширен до -25...+25)

(18.06.2022 00:01)Evillie Wrote:  3. Возможно ли палатке при экспертном навыке медицины дать возможность воскрешения стеков?

Возможно, но это уже откровенное читерство с затягиванием боёвки до бесконечности.

(18.06.2022 00:01)Evillie Wrote:  4. К огромному сожалению флаги заклинаний не проставляются в SPTRAITS, возможно ли заклинания сделать массовыми или в области? Главный вопрос касается мин и зыбучих песков, количество располагаемых преград также не настраивается через текстовик. Как их можно отредактировать?

На ЭРЕ+ в редаторе заклинаний.

(18.06.2022 00:01)Evillie Wrote:  5. Необязательный но интересный вопрос, можно ли каким-то образом сделать копию заклинания молитва, только с обратным эффектом, то есть сразу минус к скорости, защите и атаке (правда судя по всему с реализацией новых заклинаний без платформы МоР все очень грустно)?

Только плагином и никак не на HoA.

(18.06.2022 00:01)Evillie Wrote:  6. Скорее всего тоже то что проще реализовать на платформах типа эра (по крайней мере реализовано в Advanced classes mod), но, возможно ли реализовать доп эффекты у заклинаний, типа при экспертной воде, заклинания замедляли бы и т.д. и т.п.?

Изучайте ERM и тащите даныую читерскую вещь к себе в мод.

(18.06.2022 02:46)Raistlin Wrote:  Elmore, если я правильно понял, речь идёт про Хоту. Плагин подгрузить не получится.

Да можно, там защита от дурака всего лишь.
18.06.2022 02:59
Find all posts by this user Quote this message in a reply
Evillie Offline

Posts: 7
Post: #1913

Raistlin, Elmore, XEPOMAHT, daemon_n огромное спасибо за ответы, не ожидал что проснусь утром и уже что-то будет (оказывается геройское модерское коммьюнити еще более живо чем я думал изначально хд)
(18.06.2022 01:38)Raistlin Wrote:  Структура специализации имеет размер в 40 байт (10 dword'ов на каждого героя) и находится в экзешнике в 278420 (если нужен виртуальный адрес, то 678420)
Главное что можно редактировать через exe, боялся что придется лезть в hota.dll, потому что не понятно чем и как его открыть. Пробовал через ИДУ, но внятного кода не увидел
(скорее всего просто потому что неумеючи, на работе приходится работать в основном с кривым java, поэтому спустя столько лет с момента когда я изучал с++ и питон для меня ваш уровень кодинга просто выглядит на уровне небожителей)
(18.06.2022 02:59)XEPOMAHT Wrote:  Проще добавить плагин, усиливающий орлоглаз. Если так сильно нужно убрать его, то это придётся редактировать exe.
Можно и так конечно, либо вообще заменить орлоглаз как навык на что-то другое (правда это тоже посредством прямой правки вряд ли удастся добиться)
Есть конечно более простой вариант, просто отключить орлоглаз и героев с этой специализацией на шаблоне, благо остальным героям у кого был стартовый навык орлоглаза я заменил, но мне в принципе правка специализаций была интересна.
(18.06.2022 02:59)XEPOMAHT Wrote:  Можно, но тогда придётся основательно перетрясти весь exe (пример есть в МоП, где диапазон расширен до -25...+25)
Вообще видел где-то на форумах плагин который делает это, но сейчас вряд ли найду так как было это с полгода назад.
Перетрясти весь exe, потому что функции морали и удачи много где завязаны? В экзешнике МоРа не подскажете как можно нужные строки про удачу отыскать?
На сколько я понял вы же занимаетесь разработкой МоР 2.19?
(18.06.2022 02:59)XEPOMAHT Wrote:  Возможно, но это уже откровенное читерство с затягиванием боёвки до бесконечности.
Почему читерство? В Эре же есть функции с усилением навыков палатки первой помощи\баллисты и т.п. Я так понимаю просто избыточное лечение на отряд должно воскрешать еще единичку или несколько. Или вы имеете в виду что через прямую правку можно только заставить кастовать ее воскрешение вместо лечения отряда (тогда да, это имба та еще)?
(18.06.2022 01:38)Raistlin Wrote:  Таблица количества песков: 242224 (виртуальный адрес 642224), таблица количества мин: 242234 (виртуальный адрес 642234). Получается, на каждый спелл 4 dword'а (кол-во в зависимости от уровня навыка (0-3)).
Спасибо! Попробуем поиграться со значениями, позже дам знать что вышло\не вышло.
(18.06.2022 02:59)XEPOMAHT Wrote:  Изучайте ERM и тащите даныую читерскую вещь к себе в мод.
На сколько я понял из изучения форумов, вроде ЕРМ только для правки ВоГ\ЭРЫ предназначен. Поправьте пожалуйста если я не прав.
Я так думаю сначала нужно посмотреть плагин который посоветовал Элмор.
(18.06.2022 02:59)XEPOMAHT Wrote:  Да можно, там защита от дурака всего лишь.
По-моему писали в разделе Хоты что-то подобное, но:
(02.01.2018 20:11)Berserker Wrote:  можно написать или использовать загрузчик dll и грузить любой файл с ним. У меня похожий был. Запускаешь hota hd.exe через него, а в своей библиотеке грузишь плагины. Запрет не реальный античит, а снижение читов и расхождений в сборках у обычных, далёких от программирования игроков. Всё для онлайна.
Если не сложно, может кто-нибудь пожалуйста поделиться тайным знанием с дураком, как это реализовать, либо дать ссылку на сам загрузчик длл, хотя бы в лс
потому что такую магию вне Хогвартса в свободном распространении я так понимаю разработчики Хота не оценят
?Ab
Вообще теоретически я так понимаю платформу эра можно и на экзешнике хоты запустить, проблема в том что экзешник отличается от СоДовского и соответственно скрипты Эры необходимо править в соответствии с необходимым exe, что является очень долгой, нудной и неблагодарной работой.
Кстати, подскажите, никто не пытался разобраться с одновременными ходами на остальных платформах помимо Хоты? Добились каких либо результатов?
(This post was last modified: 18.06.2022 09:54 by Evillie.)
18.06.2022 07:07
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2814
Post: #1914

Не выдумывайте велосипед) Все куда проще: создаёшь свой плагин, называешь его hota_update.dll и закидываешь в корень хоты с заменой. Вуаля, плагин и грузится, и работает.


game bug fixes extended.dll || My Plugins || My GitHub
18.06.2022 13:17
Visit this user's website Find all posts by this user Quote this message in a reply
Evillie Offline

Posts: 7
Post: #1915

Доброго времени суток, пришел мой черед отчитаться по всему тому что удалось\неудалось.
(18.06.2022 01:38)Raistlin Wrote:  1. Структура специализации имеет размер в 40 байт (10 dword'ов на каждого героя) и находится в экзешнике в 278420 (если нужен виртуальный адрес, то 678420).
Спасибо! Сама замена работает. Проверил на Оррине, сменил специализацию на спецу Валески, лучники бонус получили, но картинка и описание спецы не изменилось) Теперь видимо создается необходимость заменить описание специализации героя и саму иконку, это я так понимаю уже в lod файлы текстовые и графические менять надо. Жаль конечно что описание и картинка специализаций прикручена конкретно к герою, а не к специализации.
UPD по-моему специализация на заклинании не работает, точно не работает если на заклинание специализации не было (вообще нигде урон не поднимается), да и даже если было вроде не работает, при наведении на цель пишет что нанесет повышенный урон, а в логе боя все равно обычный 112
Также появляется такой вопрос, а % бонуса специализаций для вторичных навыков возможно корректировать? Да и вообще для специализаций.
С песками\минами пока не смотрел, попробовал только найденный плагин от Игрика (нашел несколько разных, но только его работает с Хота), но даже если ошиблись с адресом, постараюсь в базе данных накопать, примерный ориентир вы задали)
Все эти изменения которые я внес в exe, я так понимаю нормальные люди патчами вносят?)
(18.06.2022 01:38)Raistlin Wrote:  И, да, очень важно, чтобы у вас с девушкой были одинаковые версии ехе.
Спасибо за напоминание, уже столкнулся с подобной проблемой когда отличались SPTRAITS, не то что exe. В результате того что расчет урона и стоимости заклинаний в пвп бою отличался через несколько раундов игра попросту зависла)
(18.06.2022 13:17)igrik Wrote:  Не выдумывайте велосипед) Все куда проще: создаёшь свой плагин, называешь его hota_update.dll и закидываешь в корень хоты с заменой. Вуаля, плагин и грузится, и работает.
Спасибо за информацию! Тут возникла только одна проблема, плагин можно таким образом подгрузить только один и многие плагины вообще с Хотой работать не хотят (что очень грустно, но вполне ожидаемо). Это как-то плагины нужно в один скомпилировать чтобы подгрузить все вместе или все же как-то можно несколько сразу подгружать? Пробовал как asi библиотеки подгружать, но Хота их кушать не захотела. Конечно скорее всего я криворучка конечно, но вроде все правильно делал.
В любом случае буду изучать тему построения собственной dll
Elmore Wrote:Новые заклинания в SoD (hd mod) и ERA уже добавлены плагином от AlexSpl
К сожалению и в описании патча сказано что для Хоты не подойдет, и попробовал я подгрузить. Игра запускается через раз и крашится со страшной силой. В гильдии видно иконки новых заклинаний, но я так понимаю что там вообще отображение иконки спеллов перемешались, потому что рядом был взрыв на первом уровне, также все то что не на своих местах не имеет описания и не записывается в книгу героя. Возможно можно попробовать самому реализовать подобный плагин, но мне на данный момент уж точно не хватит на это знаний. Хотя был бы благодарен если бы AlexSpl или кто-то сведущий в том как это реализовать помогли бы с патчем который бы работал на хота на одно заклинание "нечестивое слово" как обратное по свойствам молитве, там бы уже по примеру можно было пытаться реализовать что-то дальше. А пока что сяду разбирать код патча Алекса, потому что большая часть кода будет идентичной скорее всего.
XEPOMAHT Если все таки возможно реализовать на хота, чтобы палатка воскрешала при экспертной "Первой помощи", подскажи пожалуйста как это реализовать или хотя бы направление задай в котором думу думать. Патчи на палатку находил, но они были реализованы как просто усиленный хил, без рандомного значения лечения и второй вариант это +1\2\3 к здоровью существ в зависимости от уровня навыка "Первая помощь".
С моралью\удачей вроде тоже нашел плагин, но нужно разбираться. Ну и понять как подгрузить сразу несколько)
(This post was last modified: 19.06.2022 22:14 by Evillie.)
19.06.2022 19:48
Visit this user's website Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 779
Post: #1916

Сорри за тупой вопрос, но как загрузить в память свою текстовую таблицу txt в плагине, чтобы потом из нее свободно читать?
Таблица - массив числовых значений M x N, и поэтому удобнее использовать и редактировать именно таблицу, а не json или ini, где значения выстроены в один ряд.
04.08.2022 03:05
Find all posts by this user Quote this message in a reply
XEPOMAHT Online
Moderators

Posts: 2270
Post: #1917

(04.08.2022 03:05)wessonsm Wrote:  Сорри за тупой вопрос, но как загрузить в память свою текстовую таблицу txt в плагине, чтобы потом из нее свободно читать?

Зависит от языка программирования, на котором пишешь. Например в Тифоне текстовики (и любые другие файлы ERA+) грузятся так:

Касательно текстовика, после загрузки его в игру в цикле просто находишь границы строк и пишешь их адреса туда, куда тебе нужно, в зависимости от твоей структуры табличных данных (а там можно делать любые вещи, аналогично оригинальным игровым таблицам, содержащими текстовые данные).
(This post was last modified: 04.08.2022 05:27 by XEPOMAHT.)
04.08.2022 04:23
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16488
Post: #1918

LOAD_TXT_FUNC = $55C2B0; // F (Name: pchar): PTxtFile; FASTCALL;
UNLOAD_TXT_FUNC = $55D300; // F (PTxtFile); FASTCALL;

Чтение из загруженной таблицы воговской функцией, iTxt, что ли. Не нахожу быстрым поиском.


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

Posts: 779
Post: #1919

XEPOMAHT, Berserker, спасибо.

Berserker, я первым делом попытался использовать функцию 0x55C2B0, но получаю сообщение
ResourceManager::GetSpreadsheet could not find the "text" resource "MMT.txt".
Файл лежит уже везде, где только можно.

ХЕРОМАНТ, в общих чертах понял так, что нужно создать буфер (CreateFileA), выделить под него память (MemAlloc), и прочитать в него данные из txt (ReadFile). Попытаюсь.
(This post was last modified: 04.08.2022 06:13 by wessonsm.)
04.08.2022 06:00
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 622
Post: #1920

Quote:Сорри за тупой вопрос, но как загрузить в память свою текстовую таблицу txt в плагине, чтобы потом из нее свободно читать?
Таблица - массив числовых значений M x N, и поэтому удобнее использовать и редактировать именно таблицу, а не json или ini, где значения выстроены в один ряд.

Code:
#define _char_ char
#define _cstr_ _char_*

NOALIGN struct _BinTreeItem_ // size = 28
{
_ptr_* v_table; // + 0
_char_ name[12]; // + 4
_dword_ name_end; // + 16
_dword_ type; // + 20
_int_ ref_count; // + 24


// Удалить ссылку на объект и, если она последняя, уничтотжить его.
void DerefOrDestruct()
{
   CALL_1(void, __thiscall, this->v_table[1], this);
}

};

NOALIGN struct _TxtLine_
{
    //int    Exist;        // 1=выделена память, 0=нет
    //char **Start;
    //char **Stop;
    //char **End;
    _List_<_cstr_> items;
};
#define o_LoadTxt(name) CALL_1(_Txt_*, __fastcall, 0x55C2B0, name)
NOALIGN struct _Txt_ : public _BinTreeItem_
{
    _List_<_TxtLine_*> Lines;
    //_TxtLine_** StartLine;  // +20 ук на первую строку
    //_TxtLine_** StopLine;   // +24 ук на строку за последней


     inline static _Txt_* Load(char* filename) {return o_LoadTxt(filename);}
     inline char* GetString(int index) { return *(char **)(*(_ptr_*)((_ptr_)(this) + 32) + (_dword_)(index)*4);}
};


    _Txt_* txt = o_LoadTxt("magicani.txt");
    if(txt != 0)
    {
        for(int i = 0; i!=127; i++)
        {
            _TxtLine_* corresponding_line = txt->Lines[i+1];

            strcpy((char*)(def_name[i]),corresponding_line->items[1]);
            o_BattleAnimation[i].DefName = def_name[i];
            
            strcpy((char*)(eff_name[i]),corresponding_line->items[2]);
            o_BattleAnimation[i].TouchEffect_Name = eff_name[i];

            o_BattleAnimation[i].Properties =
                atoi(corresponding_line->items[3]) |
                atoi(corresponding_line->items[4]) << 8;

        }

        txt->DerefOrDestruct();
    }
04.08.2022 06:00
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