ENAleksey #1 - 1 день назад 0

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

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

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

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

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

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

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

Vitalik8, покажи, пожалуйста, скрин папки с варкрафтом.
ENAleksey #5 - 2 дня назад (отредактировано ) 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 #6 - 6 дней назад (отредактировано ) 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 #7 - 1 неделю назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Memory Hack

FTFire, кода нет, как я уже писал, нужно искать первый аргумент функции SetFramePoint либо в IDA Pro, либо методом перебора значений в функции ReadGameUIArray.
ENAleksey #8 - 1 неделю назад (отредактировано ) 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 #9 - 1 неделю назад 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 #10 - 1 неделю назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Memory Hack

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

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

NanO, Clamp, готово. Работает только на версии 1.26a:
ENAleksey #13 - 2 недели назад (отредактировано ) 1

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

NanO, отдельным ресурсом выкладывать не буду, я только обновлю код из моего комментария выше (а тебе уже помогу доработать код и добавить ещё несколько нужных фич). И этот код не убирает интерфейс полностью, а только скрывает чёрные полосы, хотя скрыть весь интерфейс тоже можно (посмотрите видео в начале темы).
Но у метода, который я сейчас использую, есть недостаток - скрывается абсолютно весь интерфейс, даже меню. Потом я его доработаю и добавлю функцию для частичного скрытия интерфейса в основную версию RenderEdge. Кстати любой элемент можно переместить или скрыть с помощью функции SetFramePoint (код выше), главное - знать его адрес. Вот результат использования этой функции:
ENAleksey #14 - 2 недели назад (отредактировано ) 0

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

Clamp, карта просто не запустится, будет вылетать в меню, если в ней используются кастомные нативки, которые ещё не добавлены в варкрафт, а с помощью мемхака их можно добавить только после загрузки карты.
ENAleksey #15 - 2 недели назад 0

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

NanO, ок.
Кет, вряд ли, так как jass код начинает выполняться только при инициализации карты, следовательно dll с нативками подгрузится ещё позже, а добавлять их можно только до инициализации.
ENAleksey #16 - 2 недели назад 0

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

NanO, если не к спеху, то я могу сделать dll, которая будет содержать widescreen fix и убранные полоски. Эту библиотеку можно будет просто импортировать в карту, а с помощью мемхака подгружать её в игру. Но домой приеду только 10 августа.
Я такое уже делал, правда без удаления полосок. Посмотри 157 комментарий из этой темы, там есть карта для загрузки под спойлером.
ENAleksey #17 - 2 недели назад (отредактировано ) 3

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

Дополнительное ПО не нужно распространять вместе с картой (но можно). Просто копируем нужный код в карту и сохраняем.
ENAleksey #18 - 2 недели назад (отредактировано ) 3

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

Я уже написал Караулову, может быть ответить.
В результате пропадут чёрные полосы сверху и снизу экрана, будет выглядеть примерно так:
ENAleksey #19 - 2 недели назад 0

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

NanO, нужно как-то переписать эту строку на jass с помощью массива Memory, там вроде где-то нужно делить на 4, где-то умножать, чтобы получить указатель или разыменовать его:
local integer pBordersFrame = *((int*)GetGameUI(0, 0) + 239) + 180
Можно спросить у Лича или Караулова.
ENAleksey #20 - 3 недели назад (отредактировано ) 6

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

Clamp, NanO, доступа к компьютеру сейчас нет, когда приеду домой (10 числа), смогу точнее написать код:
» раскрыть
constant integer ANCHOR_TOPLEFT = 0
constant integer ANCHOR_TOP = 1
constant integer ANCHOR_TOPRIGHT = 2
constant integer ANCHOR_LEFT = 3
constant integer ANCHOR_CENTER = 4
constant integer ANCHOR_RIGHT = 5
constant integer ANCHOR_BOTTOMLEFT = 6
constant integer ANCHOR_BOTTOM = 7
constant integer ANCHOR_BOTTOMRIGHT = 8


integer address_SetFramePoint = GameBase + 0x606770 // 1.26a
integer address_GetGameUI = GameBase + ? // Нужно будет поискать адрес через IDA Pro


