- Joined
- Jan 18, 2005
- Messages
- 5,782
What does XP have to do with windows 10?
Oops, wrong guess. For some reason, I was sure you were using XP. My bad.
As you guessed it, I am experiencing the same issue (or so it seems) on XP SP3.
Works for 1.28.1/2?
What version of the patch are you using? Is the RenderEdge_loader.dll file in the same folder? And try to install Microsoft Visual C++ 2015 Redistributable Update 3.I get an error Filed to load the RenderEdge.dll file which is in the folder as the exe file
globals
constant integer MB_Left = 0
constant integer MB_Middle = 1
constant integer MB_Right = 2
constant integer MB_X1 = 3
constant integer MB_X2 = 4
constant integer KEY_Any = -1
constant integer EVENT_Down = 0
constant integer EVENT_Up = 1
endglobals
// ===== Mouse API ====== //
native GetMouseX takes nothing returns integer
native GetMouseY takes nothing returns integer
native GetMouseXRelative takes nothing returns integer
native GetMouseYRelative takes nothing returns integer
native GetMouseTerrainX takes nothing returns real
native GetMouseTerrainY takes nothing returns real
native GetMouseTerrainZ takes nothing returns real
native IsMouseOverUI takes nothing returns boolean
native BlockMouse takes boolean bBlock returns nothing
native GetWheelDelta takes nothing returns integer
native SetMousePos takes integer x, integer y returns nothing
native TriggerRegisterMouseWheelEvent takes trigger trig returns nothing
native TriggerRegisterMouseMoveEvent takes trigger trig returns nothing
native TriggerRegisterMouseEvent takes trigger trig, integer iButton, integer state returns nothing
// ====================== //
// ==== Keyboard API ==== //
native GetTriggerKey takes nothing returns integer
native IsKeyDown takes integer iKey returns boolean
native TriggerRegisterKeyEvent takes trigger trig, integer iKey, integer state returns nothing
// ====================== //
// ===== Window API ===== //
native GetWindowWidth takes nothing returns integer
native GetWindowHeight takes nothing returns integer
native GetWindowX takes nothing returns integer
native GetWindowY takes nothing returns integer
native TriggerRegisterWindowResizeEvent takes trigger trig returns nothing
// ====================== //
// ======= GUI API ====== //
native CtrlNew takes integer id, integer left, integer top, integer width, integer height returns nothing
native CtrlSetText takes integer id, string text, boolean bWrap returns nothing
native CtrlSetColor takes integer id, integer argb returns nothing
native CtrlSetTexture takes integer instID, string filename returns nothing
native CtrlSetRect takes integer id, integer left, integer right, integer top, integer bottom returns nothing
native CtrlSetPosition takes integer id, integer x, integer y returns nothing
native CtrlShow takes integer id, boolean isShow returns nothing
native CtrlSetDepth takes integer id, real fDepth returns nothing
native CtrlSetAngle takes integer id, real fAngle returns nothing
native CtrlGetWidth takes integer id returns integer
native CtrlGetHeight takes integer id returns integer
native CtrlGetFromPoint takes integer x, integer y returns integer
native CtrlIsText takes integer id returns boolean
native GUISetFont takes string name, integer size returns nothing
// ====================== //
// ====== Misc API ====== //
native GetFPS takes nothing returns real
native GetDeltaTime takes nothing returns real
native COLOR_ARGB takes integer a, integer r, integer g, integer b returns integer
native EnableVsync takes boolean bEnable returns nothing
native TriggerRegisterFrameUpdateEvent takes trigger trig returns nothing
// ====================== //
native SetBlackBorders takes real upper, real bottom returns nothing
upper = 0.0
and bottom = 0.0
to hide black borders. By default upper = -0.02
, bottom = 0.13
:Oh, woah. That can be useful. The only thing really missing now is to be able to dynamically change the UI I think. (I think it's already possible to remove it right?)
Yes, yesterday I found a way to dynamically change any UI element. Here is an example with removed standard interface, which is replaced with my own, and a modified minimap:The only thing really missing now is to be able to dynamically change the UI I think. (I think it's already possible to remove it right?)
Can you change them dynamically?I managed to modify the UI elements recently.
Can you change them dynamically?
address_CtrlSetPosition = address_GameBase + 0x606770; // 1.26a
void War3CtrlSetPosition(int pParentFrame, POINT point, int pFrame, POINT relativePoint, float xoffset, float yoffset)
{
fast_call<void**>(address_CtrlSetPosition, pParentFrame, 0, point, pFrame, relativePoint, xoffset, yoffset, 1);
}
void War3CtrlSetWidth(int pCtrl, float width)
{
fast_call<void**>(address_CtrlSetWidth, pCtrl, 0, width);
}
void War3CtrlSetHeight(int pCtrl, float height)
{
fast_call<void**>(address_CtrlSetHeight, pCtrl, 0, height);
}
void SetBlackBorders(float upper, float bottom)
{
uint gameui = GetGameUI(0, 0);
War3CtrlSetPosition(*((DWORD*)gameui + 239) + 180, 2, gameui + 180, 2, 0.0f, upper);
War3CtrlSetPosition(*((DWORD*)gameui + 239) + 180, 6, gameui + 180, 6, 0.0f, bottom);
}
// And there are some other functions to change standard interface
void SetMinimap(float x, float y, float size)
{
uint gameui = GetGameUI(0, 0);
War3CtrlSetPosition(*((DWORD*)gameui + 240) + 180, 6, *((DWORD*)gameui + 263) + 180, 6, x, 0.6f - y - size * fWideScreenMul);
War3CtrlSetPosition(*((DWORD*)gameui + 240) + 180, 2, *((DWORD*)gameui + 263) + 180, 6, x + size, 0.6f - y);
}
void SetPortrait(float x, float y, float size)
{
uint gameui = GetGameUI(0, 0);
War3CtrlSetWidth(*((DWORD*)gameui + 253) + 180, size);
War3CtrlSetHeight(*((DWORD*)gameui + 253) + 180, size * fWideScreenMul);
War3CtrlSetPosition(*((DWORD*)gameui + 253) + 180, 6, *((DWORD*)gameui + 265) + 180, 6, x, 0.6f - y - size * fWideScreenMul);
}
I've mapped several elements if you're interested, I'll see if I have any uncommitted findings. If you have any additional findings, that would be great.
SetPoint TOPLEFT, "AllianceDialog", TOPLEFT, 0.03375, -0.03,
enum FRAMEPOINT
{
TOPLEFT = 0,
TOP = 1,
TOPRIGHT = 2,
LEFT = 3,
CENTER = 4,
RIGHT = 5,
BOTTOMLEFT = 6,
BOTTOM = 7,
BOTTOMRIGHT = 8
};
address_SetFramePoint = address_GameBase + 0x606770;
void SetFramePoint(int32 pFrame, FRAMEPOINT point, int32 pParentFrame, FRAMEPOINT relativePoint, float offsetX, float offsetY)
{
fast_call<void**>(address_SetFramePoint, pFrame, 0, point, pParentFrame, relativePoint, offsetX, offsetY, 1);
}
address_SetFrameWidth = address_GameBase + 0x605D90;
void SetFrameWidth(int32 pFrame, float width)
{
fast_call<void**>(address_SetFrameWidth, pFrame, 0, width);
}
address_SetFrameHeight = address_GameBase + 0x605DB0;
void SetFrameHeight(int32 pFrame, float height)
{
fast_call<void**>(address_SetFrameHeight, pFrame, 0, height);
}
will this modification be able to increase maps CameraBounds ,canvas size above 480x480?Is it even possible?Just asking!
That looks correct to me. That's awesome. Should be very helpful.Edit:
Maybe it will be useful?
Region/SetPoint - World of Warcraft Programming: A Guide and Reference for Creating WoW Addons
Edit2:
Done!
C++:enum FRAMEPOINT { TOPLEFT = 0, TOP = 1, TOPRIGHT = 2, LEFT = 3, CENTER = 4, RIGHT = 5, BOTTOMLEFT = 6, BOTTOM = 7, BOTTOMRIGHT = 8 }; address_SetFramePoint = address_GameBase + 0x606770; void SetFramePoint(int32 pFrame, FRAMEPOINT point, int32 pParentFrame, FRAMEPOINT relativePoint, float offsetX, float offsetY) { fast_call<void**>(address_SetFramePoint, pFrame, 0, point, pParentFrame, relativePoint, offsetX, offsetY, 1); } address_SetFrameWidth = address_GameBase + 0x605D90; void SetFrameWidth(int32 pFrame, float width) { fast_call<void**>(address_SetFrameWidth, pFrame, 0, width); } address_SetFrameHeight = address_GameBase + 0x605DB0; void SetFrameHeight(int32 pFrame, float height) { fast_call<void**>(address_SetFrameHeight, pFrame, 0, height); }
As far as I know, 480x480 is an internal limit that cannot be bypassed without some serious modifications to the game (which are unknown).
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
.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
The GUI system was created from scratch, it doesn't use standard UI functions from Game.dll, only DirectX. Textures are loaded from map and RenderEdge.mpq using functions from Storm.dll.Does CtrlNew/CtrlSetTexture/etc. use the internal frame functions or is it your directx hooks?
Yes, yesterday I found a way to dynamically change any UI element. Here is an example with removed standard interface, which is replaced with my own, and a modified minimap:
View attachment 273030
Now I'm working on modifying the standard interface for any screen resolution:
View attachment 273031 View attachment 273032
Next, I plan to move the entire UI to the left side of the screen, and then align to center.
Also, the sample map was rewritten using vJass, so you don't need to install additional plugins in JNGP. |
Most likely yes.So cool Can you add this feature to the WidescreenFix too?
native CtrlSetFont takes integer id, string fontName, integer iSize returns nothing
Sets the font for UI element. By default, used "Consolas" font with a height of 13.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
native GUILoadFont takes string fileName returns nothing
Loads a font from the map or game archives into memory.call GUILoadFont("Fonts\\FRIZQT__.ttf")
call CtrlSetFont(id, "Nimrod MT", size)
Is it safe to use on BattleNet?
native CtrlSetZOrder takes integer id, integer iZOrder returns nothing
native EnableAnisoFiltering takes boolean bEnable, integer maxAnisotropy returns nothing
native HideInterface takes nothing returns nothing
native EditBlackBorders takes integer upperHeight, integer bottomHeight 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 EditCommandBarButton takes integer row, integer column, integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditHeroBarButton takes integer buttonId, integer anchor, integer x, integer y, integer width, integer height returns nothing
native EditItemBarButton 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
OMGUpdate v0.2.6a
- Removed 512p limit in .blp textures (thanks to Karaulov);
- Added new native function CtrlSetZOrder;
- Added new native function EnableAnisoFiltering;
- Added new native function HideInterface;
- Added new native functions: EditMinimap, EditCommandBarButton, EditHeroBarButton, EditItemBarButton, EditMinimapButton, EditUpperButtonBarButton;
- Changed SetPortrait and SetBlackBorders function names to EditPortrait and EditBlackBorders;
- Fixed a lot of bugs in RenderEdge_loader.dll and RenderEdge.exe;
- Fixed incorrect line breaking in wrapped text that uses the "|n" control character;
- Fixed a lot of bugs in GUI system (e.g. bug in CtrlSetTexture function, bug then restarting map);
- Optimized GUI system. Some functions was rewritten from scratch;
- Optimized Font and Texture Managers;
- Updated detours.lib and libjpeg.lib to latest version;
- Improved and optimized debug log.
He wrote about the size of the map and not the screen. RenderEdge don't modify map size, only projection matrix of camera. It already supports all possible screen resolutions, whether it's 4k or 8k.As far as I know, 480x480 is an internal limit that cannot be bypassed without some serious modifications to the game (which are unknown).
It's not necessary. You will not see any difference in size when using 4k and 1080p resolution, the screen resolution will not affect the size of objects, only the size of the monitor affects them.What I actually need/want is 4 times zoom-out so that units are same size on screen as on 1080p res.
What screenshots are you talking about? Can you give an example?original screenshot looks great, but others screenshots have been different looking from your originals in your first post