• Hail, we're RedGuides. We want you to play six (yes, 6!) EverQuest characters at once. We have scripts and a friendly community to help, please join our playstyle and say hello! 👋
  • We've added LLM sections to our Terms & Rules and Resource Rules, for everyone's sanity & in-game safety.
    Read more
    a. Do not replace your voice with an LLM. This goes for your posts and your scripts. Drafting and editing with a tool is fine, but don't take you out of what you share.
    b. Do not replace your EQ character's voice with an LLM. We don't want scripts that speak over /ooc, /shout or other public channels. This has been an unwritten rule that's kept casino scripts off the site for decades, but we're now compelled to make it clear: keep automated communication private.

    Why Does RG Review Scripts?
    Nearly every LLM-written Lua script we see is making your character do impossible things, and rarely in a way that's beneficial to you. We've seen heavy server hammering, /target over impossible distances when /nav spawn would passively accomplish the same thing, a spawn search that fires 20+ times per second, and other pointless actions that are likely annoying GMs.

    You are welcome to use LLMs as a tool to structure, draft, and edit your work, but please read critically before hitting /lua run
Resource icon

Utility ThemeZ v1.14

with the help of Derple we (mostly Derple)

added a library to draw your themes.

the library works with both ThemeZ's MyThemeZ.lua and button masters button_master_theme.lua file formats.

also adds support for dynamically changing colors or styles.

Support to set that up will be coming soon to ThemeZ so you can configure and export these.

Usage:
Add the lib folder to your script.
local LoadTheme = require('lib.theme_loader')
Load your themes file of choice into a table.

at the beginning of the window before calling ImGui.Begin()

pass the theme you want to load's table

local ColorCount, StyleCount = LoadTheme.StartTheme(theme.Theme[tID])

End the theme before ImGui.End()

LoadTheme.EndTheme(ColorCount, StyleCount)

sample
Lua:
local theme = {}
local LoadTheme = require('lib.theme_loader')
local themeID = 1
local themeFile = string.format('%s/MyThemeZ.lua', mq.configDir)
-- sample
---comment Check to see if the file we want to work on exists.
---@param name string -- Full Path to file
---@return boolean -- returns true if the file exists and false otherwise
local function File_Exists(name)
    local f=io.open(name,"r")
    if f~=nil then io.close(f) return true else return false end
end
local function loadTheme()
    if File_Exists(themeFile) then
        theme = dofile(themeFile)
        else
        theme = require('themes') -- your local themes file incase the user doesn't have one in config folder
    end
    themeName = theme.LoadTheme or 'Default'
        if theme and theme.Theme then
            for tID, tData in pairs(theme.Theme) do
                if tData['Name'] == themeName then
                    themeID = tID
                end
            end
       end
end

Applying theme to window

applying to the window
Lua:
function open_GUI(open)
    if not openGUI then return end
    --You must count your pushes so you can pop them later
    -- You MUST push your theme before ImGui.Begin and pop them before ImGui.End calls.
     local ColorCount, StyleCount = LoadTheme.StartTheme(theme.Theme[themeID])
    open, openGUI = ImGui.Begin("Window", open, bit32.bor(ImGuiWindowFlags.None, ImGuiWindowFlags.NoCollapse))
    if not openGUI then
        openGUI = false
        open = false
        -- You MUST pop the same number you pushed before ImGui.End() calls
        LoadTheme.EndTheme(ColorCount, StyleCount)
        ImGui.End()
        return open
    end
 
    -- Your content here
 
 
    -- You MUST pop the same number you pushed before ImGui.End() calls
        LoadTheme.EndTheme(ColorCount, StyleCount)
    ImGui.End()
end


ThemeZ file Layout

themes.lua
Lua:
return {
    ['LoadTheme'] = 'Red', -- theme to load
    ['Theme'] = {   -- themes table
        [1] = { -- theme ID number
            ['Name'] = 'Default', -- theme name
            ['Color'] = { -- table color styles to change
                [ImGuiCol.Text]                   = { -- property ID this will convert to a number once saved we store the name value below
                    Color = {1.00, 1.00, 1.00, 1.00}, -- color value for property
                    PropertyName = "Text"  -- property human readable name
                },
                [ImGuiCol.TextDisabled]           = {
                    Color = {0.50, 0.50, 0.50, 1.00},
                    PropertyName = 'TextDisabled'
                },
                [ImGuiCol.WindowBg]               = {
                    Color = {0.06, 0.06, 0.06, 0.94},
                    PropertyName = 'WindowBg'
                },
--- rest of the theme colors
            },
        ['Style'] = {} -- table for style changes follows the same layout
        },
        [2] =.... -- next theme rinse repeat


MyTemplate that i use when building out new scripts is also located at MyTemplate
Template starts with:
  • Main GUI
  • Setting GUI
  • ThemeZ Support
  • Toggle for Locking Window.
  • Toggle for Auto Resizing the Window.
  • Basic Config setup and some settings.
  • Basic Bind Setup for /commands
Back
Top
Cart