function SetFramePoint takes integer pFrame, integer point, integer pParentFrame, integer relativePoint, real offsetX, real offsetY returns nothing
	call CallThisCallWith6Args(address_SetFramePoint, pFrame, point, pParentFrame, relativePoint, cleanInt(realToIndex(offsetX)), cleanInt(realToIndex(offsetY)), 1)
endfunction

function GetGameUI takes integer a1, integer a2 returns nothing
    call CallFastCallWith2Args(address_GetGameUI, a1, a2)
endfunction


function HideBlackBorders takes nothing returns nothing
    // точно не помню, как в мемхаке работать с указателями, вроде бы, через массив Memory
	local integer pBordersFrame = Memory[Memory[GetGameUI(0, 0)/4]/4 + 239] + 180 // *((int*)GetGameUI(0, 0) + 239) + 180
	local integer pWindowFrame = GetGameUI(0, 0) + 180

	call SetFramePoint(pBordersFrame, ANCHOR_TOPRIGHT, pWindowFrame, ANCHOR_TOPRIGHT, 0.0, 0.0) // верхняя граница
	call SetFramePoint(pBordersFrame, ANCHOR_BOTTOMLEFT, pWindowFrame, ANCHOR_BOTTOMLEFT, 0.0, 0.0) // нижняя граница
endfunction
ENAleksey #21 - 3 недели назад 0

» Edemium RPG / Главная страница

Clamp, NanO, предлагаю перенести обсуждение сюда.
ENAleksey #22 - 3 недели назад (отредактировано ) 2

» Edemium RPG / Главная страница

и даже потом кнопочки кастомные сделать?
Конечно:
если придумать как передавать это всё вместе с картой и настроить твою тулу
Полностью запихнуть в карту не получится (по крайней мере, сейчас), так как способ установки хука на DirectX, который я сейчас использую, работает только при запуске игры, во время загрузки карты устанавливать уже поздно. Но скрыть полоски можно и с помощью мемхака, если нужно, скину реализацию в ЛС.
ENAleksey #23 - 3 недели назад 0

» Edemium RPG / Главная страница

TripleKor, а чего ждать? Всё же готово) Можно даже чёрные полоски убрать.
ENAleksey #24 - 4 недели назад (отредактировано ) 0

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

Кет, сначала так и хотел сделать. Да, отказался из-за того, что доступно только одно начертание, при этом шрифт ещё и выглядит не очень приятно (но это чисто мое мнение).
ENAleksey #25 - 4 недели назад (отредактировано ) 0

» WarCraft 3 / Warcraft 3: 1.28+

lll_Kirito_lll, Если честно, то я пробовал ставить старую версию, но она выдавала ошибки в коде при сохранении и вылетела в произвольный момент. А недавно поставил последнюю версию, так она вообще запустила 50 копий war3.exe + редактор карт, при этом с сообщением о невозможности запустить варкрафт. Минут пять сидел и пытался отключить все созданные процессы через диспетчер задач, при этом создавались новые. Больше запускать не пробовал. Варкрафт 1.26а.
ENAleksey #26 - 4 недели назад (отредактировано ) 0

» WarCraft 3 / Warcraft 3: 1.28+

шейп крафт
Если вы имели ввиду SharpCraft, то попробуйте написать в тему по ссылке, может там подскажут, как решить проблему.
ENAleksey #27 - 4 недели назад (отредактировано ) 3

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

Обновление v.0.2.5a

  • Добавлена новая native функция GUILoadFont;
  • Добавлена новая native функция CtrlSetFont;
  • Удалена функция GUISetFont;
  • Исправлены вылеты при установке некоторых шрифтов (например, "Times New Roman");
  • Исправлена высота однострочного текста;

