Комментарии проекта RenderEdge
254

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

» RenderEdge
Основная версия графической модификации RenderEdge для игры WarCraft III.

Читать далее...
Vitalik8 #235 - 6 часов назад 0
можешь сделать что б если у героя есть 2 способности основание из другой, что б не кастились обе способности, а только одна?
Vitalik8 #236 - 2 дня назад (отредактировано ) 0
ENAleksey, не из-за них, пробовал, скорее всего что винда 8.1
ENAleksey #237 - 2 дня назад 0
Возможно, проблема может быть вызвана .mix файлам в папке с варкрафтом, попробуй убрать их оттуда.
Vitalik8 #238 - 2 дня назад 0
ENAleksey, я не переносил файлы, а удалил с папки с варом, а сам RenderEdge запускал с отдельной папки
ENAleksey, говорю же на Windows 7 у меня все работало а вчера 8.1 поставил и вот такое
ENAleksey #239 - 2 дня назад 0
Vitalik8, после переноса файлов в одну папку чёрный экран так же появляется?
Vitalik8 #240 - 2 дня назад 0
ENAleksey, убрал файлы и кинул скрин папки с RenderEdge и RenderEdge.log
ENAleksey, на Windows 7 все работало
прикреплены файлы
ENAleksey #241 - 2 дня назад 0
Vitalik8, а где RenderEdge.exe? Лучше все файлы RenderEdge поместить в отдельную папку. И ещё, скинь, пожалуйста, RenderEdge.log.
Vitalik8 #242 - 2 дня назад 0
ENAleksey, вот
прикреплены файлы
ENAleksey #243 - 2 дня назад 0
Vitalik8, покажи, пожалуйста, скрин папки с варкрафтом.
Vitalik8 #244 - 2 дня назад 0
На Windows 8.1 после сворачивании игры в варик не зайти чорный екран
ENAleksey #245 - 3 дня назад (отредактировано ) 2
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
Nelloy #246 - 4 дня назад 0
Clamp, Конечно про него)
Clamp #247 - 4 дня назад 0
Nelloy, нативки и так в игре есть, зачем их переписывать вообще?
Или ты про нативки RenderEdge?
Nelloy #248 - 5 дней назад (отредактировано ) 0
Clamp, чтобы не привязываться к какому бы то ни было ресурсу, требующему отдельной установки
Как вариант выгружать библиотеку средствами мемхака, а нативки вызывать неявно через ExecuteFunc.
Второй вариант: собранную библиотеку внедрять в карту побайтно, сделав асемблерную вставку, должно работать, но надо знать куда втыкать
по идее есть 2 исхода для первого варианта, на первом запуске карты народ будет ловить десинк или же все сразу заведется
Так что думаю вполне реально сделать отрисовку кастомного UI таким образом
Nelloy #250 - 5 дней назад (отредактировано ) 0
Имел ввиду переписать нативки через мемхак, есть хотя бы теоретическая возможность?
Кет #251 - 5 дней назад 0
Nelloy, я уже две недели назад спрашивал -_- Ответ:
карта просто не запустится, будет вылетать в меню, если в ней используются кастомные нативки, которые ещё не добавлены в варкрафт, а с помощью мемхака их можно добавить только после загрузки карты.
Nelloy #252 - 5 дней назад (отредактировано ) 0
Возможно ли встроить весь GUI API внутрь карты? То есть без отдельной библиотеки или с распаковкой из самой карты
ENAleksey #253 - 1 неделю назад 0
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.
FTFire #254 - 1 неделю назад 0
ENAleksey, Хотел спросить а перемещение элементов например мини-карты,инвентаря есть в MemoryHack?Если есть можешь подсказать код?
369

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

» RenderEdge
Экспериментальная версия графической модификации RenderEdge для игры WarCraft III.

Читать далее...
ENAleksey #367 - 13 часов назад (отредактировано ) 0
ledoed, нет, можно посмотреть лишь, сколько всего мешей на сцене.
Кристофер, тени пока работают очень плохо. Их лучше не включать, так как они используют очень много оперативной памяти, и при достижении определённого лимита игра вылетает.
Тени можно сделать менее тёмные, путём редактирования Ambient освещения на вкладке Sky Light.
Кристофер #368 - 13 часов назад 0
Запустил. Для вида сверху ещё ничего (хотя тени часто подлагивают), но если попытаться сделать вид от 1-го лица, то фаталит (в лучшем случае, 1 фпс).
Кстати, есть ли возможность сделать тени менее тёмными?
ledoed #369 - 14 часов назад 0
а в нём есть возможность смотреть сколько обьектов таких как (еффекты,точки)на карте
35 , ,

