13

» RenderEdge / [RenderEdge] Memory Hack

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

Может ещё кто-нибудь с Windows XP протестировать карту?
13

» RenderEdge / [RenderEdge] Memory Hack

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

» RenderEdge / [RenderEdge] Memory Hack

Obelick, писать свою систему сохранений, как картах типа Gaias Retaliation ORPG.
13

» 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).
13

» RenderEdge / [RenderEdge] Memory Hack

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

» RenderEdge / [RenderEdge] Memory Hack

Daniil18, про синхронизацию ничего сказать не могу, так как ни разу её не делал из-за ненадобности.
13

» RenderEdge / [RenderEdge] Memory Hack

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

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

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

Vitalik8, какое отношение этот функционал имеет к моей библиотеке? RenderEdge - это библиотека, нацеленная в первую очередь на модификацию графической составляющей игры.
13

» RenderEdge / [RenderEdge] Memory Hack

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

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

  • Изменены названия переменных в библиотеке InjectDLL;
  • Изменено название библиотеки InjectDLL на FileSystem;
  • Изменено название функции ExportDllFromMpqAndInjectToWarcraft на ExportAndInjectDLL.
13

» RenderEdge / [RenderEdge] Memory Hack

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

» RenderEdge / [RenderEdge] Memory Hack

Андреич, так в этой версии есть все нужные функции для редактирования стандартного интерфейса, а в основной версии эти же функции плюс возможность создать полностью свой интерфейс. Напиши поподробнее, что именно хочешь сделать с интерфейсом?
13

» 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 вместе? Нужно использовать только что-то одно.
Загруженные файлы
13

» RenderEdge / [RenderEdge] Memory Hack

FrigatPlay, перед запуском сохраняли карту? Нужно обязательно сохранять перед тем, как нажать на кнопку проверки карты.
13

» 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 возможно изменить?
Портрет изменяется той же функцией, что и в игровом режиме. А вот фрейм текста нужно сначала найти.
13

» 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.
13

» 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.
13

» 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
13

» RenderEdge / [RenderEdge] Memory Hack

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

  • Добавлены функции для получения данных о фрейме;
  • Добавлена функция для полного скрытия интерфейса;
  • Добавлены функции для редактирования кнопок приказов, предметов, миникарты и др.;
  • Улучшены функции для редактирования миникарты, портрета и границ игрового поля;
  • Добавлены названия фреймов для использования функцией ReadGameUIStruct;
  • Изменены названия переменных и функций на более понятные;
  • Все переменные-адреса теперь инициализируются в функции Init.
Загруженные файлы
13

» 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
13

» 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 функционал будет намного гибче.
Загруженные файлы
13

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

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

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

Возможно, проблема может быть вызвана .mix файлам в папке с варкрафтом, попробуй убрать их оттуда.
13

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

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