Функция CtrlSetFont(int id, string fontName, int iSize) устанавливает шрифт для указанного элемента интерфейса. По умолчанию используется Consolas с высотой 13.
» Код
private function TestFonts takes nothing returns nothing
    call CtrlNew(1001, 400, 300, 0, 0)
    call CtrlSetFont(1001, "Arial", 16)
    call CtrlSetText(1001, "Arial 16", false)

    call CtrlNew(1002, 400, 335, 0, 0)
    call CtrlSetFont(1002, "Consolas", 11)
    call CtrlSetText(1002, "Consolas 11", false)

    call CtrlNew(1003, 400, 350, 0, 0)
    call CtrlSetFont(1003, "Segoe Script", 20)
    call CtrlSetText(1003, "Segoe Script 20", false)

    call CtrlNew(1004, 500, 315, 0, 0)
    call CtrlSetFont(1004, "Times New Roman", 18)
    call CtrlSetText(1004, "Times New Roman 18", false)

    call CtrlNew(1005, 400, 380, 0, 0)
    call CtrlSetFont(1005, "Jokerman", 35)
    call CtrlSetText(1005, "Jokerman 35", false)

    call CtrlNew(1006, 400, 440, 0, 0)
    call CtrlSetFont(1006, "Harrington", 30)
    call CtrlSetText(1006, "Harrington 30", false)
endfunction

Функция GUILoadFont(string fileName) загружает в память шрифт из карты или архивов игры.
Например, так можно загрузить стандартный шрифт варкрафта:
call GUILoadFont("Fonts\\FRIZQT__.ttf")
Затем его можно будет установить для какого-нибудь элемента интерфейса (его имя Nimrod MT). Единственное - стандартный шрифт варкрафта не поддерживает Bold и Italic.
прикреплены файлы
ENAleksey #28 - 4 недели назад (отредактировано ) 1

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

Melissa, немного не в ту тему написал.
В экспериментальной версии эта галочка просто отключает отображение интерфейса, при этом на все кнопки всё ещё можно нажать. Я скоро добавлю функцию для полного скрытия интерфейса в основную версию, но не факт, что в следующую. Могу сделать отдельную версию, точнее модификацию Widescreen fix, но при этом будут проблемы, например будет скрыт весь интерфейс, даже меню.
ENAleksey #29 - 4 недели назад (отредактировано ) 7

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

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

  • Добавлена новая native функция SetPortrait;
  • Функция CtrlSetSize теперь не изменяет ширину или высоту, если вы установите соответствующий аргумент равным -1;
  • Изменено имя функции CtrlSetAlignment на CtrlSetAnchor;
  • Изменён способ исправления ширины полосок здоровья;
  • Исправлено выравнивание динамических элементов по отношению к другим элементам пользовательского интерфейса;
  • Исправлена высота wrapped текста;
  • Исправлена высота wrapped текста при динамическом изменении ширины;
  • Исправлены проблемы с безопасностью. Если жирный, курсивный или полужирный курсивный шрифт недоступен, используется обычный шрифт.
Также, карта-пример была переписана, используя только vJass для большей совместимости.
ENAleksey #30 - 1 месяц назад (отредактировано ) 3

» Game Observer / Дайджест XGM 10-17 июля

Clamp's Physics Engine
Наработка сложной системы зарядов, с учетом всех законов кинематики.
Ссылка ведёт явно не туда.
ENAleksey #31 - 1 месяц назад (отредактировано ) 4

» RenderEdge / [RenderEdge] Widescreen Fix

Обновление:
  • Добавлена поддержка патча 1.23a;
  • Фикс полосок здоровья теперь работает на всех патчах.
ENAleksey #32 - 1 месяц назад 0

» WarCraft 3 / Jass New Gen Pack - Rebuild 1.3

EnergyFrost, попробуй SharpCraft WEX, с ним точно не должно быть ошибок:
ENAleksey #33 - 1 месяц назад 0
ENAleksey #34 - 1 месяц назад (отредактировано ) 3

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

Извиняюсь, забыл проверить выравнивание относительно других элементов UI. Исправлено. Также исправлено отображение неправильной версии RenderEdge (v0.2.2a) в левом верхнем углу.

Обновление v0.2.3b

  • Исправлено выравнивание относительно других элементов интерфейса.
