Во многом, из исследовательского интереса, мне хочется сделать реализацию некоторых важных функций, которые на мемхаке работают излишне медленно или просто ужасно, внутри кастомной dll, которая будет подгружаться по ходу игры с помощью мемхака.
При этом, мне не до конца понятно, как реализованные в такой dll функции я смогу использовать в своем коде на jass, избегая непростительно медленного использования call функций из мемхака.
Пример:
есть функция мемхака
function ReadRealMemory takes integer address returns integer
Она довольно сложна и тяжела. Хочу себе такую же, но работающую в рамках моей кастомной dll.
Еще мне малосимпотично реализовывать хуки на мемхаке.
И вопрос, как же все-таки получить эти нативки для удобного использования?
Я просмотрел ресурс IceFog по этой теме, но там все настолько засекречено, что я не могу перестать бояться за сохранность куков у моих игроков, кроме того мне не хочется совершать кучу не слишком простых действий с картой после каждого сохранения.

Принятый ответ

goodlyhero, ну уже вроде делали с перехватом кастом функций или хештаблицу, wenhao же видел? Там китайская сборка мемхака и 4 библиотеки.

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

Простые R\W функции то можно не трогать, там все норм. А вот конверты, хуки, вызовы из game.dll - это вот как раз требует нативного решения, ибо довольно медленное.

Ну и думаю ивенты без норм декларации нативок для триггеров не добавить...
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
3 года назад
0
0
32
3 года назад
0
Ну тебе нужно задекларировать нативку и в своем коде сделать, заготовку,
native function RMem takes integer returns integer
Ну и подготовить код. Сам RMем то вполне быстрый, долгие - конверты адрессов и хендлов. всякие stdCall, CallFast функции, которые запускают функции внутри гейм длл или другой библиотеке из жасс кода, вот они реально упорото медленные. По этой причине сложные фишки с фреймами на мемхаке такие тормознутые, там перманентный вызов кучи функций из гейм длл.
Само же чтение и запись в память сравнительно быстрое, да не шибко фаст, все же это не нативки, но добится ими проблем (если вы не придурок, который хочет выстрелить себе в ногу) вроде подвисания потока или проблем с производительностью в реальном коде нельзя, в отличии от выше упомянутых функций.
0
8
3 года назад
0
Ну тебе нужно задекларировать нативку и в своем коде сделать, заготовку,
При наличии такого объявления, варкрафт начинает злобно ругаться и валиться с примерно таким текстом:
unregistered native function on line 553 (war3map.j)
Получается, если я хочу использовать эти функции в war3map.j, я должен их каким-то образом загрузить заранее?
0
32
3 года назад
0
goodlyhero, ну как в либе IceFog'а, либо лаунчер как у айкапа. Хотя можно взять левую ИИ нативку, взять её адресс и назначить ей твои дейсвия. К примеру Rmem.
0
8
3 года назад
0
ну как в либе IceFog'а, либо лаунчер как у айкапа. Хотя можно взять левую ИИ нативку, взять её адресс и назначить ей твои дейсвия. К примеру Rmem.
Печально, но я недавно придумал Уууууу костыль, использовать мне его не очень нравится, но можно создать jass функцию с названием, совпадающим с названием нативки и подменить в функции её вызывающей вызов обычной функции на вызов нативки, которую мы предварительно зарегистрировали. Из плюсов - нативку не надо объявлять, из минусов - их добавления ужасно.
Загруженные файлы
1
32
3 года назад
1
goodlyhero, ну уже вроде делали с перехватом кастом функций или хештаблицу, wenhao же видел? Там китайская сборка мемхака и 4 библиотеки.

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

Простые R\W функции то можно не трогать, там все норм. А вот конверты, хуки, вызовы из game.dll - это вот как раз требует нативного решения, ибо довольно медленное.

Ну и думаю ивенты без норм декларации нативок для триггеров не добавить...
Загруженные файлы
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.