ENAleksey #1 - 6 дней назад (отредактировано ) 4

» RenderEdge / [RenderEdge] Memory Hack

Я только что нашёл способ редактирования подсказок! Функция устанавливает координаты правого нижнего угла, позже я это исправлю.
function EditTooltip takes integer anchor, real offsetX, real offsetY returns nothing
    local integer pTooltipFrame = fast_call1(address_GameBase + 0x337240, 0)
    local integer pRootFrame = GetRootFrame()

    call SetFramePoint(pTooltipFrame, ANCHOR_BOTTOMRIGHT, pRootFrame, anchor, offsetX, -offsetY)
endfunction
call EditTooltip(ANCHOR_RIGHT, FromPixelX(-100), FromPixelY(160))
прикреплены файлы
ENAleksey #2 - 2 недели назад 0

» Мастерская Психа / Работа с RenderEdge Experimental

Привет, благодарю за интерес к RenderEdge :)
Если нужно, могу скинуть последнюю версию, просто напиши в ЛС.
ENAleksey #3 - 3 недели назад (отредактировано ) 5

» RenderEdge / [RenderEdge] Основная версия

что там с HBAO?)
Я его, вроде бы, даже ни разу и не упоминал.
Однако, в воскресенье я реализовал Scalable Ambient Obscurance из заменил им SSAO:
Также я избавился от отставания AO текстуры от объектов при движении камеры, но при этом лишился учёта влияния освещения на AO и поддержки unshaded моделей:

Temporal Anti-Aliasing я реализовал, но он хорошо работает только при неподвижной картинке, при движении камеры или объектов появляется эффект ghosting'а. Чтобы от этого избавиться нужно добавлять поддержку буфера скоростей. Я смог его воссоздать, однако только с помощью хаков, ghosting пропал, но появились небольшие артефакты в виде полосок на экране.
Вот пример на статике без учёта скоростей (смотреть в исходном размере):
В основном разница заметна только при присутствии specular aliasing:
прикреплены файлы
ENAleksey #4 - 4 недели назад 0

» RenderEdge / [RenderEdge] Основная версия

Viktor44, если вы используете RenderEdge только ради поддержки широкоформатных мониторов, то лучше скачать специальную версию, она поддерживает все последние патчи:
ENAleksey #5 - 4 недели назад 0

» RenderEdge / [RenderEdge] Основная версия

Viktor44, нужно запустить RenderEdge.exe с аргументом classic.

Arctide, Vitalik8, попробуйте эту версию:
прикреплены файлы
ENAleksey #6 - 1 месяц назад 0
ENAleksey #7 - 1 месяц назад (отредактировано ) 3

» RenderEdge / [RenderEdge] Экспериментальная версия

mishanka122, да вот, недавно опять начал работать над экспериментальной версией, осталось ещё кое-что доделать, и можно будет выкладывать.
А вот несколько скриншотов из Edemium:
прикреплены файлы
ENAleksey #8 - 1 месяц назад 0

» WarCraft 3 / MemHack

Самую последнюю версию можно найти здесь:
ENAleksey #9 - 2 месяца назад (отредактировано ) 10

» RenderEdge / [RenderEdge] Основная версия

AlakFrost, вряд ли. Сейчас я потихоньку добавляю новые пост-эффекты и дорабатываю старые. Недавно обновил перехватчик вызовов функций d3d8: общая оптимизация, и теперь точно не должно быть вылетов игры (например, при переключении режима V-Sync), но вместе с этим запорол тени: после сворачивания игры они перестают работать. Также, починил Dithering, оказывается, до этого он работал совсем не так, как нужно. Улучшил эффект Bloom. Сейчас пытаюсь внедрить Temporal Anti-Aliasing, очень уж он мне понравился.
Вот просто несколько новых скриншотов:
Temporal Anti-Aliasing в Unreal Engine 4:
прикреплены файлы
ENAleksey #10 - 2 месяца назад 2

» Проклятие судьбы - Curse of Fate / Все по проекту CoF

А какие планы насчёт боевой системы?
ENAleksey #11 - 2 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Основная версия