» Используемый код
function TestAlignment takes nothing returns nothing
    local integer parentId = 1000 // -1

    call CtrlNew(1000, 100, 200, 400, 400)
    call CtrlSetTexture(1000, "Textures\\white.blp")
    call CtrlSetColor(1000, 0xA0FFFFFF)

    call CtrlNew(1001,  0,   0,  64, 64) // TOPLEFT
    call CtrlNew(1002, -32,  0,  64, 64) // TOP
    call CtrlNew(1003, -64,  0,  64, 64) // TOPRIGHT
    call CtrlNew(1004,  0,  -32, 64, 64) // LEFT
    call CtrlNew(1005, -32, -32, 64, 64) // CENTER
    call CtrlNew(1006, -64, -32, 64, 64) // RIGHT
    call CtrlNew(1007,  0,  -64, 64, 64) // BOTTOMLEFT
    call CtrlNew(1008, -32, -64, 64, 64) // BOTTOM
    call CtrlNew(1009, -64, -64, 64, 64) // BOTTOMRIGHT

    call CtrlSetAlignment(1001, parentId, ALIGN_TOPLEFT)
    call CtrlSetAlignment(1002, parentId, ALIGN_TOP)
    call CtrlSetAlignment(1003, parentId, ALIGN_TOPRIGHT)
    call CtrlSetAlignment(1004, parentId, ALIGN_LEFT)
    call CtrlSetAlignment(1005, parentId, ALIGN_CENTER)
    call CtrlSetAlignment(1006, parentId, ALIGN_RIGHT)
    call CtrlSetAlignment(1007, parentId, ALIGN_BOTTOMLEFT)
    call CtrlSetAlignment(1008, parentId, ALIGN_BOTTOM)
    call CtrlSetAlignment(1009, parentId, ALIGN_BOTTOMRIGHT)
endfunction
прикреплены файлы
ENAleksey #35 - 1 месяц назад (отредактировано ) 7

» RenderEdge / [RenderEdge] Widescreen Fix

выступает в качестве платформы для проверки тех или иных знаний
Именно. Я начал этот проект, потому что мне это было интересно, затем я стал использовать его в качестве платформы для реализации своих знаний, для своего собственного развития.
На данный у меня есть две цели: перенести тени и пост-эффекты из экспериментальной версии в основную и реализовать полноценный фикс интерфейса для широкоформатных мониторов. После этого работа над модом будет закончена, и я выложу исходники проекта.
Сейчас я сосредоточен на модификации стандартного интерфейса варкрафта, вот что имею на данный момент:
Сначала весь интерфейс будет перенесён в левую часть экрана, а затем выровнен по центру.
А здесь полностью скрыт стандартный интерфейс (включая чёрные полосы), кроме миникарты, расположение которой было изменено:
прикреплены файлы
ENAleksey #36 - 1 месяц назад (отредактировано ) 5

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

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

  • Добавлена новая native функция CtrlSetSize;
  • добавлена новая native функция CtrlSetAlignment;
  • Функции CtrlSetPosition и CtrlNew теперь принимают offsetX и offsetY вместо x и y;
  • Удалена функция CtrlSetRect.
Видео - демонстрация графического интерфейса и управления камерой:

Использование функции CtrlSetAlignment

» Используемый код
private function TestAlignment takes nothing returns nothing
    call CtrlNew(1001,  0,   0,  64, 64) // TOPLEFT
    call CtrlNew(1002, -32,  0,  64, 64) // TOP
    call CtrlNew(1003, -64,  0,  64, 64) // TOPRIGHT
    call CtrlNew(1004,  0,  -32, 64, 64) // LEFT
    call CtrlNew(1005, -32, -32, 64, 64) // CENTER
    call CtrlNew(1006, -64, -32, 64, 64) // RIGHT
    call CtrlNew(1007,  0,  -64, 64, 64) // BOTTOMLEFT
    call CtrlNew(1008, -32, -64, 64, 64) // BOTTOM
    call CtrlNew(1009, -64, -64, 64, 64) // BOTTOMRIGHT

    call CtrlSetAlignment(1001, -1, ALIGN_TOPLEFT)
    call CtrlSetAlignment(1002, -1, ALIGN_TOP)
    call CtrlSetAlignment(1003, -1, ALIGN_TOPRIGHT)
    call CtrlSetAlignment(1004, -1, ALIGN_LEFT)
    call CtrlSetAlignment(1005, -1, ALIGN_CENTER)
    call CtrlSetAlignment(1006, -1, ALIGN_RIGHT)
    call CtrlSetAlignment(1007, -1, ALIGN_BOTTOMLEFT)
    call CtrlSetAlignment(1008, -1, ALIGN_BOTTOM)
    call CtrlSetAlignment(1009, -1, ALIGN_BOTTOMRIGHT)
