Версия v1.0.5a
Дополнительные функции для редактирования стандартного интерфейса Варкрафта
212 45.3K
2
Ige, Слушай можешь сделать от слежку WASD клавиш и/или левой кнопки мышки? Скажем как в обычном РПГ нажимаешь ЛКМ и воспроизводится атака.
26
Vitalik8:
Ige, если зайти за другого игрока игра вылетает
А как можна узнать какой игрок нажал на кнопку?
GetLocalPlayer() но не поможет в большинстве случаев, так как нужна синхронизация, если идёт взаимодействие с объектами.
3
Ige, если зайти за другого игрока игра вылетает
А как можна узнать какой игрок нажал на кнопку?
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, можно укажи отрицательный от текушего размера блока в обратный и он уйдет
Версия v0.1.3a
Больше не поддерживается, используйте основную версию.
Экспериментальная версия графической модификации RenderEdge для игры WarCraft III.
207 116.1K
13
DrTema, да, к тому же с каждой новой версией всё сложнее декомпилировать и находить нужные функции в библиотеках игры.
3
А почему не хотите делать поддержку более высоких версий? Слишком много работы?