AlakFrost, вы темой ошиблись. Я не отрицаю наличие проблемы, но она присутствует только в экспериментальной версии.
Эта версия крайне нестабильна. Я уже давно не выкладывал обновлений, так как толком ничего нового не сделал. Насчёт ФПС я уже высказывался в данном комментарии, с тех пор ничего не изменилось.
ENAleksey #12 - 2 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Основная версия

AlakFrost, проблемы с фпс никогда и не было.
ENAleksey #13 - 2 месяца назад 0

» RenderEdge / [RenderEdge] Memory Hack

не будет ли барахлить если я возму библиотеку у основного вызов функции??
Вы хотите получать адреса функций из основной версии RenderEdge при помощи GetModuleProcAddress? Так сделать не получится, так как в основной версии используется совершенно другой способ вызова функций.
ENAleksey #14 - 2 месяца назад (отредактировано ) 14

» RenderEdge / [RenderEdge] Основная версия

Tiodor:
а добавлять кнопки дополнительные на интерфейс таким способом нельзя?
ну кроме всяких юнитов и т.д, чисто кнопка на интерфейс
local CButton button = GUI.Button(x, y, width, height)
call button.SetTexture("Texture.blp")
call button.SetCallback(function CallbackFunction)

Убран лимит на размер 512p в .blp тексурах

Blp текстура 4096x4096:

CtrlSetZOrder

native CtrlSetZOrder takes integer id, integer iZOrder returns nothing
Элементы интерфейса с большими значениями ZOrder будут рисовать над элементами с меньшими значениями ZOrder. Элементы с тем же ZOrder будут просто рисовать в том порядке, в котором они были добавлены.

EnableAnisoFiltering

native EnableAnisoFiltering takes boolean bEnable, integer maxAnisotropy returns nothing
Устанавливает анизотропную фильтрацию текстур с уровнем анизотропии между 2 и 16.

War3GUI API

Введены новые native функции для редактирования стандартного интерфейса:
native HideInterface takes nothing returns nothing
native EditBlackBorders takes integer upperHeight, integer bottomHeight returns nothing
native EditPortrait takes integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditMinimap takes integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditCommandBarButton takes integer row, integer column, integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditHeroBarButton takes integer buttonId, integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditItemBarButton takes integer buttonId, integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditMinimapButton takes integer buttonId, integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditUpperButtonBarButton takes integer buttonId, integer anchor, integer x, integer y, integer width, integer height returns nothing
прикреплены файлы
ENAleksey #15 - 2 месяца назад 3

» RenderEdge / [RenderEdge] Основная версия