endfunction
constant integer ALIGN_TOPLEFT = 0
constant integer ALIGN_TOP = 1
constant integer ALIGN_TOPRIGHT = 2
constant integer ALIGN_LEFT = 3
constant integer ALIGN_CENTER = 4
constant integer ALIGN_RIGHT = 5
constant integer ALIGN_BOTTOMLEFT = 6
constant integer ALIGN_BOTTOM = 7
constant integer ALIGN_BOTTOMRIGHT = 8

native CtrlSetAlignment takes integer id, integer parentId, integer alignment returns nothing
Чтобы выравнивание шло относительно всего окна, установите parentId равным -1.
прикреплены файлы
ENAleksey #37 - 1 месяц назад 8

» RenderEdge / [RenderEdge] Widescreen Fix

Обновление:
  • Добавлена поддержка патча 1.28.5;
ENAleksey #38 - 1 месяц назад (отредактировано ) 2

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

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

  • Добавлена новая native функция IsGamePaused;
  • Добавлена новая native функция SetBlackBorders;
  • Обновлен Jass API, исправлены некоторые баги связанные с пользовательскими нативными функциями;
  • Исправлены нативные функции, которые принимают аргументы типа boolean;
  • Исправлено повторное добавление триггеров функциями TriggerRegister#Event после перезапуска карты;
  • Функция EnableVsync теперь работает без необходимости сворачивать игру;
  • Исправлена ошибка, при которой новые элементы GUI не имели зеленой текстуры по умолчанию;
  • Улучшен debug log. Лог файл очищается, если размер превышает 100 КБ.
Теперь вы можете изменить черные границы динамически:
Чтобы скрыть чёрные полосы сверху и снизу, вызовите функцию SetBlackBorders(float upper, float bottom), где upper и bottom установите равными 0.0. Значения по умолчанию: upper = -0.02, bottom = 0.13.
прикреплены файлы
ENAleksey #39 - 2 месяца назад (отредактировано ) 0

» WarCraft 3 / какие есть способы сделать освещение в варике

Gerych, можно запекать тени в 3ds max, об этом писал Talavaj с hiveworkwhop, сейчас поищу.
Вот несколько ссылок:
На следующих страницах должно быть ещё больше описания того, как это реализовать.
ENAleksey #40 - 2 месяца назад 2

» WarCraft 3 / какие есть способы сделать освещение в варике

Полностью динамические тени стандартными средствами сделать невозможно. Но можно использовать сторонние модификации игры:
Предупреждаю, тени работают очень плохо, оптимизации нет, игра может вылететь в произвольный момент!
ENAleksey #41 - 2 месяца назад (отредактировано ) 1

» WarCraft 3 / Как создать программу для подключения своих mpq к Warcraft...

HMODULE address_StormBase;
uintptr_t address_OpenArchive;

template <typename ReturnType, typename FPType, typename A0, typename A1, typename A2, typename A3>
inline ReturnType std_call(FPType fp, A0 a0, A1 a1, A2 a2, A3 a3)
{
	typedef ReturnType(__stdcall *TFPAeroFunction)(A0 a0, A1 a1, A2 a2, A3 a3);
	return ((TFPAeroFunction)fp)(a0, a1, a2, a3);
}

int SFile_OpenArchive(const char* archiveName, DWORD dwPriority, DWORD dwFlags, HANDLE* pArchiveHandle)
{
	return std_call<int>(address_OpenArchive, archiveName, dwPriority, dwFlags, pArchiveHandle);
}

uint32_t mpqLoadPriority = 15;
void OpenArchive(const std::string& fileName, HANDLE* hMpq)
{
	SFile_OpenArchive(fileName.c_str(), mpqLoadPriority, 0, hMpq);
	mpqLoadPriority++;
}

void main()
{
	address_StormBase = GetModuleHandle("Storm.dll");
	address_OpenArchive = (uintptr_t)GetProcAddress(address_StormBase, "266");

	HANDLE myMpqHandle;
	OpenArchive("MyArchive.mpq", &myMpqHandle);
}
ENAleksey #42 - 2 месяца назад 8

» RenderEdge / [RenderEdge] Widescreen Fix

Обновление:
  • Добавлена поддержка патча 1.28.4;
ENAleksey #43 - 2 месяца назад 0

» WarCraft 3 / Патч 1.28.2

