Current time: 23.04.2024, 17:56 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Typhon v. 2.9
» Инструмент мододелов из MoP для ЭРЫ
Author Message
Raistlin Away
Moderators

Posts: 1348
Post: #451

Согласен)
Вот файл


Создал новый глобальный мод: WoG Ultra Edition
24.01.2021 16:51
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1348
Post: #452

XEPOMAHT, не могли бы Вы подсказать мне, по какому адресу лежит MonTable2?


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

Posts: 2270
Post: #453

(13.02.2021 01:25)Raistlin Wrote:  по какому адресу лежит MonTable2?

Прямого адреса нет (точнее он есть, но только внутри Тифона). Можно только вычислить, но без гарантий, что после какого-нибудь обновления Тифона он не поменяется. В исходниках Тифона добавь RedirectMemoryBlock на MonTable2, чтобы он передавался Эре, а потом как его взять из Эры - наверное знаешь. 144
13.02.2021 01:46
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1348
Post: #454

XEPOMAHT, как взять его потом, я и вправду знаю, но... К сожалению, я не знаю, как воспользоваться RedirectMemoryBlock в условиях ассемблера. Правда, у меня имеется иная идея: что, если на месте какой-то не используемой больше функции создать новую, которая будет попросту записывать в какой-то регистр адрес таблицы? Я тогда смогу вызвать ее где-то ещё, сохранив при этом предыдущее значение, хранящееся в регистре, куда-нибудь скопировать указатель, а затем восстановить данные в том регистре, куда я его сохранял.


Создал новый глобальный мод: WoG Ultra Edition
(This post was last modified: 13.02.2021 13:15 by Raistlin.)
13.02.2021 13:13
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16488
Post: #455

Посмотреть в исходники Тифона 2.7z можно. Я тоже не знал, но нагуглил же.

Code:
section '.idata' data readable
data import
; Импортируемые процедуры
  library kernel32, 'kernel32.dll',\
    era, 'era.dll'

  import kernel32,\
      CreateFileA,'CreateFileA',\
      GetFileSize, 'GetFileSize',\
      VirtualAlloc, 'VirtualAlloc',\
      ReadFile, 'ReadFile',\
      CloseHandle, 'CloseHandle',\
      VirtualFree, 'VirtualFree',\
      WriteFile, 'WriteFile'

  import era,\
    RegisterHandler, 'RegisterHandler',\
    RedirectMemoryBlock, 'RedirectMemoryBlock'

Code:
stdcall [RedirectMemoryBlock], 7D0C90h, 196 * sizeof._Creature_, MonTable


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

Posts: 1348
Post: #456

Berserker, спасибо! Не могли бы Вы только подсказать мне, что находится по адресу 7D0C90?


Создал новый глобальный мод: WoG Ultra Edition
13.02.2021 18:11
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16488
Post: #457

MonTable. То есть основная таблица монстров. Адрес воговский. ВоГ расширил содовскую таблицу, а МОР — воговскую.


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

Posts: 1348
Post: #458

Все, теперь понял. Собственно, то, что это воговский адрес, я знаю, проблема была в том, что я пока не разобрался, как находить нужное в воговской секции кода.
Еще раз спасибо за пример, это, правда, не совсем то, чего мне было нужно, но, кажется, я знаю, как мне быть. Я имел ввиду вот эту таблицу:

Делать надо вот так?
Code:
stdcall [RedirectMemoryBlock], (свободный адрес, за которым идет необходимое колличество пустого пространства), 59000, MonTable2


Создал новый глобальный мод: WoG Ultra Edition
13.02.2021 23:26
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16488
Post: #459

Да.


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

Posts: 1348
Post: #460

Хорошо. Кстати, а где можно найти 59000 байт пустого пространства? Вот я ткнул наугад на адрес 023474B2, как я могу быть уверенным, что в этом месте ничего нет? Или я не могу?


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

Posts: 16488
Post: #461

ОМГ. Ты либо объявляешь обычную статическую/глобальную переменную как часть статической памяти DLL, либо динамически её выделяешь через что угодно от геройской функции MAlloc до VirtualAlloc. Но тут имеет смысл статически новую таблицу объявить. MonTable2.


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

Posts: 1348
Post: #462

Berserker, по идее, эта таблица и добавлена как статическая, но впрямую она доступна, насколько я понимаю, только внутри самого Тифона. Мне же надо прочитать ее содержимое в собственном плагине, который написан уже не ассемблере, а на С++.
В общем, я отправляюсь гуглить - надеюсь удастся найти решение.


Создал новый глобальный мод: WoG Ultra Edition
14.02.2021 04:51
Find all posts by this user Quote this message in a reply
V_Maiko Offline

Posts: 606
Post: #463

Raistlin, What do you plan to do with MonTable2 in Typhon? Discover new addresses for UN:C?
(This post was last modified: 14.02.2021 05:24 by V_Maiko.)
14.02.2021 05:21
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1348
Post: #464

No, I just want to add a chance for Preventive Counterstrike. It should not work always, but I don't know how to do it using only Assembler. If I will not find a way, I will simply recreate this ability using C++.


Создал новый глобальный мод: WoG Ultra Edition
14.02.2021 13:54
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16488
Post: #465

Raistlin,
В Тифоне делаем так:

stdcall [RedirectMemoryBlock], оригинальный_адрес_MonTable2_в_воге, 59000, MonTable2

В твоём плагине делаем так: в событии OnAfterStructRelocations получаем адрес таблицы по GetRealAddr(оригинальный_адрес_MonTable2_в_воге).


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