zgzagan Posted 21 hours ago Share Posted 21 hours ago FORGE UI Visual UI App Builder for World of Warcraft 3.3.5a AzerothCore · mod-ale · AIO ▶ Watch the video demo | $49 — Get it on Ko-fi Design a complete addon interface inside the game client — drag, anchor, style, script and preview it live — then export a Client + Server Lua pair that drops into lua_scripts/ and runs on your realm. No frame code written by hand, no reload cycle to see a change. 01 THE PROBLEM IT SOLVES Hand-writing 3.3.5a frame code is a slow feedback loop. Every anchor tweak costs a /reload. Every texture UV is trial and error. Nothing shows you what a layout looks like until it is already written, and nested SetPoint chains with parent/child anchoring are where most custom UI work quietly dies. ForgeUI replaces that with direct manipulation. You see the frame while you build it, at real client resolution, with real textures and real 3D models — and the code comes out at the end instead of at the beginning. 02 ARCHITECTURE Client-side editor delivered as an AIO addon; the server half is ALE (mod-ale) Lua Layouts persist to a single table in acore_characters, keyed by player GUID, stored as a V2 document with tags and timestamps The exporter walks the widget document tree and emits flat, dependency-ordered Lua — no runtime framework, no library dependency in the output Exported addons do not require ForgeUI to be installed. They are standalone AIO scripts Export runs chunked across frames, so a large layout does not hitch the client while generating ~250 client modules, load-ordered by filename prefix 03 WHAT THE EXPORTER PRODUCES The Export panel generates a Client script and a Server script straight from the canvas document: Structurally, exported client code looks like this: -- Generated by ForgeUI - Client script local AIO = AIO or require("AIO") AIO.AddAddon() if not CreateFrame then return end -- Re-runnable: AddHandlers errors on a second run after a hot -- reload, forcing a ReloadUI modal. Reuse the live table instead. local _FU_HKEY = "_FU_AIOH_MyShop" local H = _G[_FU_HKEY] if not H then H = AIO.AddHandlers("MyShop", {}) _G[_FU_HKEY] = H end local ViewRoots = {} local function ShowView(name) for k, f in pairs(ViewRoots) do if k == name then f:Show() else f:Hide() end end end local rf_Main = CreateFrame("Frame", "MyShop_Main", UIParent) rf_Main:SetSize(420, 300) rf_Main:SetPoint("CENTER", UIParent, "CENTER", 0, 0) ViewRoots["Main"] = rf_Main local rf_Main_bg = rf_Main:CreateTexture(nil, "BACKGROUND") rf_Main_bg:SetAllPoints(rf_Main) rf_Main_bg:SetTexture(0.08, 0.09, 0.12, 0.95) local btn_Buy = CreateFrame("Button", nil, rf_Main) btn_Buy:SetSize(120, 28) btn_Buy:SetPoint("TOPLEFT", rf_Main, "TOPLEFT", 24, -48) btn_Buy:SetScript("OnClick", function(self, button) AIO.Msg():Add("MyShop", "BuyItem", 49426):Send() end) ShowView("Main") SLASH_MYSHOP1 = "/myshop" SlashCmdList["MYSHOP"] = function(msg) local cmd = tostring(msg or ""):lower():match("^%s*(%S*)") if cmd == "show" then rf_Main:Show() elseif cmd == "hide" then rf_Main:Hide() elseif rf_Main:IsShown() then rf_Main:Hide() else rf_Main:Show() end end Plain frame code you can read, diff and hand-edit. The slash command, the show/hide arguments (so it is scriptable from macros or other addons), the view switching, the re-run guard and any per-widget scripts you wrote are all generated for you. The paired Server script arrives with AIO handler registration and hooks ready for your own logic: -- Generated by ForgeUI - Server script (ALE) local AIO = AIO or require("AIO") local H = AIO.AddHandlers("MyShop", {}) -- Button click hook function H.OnButtonClick(player, buttonId, buttonName) if not player or not player:IsInWorld() then return end AIO.Msg() :Add("MyShop", "OnServerReply", { msg = "Hello " .. player:GetName() .. "!", }) :Send(player) end -- Player login hook RegisterPlayerEvent(3, function(event, player) AIO.Msg() :Add("MyShop", "OnPlayerLogin", { name = player:GetName(), level = player:GetLevel(), }) :Send(player) end) (Standalone Addon and FrameXML output modes are visible in the panel marked "SOON" — they are planned, not functional in v9. Stated upfront rather than discovered after purchase.) 04 THE EDITOR Canvas — grid, snap, rulers, smart edge-alignment guides, zoom 5%–3200%, middle-mouse pan, hold Alt to bypass snap Widgets — Frame, ScrollFrame, Button, Checkbox, Texture, FontString, Model, CloseButton Composites & groups — Store Card, Info Panel, Search Bar, plus WoW Panel, Dialog Window, Tab Panel, Tooltip Frame, Resource Bar and Action Button templates Inspector — transform, opacity, anchor, fill, texture path and layer, TexCoord editing with a visual UV picker, and a Texture Adjust block with tone / saturation / lightness / contrast and a live before-after preview Hierarchy — parent/child tree with filtering, folder grouping and reparenting Views — independent screens per document; each widget belongs to one, and ShowView() / HideView() are generated automatically Preview and Test modes — run the layout live in-game without leaving the editor Undo/redo, duplicate, arrow-key nudging, snap-size nudging, right-click context menu, lock Console with an inline Lua REPL against live editor state Style Library — Dark Panel, WoW Tooltip, WoW Dialog, WoW Parchment, WoW Gold, Glass and more 05 3D MODEL SUPPORT The Model widget is a real PlayerModel rendering live on the canvas, in preview, and in the exported addon — not a static placeholder image. Sources: unit (player / target / pet / focus), any .m2 path, or an NPC entry Model Browser indexing 14,700+ client models into categories — Creatures, Spell Effects, Weapons, Shields, Characters, Interface, World — plus Units and a persistent Recents list Per-category and global search Live preview with per-model auto-framing: drag to rotate, right-drag to pan, wheel to zoom, right-click to reset, double-click to apply Creatures resolve textured through their NPC entry via the included server script, instead of rendering as untextured white geometry Apply stores the model and your exact camera transform on the widget — scale, facing, and X/Y/Z offsets — so the framing you set is the framing that ships in the export 06 SCRIPTING Every widget gets a full script editor: per-event Lua with syntax highlighting, line numbers, a handler list organised by category, and Save / Run against the live client. Events grouped by Lifecycle (OnShow, OnHide, OnEvent, OnLoad), Update Loop (OnUpdate), Mouse (OnClick, OnDoubleClick, OnEnter, OnLeave, OnMouseDown, OnMouseUp), Drag (OnDragStart, OnDragStop) and Layout (OnSizeChanged) The correct handler signature is emitted per event type, validated against what each widget actually supports Snippets library — one-click insert for play sound on click, toggle frame visibility, fade in on show, tooltip on hover, start/stop moving, AIO send message, get player health, pulse scale animation, clamp to screen, hide after delay, and more API reference and Behaviors panels built in Output, Errors, REPL and Events tabs underneath, with severity filters Scripts compile on save and are embedded into the export automatically 07 DEV TOOLS A live inspector for what your UI is actually doing at runtime — the part that usually does not exist at all on 3.3.5a. Profiler — per-handler fire counts, average ms, total ms and a distribution bar; sort by fire count, time or memory; export to CSV Live trace console, an events feed, an errors panel and a registered-listener list Realtime AIO connection state, ping, UI and game FPS, and addon memory in the status bar 08 LOCALIZATION Nine languages — EN / ES / PT / DE / FR / IT / RU / ZH / KO — auto-detected from GetLocale() and switchable at runtime with no /reload. A bundled Unicode fallback font supplies Cyrillic, Chinese and Korean glyphs on Latin clients, so translated strings never degrade into question marks. Adding your own locale is one dictionary block in one file; missing keys fall back to English. 09 REQUIREMENTS Server — AzerothCore (latest) + mod-ale + AIO by Rochet2 Client — WoW 3.3.5a with the AIO client addon Database — MySQL access to run the included single-table schema against acore_characters Built and tested on AzerothCore + mod-ale. It is not a drop-in for TrinityCore/Eluna setups. 10 WHAT YOU GET The full ForgeUI addon — client modules, server ALE scripts, SQL schema Patched AIO (Rochet2's, with a duplicate-initialization fix on reload) so you do not have to source it separately Unicode font pack README with install, slash command reference, keyboard shortcuts and troubleshooting Free updates $49 https://ko-fi.com/s/7808d43d8a Discord zgzagan · zagan.framer.ai Questions in-thread or on Discord. If you want to see a specific panel built before you buy, tell me what it is and I will record it. Built on AzerothCore, mod-ale and AIO by Rochet2 — full credits in the README. Link to comment Share on other sites More sharing options...
[ForgeUI v9] In-Game Visual UI Builder for 3.3.5a — Design, Script & Export Working Addons
By zgzaganin Want To Sell
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now