[RenderEdge] Memory Hack

» RenderEdge
Дополнительные функции для редактирования стандартного интерфейса Варкрафта

Читать далее...
quq_CCCP #9 - 3 дня назад 0
Alexey98, Это не прога а библиотека, а то что вы скинули похоже на фотошоп.
Ну описание характеристик думаю слепить совсем изи, а то что на скрине хер сделаешь, уж очень много чего придется изменить...
Alexey98 #10 - 3 дня назад 0
это было в этой проге сделано? xgm.guru/p/100/195453
Clamp #11 - 6 дней назад 0
он же и пишет, что тупые близзарды так и не пофиксили, просто сделали по своему...
Тащемта он пишет, что они пофиксили как он и указал, закрыв запись и оставив чтение.
quq_CCCP #12 - 6 дней назад 0
Clamp, там на второй странице он же и пишет, что тупые близзарды так и не пофиксили, просто сделали по своему...
Щяс уже собственно пофиг, 1.27 скорее всего последний патч, на котором будут сидеть, ибо постоянные глюки и несовместимости 100500 карт с новыми патчами, просто потому что там криворучки игру делают. Так что можно уже не беспокоится, мемхак есть и он работает и будет работать, пока близзарды не смогут предложить что либо в замен. Китайцы на 1.24 в большинстве сидят, делают патчи (на базе лаунчеров) сами, и офф батл нет им ненадобен.
Clamp #13 - 6 дней назад 2
ADOLF, по этой ссылке пост с описанием того, как была закрыта уязвимость.