Обновление v0.2.6a

  • Убран лимит на размер 512p в .blp тексурах (спасибо Karaulov'у);
  • Добавлена новая native функция CtrlSetZOrder (порядок отрисовки элементов интерфейса);
  • Добавлена новая native функция EnableAnisoFiltering (возможность установить анизотропную фильтрацию текстур);
  • Добавлена новая native функция HideInterface;
  • Добавлены новые native функции: EditMinimap, EditCommandBarButton, EditHeroBarButton, EditItemBarButton, EditMinimapButton и EditUpperButtonBarButton;
  • Изменено название функций SetPortrait и SetBlackBorders на EditPortrait и EditBlackBorders;
  • Исправлено большое количество багов в RenderEdge_loader.dll и RenderEdge.exe;
  • Исправлен некорректный перенос строки при использовании символа "|n" во wrapped тексте;
  • Исправлено большое количество багов в GUI-системе (например, баг с функцией CtrlSetTexture при перезапуске карты);
  • Оптимизирована GUI-система. Некоторые функции переписаны с нуля;
  • Оптимизированы менеджеры шрифтов и текстур;
  • Обновлены detours.lib и libjpeg.lib до последней версии;
  • Улучшен и оптимизирован debug log.
прикреплены файлы
ENAleksey #16 - 3 месяца назад 0

» RenderEdge / [RenderEdge] Memory Hack

Tumart, разрядность никак не влияет на запуск.
ENAleksey:
Попробуй ещё установить пакет Visual C++.
А Widescreen Fix у тебя работает?
ENAleksey #17 - 3 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Memory Hack

МБ из за XP?
Скорее всего из-за этого, хотя и не должно: я собирал библиотеку в режиме совместимости с XP. Попробуй ещё установить пакет Visual C++.
А Widescreen Fix у тебя работает?

Может ещё кто-нибудь с Windows XP протестировать карту?
ENAleksey #18 - 3 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Memory Hack

Tumart, какая версия вара (работает только на 1.26a)? После запуска карты в папке с варом появился файл RenderEdge_mini.dll? Нет ли в папке с варкрафтом .mix файлов или библиотека d3d8.dll? Если есть, то попробуй убрать все .mix`ы оттуда.
ENAleksey #19 - 3 месяца назад 0

» RenderEdge / [RenderEdge] Memory Hack

Obelick, писать свою систему сохранений, как картах типа Gaias Retaliation ORPG.
ENAleksey #20 - 3 месяца назад (отредактировано ) 5

» RenderEdge / [RenderEdge] Memory Hack

Обновление v1.0.4c

  • Исправлены вылеты при загрузке сохранённой карты и перезапуске карты из игры;
  • Исправлена повторное внедрение динамической библиотеки функцией ExportAndInjectDLL, если она уже загружена.
Вылеты при сохранении карты исправить не получилось, и, возможно, уже не получится. Игра вылетает при выполнении следующего кода в функции UnlockMemory:
call ForForce(bj_FORCE_PLAYER[0], I2C(stand[GetBytecodeAddress()/4 + 3]))

FTFire, вылетает, скорее всего, из-за вызова функций из библиотеки RenderEdge, так как она либо не загружается корректно, либо ей не удаётся перехватить окно варкрафта. Попробуй последнее обновление, если будет так же вылетать, то попробуй в триггере GUI заменить функцию Init на эту, и напиши, вылетает ли игра:
private function Init takes nothing returns nothing
    call GetMouseX()
endfunction

FrigatPlay:
Так и не понял где настроить привязку к юниту полосы жизни.
С помощью этих функций ты не сможешь привязать полоски здоровья и маны к юниту, только к герою.
call EditHeroBarHealthBarPixel(0, ANCHOR_BOTTOM, healthBarStartX, healthBarStartY, healthBarWidth, healthBarHeight)
call EditHeroBarManaBarPixel(0, ANCHOR_BOTTOM, healthBarStartX, healthBarStartY + healthBarHeight + 4, healthBarWidth, healthBarHeight)
Вместо нуля пишешь номер иконки героя (от 0 до 6).
ENAleksey #21 - 3 месяца назад 0

» RenderEdge / [RenderEdge] Memory Hack

ledoed:
Можно под мультиплейр правда придётся некоторые штуки подрезать и будет норм
Да, в мультиплеере всё отлично работает, нужно только удалить триггер RenderEdge и все функции из данной библиотеки, которые используются в других триггерах.
ENAleksey #22 - 3 месяца назад 13

» RenderEdge / [RenderEdge] Memory Hack

Обновление v1.0.4b

  • Добавлены функции GetMouseTerrainX/Y/Z.
ENAleksey #23 - 3 месяца назад 0

» RenderEdge / [RenderEdge] Memory Hack

Daniil18, про синхронизацию ничего сказать не могу, так как ни разу её не делал из-за ненадобности.
ENAleksey #24 - 3 месяца назад (отредактировано ) 3

» RenderEdge / [RenderEdge] Memory Hack

Обновление v1.0.4a

  • Добавлена демонстрация продвинутого управления камерой (Ctrl + перемещение мыши с зажатой ПКМ - вращение камеры; Ctrl + вращение колёсика мыши - изменение расстояния камеры до цели);
  • Изменено название библиотеки Demo на GUI.
ENAleksey #25 - 3 месяца назад 0

» RenderEdge / [RenderEdge] Основная версия

Vitalik8, какое отношение этот функционал имеет к моей библиотеке? RenderEdge - это библиотека, нацеленная в первую очередь на модификацию графической составляющей игры.
ENAleksey #26 - 3 месяца назад (отредактировано ) 5

» RenderEdge / [RenderEdge] Memory Hack

FrigatPlay, можно, но я не знаю как.

Обновление v1.0.3b

  • Изменены названия переменных в библиотеке InjectDLL;
  • Изменено название библиотеки InjectDLL на FileSystem;
  • Изменено название функции ExportDllFromMpqAndInjectToWarcraft на ExportAndInjectDLL.
ENAleksey #27 - 3 месяца назад 0

» RenderEdge / [RenderEdge] Memory Hack

FrigatPlay, использование функций редактирования интерфейса происходит в триггере Demo в функции EditStandardInterface.
Отображение подсказок обязательно будет, как только я пойму, как это сделать.
ENAleksey #28 - 3 месяца назад 0

» RenderEdge / [RenderEdge] Memory Hack

Андреич, так в этой версии есть все нужные функции для редактирования стандартного интерфейса, а в основной версии эти же функции плюс возможность создать полностью свой интерфейс. Напиши поподробнее, что именно хочешь сделать с интерфейсом?
ENAleksey #29 - 3 месяца назад (отредактировано ) 6

» RenderEdge / [RenderEdge] Memory Hack

Обновление v1.0.3a

  • Добавлены функции для конвертации переменных типа trigger в integer и обратно;
  • Добавлены функции GetFrameTextAddress, GetFrameItemAddress, GetFrameSkinAddress, GetFrameTextString и SetFrameTextAddress;
  • Обновлены функции GetCommandBarButton и GetItemBarButton, добавлена функция GetHeroBarButton;
  • Функция EditBlackBorders теперь принимает высоту верхней и нижней полоски вместо координат;
  • Функция EditCommandBarButton теперь принимает колонку и столбец кнопки вместо buttonId;
  • Добавлены функции EditHeroBarButton, EditHeroBarHealthBar и EditHeroBarManaBar;
  • Добавлены новые функции в RenderEdge_mini.dll;
  • Добавлен фикс растянутых полосок здоровья;
  • Изменён способ получения окна варкрафта, что должно исправить некоторые проблемы с функциями типа GetWindowX, GetWindowWidth и т.п.;
  • Теперь код должен компилироваться при включённом cJass.
Новые функции в RenderEdge API:
function GetWheelDelta takes nothing returns integer
function GetTriggerKey takes nothing returns integer
function IsKeyDown takes integer iKey returns boolean
function BlockMouse takes boolean bBlock returns nothing
function SetMousePos takes integer x, integer y returns nothing
function TriggerRegisterMouseMoveEvent takes trigger trig returns nothing
function TriggerRegisterMouseWheelEvent takes trigger trig returns nothing
function TriggerRegisterMouseEvent takes trigger trig, integer iKey, integer state returns nothing
function TriggerRegisterKeyEvent takes trigger trig, integer iKey, integer state returns nothing

FTFire, теперь можно:
function OnKeyDown takes nothing returns nothing
	local integer getKey = GetTriggerKey()
	if (getKey == 'W') then
		// - - -
	elseif (getKey == 'S') then
		// - - -
	endif
endfunction

function Init takes nothing returns nothing
	local trigger temp = CreateTrigger()
	call TriggerRegisterKeyEvent(temp, KEY_Any, EVENT_Down)
	call TriggerAddAction(temp, function OnKeyDown)
endfunction

Андреич, зачем использовать Memory Hack и основную версию RenderEdge вместе? Нужно использовать только что-то одно.
прикреплены файлы
ENAleksey #30 - 3 месяца назад 0

» RenderEdge / [RenderEdge] Memory Hack

FrigatPlay, перед запуском сохраняли карту? Нужно обязательно сохранять перед тем, как нажать на кнопку проверки карты.
ENAleksey #31 - 4 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Memory Hack

ввести заморозку курсора в мемхак
Добавлю функцию SetMousePos(x, y).
ledoed:
в мультиплеере работает не на всех компах, а точнее они вылетают
Можешь попробовать полностью удалить функции RenderEdge из карты и ещё раз протестировать в мультиплеере? Если не поможет, то можно попробовать удалить из карты RenderEdge_mini.dll.
Скорее всего это из-за того, как я отлавливаю экземпляр окна в RenderEdge_mini.dll. С эти также связаны проблемы, при которых функции из .dll возвращают 0, если во время загрузки карты свернуть игру или переключиться на другое окно. Уже исправил, в следующей версии подобных проблем не будет.
JaBeN_Симфер:
Было бы полезно отображать аттачи на портрете.
Это вряд ли это можно реализовать с помощью мемхака.
FrigatPlay:
Описание кнопок никак нельзя вернуть?
И я так понял что после установки библиотеки уже пользоватся GUI невозможно.
Я пока не нашёл адрес фрейма, отвечающего за всплывающие подсказки. В каком смысле невозможно пользоваться GUI, что вы имеете ввиду под этой аббревиатурой? Графические триггеры? Если да, то можно.
mishanka122:
чет на новой версии выскакивает такое
На предыдущей ошибки не было? Это ошибка компилятора PJass, вы точно скачали экспериментальную версию из поста? Выключен ли cJass?
Owain:
Версии новее 1.26а поддерживаются?
Только 1.26a.
Owain:
А расположение текста и портрета в cinematic mode возможно изменить?
Портрет изменяется той же функцией, что и в игровом режиме. А вот фрейм текста нужно сначала найти.
ENAleksey #32 - 4 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Memory Hack

Ige, добавлю в следующую версию.
set address_GetFrameTextAddress = address_GameBase + 0x61C7B0

function GetFrameTextAddress takes string name, integer id returns integer
	return fast_call2(address_GetFrameTextAddress, GetStringAddress(name), id)
endfunction
Deleted.
Что-то я сглупил: написал функцию для скрытия курсора, а оказалось, что она полностью идентична стандартной функции EnableUserControl.
ENAleksey #33 - 4 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Memory Hack

function GetHeroBarButton takes integer id returns integer
Да, позже добавлю.
Ige:
function GetUpperButtonBarText takes integer id returns integer
function GetResourceBarText takes integer id returns integer
function GetResourceBarIcon takes integer id returns integer
function GetInfoBarText takes integer id returns integer
function GetInfoBarIcon takes integer id returns integer
А вот эти фреймы я пока не искал.
Кстати, могу выложить .idb файл game.dll для IDA Pro, вдруг кто-нибудь захочет помочь искать новые адреса. Я уже восстановил некоторые имена функций, переменных, структуры.
Построение основного интерфейса происходит в функции BuildUI.
ENAleksey #34 - 4 месяца назад (отредактировано ) 1

» RenderEdge / [RenderEdge] Memory Hack

Следующим шагом будет добавление следующих функций в RenderEdge_mini.dll:
» раскрыть
function GetMouseTerrainX takes nothing returns real
function GetMouseTerrainY takes nothing returns real
function GetMouseTerrainZ takes nothing returns real
function IsMouseOverUI takes nothing returns boolean
function BlockMouse takes boolean bBlock returns nothing
function GetWheelDelta takes nothing returns integer
function SetMousePos takes integer x, integer y returns nothing
function TriggerRegisterMouseWheelEvent takes trigger trig returns nothing
function TriggerRegisterMouseMoveEvent takes trigger trig returns nothing
function TriggerRegisterMouseEvent takes trigger trig, integer iButton, integer state returns nothing

function GetTriggerKey takes nothing returns integer
function IsKeyDown takes integer iKey returns boolean
function TriggerRegisterKeyEvent takes trigger trig, integer iKey, integer state returns nothing

function TriggerRegisterWindowResizeEvent takes trigger trig returns nothing
ENAleksey #35 - 4 месяца назад (отредактировано ) 10

» RenderEdge / [RenderEdge] Memory Hack

Обновление v1.0.2a

  • Добавлены функции для получения данных о фрейме;
  • Добавлена функция для полного скрытия интерфейса;
  • Добавлены функции для редактирования кнопок приказов, предметов, миникарты и др.;
  • Улучшены функции для редактирования миникарты, портрета и границ игрового поля;
  • Добавлены названия фреймов для использования функцией ReadGameUIStruct;
  • Изменены названия переменных и функций на более понятные;
  • Все переменные-адреса теперь инициализируются в функции Init.
прикреплены файлы
ENAleksey #36 - 4 месяца назад (отредактировано ) 5

» RenderEdge / [RenderEdge] Memory Hack

Ige, нет, сделать произвольную форму нельзя, только прямоугольник.
А вот и функции для чтения данных о фрейме:
» раскрыть
function GetFrameWidth takes integer pFrame returns real
    return GetRealFromMemory(Memory[pFrame/4 + 22])
endfunction
    
function GetFrameHeight takes integer pFrame returns real
    return GetRealFromMemory(Memory[pFrame/4 + 23])
endfunction
    
function GetFramePointParent takes integer pFrame, integer point returns integer
    return Memory[Memory[pFrame/4 + point + 2]/4 + 1]
endfunction
    
function GetFramePointRelativePoint takes integer pFrame, integer point returns integer
    return Memory[Memory[pFrame/4 + point + 2]/4 + 2]
endfunction
    
function GetFramePointX takes integer pFrame, integer point returns real
    return GetRealFromMemory(Memory[Memory[pFrame/4 + point + 2]/4 + 3])
endfunction
    
function GetFramePointY takes integer pFrame, integer point returns real
    return GetRealFromMemory(Memory[Memory[pFrame/4 + point + 2]/4 + 4])
endfunction
function GetRealFromMemory takes integer i returns real
    return cleanReal(indexToReal(i))
endfunction
    
function SetRealIntoMemory takes real r returns integer
    return cleanInt(realToIndex(r))
endfunction
ENAleksey #37 - 4 месяца назад 6

» RenderEdge / [RenderEdge] Memory Hack

Ige, скоро добавлю новые функции, включая GetFrameWidth/Height, остальные тоже попробую добавить.
А вот этого пока в планах нет:
Ige:
function SetFrameFont takes string font returns nothing
function SetFrameFontColor takes integer rgba returns nothing 0xRRGGBBAA - ну вы поняли)
function SetFrameFontColor takes integer red, integer green, integer blue, integer alpha returns nothing
function SetFrameTextLength takes integer returns nothing длина текста во фрейме
Сейчас я работаю над основной версией RenderEdge, добавляю функции для редактирования стандартного интерфейса, уже готовы следующие функции:
native HideInterface takes nothing returns nothing
native EditBlackBorders takes real upper, real bottom returns nothing
native EditPortrait takes integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditMinimap takes integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditCommandPanelButton takes integer buttonId, integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditItemPanelButton takes integer buttonId, integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditMinimapButton takes integer buttonId, integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditUpperButtonBarButton takes integer buttonId, integer anchor, integer x, integer y, integer width, integer height returns nothing
А вот результат их использования:
В Memory Hack функционал будет намного гибче.
прикреплены файлы
ENAleksey #38 - 4 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Экспериментальная версия

ledoed, нет, можно посмотреть лишь, сколько всего мешей на сцене.
Кристофер, тени пока работают очень плохо. Их лучше не включать, так как они используют очень много оперативной памяти, и при достижении определённого лимита игра вылетает.
Тени можно сделать менее тёмными, путём редактирования Ambient освещения на вкладке Sky Light.
ENAleksey #39 - 4 месяца назад 0

» RenderEdge / [RenderEdge] Основная версия

Возможно, проблема может быть вызвана .mix файлам в папке с варкрафтом, попробуй убрать их оттуда.
ENAleksey #40 - 4 месяца назад 0

» RenderEdge / [RenderEdge] Основная версия

Vitalik8, после переноса файлов в одну папку чёрный экран так же появляется?
ENAleksey #41 - 4 месяца назад 0

» RenderEdge / [RenderEdge] Основная версия

Vitalik8, а где RenderEdge.exe? Лучше все файлы RenderEdge поместить в отдельную папку. И ещё, скинь, пожалуйста, RenderEdge.log.
ENAleksey #42 - 4 месяца назад 0

» RenderEdge / [RenderEdge] Основная версия

Vitalik8, покажи, пожалуйста, скрин папки с варкрафтом.
ENAleksey #43 - 4 месяца назад (отредактировано ) 2

» RenderEdge / [RenderEdge] Основная версия

Nelloy:
Возможно ли встроить весь GUI API внутрь карты? То есть без отдельной библиотеки или с распаковкой из самой карты
Караулов уже сделал это в своей библиотеке, нужно просто скачать её, импортировать себе в карту, а затем извлечь и загрузить её с помощью Memory Hack:
Как вариант выгружать библиотеку средствами мемхака, а нативки вызывать неявно через ExecuteFunc.
Можно в динамической библиотеке экспортировать нужные функции, а потом выполнять их как-то так:
address_GetWindowX = GetModuleProcAddress("RenderEdge_mini.dll", "GetWindowX")

function GetWindowX takes nothing returns integer
    return std_call1(address_GetWindowX, 0)
endfunction
ENAleksey #44 - 4 месяца назад (отредактировано ) 6

» RenderEdge / [RenderEdge] Memory Hack

Обновление v1.0.1a

  • Добавлено внедрение динамической библиотеки RenderEdge_mini.dll (извлекается из карты в папку с варкрафтом);
  • Widescreen Fix;
  • Добавлена функция для редактирования миникарты.
Функции из RenderEdge_mini.dll:
function GetWindowX takes nothing returns integer
function GetWindowY takes nothing returns integer
function GetWindowWidth takes nothing returns integer
function GetWindowHeight takes nothing returns integer
function GetMouseX takes nothing returns integer
function GetMouseY takes nothing returns integer
А вот некоторые фреймы, которые я нашёл:
ReadGameUIArray(239) + 180 // Black Borders
ReadGameUIArray(240) + 180 // Minimap
ReadGameUIArray(241)       // Unit InfoPanel
ReadGameUIArray(243)       // ResourceBarFrame
ReadGameUIArray(244)       // UpperButtonBarFrame
ReadGameUIArray(247)       // ?
ReadGameUIArray(248)       // IdlePeon
ReadGameUIArray(253) + 180 // Portrait
ReadGameUIArray(255) + 180 // ?
ReadGameUIArray(251)       // WorldFrameChatMessage

ReadGameUIArray(258)       // Minimap button 1
ReadGameUIArray(259)       // Minimap button 2
ReadGameUIArray(260)       // Minimap button 3
ReadGameUIArray(261)       // Minimap button 4
ReadGameUIArray(262)       // Minimap button 5
прикреплены файлы
ENAleksey #45 - 4 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Memory Hack

FTFire, кода нет, как я уже писал, нужно искать первый аргумент функции SetFramePoint либо в IDA Pro, либо методом перебора значений в функции ReadGameUIArray.
ENAleksey #46 - 4 месяца назад (отредактировано ) 1

» RenderEdge / [RenderEdge] Memory Hack

Редактирование миникарты:
function SetMinimap takes real x, real y, real size returns nothing
    local integer pMinimapFrame = ReadGameUIArray(240) + 180
    local integer pParentFrame = ReadGameUIArray(263) + 180

    call SetFramePoint(pMinimapFrame, FRAME_BOTTOMLEFT, pParentFrame, FRAME_BOTTOMLEFT, x, 0.6 - y - size)
    call SetFramePoint(pMinimapFrame, FRAME_TOPRIGHT, pParentFrame, FRAME_BOTTOMLEFT, x + size, 0.6 - y)
endfunction
Карту обновлю позже, после того, как добавлю демонстрацию внедрения сторонних динамических библиотек.
прикреплены файлы
ENAleksey #47 - 4 месяца назад 0

» RenderEdge / [RenderEdge] Основная версия

FTFire, лучше задавать вопросы относительно MemoryHack в соответствующей теме.
Вот код для миникарты:
function SetMinimap takes real x, real y, real size returns nothing
    local integer pMinimapFrame = ReadGameUIArray(240) + 180
    local integer pParentFrame = ReadGameUIArray(263) + 180

    call SetFramePoint(pMinimapFrame, FRAME_BOTTOMLEFT, pParentFrame, FRAME_BOTTOMLEFT, x, 0.6 - y - size)
    call SetFramePoint(pMinimapFrame, FRAME_TOPRIGHT, pParentFrame, FRAME_BOTTOMLEFT, x + size, 0.6 - y)
endfunction
Про инвентарь не знаю, нужно искать либо в IDA Pro, либо методом подбора значения в функции ReadGameUIArray.
ENAleksey #48 - 4 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Memory Hack

FTFire, для компиляции кода нужно использовать экспериментальную версию PJass: Скачать
ENAleksey #50 - 4 месяца назад (отредактировано ) 3

» RenderEdge / [RenderEdge] Основная версия

NanO, Clamp, готово. Работает только на версии 1.26a: