Версия v0.1.3a
Больше не поддерживается, используйте основную версию.
Экспериментальная версия графической модификации RenderEdge для игры WarCraft III.
207 115 494
13
DrTema, да, к тому же с каждой новой версией всё сложнее декомпилировать и находить нужные функции в библиотеках игры.
3
А почему не хотите делать поддержку более высоких версий? Слишком много работы?
Версия v1.0.5a
Дополнительные функции для редактирования стандартного интерфейса Варкрафта
212 45 062
7
ClotPh, карта из шапки + код из сообщения, вроде бы ничего сложного :)
Держи
Загруженные файлы
21
Ige, есть карта, где все функциями настроено так, как на скрине?
7
дополнение к прошлому сообщению и несколько новых ф-ций:
// *ВАЖНО* перед манипулированием фреймом здоровья/маны нужно обязательно создать эти фреймы, просто триггерно выделив 1 раз любую боевую единицу и обязательно всем живым игрокам.
function GetHealthPointsFrame takes nothing returns integer // возвращает адрес фрейма очков здоровья
function GetManaPointsFrame takes nothing returns integer // возвращает адрес фрейма очков маны
function GetBuffBarButton takes integer id returns integer // возвращает адрес фрейма заклинания (баффа); id принимает значения 0..7

// готовые ф-ции
function EditHealthPointsFrame takes integer anchor, real offsetX, real offsetY returns nothing
function EditManaPointsFrame takes integer anchor, real offsetX, real offsetY returns nothing
function EditBuffBarButton takes integer buttonId, integer anchor, real offsetX, real offsetY, real width, real height returns nothing
сам код
function GetHealthPointsFrame takes nothing returns integer
    return Memory[ReadGameUIStruct(FRAME_Portrait)/4 + 144]
endfunction

function GetManaPointsFrame takes nothing returns integer
    return Memory[ReadGameUIStruct(FRAME_Portrait)/4 + 145]
endfunction

function GetBuffBarButton takes integer id returns integer
    return Memory[Memory[Memory[ReadGameUIStruct(FRAME_CommandBar)/4 + 85]/4 + 20]/4 + id]
endfunction

// =================================================

function EditHealthPointsFrame takes integer anchor, real offsetX, real offsetY returns nothing
    local integer pHealthPointsFrame = GetHealthPointsFrame()
    local integer pRootFrame = GetRootFrame()

    call SetFramePoint(pHealthPointsFrame, ANCHOR_TOPLEFT, pRootFrame, anchor, offsetX, offsetY)
endfunction

function EditManaPointsFrame takes integer anchor, real offsetX, real offsetY returns nothing
    local integer pManaPointsFrame = GetManaPointsFrame()
    local integer pRootFrame = GetRootFrame()

    call SetFramePoint(pManaPointsFrame, ANCHOR_TOPLEFT, pRootFrame, anchor, offsetX, offsetY)
endfunction

function EditBuffBarButton takes integer buttonId, integer anchor, real offsetX, real offsetY, real width, real height returns nothing
    local integer pButtonFrame = GetBuffBarButton(buttonId)
    local integer pRootFrame = GetRootFrame()

    if (width >= 0) then
        call SetFrameWidth(pButtonFrame, width)
    endif
    if (height >= 0) then
        call SetFrameHeight(pButtonFrame, height)
    endif

    call SetFramePoint(pButtonFrame, ANCHOR_TOPLEFT, pRootFrame, anchor, offsetX, offsetY)
endfunction
пример
	local real healthPointsX = FromPixelX(5)
	local real healthPointsY = FromPixelY(-175)
	local real manaPointsX   = FromPixelX(5)
	local real manaPointsY   = FromPixelY(-195)

	local real buffBarButtonStartX = FromPixelX(160)
	local real buffBarButtonStartY = FromPixelX(240)
	local real buffBarButtonDeltaX = FromPixelX(-40)
        
	call EditHealthPointsFrame(ANCHOR_TOPLEFT, healthPointsX, healthPointsY)
	call EditManaPointsFrame(ANCHOR_TOPLEFT, manaPointsX, manaPointsY)

	call EditBuffBarButton(0, ANCHOR_BOTTOM, buffBarButtonStartX + buffBarButtonDeltaX*0, buffBarButtonStartY, -1, -1) //дабы избежать изменения ширины/высоты, нужно указать отрицательное значение
	call EditBuffBarButton(1, ANCHOR_BOTTOM, buffBarButtonStartX + buffBarButtonDeltaX*1, buffBarButtonStartY, -1, -1)
	call EditBuffBarButton(2, ANCHOR_BOTTOM, buffBarButtonStartX + buffBarButtonDeltaX*2, buffBarButtonStartY, -1, -1)
	call EditBuffBarButton(3, ANCHOR_BOTTOM, buffBarButtonStartX + buffBarButtonDeltaX*3, buffBarButtonStartY, -1, -1)
	call EditBuffBarButton(4, ANCHOR_BOTTOM, buffBarButtonStartX + buffBarButtonDeltaX*4, buffBarButtonStartY, -1, -1)
	call EditBuffBarButton(5, ANCHOR_BOTTOM, buffBarButtonStartX + buffBarButtonDeltaX*5, buffBarButtonStartY, -1, -1)
	call EditBuffBarButton(6, ANCHOR_BOTTOM, buffBarButtonStartX + buffBarButtonDeltaX*6, buffBarButtonStartY, -1, -1)
	call EditBuffBarButton(7, ANCHOR_BOTTOM, buffBarButtonStartX + buffBarButtonDeltaX*0, buffBarButtonStartY, -1, -1)
22
Venommm, можно укажи отрицательный от текушего размера блока в обратный и он уйдет
18
Можно ли как-то скрывать\перемещать за камеру интерфейс\часть интерфейса уже во время игры?
Данная тема предназначена для демонстрации и обсуждения работ, созданных с использованием графических улучшений экспериментальной версии RenderEdge.
45 11 303
13
Jack-of-shadow, да, только все объекты используют одни и те же параметры шероховатости и одну карту нормалей. Если бы я нашёл способ устанавливать значения для каждого объекта по отдельности, смотрелось бы гораздо лучше.
26
ENAleksey, провинция шикарна! На модельках ведь пбр полноценный не только нормальки?