а может и тех людей, которые это писали уже нет в команде
Так и есть.
quq_CCCP #14 - 6 дней назад 0
ADOLF, разработчик который знал про это дело, пропал в 2006, они рили непонимают ничего. Да иим не интересно это дело, на хайве они как то задавали вопрос что бы пользователи хотели увидеть в редакторе - у них глаза выпали от хотелок. Щя они уже взялись за баланс, обновлений двиги походу небудет......
ADOLF #15 - 6 дней назад 1
Интересно) Мы еще в 2012 пришли к выводу, что они уже абсолютно не понимают, как работает jass в игре из 2002 (а может и тех людей, которые это писали уже нет в команде), и не могут сделать нормальный патч. Логично, что в 2017 они тем более это не понимают ;)
quq_CCCP #16 - 6 дней назад 0
ADOLF, лич писал что они стали применять антиотладочные технологии в новых патчах, и вроде прикрыли записиь каким то костылем.
ADOLF #17 - 6 дней назад 0
С 1.28 можно только читать память, но запись прикрыли, причём как раз тем методом, что ты указал в статье на Хабре.
Они та и не прикрыли сломанный массив и запись байткодов в массив для их выполнения...
Да, то, о чем писал я полностью бы закрыло возможно вообще работать с памятью из jass кода, они же, как кажется мне просто или вынесли jass в отдельную песочницу, или другим методом запретили интерпритатору писать куда не надо (насчет метода не уверен, давно не работал с архитектурой винды).
quq_CCCP #18 - 6 дней назад 2
Они та и не прикрыли сломанный массив и запись байткодов в массив для их выполнения...
Clamp #19 - 6 дней назад 2
И что, Blizzard на это совсем забили, не пытаются лавочку прикрыть?
С 1.28 можно только читать память, но запись прикрыли, причём как раз тем методом, что ты указал в статье на Хабре.
ADOLF #20 - 6 дней назад (отредактировано ) 1
Топик прочитал, описание уязвимости не нашел. Прочитал код еще раз, теперь днем - я правильно понял, махинации со значением переменной типа code осуществляются за счет некорректной проверки типов переменных jass интерпритатором самой игры, когда изначальное объявление глобальной переменной одного типа и потом объявление локальной переменной с тем же именем другого типа в одной функции заставляет интерпритатор ошибочно считать глобальную переменную переменной другого типа?
По итогу это тот же самый return bug, реализованный просто по другому. И, таким методом возможно же сделать идентичные старому rb функции в новых патчах, которые были выпущены после уязвимости 2012 года.
И что, Blizzard на это совсем забили, не пытаются лавочку прикрыть?
Я вот не помню, фиксированная ли длина у псевдокода, в который интерпритируется jass скрипт, но есть у меня подозрение, что если бы близы место убивания return bug в 2012 сделали так, как писал я - а именно выравнивание кода в функции, которая обрабатывает тип code - сейчас вызов по типу I2C(+2+C2I(c)) был бы невозможен, как и использование данной уязвимости.
quq_CCCP #21 - 1 неделю назад 0
Daniil18, ну это тот же самый код, его рили выкладывали и давно... А вот для быстрого синха потребуется скорее всего собственная библиотека, будет ли она или нет хз, но судя по тому что народ начел проявлять нарастающий интерес к мемхаку то будет.
Daniil18 #22 - 1 неделю назад 0
function GetMouseX takes nothing returns integer
function GetMouseY takes nothing returns integer
это для чего? отлавливает положение курсора? Просто уже чет такое выкладывали, но там время синхронизации довольно большое и неиграбельно в мультиплеере.
Kind Ram #23 - 1 неделю назад 0
Прошу прощения перепутал, там обращение к библиотеке идёт)
quq_CCCP #24 - 1 неделю назад 0
16GB, Щя погодь, не то запилят...
16GB #25 - 1 неделю назад 0
Так а дополнительный интерфейс уже научились создавать? Например сделать закупку итемов как в доте, чисто на мемхаке?
quq_CCCP #26 - 1 неделю назад 0
ADOLF, xgm.guru/p/wc3/memoryhack
Kind Ram, а где тут собственные типы переменных?
Kind Ram #27 - 1 неделю назад 0
А как у вас получается собственные типы объявлять? У меня WE от этого начинает жаловаться, что не удалось инициализировать глобальные переменные.
ADOLF #28 - 1 неделю назад 3
Я правильно понял, вы опять пишите и читаете код процесса из игры?)
Парни, я когда то 100 лет назад (на самом деле лет 5) описывал уязвимость, которая позволяла из jass кода писать в память процесса, из-за чего вышел патч, который убрал return bug как таковой. Там все было просто - с помощью return bug можно было с ним работать как с int и задать любое другое смещение, не кратное 4. Потом подбирались специальные инструкции псевдокода jass, которые как-то устанавливали метки массивов, и позволяли писать в память процесса.
Я еще тогда написал маленькую утилу, которая патчила game.dll, а именно то место, где jass интерпритатор обрабатывал тип code - с помощью сплайсинга и одной логической операции просто устанавливал в 0 последние биты аддресса, в результате чего варианты типа code + 2 не прокатывали. Жалко, что до Близов мы тогда это так и не донесли ;)
Тут я, просмотрев код мельком вижу изменение фактического значение переменной типа code за счет какой-то работы с пространством имен локальных и глобальных переменных, нет?
ENAleksey #29 - 1 неделю назад (отредактировано ) 6

Обновление 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
прикреплены файлы
FTFire #30 - 1 неделю назад 0
ENAleksey, Ясно нужно будет попробовать.
ENAleksey #31 - 1 неделю назад (отредактировано ) 0
FTFire, кода нет, как я уже писал, нужно искать первый аргумент функции SetFramePoint либо в IDA Pro, либо методом перебора значений в функции ReadGameUIArray.
FTFire #32 - 1 неделю назад 0
ENAleksey, Я помню ты говорил что можно полностью скрыть интерфейс,при этом все кнопки и тд. будут работать.Это можно сделать в MemoryHack если да,есть код который скрывает это?
ENAleksey #33 - 1 неделю назад (отредактировано ) 1
Редактирование миникарты:
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
Карту обновлю позже, после того, как добавлю демонстрацию внедрения сторонних динамических библиотек.
прикреплены файлы
FTFire #34 - 1 неделю назад 0
Аж слезы потекли.
NanO, Хорошо теперь другой вопрос как перенести в свою карту?У меня в старой остались гуи функции.Сохраняется нормально но не запускается.
NanO #35 - 1 неделю назад 0
FTFire:
Вылетает.
NanO, Как ты исправил вылет?
AdicParser + AdicOptimizer отруби.