quq_CCCP, самое главное изменение - снизили задержку между приказами с 250 миллисекунд до 100.
ENAleksey #44 - 2 месяца назад (отредактировано ) 0
ENAleksey #45 - 2 месяца назад (отредактировано ) 0

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

Обновление 0.2.1b

Если вы устанавливали предыдущие версии RenderEdge, то перед запуском обязательно удалите данный раздел в редакторе реестра: HKEY_CURRENT_USER\Software\RenderEdge
  • Исправлены вылеты при вызове функций CtrlSetText, CtrlSetTexture и GUISetFont (проблема с конвертацией UTF-8 в ASCII);
  • Удалено нестабильное нововведение из предыдущей версии: "Убрано стандартное ограничение минимальной дистанции камеры до цели";
  • Обновлён FreeType до версии 2.8;
  • Обновлён RenderEdge_loader.dll. Теперь он ищет RenderEdge_exp.dll, если не нашёл, то запускает RenderEdge.dll;
  • Добавлен счётчик памяти, используемой варкрафтом;
  • Оптимизация GUI системы;
  • Оптимизация Widescreen fix;
  • Оптимизация debug log. Система отладки переписана с нуля.
прикреплены файлы
ENAleksey #46 - 2 месяца назад 0

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

Сколько объектов в кадре, сколько памяти используется?
Попробуй ещё выключить Туман Войны и стандартное освещение на вкладках Directional Light и Sky Light (Default Color, Default Direction).
ENAleksey #47 - 2 месяца назад 0

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

Xin, что включено? Тени, пост-эффекты, IBL, PBS? Сколько объектов в кадре, сколько памяти используется?
Попробуй ещё выключить Туман Войны и стандартное освещение на вкладках Directional Light и Sky Light (Default Color, Default Direction).
прикреплены файлы
ENAleksey #48 - 2 месяца назад (отредактировано ) 0

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

EfReeZe, это AntTweakBar так работает с дискретной видеокартой. У меня были такие же лаги при движении курсора, когда я случайно сбросил настройки BIOS, тем самым включив дискретную видеокарту Intel HD Graphics 4000. От этой проблемы я избавлюсь только после того, как перенесу весь функционал экспериментальной версии RenderEdge в основную, то есть откажусь от пользовательского интерфейса AntTweakBar. А пока можно просто нажать на F9, чтобы отключить AntTweakBar.

Xin, Narkranoth, пока тени жрут очень много памяти, при этом игра может вылететь при превышения определённого лимита (у меня это 2000 Мб). На данный момент для каждого объекта на сцене создаётся свои буферы вершин и индексов, они и занимают всё это место в памяти. Я так делаю из-за того, что у меня нет прямого доступа к информации об объектах на сцене, но я пытаю оптимизировать процесс перехвата данной информации. По-хорошему нужно создать только один буфер вершин и один буфер индексов, чтобы хранить в них всех юнитов, но пока у меня ничего не получается.
Также на производительность влияет и то, что я рендерю каждый объект по отдельности, то есть делаю что-то вроде этого:
for each (MESH mesh in allMeshes)
{
	g_pStandardFX->Begin();
	mesh->Render();
	g_pStandardFX->End();
}
А надо так:
g_pStandardFX->Begin();
for each (MESH mesh in allMeshes)
{
	mesh->Render();
}
g_pStandardFX->End();
И всё это из-за той же самой проблемы: "у меня нет прямого доступа к информации об объектах на сцене".
В общем, мне очень нужна помощь людей, которые разбираются в reverse engineering'е динамических библиотек. Всё, что мне нужно на данный момент - найти в game.dll структуру игровых объектов, это решит все проблемы, которые имеются на данный момент.

Xin, на какой карте происходят сильные лаги, сколько объектов находится в кадре? У меня мобильная видеокарта NVS 5200M, но на карте, которую я приложил к экспериментальной версии, выдаёт 100 FPS с включенными тенями.
ENAleksey #49 - 2 месяца назад (отредактировано ) 0

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

PrincePhoenix, спасибо, конечно, но я не очень нуждаюсь в пожертвованиях. Публиковать кошелёк не буду, но если очень хочется поддержать, то лучше написать мне в ЛС.
ENAleksey #50 - 2 месяца назад (отредактировано ) 15